Class | Sequel::Postgres::Dataset
In: | lib/sequel/adapters/postgres.rb
Parent: | Sequel::Dataset

Dataset class for PostgreSQL datasets that use the pg, postgres, or postgres-pr driver.

### Methods

call fetch_rows prepare prepared_arg_placeholder use_cursor

### Included Modules

Sequel::Postgres::DatasetMethods

### Classes and Modules

Module Sequel::Postgres::Dataset::ArgumentMapper
Module Sequel::Postgres::Dataset::BindArgumentMethods
Module Sequel::Postgres::Dataset::PreparedStatementMethods

### Constants

DatasetClass | = | self
APOS | = | Sequel::Dataset::APOS
PREPARED_ARG_PLACEHOLDER | = | LiteralString.new('$').freeze

### Public Instance methods

call(type, bind_vars={}, *values, &block)

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

[Source]

         # File lib/sequel/adapters/postgres.rb, line 590
    590:         def call(type, bind_vars={}, *values, &block)
    591:           ps = to_prepared_statement(type, values)
    592:           ps.extend(BindArgumentMethods)
    593:           ps.call(bind_vars, &block)
    594:         end

fetch_rows(sql) {|h| ...}

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

[Source]

         # File lib/sequel/adapters/postgres.rb, line 481
    481:       def fetch_rows(sql)
    482:         return cursor_fetch_rows(sql){|h| yield h} if @opts[:cursor]
    483:         execute(sql){|res| yield_hash_rows(res, fetch_rows_set_cols(res)){|h| yield h}}
    484:       end

prepare(type, name=nil, *values)

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

[Source]

         # File lib/sequel/adapters/postgres.rb, line 598
    598:         def prepare(type, name=nil, *values)
    599:           ps = to_prepared_statement(type, values)
    600:           ps.extend(PreparedStatementMethods)
    601:           if name
    602:             ps.prepared_statement_name = name
    603:             db.set_prepared_statement(name, ps)
    604:           end
    605:           ps
    606:         end

prepared_arg_placeholder()

PostgreSQL uses $N for placeholders instead of ?, so use a $ as the placeholder.

[Source]

         # File lib/sequel/adapters/postgres.rb, line 612
    612:         def prepared_arg_placeholder
    613:           PREPARED_ARG_PLACEHOLDER
    614:         end

use_cursor(opts={})

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.

[Source]

         # File lib/sequel/adapters/postgres.rb, line 501
    501:       def use_cursor(opts={})
    502:         clone(:cursor=>{:rows_per_fetch=>1000}.merge(opts))
    503:       end

[Validate]