Class: Sequel::MySQL::Dataset
- Includes:
- DatasetMethods, StoredProcedures
- Defined in:
- lib/sequel_core/adapters/mysql.rb
Overview
Dataset class for MySQL datasets accessed via the native driver.
Defined Under Namespace
Modules: CallableStatementMethods, PreparedStatementMethods, StoredProcedureMethods
Constant Summary
Constants included from DatasetMethods
Sequel::MySQL::DatasetMethods::BOOL_FALSE, Sequel::MySQL::DatasetMethods::BOOL_TRUE, Sequel::MySQL::DatasetMethods::COMMA_SEPARATOR
Constants inherited from Dataset
Dataset::AND_SEPARATOR, Dataset::BOOL_FALSE, Dataset::BOOL_TRUE, Dataset::COLUMN_CHANGE_OPTS, Dataset::COLUMN_REF_RE1, Dataset::COLUMN_REF_RE2, Dataset::COLUMN_REF_RE3, Dataset::COMMA_SEPARATOR, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::DATASET_CLASSES, Dataset::DATE_FORMAT, Dataset::MUTATION_METHODS, Dataset::NOTIMPL_MSG, Dataset::NULL, Dataset::N_ARITY_OPERATORS, Dataset::PREPARED_ARG_PLACEHOLDER, Dataset::QUESTION_MARK, Dataset::SELECT_CLAUSE_ORDER, Dataset::STOCK_COUNT_OPTS, Dataset::STOCK_TRANSFORMS, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::WILDCARD
Instance Attribute Summary
Attributes inherited from Dataset
#db, #opts, #quote_identifiers, #row_proc, #upcase_identifiers
Instance Method Summary collapse
-
#call(type, bind_arguments = {}, values = nil) ⇒ Object
MySQL is different in that it supports prepared statements but not bound variables outside of prepared statements.
-
#delete(opts = nil) ⇒ Object
Delete rows matching this dataset.
-
#fetch_rows(sql) ⇒ Object
Yield all rows matching this dataset.
-
#insert(*values) ⇒ Object
Insert a new value into this dataset.
-
#literal(v) ⇒ Object
Handle correct quoting of strings using ::MySQL.quote.
-
#prepare(type, name = nil, values = nil) ⇒ Object
Store the given type of prepared statement in the associated database with the given name.
-
#replace(*args) ⇒ Object
Replace (update or insert) the matching row.
-
#update(*args) ⇒ Object
Update the matching rows.
Methods included from DatasetMethods
#complex_expression_sql, #delete_sql, #full_text_search, #having, #insert_default_values_sql, #join_table, #join_type_sql, #multi_insert_sql, #quoted_identifier, #replace_sql, #update_sql
Methods included from Dataset::UnsupportedIntersectExcept
Methods inherited from Dataset
#<<, #[], #[]=, #add_graph_aliases, #aliased_expression_sql, #all, #and, #array_sql, #as, #avg, #case_expression_sql, #clone, #column_all_sql, #columns, #columns!, #complex_expression_sql, #count, #create_or_replace_view, #create_view, dataset_classes, #def_mutation_method, def_mutation_method, #delete_sql, #each, #each_page, #empty?, #except, #exclude, #exists, #filter, #first, #first_source, #from, #from_self, #function_sql, #get, #graph, #grep, #group, #group_and_count, #having, inherited, #initialize, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, #invert, #irregular_function_sql, #join_clause_sql, #join_on_clause_sql, #join_table, #join_using_clause_sql, #last, #limit, #map, #max, #min, #model_classes, #multi_insert, #multi_insert_sql, #naked, #or, #order, #order_more, #ordered_expression_sql, #paginate, #placeholder_literal_string_sql, #polymorphic_key, #print, #qualified_identifier_sql, #query, #quote_identifier, #quote_identifiers?, #quote_schema_table, #quoted_identifier, #range, #reverse_order, #schema_and_table, #select, #select_all, #select_more, #select_sql, #server, #set, #set_defaults, #set_graph_aliases, #set_model, #set_overrides, #single_record, #single_value, #sql, #subscript_sql, #sum, #symbol_to_column_ref, #table_exists?, #to_csv, #to_hash, #transform, #transform_load, #transform_save, #unfiltered, #union, #uniq, #unordered, #upcase_identifiers?, #update_sql
Methods included from Enumerable
Constructor Details
This class inherits a constructor from Sequel::Dataset
Instance Method Details
#call(type, bind_arguments = {}, values = nil) ⇒ 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.
305 306 307 308 309 |
# File 'lib/sequel_core/adapters/mysql.rb', line 305 def call(type, bind_arguments={}, values=nil) ps = to_prepared_statement(type, values) ps.extend(CallableStatementMethods) ps.call(bind_arguments) end |
#delete(opts = nil) ⇒ Object
Delete rows matching this dataset
312 313 314 |
# File 'lib/sequel_core/adapters/mysql.rb', line 312 def delete(opts = nil) execute_dui(delete_sql(opts)){|c| c.affected_rows} end |
#fetch_rows(sql) ⇒ Object
Yield all rows matching this dataset
317 318 319 320 321 322 323 |
# File 'lib/sequel_core/adapters/mysql.rb', line 317 def fetch_rows(sql) execute(sql) do |r| @columns = r.columns r.sequel_each_hash {|row| yield row} end self end |
#insert(*values) ⇒ Object
Insert a new value into this dataset
326 327 328 |
# File 'lib/sequel_core/adapters/mysql.rb', line 326 def insert(*values) execute_dui(insert_sql(*values)){|c| c.insert_id} end |
#literal(v) ⇒ Object
Handle correct quoting of strings using ::MySQL.quote.
331 332 333 334 335 336 337 338 339 340 |
# File 'lib/sequel_core/adapters/mysql.rb', line 331 def literal(v) case v when LiteralString v when String "'#{::Mysql.quote(v)}'" else super end end |
#prepare(type, name = nil, values = nil) ⇒ Object
Store the given type of prepared statement in the associated database with the given name.
344 345 346 347 348 349 350 351 352 |
# File 'lib/sequel_core/adapters/mysql.rb', line 344 def prepare(type, name=nil, values=nil) ps = to_prepared_statement(type, values) ps.extend(PreparedStatementMethods) if name ps.prepared_statement_name = name db.prepared_statements[name] = ps end ps end |
#replace(*args) ⇒ Object
Replace (update or insert) the matching row.
355 356 357 |
# File 'lib/sequel_core/adapters/mysql.rb', line 355 def replace(*args) execute_dui(replace_sql(*args)){|c| c.insert_id} end |
#update(*args) ⇒ Object
Update the matching rows.
360 361 362 |
# File 'lib/sequel_core/adapters/mysql.rb', line 360 def update(*args) execute_dui(update_sql(*args)){|c| c.affected_rows} end |