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.
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 |