class Amalgalite::Function
A Base class to inherit from for creating your own SQL scalar functions in ruby.
These are SQL functions similar to _abs(X)_, _length(X)_, _random()_. Items that take parameters and return value. They have no state between calls. Built in SQLite scalar functions are :
* www.sqlite.org/lang_corefunc.html * www.sqlite.org/lang_datefunc.html
Functions defined in Amalgalite databases
conform to the Proc interface. Everything that is defined in an Amalgalite database using
define_function
has its to_proc
method called.
As a result, any Function must also conform to
the to_proc
protocol.
If you choose to use Function as a parent class
of your SQL scalar function implementation you should only have implement
call
with the appropriate arity.
For instance to implement a _sha1(X)_ SQL function you could implement it as
class SQLSha1 < ::Amalgalite::Function def initialize super( 'md5', 1 ) end def call( s ) ::Digest::MD5.hexdigest( s.to_s ) end end
Attributes
The arity of the SQL function
The name of the SQL function
Public Class Methods
Initialize the function with a name and arity
# File lib/amalgalite/function.rb, line 42 def initialize( name, arity ) @name = name @arity = arity end
Public Instance Methods
Do Not Override
The function signature for use by the Amaglaite datase in tracking function definition and removal.
# File lib/amalgalite/function.rb, line 57 def signature @signature ||= ::Amalgalite::SQLite3::Database::Function.signature( self.name, self.arity ) end
All SQL functions defined foloow the to_proc
protocol
# File lib/amalgalite/function.rb, line 48 def to_proc self end