Module: Sequel::MySQL::PreparedStatements::DatasetMethods
- Included in:
- Dataset, Sequel::Mysql2::Dataset
- Defined in:
- lib/sequel/adapters/utils/mysql_prepared_statements.rb
Defined Under Namespace
Modules: CallableStatementMethods
Constant Summary collapse
- PreparedStatementMethods =
Sequel::Dataset.send(:prepared_statements_module, :prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper) do # Raise a more obvious error if you attempt to call a unnamed prepared statement. def call(*) raise Error, "Cannot call prepared statement without a name" if prepared_statement_name.nil? super end end
Instance Method Summary collapse
-
#call(type, bind_arguments = {}, *values, &block) ⇒ Object
MySQL is different in that it supports prepared statements but not bound variables outside of prepared statements.
-
#prepare(type, name = nil, *values) ⇒ Object
Store the given type of prepared statement in the associated database with the given name.
Instance Method Details
#call(type, bind_arguments = {}, *values, &block) ⇒ Object
MySQL is different in that it supports prepared statements but not bound variables outside of prepared statements. The default implementation breaks the use of subselects in prepared statements, so extend the temporary prepared statement that this creates with a module that fixes it.
62 63 64 65 66 |
# File 'lib/sequel/adapters/utils/mysql_prepared_statements.rb', line 62 def call(type, bind_arguments={}, *values, &block) ps = to_prepared_statement(type, values) ps.extend(CallableStatementMethods) ps.call(bind_arguments, &block) end |
#prepare(type, name = nil, *values) ⇒ Object
Store the given type of prepared statement in the associated database with the given name.
70 71 72 73 74 75 76 77 78 |
# File 'lib/sequel/adapters/utils/mysql_prepared_statements.rb', line 70 def prepare(type, name=nil, *values) ps = to_prepared_statement(type, values) ps.extend(PreparedStatementMethods) if name ps.prepared_statement_name = name db.set_prepared_statement(name, ps) end ps end |