Class: Sequel::MySQL::Dataset
- 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
Instance Method Summary collapse
-
#fetch_rows(sql) ⇒ Object
Yield all rows matching this dataset.
-
#graph ⇒ Object
Don’t allow graphing a dataset that splits multiple statements.
-
#split_multiple_result_sets ⇒ Object
Makes each yield arrays of rows, with each array containing the rows for a given result set.
Methods included from PreparedStatements::DatasetMethods
Methods included from Dataset::StoredProcedures
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_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
Methods included from SQL::StringMethods
Methods included from SQL::OrderMethods
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
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 && (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 |
#graph ⇒ Object
Don’t allow graphing a dataset that splits multiple statements
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_sets ⇒ Object
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.
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 |