Method: Libsql::Database#define_aggregate

Defined in:
lib/libsql/database.rb

#define_aggregate(name, klass) ⇒ Object Also known as: aggregate

call-seq:

db.define_aggregate( 'name', MyAggregateClass )

Define an SQL aggregate function, these are functions like max(), min(), avg(), etc. SQL functions that would be used when a GROUP BY clause is in effect. See also ::Libsql::Aggregate.

A new instance of MyAggregateClass is created for each instance that the SQL aggregate is mentioned in SQL.

Raises:



718
719
720
721
722
723
724
725
726
# File 'lib/libsql/database.rb', line 718

def define_aggregate( name, klass )
  db_aggregate = klass
  a = klass.new
  raise AggregateError, "Use only mandatory or arbitrary parameters in an SQL Aggregate, not both" if a.arity < -1
  raise AggregateError, "Aggregate implementation name '#{a.name}' does not match defined name '#{name}'" if a.name != name
  @api.define_aggregate( name, a.arity, klass )
  @aggregates[a.signature] = db_aggregate
  nil
end