Class: Sequel::Postgres::Adapter
- Includes:
- AdapterMethods
- Defined in:
- lib/sequel/adapters/postgres.rb
Overview
PGconn subclass for connection specific methods used with the pg, postgres, or postgres-pr driver.
Constant Summary
Constants included from AdapterMethods
Sequel::Postgres::AdapterMethods::SELECT_CURRVAL, Sequel::Postgres::AdapterMethods::SELECT_CUSTOM_SEQUENCE, Sequel::Postgres::AdapterMethods::SELECT_PK, Sequel::Postgres::AdapterMethods::SELECT_SERIAL_SEQUENCE
Instance Attribute Summary collapse
-
#prepared_statements ⇒ Object
readonly
Hash of prepared statements for this connection.
Attributes included from AdapterMethods
Instance Method Summary collapse
-
#apply_connection_settings ⇒ Object
Apply connection settings for this connection.
-
#check_disconnect_errors ⇒ Object
Raise a Sequel::DatabaseDisconnectError if a PGError is raised and the connection status cannot be determined or it is not OK.
-
#execute(sql, args = nil) ⇒ Object
Execute the given SQL with this connection.
Methods included from AdapterMethods
#last_insert_id, #primary_key, #sequence
Instance Attribute Details
#prepared_statements ⇒ Object (readonly)
Hash of prepared statements for this connection. Keys are string names of the server side prepared statement, and values are SQL strings.
127 128 129 |
# File 'lib/sequel/adapters/postgres.rb', line 127 def prepared_statements @prepared_statements end |
Instance Method Details
#apply_connection_settings ⇒ Object
Apply connection settings for this connection. Current sets the date style to ISO in order make Date object creation in ruby faster, if Postgres.use_iso_date_format is true.
132 133 134 135 136 137 138 139 |
# File 'lib/sequel/adapters/postgres.rb', line 132 def apply_connection_settings super if Postgres.use_iso_date_format sql = "SET DateStyle = 'ISO'" execute(sql) end @prepared_statements = {} if SEQUEL_POSTGRES_USES_PG end |
#check_disconnect_errors ⇒ Object
Raise a Sequel::DatabaseDisconnectError if a PGError is raised and the connection status cannot be determined or it is not OK.
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/sequel/adapters/postgres.rb', line 143 def check_disconnect_errors begin yield rescue PGError =>e begin s = status rescue PGError raise Sequel.convert_exception_class(e, Sequel::DatabaseDisconnectError) end status_ok = (s == Adapter::CONNECTION_OK) status_ok ? raise : raise(Sequel.convert_exception_class(e, Sequel::DatabaseDisconnectError)) ensure block if status_ok end end |
#execute(sql, args = nil) ⇒ Object
Execute the given SQL with this connection. If a block is given, yield the results, otherwise, return the number of changed rows.
161 162 163 164 165 166 167 168 |
# File 'lib/sequel/adapters/postgres.rb', line 161 def execute(sql, args=nil) q = check_disconnect_errors{@db.log_yield(sql, args){args ? async_exec(sql, args) : async_exec(sql)}} begin block_given? ? yield(q) : q.cmd_tuples ensure q.clear end end |