Database class for Sequel’s mock adapter.
Set the columns to set in the dataset when the dataset fetches rows. Argument types supported:
Set no columns
Array of Symbols: Used for all datasets Array (otherwise): First retrieval gets the first value in the
array, second gets the second value, etc.
Called with the select SQL query, uses the value returned, which should be an array of symbols
Set the hashes to yield by execute when retrieving rows. Argument types supported:
Yield no rows
Always yield a single row with this hash
Yield separately for each hash in this array
First retrieval gets the first value in the array, second gets the second value, etc.
Called with the select SQL query, uses the value returned, which should be a hash or array of hashes.
Should be an Exception subclass, will create a new instance an raise it wrapped in a DatabaseError.
Set the number of rows to return from update or delete. Argument types supported:
Return 0 for all updates and deletes
Used for all updates and deletes
First update/delete gets the first value in the array, second gets the second value, etc.
Called with the update/delete SQL query, uses the value returned.
Should be an Exception subclass, will create a new instance an raise it wrapped in a DatabaseError.
Mock the server version, useful when using the shared adapters
Set the autogenerated primary key integer to be returned when running an insert query. Argument types supported:
Return nil for all inserts
Starting integer for next insert, with futher inserts getting an incremented value
First insert gets the first value in the array, second gets the second value, etc.
Called with the insert SQL query, uses the value returned
Should be an Exception subclass, will create a new instance an raise it wrapped in a DatabaseError.
# File lib/sequel/adapters/mock.rb, line 51 def autoid=(v) @autoid = case v when Integer i = v - 1 proc{Sequel.synchronize{i+=1}} else v end end
Return a related Connection option connecting to the given shard.
# File lib/sequel/adapters/mock.rb, line 103 def connect(server) Connection.new(self, server, server_opts(server)) end
# File lib/sequel/adapters/mock.rb, line 107 def disconnect_connection(c) end
Store the sql used for later retrieval with sqls, and return the appropriate value using either the autoid, fetch, or numrows methods.
# File lib/sequel/adapters/mock.rb, line 113 def execute(sql, opts=OPTS, &block) synchronize(opts[:server]){|c| _execute(c, sql, opts, &block)} end
Store the sql used, and return the value of the numrows method.
# File lib/sequel/adapters/mock.rb, line 119 def execute_dui(sql, opts=OPTS) execute(sql, opts.merge(:meth=>:numrows)) end
Store the sql used, and return the value of the autoid method.
# File lib/sequel/adapters/mock.rb, line 124 def execute_insert(sql, opts=OPTS) execute(sql, opts.merge(:meth=>:autoid)) end
Enable use of savepoints.
# File lib/sequel/adapters/mock.rb, line 137 def supports_savepoints? shared_adapter? ? super : true end