Class: Sequel::Postgres::Dataset

Inherits:
Dataset show all
Includes:
DatasetMethods
Defined in:
lib/sequel_core/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 =
'$'.lit.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::PG_TIMESTAMP_FORMAT, Sequel::Postgres::DatasetMethods::QUERY_PLAN, Sequel::Postgres::DatasetMethods::ROW_EXCLUSIVE, Sequel::Postgres::DatasetMethods::ROW_SHARE, Sequel::Postgres::DatasetMethods::SHARE, Sequel::Postgres::DatasetMethods::SHARE_ROW_EXCLUSIVE, Sequel::Postgres::DatasetMethods::SHARE_UPDATE_EXCLUSIVE

Constants inherited from Dataset

Dataset::AND_SEPARATOR, 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_CLASSES, Dataset::DATE_FORMAT, Dataset::MUTATION_METHODS, Dataset::NOTIMPL_MSG, Dataset::NULL, Dataset::N_ARITY_OPERATORS, Dataset::QUESTION_MARK, Dataset::STOCK_COUNT_OPTS, Dataset::STOCK_TRANSFORMS, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::WILDCARD

Instance Attribute Summary

Attributes inherited from Dataset

#db, #opts, #quote_identifiers, #row_proc

Instance Method Summary collapse

Methods included from DatasetMethods

#analyze, #explain, #for_share, #for_update, #full_text_search, #insert, #insert_returning_sql, #insert_select, #literal, #lock, #multi_insert_sql, #quoted_identifier, #select_sql

Methods inherited from Dataset

#<<, #[], #[]=, #aliased_expression_sql, #all, #and, #as, #avg, #case_expression_sql, #clone, #column_all_sql, #columns, #columns!, #complex_expression_sql, #count, #create_or_replace_view, #create_view, dataset_classes, #def_mutation_method, def_mutation_method, #delete, #delete_sql, #each, #each_page, #empty?, #except, #exclude, #exists, #filter, #first, #first_source, #from, #from_self, #function_sql, #get, #graph, #grep, #group, #group_and_count, #having, inherited, #initialize, #insert, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, #invert, #irregular_function_sql, #join_clause_sql, #join_on_clause_sql, #join_table, #join_using_clause_sql, #last, #limit, #literal, #map, #max, #min, #model_classes, #multi_insert, #multi_insert_sql, #naked, #or, #order, #order_more, #ordered_expression_sql, #paginate, #polymorphic_key, #print, #qualified_identifier_sql, #query, #quote_identifier, #quote_identifiers?, #quoted_identifier, #range, #reverse_order, #select, #select_all, #select_more, #select_sql, #server, #set, #set_defaults, #set_graph_aliases, #set_model, #set_overrides, #single_record, #single_value, #subscript_sql, #sum, #symbol_to_column_ref, #table_exists?, #to_csv, #to_hash, #transform, #transform_load, #transform_save, #unfiltered, #union, #uniq, #unordered, #update, #update_sql

Methods included from Enumerable

#send_each

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.



396
397
398
399
400
# File 'lib/sequel_core/adapters/postgres.rb', line 396

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.



285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
# File 'lib/sequel_core/adapters/postgres.rb', line 285

def fetch_rows(sql)
  @columns = []
  execute(sql) do |res|
    (0...res.ntuples).each do |recnum|
      converted_rec = {}
      (0...res.nfields).each do |fieldnum|
        fieldsym = res.fname(fieldnum).to_sym
        @columns << fieldsym
        converted_rec[fieldsym] = if value = res.getvalue(recnum,fieldnum)
          (PG_TYPES[res.ftype(fieldnum)] || lambda{|s| s.to_s}).call(value)
        else
          value
        end
      end
      yield converted_rec
    end
  end
end

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

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



404
405
406
407
408
409
# File 'lib/sequel_core/adapters/postgres.rb', line 404

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