Class: Sequel::MySQL::Dataset
- Includes:
- DatasetMethods, StoredProcedures
- Defined in:
- lib/sequel/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, Sequel::MySQL::DatasetMethods::SELECT_CLAUSE_ORDER, Sequel::MySQL::DatasetMethods::TIMESTAMP_FORMAT
Constants inherited from Dataset
Dataset::AND_SEPARATOR, Dataset::ARRAY_ACCESS_ERROR_MSG, 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_ALIAS_BASE_NAME, Dataset::GET_ERROR_MSG, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT_SQL_BASE, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::MAP_ERROR_MSG, Dataset::MUTATION_METHODS, Dataset::NOTIMPL_MSG, Dataset::NULL, Dataset::N_ARITY_OPERATORS, Dataset::PREPARED_ARG_PLACEHOLDER, Dataset::QUALIFY_KEYS, Dataset::QUESTION_MARK, Dataset::SELECT_CLAUSE_ORDER, Dataset::SQL_WITH, Dataset::STOCK_COUNT_OPTS, Dataset::TWO_ARITY_OPERATORS, Dataset::WILDCARD, Dataset::WITH_SUPPORTED
Instance Attribute Summary
Attributes inherited from Dataset
#db, #identifier_input_method, #identifier_output_method, #opts, #quote_identifiers, #row_proc
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 ⇒ 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.
-
#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(values = {}) ⇒ Object
Update the matching rows.
Methods included from DatasetMethods
#complex_expression_sql, #delete_sql, #full_text_search, #full_text_sql, #having, #insert_ignore, #join_table, #join_type_sql, #multi_insert_sql, #on_duplicate_key_update, #quoted_identifier, #replace_sql, #supports_distinct_on?, #supports_intersect_except?, #update_sql
Methods inherited from Dataset
#<<, #[], #[]=, #add_graph_aliases, #aliased_expression_sql, #all, #and, #array_sql, #as, #avg, #case_expression_sql, #cast_sql, #clone, #column_all_sql, #columns, #columns!, #complex_expression_sql, #count, def_mutation_method, #def_mutation_method, #delete_sql, #distinct, #each, #each_page, #empty?, #except, #exclude, #exists, #filter, #first, #first_source_alias, #from, #from_self, #function_sql, #get, #graph, #grep, #group, #group_and_count, #having, #import, #initialize, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, #invert, #join_clause_sql, #join_on_clause_sql, #join_table, #join_using_clause_sql, #last, #limit, #literal, #map, #max, #min, #multi_insert, #multi_insert_sql, #naked, #or, #order, #order_more, #ordered_expression_sql, #paginate, #placeholder_literal_string_sql, #print, #qualified_identifier_sql, #qualify, #qualify_to, #qualify_to_first_source, #query, #quote_identifier, #quote_identifiers?, #quote_schema_table, #quoted_identifier, #range, #requires_sql_standard_datetimes?, #reverse_order, #schema_and_table, #select, #select_all, #select_more, #select_sql, #server, #set, #set_defaults, #set_graph_aliases, #set_overrides, #single_record, #single_value, #sql, #subscript_sql, #sum, #supports_cte?, #supports_distinct_on?, #supports_intersect_except?, #supports_intersect_except_all?, #supports_is_true?, #supports_window_functions?, #to_csv, #to_hash, #unfiltered, #ungraphed, #union, #unordered, #update_sql, #where, #window_function_sql, #window_sql, #with, #with_recursive, #with_sql
Methods included from Sequel::Metaprogramming
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.
285 286 287 288 289 |
# File 'lib/sequel/adapters/mysql.rb', line 285 def call(type, bind_arguments={}, values=nil) ps = to_prepared_statement(type, values) ps.extend(CallableStatementMethods) ps.call(bind_arguments) end |
#delete ⇒ Object
Delete rows matching this dataset
292 293 294 |
# File 'lib/sequel/adapters/mysql.rb', line 292 def delete execute_dui(delete_sql){|c| c.affected_rows} end |
#fetch_rows(sql) ⇒ Object
Yield all rows matching this dataset
297 298 299 300 301 302 303 304 305 306 307 308 309 |
# File 'lib/sequel/adapters/mysql.rb', line 297 def fetch_rows(sql) execute(sql) do |r| i = -1 cols = r.fetch_fields.map{|f| [output_identifier(f.name), MYSQL_TYPES[f.type], i+=1]} @columns = cols.map{|c| c.first} while row = r.fetch_row h = {} cols.each{|n, p, i| v = row[i]; h[n] = (v && p) ? p.call(v) : v} yield h end end self end |
#insert(*values) ⇒ Object
Insert a new value into this dataset
312 313 314 |
# File 'lib/sequel/adapters/mysql.rb', line 312 def insert(*values) execute_dui(insert_sql(*values)){|c| c.insert_id} end |
#prepare(type, name = nil, values = nil) ⇒ Object
Store the given type of prepared statement in the associated database with the given name.
318 319 320 321 322 323 324 325 326 |
# File 'lib/sequel/adapters/mysql.rb', line 318 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.
329 330 331 |
# File 'lib/sequel/adapters/mysql.rb', line 329 def replace(*args) execute_dui(replace_sql(*args)){|c| c.insert_id} end |
#update(values = {}) ⇒ Object
Update the matching rows.
334 335 336 |
# File 'lib/sequel/adapters/mysql.rb', line 334 def update(values={}) execute_dui(update_sql(values)){|c| c.affected_rows} end |