Class: Sequel::Postgres::Dataset
- Includes:
- DatasetMethods
- Defined in:
- lib/sequel/adapters/postgres.rb
Overview
Dataset class for PostgreSQL datasets that use the pg, postgres, or postgres-pr driver.
Defined Under Namespace
Modules: ArgumentMapper, BindArgumentMethods, PreparedStatementMethods
Constant Summary collapse
- PREPARED_ARG_PLACEHOLDER =
LiteralString.new('$').freeze
Constants inherited from Dataset
Dataset::AND_SEPARATOR, Dataset::ARG_BLOCK_ERROR_MSG, 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::CONDITIONED_JOIN_TYPES, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::DATASET_ALIAS_BASE_NAME, Dataset::DELETE_CLAUSE_METHODS, Dataset::FROM_SELF_KEEP_OPTS, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT_CLAUSE_METHODS, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::MUTATION_METHODS, Dataset::NON_SQL_OPTIONS, Dataset::NOTIMPL_MSG, Dataset::NULL, Dataset::N_ARITY_OPERATORS, Dataset::QUALIFY_KEYS, Dataset::QUESTION_MARK, Dataset::SELECT_CLAUSE_METHODS, Dataset::SQL_WITH, Dataset::STANDARD_TIMESTAMP_FORMAT, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::UNCONDITIONED_JOIN_TYPES, Dataset::UPDATE_CLAUSE_METHODS, 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_vars = {}, *values, &block) ⇒ Object
Execute the given type of statement with the hash of values.
-
#fetch_rows(sql, &block) ⇒ Object
Yield all rows returned by executing the given SQL and converting the types.
-
#prepare(type, name = nil, *values) ⇒ Object
Prepare the given type of statement with the given name, and store it in the database to be called later.
-
#use_cursor(opts = {}) ⇒ Object
Uses a cursor for fetching records, instead of fetching the entire result set at once.
Methods inherited from Dataset
#<<, #[], #[]=, #add_graph_aliases, #aliased_expression_sql, #all, #and, #array_sql, #as, #avg, #bind, #boolean_constant_sql, #case_expression_sql, #cast_sql, clause_methods, #clone, #column_all_sql, #columns, #columns!, #complex_expression_sql, #constant_sql, #count, def_mutation_method, #def_mutation_method, #delete, #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, #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, #negative_boolean_constant_sql, #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_hash, #select_map, #select_more, #select_order_map, #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_join_using?, #supports_modifying_joins?, #supports_multiple_column_in?, #supports_timestamp_timezones?, #supports_timestamp_usecs?, #supports_window_functions?, #to_csv, #to_hash, #truncate, #truncate_sql, #unfiltered, #ungraphed, #ungrouped, #union, #unlimited, #unordered, #update, #update_sql, #where, #window_function_sql, #window_sql, #with, #with_recursive, #with_sql
Methods included from Metaprogramming
Constructor Details
This class inherits a constructor from Sequel::Dataset
Instance Method Details
#call(type, bind_vars = {}, *values, &block) ⇒ Object
Execute the given type of statement with the hash of values.
416 417 418 419 420 |
# File 'lib/sequel/adapters/postgres.rb', line 416 def call(type, bind_vars={}, *values, &block) ps = to_prepared_statement(type, values) ps.extend(BindArgumentMethods) ps.call(bind_vars, &block) end |
#fetch_rows(sql, &block) ⇒ Object
Yield all rows returned by executing the given SQL and converting the types.
308 309 310 311 |
# File 'lib/sequel/adapters/postgres.rb', line 308 def fetch_rows(sql, &block) return cursor_fetch_rows(sql, &block) if @opts[:cursor] execute(sql){|res| yield_hash_rows(res, fetch_rows_set_cols(res), &block)} end |
#prepare(type, name = nil, *values) ⇒ Object
Prepare the given type of statement with the given name, and store it in the database to be called later.
424 425 426 427 428 429 430 431 432 |
# File 'lib/sequel/adapters/postgres.rb', line 424 def prepare(type, name=nil, *values) ps = to_prepared_statement(type, values) ps.extend(PreparedStatementMethods) if name ps.prepared_statement_name = name db.prepared_statements[name] = ps end ps end |
#use_cursor(opts = {}) ⇒ Object
Uses a cursor for fetching records, instead of fetching the entire result set at once. Can be used to process large datasets without holding all rows in memory (which is what the underlying drivers do by default). Options:
-
:rows_per_fetch - the number of rows per fetch (default 1000). Higher numbers result in fewer queries but greater memory use.
Usage:
DB[:huge_table].use_cursor.each{|row| p row}
DB[:huge_table].use_cursor(:rows_per_fetch=>10000).each{|row| p row}
This is untested with the prepared statement/bound variable support, and unlikely to work with either.
328 329 330 |
# File 'lib/sequel/adapters/postgres.rb', line 328 def use_cursor(opts={}) clone(:cursor=>{:rows_per_fetch=>1000}.merge(opts)) end |