Class: Sequel::MySQL::Dataset

Inherits:
Dataset show all
Includes:
DatasetMethods, PreparedStatements::DatasetMethods
Defined in:
lib/sequel/adapters/mysql.rb

Overview

Dataset class for MySQL datasets accessed via the native driver.

Constant Summary

Constants included from PreparedStatements::DatasetMethods

PreparedStatements::DatasetMethods::PreparedStatementMethods, PreparedStatements::DatasetMethods::StoredProcedureMethods

Constants included from DatasetMethods

Sequel::MySQL::DatasetMethods::APOS, Sequel::MySQL::DatasetMethods::APOS_RE, Sequel::MySQL::DatasetMethods::BACKSLASH, Sequel::MySQL::DatasetMethods::BACKSLASH_RE, Sequel::MySQL::DatasetMethods::BACKTICK, Sequel::MySQL::DatasetMethods::BACKTICK_RE, Sequel::MySQL::DatasetMethods::BINARY, Sequel::MySQL::DatasetMethods::BLOB_START, Sequel::MySQL::DatasetMethods::BOOL_FALSE, Sequel::MySQL::DatasetMethods::BOOL_TRUE, Sequel::MySQL::DatasetMethods::CAST_BITCOMP_CLOSE, Sequel::MySQL::DatasetMethods::CAST_BITCOMP_OPEN, Sequel::MySQL::DatasetMethods::COMMA, Sequel::MySQL::DatasetMethods::COMMA_SEPARATOR, Sequel::MySQL::DatasetMethods::CONCAT, Sequel::MySQL::DatasetMethods::CURRENT_TIMESTAMP_56, Sequel::MySQL::DatasetMethods::DOUBLE_APOS, Sequel::MySQL::DatasetMethods::DOUBLE_BACKTICK, Sequel::MySQL::DatasetMethods::EMPTY_BLOB, Sequel::MySQL::DatasetMethods::EMPTY_COLUMNS, Sequel::MySQL::DatasetMethods::EMPTY_VALUES, Sequel::MySQL::DatasetMethods::EQ, Sequel::MySQL::DatasetMethods::EQ_VALUES, Sequel::MySQL::DatasetMethods::ESCAPE, Sequel::MySQL::DatasetMethods::EXPLAIN, Sequel::MySQL::DatasetMethods::EXPLAIN_EXTENDED, Sequel::MySQL::DatasetMethods::FOR_SHARE, Sequel::MySQL::DatasetMethods::FROM, Sequel::MySQL::DatasetMethods::GROUP_BY, Sequel::MySQL::DatasetMethods::HSTAR, Sequel::MySQL::DatasetMethods::IGNORE, Sequel::MySQL::DatasetMethods::LIKE, Sequel::MySQL::DatasetMethods::LIMIT, Sequel::MySQL::DatasetMethods::MATCH_AGAINST, Sequel::MySQL::DatasetMethods::MATCH_AGAINST_BOOLEAN, Sequel::MySQL::DatasetMethods::NATURAL_LEFT_JOIN, Sequel::MySQL::DatasetMethods::NOT_SPACE, Sequel::MySQL::DatasetMethods::ONLY_OFFSET, Sequel::MySQL::DatasetMethods::ON_DUPLICATE_KEY_UPDATE, Sequel::MySQL::DatasetMethods::PAREN_CLOSE, Sequel::MySQL::DatasetMethods::PAREN_OPEN, Sequel::MySQL::DatasetMethods::QUAD_BACKSLASH, Sequel::MySQL::DatasetMethods::REGEXP, Sequel::MySQL::DatasetMethods::SPACE, Sequel::MySQL::DatasetMethods::SQL_CALC_FOUND_ROWS, Sequel::MySQL::DatasetMethods::STRAIGHT_JOIN, Sequel::MySQL::DatasetMethods::WITH_ROLLUP

Constants included from Dataset::Replace

Dataset::Replace::INSERT, Dataset::Replace::REPLACE

Constants inherited from Dataset

Dataset::ACTION_METHODS, Dataset::ALL, Dataset::AND_SEPARATOR, Dataset::APOS, Dataset::APOS_RE, Dataset::ARG_BLOCK_ERROR_MSG, Dataset::ARRAY_ACCESS_ERROR_MSG, Dataset::ARRAY_EMPTY, Dataset::AS, Dataset::ASC, Dataset::BACKSLASH, Dataset::BITCOMP_CLOSE, Dataset::BITCOMP_OPEN, Dataset::BITWISE_METHOD_MAP, Dataset::BOOL_FALSE, Dataset::BOOL_TRUE, Dataset::BRACKET_CLOSE, Dataset::BRACKET_OPEN, Dataset::CASE_ELSE, Dataset::CASE_END, Dataset::CASE_OPEN, Dataset::CASE_THEN, Dataset::CASE_WHEN, Dataset::CAST_OPEN, Dataset::COLON, Dataset::COLUMN_CHANGE_OPTS, Dataset::COLUMN_REF_RE1, Dataset::COLUMN_REF_RE2, Dataset::COLUMN_REF_RE3, Dataset::COMMA, Dataset::COMMA_SEPARATOR, Dataset::CONDITIONED_JOIN_TYPES, Dataset::CONDITION_FALSE, Dataset::CONDITION_TRUE, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::DATASET_ALIAS_BASE_NAME, Dataset::DATETIME_SECFRACTION_ARG, Dataset::DEFAULT, Dataset::DEFAULT_PREPARED_STATEMENT_MODULE_METHODS, Dataset::DEFAULT_VALUES, Dataset::DELETE, Dataset::DESC, Dataset::DISTINCT, Dataset::DOT, Dataset::DOUBLE_APOS, Dataset::DOUBLE_QUOTE, Dataset::EMPTY_PARENS, Dataset::EMULATED_FUNCTION_MAP, Dataset::EQUAL, Dataset::ESCAPE, Dataset::EXISTS, Dataset::EXTENSIONS, Dataset::EXTRACT, Dataset::FILTER, Dataset::FORMAT_DATE, Dataset::FORMAT_DATE_STANDARD, Dataset::FORMAT_OFFSET, Dataset::FORMAT_TIMESTAMP_RE, Dataset::FORMAT_USEC, Dataset::FOR_UPDATE, Dataset::FRAME_ALL, Dataset::FRAME_ROWS, Dataset::FROM, Dataset::FUNCTION_DISTINCT, Dataset::GROUP_BY, Dataset::HAVING, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT, Dataset::INTO, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::JOIN_METHODS, Dataset::LATERAL, Dataset::LIKE_OPERATORS, Dataset::LIMIT, Dataset::MUTATION_METHODS, Dataset::NON_SQL_OPTIONS, Dataset::NOTIMPL_MSG, Dataset::NOT_SPACE, Dataset::NULL, Dataset::NULLS_FIRST, Dataset::NULLS_LAST, Dataset::N_ARITY_OPERATORS, Dataset::OFFSET, Dataset::ON, Dataset::ON_PAREN, Dataset::OPTS, Dataset::ORDER_BY, Dataset::ORDER_BY_NS, Dataset::OVER, Dataset::PAREN_CLOSE, Dataset::PAREN_OPEN, Dataset::PAREN_SPACE_OPEN, Dataset::PARTITION_BY, Dataset::PREPARED_ARG_PLACEHOLDER, Dataset::PREPARED_STATEMENT_MODULE_CODE, Dataset::QUALIFY_KEYS, Dataset::QUERY_METHODS, Dataset::QUESTION_MARK, Dataset::QUESTION_MARK_RE, Dataset::QUOTE, Dataset::QUOTE_RE, Dataset::REGEXP_OPERATORS, Dataset::RETURNING, Dataset::SELECT, Dataset::SET, Dataset::SPACE, Dataset::SPACE_WITH, Dataset::SQL_WITH, Dataset::STANDARD_TIMESTAMP_FORMAT, Dataset::TILDE, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::UNCONDITIONED_JOIN_TYPES, Dataset::UNDERSCORE, Dataset::UNION_ALL_SELECT, Dataset::UPDATE, Dataset::USING, Dataset::VALUES, Dataset::WHERE, Dataset::WILDCARD, Dataset::WITHIN_GROUP, Dataset::WITH_ORDINALITY

Instance Attribute Summary

Attributes inherited from Dataset

#db, #opts, #row_proc

Instance Method Summary collapse

Methods included from PreparedStatements::DatasetMethods

#call, #prepare

Methods included from Dataset::StoredProcedures

#call_sproc, #prepare_sproc

Methods included from DatasetMethods

#calc_found_rows, #complex_expression_sql_append, #constant_sql_append, #distinct, #explain, #for_share, #full_text_search, #full_text_sql, #insert_ignore, #join_table, #join_type_sql, #on_duplicate_key_update, #quoted_identifier_append, #supports_derived_column_lists?, #supports_distinct_on?, #supports_group_rollup?, #supports_intersect_except?, #supports_limits_in_correlated_subqueries?, #supports_modifying_joins?, #supports_ordered_distinct_on?, #supports_regexp?, #supports_timestamp_usecs?, #update_ignore

Methods included from Dataset::Replace

#multi_replace, #replace, #replace_sql, #supports_replace?

Methods inherited from Dataset

#<<, #==, #[], #add_graph_aliases, #aliased_expression_sql_append, #all, #and, #array_sql_append, #avg, #bind, #boolean_constant_sql_append, #call, #case_expression_sql_append, #cast_sql_append, clause_methods, #clone, #column_all_sql_append, #columns, #columns!, #complex_expression_sql_append, #constant_sql_append, #count, #current_datetime, def_mutation_method, def_sql_method, #delayed_evaluation_sql_append, #delete, #distinct, #dup, #each, #each_server, #empty?, #eql?, #escape_like, #except, #exclude, #exclude_having, #exclude_where, #exists, #extension, #extension!, #filter, #first, #first!, #first_source, #first_source_alias, #first_source_table, #for_update, #freeze, #from, #from_self, #from_self!, #frozen?, #function_sql_append, #get, #grep, #group, #group_and_count, #group_append, #group_by, #group_cube, #group_rollup, #grouping_sets, #hash, #having, #identifier_input_method, #identifier_input_method=, #identifier_output_method, #identifier_output_method=, #import, #initialize, #insert, #insert_sql, #inspect, #intersect, #interval, #invert, #join, #join_clause_sql_append, #join_on_clause_sql_append, #join_table, #join_using_clause_sql_append, #joined_dataset?, #last, #lateral, #limit, #literal_append, #lock_style, #map, #max, #min, #multi_insert, #multi_insert_sql, #naked, #naked!, #negative_boolean_constant_sql_append, #offset, #or, #order, #order_append, #order_by, #order_more, #order_prepend, #ordered_expression_sql_append, #paged_each, #placeholder_literal_string_sql_append, #prepare, #provides_accurate_rows_matched?, #qualified_identifier_sql_append, #qualify, #quote_identifier_append, #quote_identifiers=, #quote_identifiers?, #quote_schema_table_append, #quoted_identifier_append, #range, #recursive_cte_requires_column_aliases?, register_extension, #requires_placeholder_type_specifiers?, #requires_sql_standard_datetimes?, #returning, #reverse, #reverse_order, #row_number_column, #schema_and_table, #select, #select_all, #select_append, #select_group, #select_hash, #select_hash_groups, #select_map, #select_more, #select_order_map, #server, #server?, #set_graph_aliases, #single_record, #single_record!, #single_value, #single_value!, #split_alias, #split_qualifiers, #sql, #subscript_sql_append, #sum, #supports_cte?, #supports_cte_in_subqueries?, #supports_derived_column_lists?, #supports_distinct_on?, #supports_group_cube?, #supports_group_rollup?, #supports_grouping_sets?, #supports_insert_select?, #supports_intersect_except?, #supports_intersect_except_all?, #supports_is_true?, #supports_join_using?, #supports_lateral_subqueries?, #supports_limits_in_correlated_subqueries?, #supports_modifying_joins?, #supports_multiple_column_in?, #supports_offsets_in_correlated_subqueries?, #supports_ordered_distinct_on?, #supports_regexp?, #supports_replace?, #supports_returning?, #supports_select_all_and_column?, #supports_timestamp_timezones?, #supports_timestamp_usecs?, #supports_where_true?, #supports_window_functions?, #to_hash, #to_hash_groups, #truncate, #truncate_sql, #unbind, #unfiltered, #ungraphed, #ungrouped, #union, #unlimited, #unordered, #unqualified_column_for, #unused_table_alias, #update, #update_sql, #where, #window_sql_append, #with, #with_recursive, #with_sql, #with_sql_all, #with_sql_delete, #with_sql_each, #with_sql_first, #with_sql_insert, #with_sql_single_value

Methods included from Sequel::Metaprogramming

#meta_def

Methods included from SQL::StringMethods

#ilike, #like

Methods included from SQL::OrderMethods

#asc, #desc

Methods included from SQL::NumericMethods

#+

Methods included from SQL::ComplexExpressionMethods

#extract, #sql_boolean, #sql_number, #sql_string

Methods included from SQL::CastMethods

#cast, #cast_numeric, #cast_string

Methods included from SQL::BooleanMethods

#~

Methods included from SQL::AliasMethods

#as

Constructor Details

This class inherits a constructor from Sequel::Dataset

Instance Method Details

#fetch_rows(sql) ⇒ Object

Yield all rows matching this dataset. If the dataset is set to split multiple statements, yield arrays of hashes one per statement instead of yielding results for all statements as hashes.



295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'lib/sequel/adapters/mysql.rb', line 295

def fetch_rows(sql)
  execute(sql) do |r|
    i = -1
    cps = db.conversion_procs
    cols = r.fetch_fields.map do |f| 
      # Pretend tinyint is another integer type if its length is not 1, to
      # avoid casting to boolean if Sequel::MySQL.convert_tinyint_to_bool
      # is set.
      type_proc = f.type == 1 && cast_tinyint_integer?(f) ? cps[2] : cps[f.type]
      [output_identifier(f.name), type_proc, i+=1]
    end
    @columns = cols.map(&:first)
    if opts[:split_multiple_result_sets]
      s = []
      yield_rows(r, cols){|h| s << h}
      yield s
    else
      yield_rows(r, cols){|h| yield h}
    end
  end
  self
end

#graphObject

Don’t allow graphing a dataset that splits multiple statements

Raises:



319
320
321
322
# File 'lib/sequel/adapters/mysql.rb', line 319

def graph(*)
  raise(Error, "Can't graph a dataset that splits multiple result sets") if opts[:split_multiple_result_sets]
  super
end

#split_multiple_result_setsObject

Makes each yield arrays of rows, with each array containing the rows for a given result set. Does not work with graphing. So you can submit SQL with multiple statements and easily determine which statement returned which results.

Modifies the row_proc of the returned dataset so that it still works as expected (running on the hashes instead of on the arrays of hashes). If you modify the row_proc afterward, note that it will receive an array of hashes instead of a hash.

Raises:



333
334
335
336
337
338
# File 'lib/sequel/adapters/mysql.rb', line 333

def split_multiple_result_sets
  raise(Error, "Can't split multiple statements on a graphed dataset") if opts[:graph]
  ds = clone(:split_multiple_result_sets=>true)
  ds.row_proc = proc{|x| x.map{|h| row_proc.call(h)}} if row_proc
  ds
end