Class: Sequel::Postgres::Dataset

Inherits:
Dataset show all
Includes:
DatasetMethods
Defined in:
lib/sequel/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 included from DatasetMethods

Sequel::Postgres::DatasetMethods::ACCESS_EXCLUSIVE, Sequel::Postgres::DatasetMethods::ACCESS_SHARE, Sequel::Postgres::DatasetMethods::BOOL_FALSE, Sequel::Postgres::DatasetMethods::BOOL_TRUE, Sequel::Postgres::DatasetMethods::COMMA_SEPARATOR, Sequel::Postgres::DatasetMethods::EXCLUSIVE, Sequel::Postgres::DatasetMethods::EXPLAIN, Sequel::Postgres::DatasetMethods::EXPLAIN_ANALYZE, Sequel::Postgres::DatasetMethods::FOR_SHARE, Sequel::Postgres::DatasetMethods::FOR_UPDATE, Sequel::Postgres::DatasetMethods::LOCK, Sequel::Postgres::DatasetMethods::NULL, Sequel::Postgres::DatasetMethods::PG_TIMESTAMP_FORMAT, Sequel::Postgres::DatasetMethods::QUERY_PLAN, Sequel::Postgres::DatasetMethods::ROW_EXCLUSIVE, Sequel::Postgres::DatasetMethods::ROW_SHARE, Sequel::Postgres::DatasetMethods::SELECT_CLAUSE_METHODS, Sequel::Postgres::DatasetMethods::SELECT_CLAUSE_METHODS_84, Sequel::Postgres::DatasetMethods::SHARE, Sequel::Postgres::DatasetMethods::SHARE_ROW_EXCLUSIVE, Sequel::Postgres::DatasetMethods::SHARE_UPDATE_EXCLUSIVE, Sequel::Postgres::DatasetMethods::SQL_WITH_RECURSIVE

Constants inherited from Dataset

Dataset::AND_SEPARATOR, 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::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::GET_ERROR_MSG, Dataset::IMPORT_ERROR_MSG, Dataset::INSERT_CLAUSE_METHODS, Dataset::IS_LITERALS, Dataset::IS_OPERATORS, Dataset::MAP_ERROR_MSG, Dataset::MUTATION_METHODS, 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::STOCK_COUNT_OPTS, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, 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

Methods included from DatasetMethods

#analyze, #disable_insert_returning, #explain, extended, #for_share, #for_update, #full_text_search, included, #insert, #insert_returning_sql, #insert_select, #lock, #multi_insert_sql, #supports_timestamp_timezones?, #supports_window_functions?, #window

Methods inherited from Dataset

#<<, #[], #[]=, #add_graph_aliases, #aliased_expression_sql, #all, #and, #array_sql, #as, #avg, #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, #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_more, #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_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

#meta_def

Methods included from Enumerable

#fourth, #second, #third

Constructor Details

This class inherits a constructor from Sequel::Dataset

Instance Method Details

#call(type, hash, values = nil, &block) ⇒ Object

Execute the given type of statement with the hash of values.



410
411
412
413
414
# File 'lib/sequel/lib/sequel/adapters/postgres.rb', line 410

def call(type, hash, values=nil, &block)
  ps = to_prepared_statement(type, values)
  ps.extend(BindArgumentMethods)
  ps.call(hash, &block)
end

#fetch_rows(sql) ⇒ Object

Yield all rows returned by executing the given SQL and converting the types.



307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'lib/sequel/lib/sequel/adapters/postgres.rb', line 307

def fetch_rows(sql)
  cols = []
  execute(sql) do |res|
    res.nfields.times do |fieldnum|
      cols << [fieldnum, PG_TYPES[res.ftype(fieldnum)], output_identifier(res.fname(fieldnum))]
    end
    @columns = cols.map{|c| c.at(2)}
    res.ntuples.times do |recnum|
      converted_rec = {}
      cols.each do |fieldnum, type_proc, fieldsym|
        value = res.getvalue(recnum, fieldnum)
        converted_rec[fieldsym] = (value && type_proc) ? type_proc.call(value) : value
      end
      yield converted_rec
    end
  end
end

#prepare(type, name = nil, values = nil) ⇒ Object

Prepare the given type of statement with the given name, and store it in the database to be called later.



418
419
420
421
422
423
424
425
426
# File 'lib/sequel/lib/sequel/adapters/postgres.rb', line 418

def prepare(type, name=nil, values=nil)
  ps = to_prepared_statement(type, values)
  ps.extend(PreparedStatementMethods)
  if name
    ps.prepared_statement_name = name
    db.prepared_statements[name] = ps
  end
  ps
end