Class: Sequel::MySQL::Dataset
- 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
Constants included from MysqlMysql2::DatasetMethods
MysqlMysql2::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
#columns, #db, #opts, #row_proc
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, #delete_from, #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!, #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!, #skip_locked, #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_skip_locked?, #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.
299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 |
# File 'lib/sequel/adapters/mysql.rb', line 299 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 self.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
323 324 325 326 |
# File 'lib/sequel/adapters/mysql.rb', line 323 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.
337 338 339 340 341 342 |
# File 'lib/sequel/adapters/mysql.rb', line 337 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 |