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.
140 141 142 |
# File 'lib/sequel/adapters/postgres.rb', line 140 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.
145 146 147 148 149 150 151 152 |
# File 'lib/sequel/adapters/postgres.rb', line 145 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.
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/sequel/adapters/postgres.rb', line 156 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.
174 175 176 177 178 179 180 181 |
# File 'lib/sequel/adapters/postgres.rb', line 174 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 |