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 DatasetMethods
Sequel::MySQL::DatasetMethods::APOS, Sequel::MySQL::DatasetMethods::APOS_RE, Sequel::MySQL::DatasetMethods::BACKSLASH_RE, Sequel::MySQL::DatasetMethods::BACKTICK, Sequel::MySQL::DatasetMethods::BACKTICK_RE, Sequel::MySQL::DatasetMethods::BINARY, 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::DELETE_CLAUSE_METHODS, Sequel::MySQL::DatasetMethods::DOUBLE_APOS, Sequel::MySQL::DatasetMethods::DOUBLE_BACKTICK, Sequel::MySQL::DatasetMethods::EMPTY_COLUMNS, Sequel::MySQL::DatasetMethods::EMPTY_VALUES, Sequel::MySQL::DatasetMethods::EQ, Sequel::MySQL::DatasetMethods::EQ_VALUES, 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::IGNORE, Sequel::MySQL::DatasetMethods::INSERT, Sequel::MySQL::DatasetMethods::INSERT_CLAUSE_METHODS, 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::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::REPLACE, Sequel::MySQL::DatasetMethods::SELECT_CLAUSE_METHODS, Sequel::MySQL::DatasetMethods::SPACE, Sequel::MySQL::DatasetMethods::SQL_CALC_FOUND_ROWS, Sequel::MySQL::DatasetMethods::STRAIGHT_JOIN, Sequel::MySQL::DatasetMethods::UPDATE_CLAUSE_METHODS, Sequel::MySQL::DatasetMethods::WITH_ROLLUP
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::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::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::DEFAULT, Dataset::DEFAULT_VALUES, Dataset::DELETE, Dataset::DELETE_CLAUSE_METHODS, Dataset::DESC, Dataset::DISTINCT, Dataset::DOT, Dataset::DOUBLE_APOS, Dataset::DOUBLE_QUOTE, Dataset::EQUAL, Dataset::EXISTS, Dataset::EXTRACT, Dataset::FORMAT_DATE, Dataset::FORMAT_DATE_STANDARD, Dataset::FORMAT_OFFSET, Dataset::FORMAT_TIMESTAMP_RE, Dataset::FORMAT_TIMESTAMP_USEC, Dataset::FORMAT_USEC, Dataset::FOR_UPDATE, Dataset::FRAME_ALL, Dataset::FRAME_ROWS, Dataset::FROM, Dataset::FUNCTION_EMPTY, Dataset::GROUP_BY, Dataset::HAVING, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT, Dataset::INSERT_CLAUSE_METHODS, Dataset::INTO, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::JOIN_METHODS, 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::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::PRIVATE_APPEND_METHODS, Dataset::PUBLIC_APPEND_METHODS, Dataset::QUALIFY_KEYS, Dataset::QUERY_METHODS, Dataset::QUESTION_MARK, Dataset::QUESTION_MARK_RE, Dataset::QUOTE, Dataset::QUOTE_RE, Dataset::RETURNING, Dataset::SELECT, Dataset::SELECT_CLAUSE_METHODS, 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::UPDATE, Dataset::UPDATE_CLAUSE_METHODS, Dataset::USING, Dataset::V190, Dataset::VALUES, Dataset::WHERE, Dataset::WILDCARD
Instance Attribute Summary
Attributes inherited from Dataset
#db, #identifier_input_method, #identifier_output_method, #opts, #quote_identifiers, #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, #distinct, #explain, #for_share, #full_text_search, #full_text_sql, #having, #insert_ignore, #join_table, #join_type_sql, #multi_insert_sql, #multi_replace, #on_duplicate_key_update, #quoted_identifier_append, #replace, #replace_sql, #supports_distinct_on?, #supports_group_rollup?, #supports_intersect_except?, #supports_modifying_joins?, #supports_ordered_distinct_on?, #supports_timestamp_usecs?, #update_ignore
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, def_append_methods, def_mutation_method, #def_mutation_method, #delete, #delete_sql, #distinct, #each, #each_page, #each_server, #empty?, #eql?, #except, #exclude, #exclude_having, #exclude_where, #exists, #filter, #first, #first_source, #first_source_alias, #first_source_table, #for_update, #from, #from_self, #function_sql_append, #get, #grep, #group, #group_and_count, #group_by, #group_cube, #group_rollup, #hash, #having, #import, #initialize, #insert, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, introspect_all_columns, #invert, #join, #join_clause_sql_append, #join_on_clause_sql_append, #join_table, #join_using_clause_sql_append, #last, #limit, #literal_append, #lock_style, #map, #max, #min, #multi_insert, #multi_insert_sql, #naked, #naked!, #negative_boolean_constant_sql_append, #nullify, #nullify!, #or, #order, #order_append, #order_by, #order_more, #order_prepend, #ordered_expression_sql_append, #paginate, #placeholder_literal_string_sql_append, #prepare, #print, #provides_accurate_rows_matched?, #qualified_identifier_sql_append, #qualify, #qualify_to, #qualify_to_first_source, #query, #quote_identifier_append, #quote_identifiers?, #quote_schema_table_append, #quoted_identifier_append, #range, #recursive_cte_requires_column_aliases?, #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, #select_remove, #select_sql, #server, #set, #set_defaults, #set_graph_aliases, #set_overrides, #single_record, #single_value, #split_alias, #sql, #subscript_sql_append, #sum, #supports_cte?, #supports_cte_in_subqueries?, #supports_distinct_on?, #supports_group_cube?, #supports_group_rollup?, #supports_insert_select?, #supports_intersect_except?, #supports_intersect_except_all?, #supports_is_true?, #supports_join_using?, #supports_modifying_joins?, #supports_multiple_column_in?, #supports_ordered_distinct_on?, #supports_returning?, #supports_select_all_and_column?, #supports_timestamp_timezones?, #supports_timestamp_usecs?, #supports_where_true?, #supports_window_functions?, #to_csv, #to_dot, #to_hash, #to_hash_groups, #truncate, #truncate_sql, #unbind, #unfiltered, #ungraphed, #ungrouped, #union, #unlimited, #unordered, #unused_table_alias, #update, #update_sql, #where, #window_function_sql_append, #window_sql_append, #with, #with_recursive, #with_sql, #with_sql_delete
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.
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'lib/sequel/adapters/mysql.rb', line 301 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.length != 1 ? cps[2] : cps[f.type] [output_identifier(f.name), type_proc, i+=1] end @columns = cols.map{|c| c.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
325 326 327 328 |
# File 'lib/sequel/adapters/mysql.rb', line 325 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.
339 340 341 342 343 344 |
# File 'lib/sequel/adapters/mysql.rb', line 339 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 |