pg_conn 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91bfceabfdba86eba789108cea2718e382fe6849b580ef3be3a428a8f08ab45e
4
- data.tar.gz: 0014ae1ccc9c6cf95f63fce78d5a094b7068e711ed18d0edcdaafe35d47ef04b
3
+ metadata.gz: bfe715a08cebb48bb84da6b467a54258e05a774cabfcf7dc0b5492a4059b9f6f
4
+ data.tar.gz: 26753d7a87a7a6bb7cb91e9e88ed06e08161e9893f739311bae34cbbba9faffc
5
5
  SHA512:
6
- metadata.gz: 6302b2051fd7a152b026ed7a412ad9025ae7fbdb6f260173c5731c123f367c7535a9522e2654ccc09950d14c9e3009c1daf6d52fa7fc3114c3b9f196e6db0570
7
- data.tar.gz: c793534b923e08cc22121dc824c858003cb495e2453cb77cd7007672e242a62ff8819ab966f2f9d70a552f3a080da2627c1ec1211990eefcbe87bdcc1a5c06e8
6
+ metadata.gz: a54dc14b754e355a2e71a3c23a00b89c334afe33c721334f08ce937f285978719541605ef972a4b55a7fbdbd2fd498f5cd1ce39535704b2385b112568a5c6b4b
7
+ data.tar.gz: 89bdf2c5d23f3f0f8ce4d0973f982a998523ea9b1c496dff20ccd995c6f19abc1faa9e789dbec07b14b29ba6af5e06af4bd2689e106a59cdf75475caba8dbb44
@@ -1,3 +1,3 @@
1
1
  module PgConn
2
- VERSION = "0.19.0"
2
+ VERSION = "0.20.0"
3
3
  end
data/lib/pg_conn.rb CHANGED
@@ -64,9 +64,13 @@ module PgConn
64
64
  attr_reader :session
65
65
 
66
66
  # The transaction timestamp of the most recent SQL statement executed by
67
- # #exec or #transaction block
67
+ # #exec or #transaction block. The timestamp is without time zone
68
68
  attr_reader :timestamp
69
69
 
70
+ # The transaction timestamp of the most recent SQL statement executed by
71
+ # #exec or #transaction block. The timestamp includes the current time zone
72
+ attr_reader :timestamptz
73
+
70
74
  # PG::Error object of the first failed statement in the transaction;
71
75
  # otherwise nil. It is cleared at the beginning of a transaction so be sure
72
76
  # to save it before you run any cleanup code that may initiate new
@@ -139,6 +143,7 @@ module PgConn
139
143
  if args.last.is_a?(Hash)
140
144
  @field_name_class = args.last.delete(:field_name_class) || Symbol
141
145
  @timestamp = args.last.delete(:timestamp)
146
+ @timestamptz = args.last.delete(:timestamptz)
142
147
  args.pop if args.last.empty?
143
148
  else
144
149
  @field_name_class = Symbol
@@ -212,7 +217,6 @@ module PgConn
212
217
  @role = RoleMethods.new(self)
213
218
  @rdbms = RdbmsMethods.new(self)
214
219
  @session = SessionMethods.new(self)
215
- @timestamp = nil
216
220
  @savepoints = nil # Stack of savepoint names. Nil if no transaction in progress
217
221
  end
218
222
 
@@ -238,7 +242,7 @@ module PgConn
238
242
  # Quote value as an identifier. Value should be a non-nil string or a symbol
239
243
  def quote_identifier(s)
240
244
  s = s.to_s if s.is_a?(Symbol)
241
- String@pg_connection.escape_identifier(s)
245
+ @pg_connection.escape_identifier(s)
242
246
  end
243
247
 
244
248
  # Quote the value as a string. Emit 'null' if value is nil
@@ -255,25 +259,36 @@ module PgConn
255
259
  when nil; 'null'
256
260
  when Date, DateTime; "'#{value}'"
257
261
  when Time; "'#{value.strftime("%FT%T%:z")}'"
258
- when Array; "array[#{value.map { |elem| quote_literal(elem) }.join(', ')}]"
262
+ when Array; "array[#{value.map { |elem| quote_value(elem) }.join(', ')}]"
259
263
  else
260
264
  @pg_connection.escape_literal(value.to_s)
261
265
  end
262
266
  end
263
267
 
264
-
265
268
  # Quote array as a comma-separated sequence of identifiers
266
269
  def quote_identifier_seq(identifiers) = identifiers.map { quote_identifier(_1) }.join(', ')
267
270
 
268
- # Quote array as a parenthesis-enclosed sequence of identifiers
271
+ # Quote array as a parenthesis-enclosed sequence of identifiers. TODO: Rename quote_identifier_tuple
269
272
  def quote_identifier_list(identifiers) = "(#{quote_identifier_seq(identifiers)})"
270
273
 
271
- # Quote array as a comma-separated sequence of values
274
+ # Quote array as a bracket-enclosed sequence of identifiers
275
+ # def quote_identifier_array(identifiers) = "(#{quote_identifier_seq(identifiers)})"
276
+
277
+ # Quote array as a curly-bracket-enclosed sequence of identifiers
278
+ # def quote_identifier_hash(identifiers) = "(#{quote_identifier_seq(identifiers)})"
279
+
280
+ # Quote array as a comma-separated sequence of quoted values
272
281
  def quote_value_seq(values) = values.map { quote_literal(_1) }.join(', ')
273
282
 
274
- # Quote array as a parenthesis-enclosed list of value
283
+ # Quote array as a parenthesis-enclosed list of quoted values. TODO: Rename to quote_value_tuple
275
284
  def quote_value_list(values) = "(#{quote_value_seq(values)})"
276
285
 
286
+ # Quote array as a bracket-enclosed sequence of values
287
+ # def quote_identifier_array(values) = "(#{quote_identifier_seq(values)})"
288
+
289
+ # Quote array as a curly-bracket-enclosed sequence of values
290
+ # def quote_identifier_hash(values) = "(#{quote_identifier_seq(values)})"
291
+
277
292
  # Old aliases. TODO Remove
278
293
  def quote_literal(value) = quote_value(value)
279
294
  def quote_literal_list(values) = quote_value_list(values)
@@ -324,6 +339,12 @@ module PgConn
324
339
  end
325
340
  end
326
341
 
342
+ # TODO
343
+ # Query variants
344
+ # (sql) - simple SQL statement
345
+ # (schema = nil, table, id-or-where-clause = nil, field-or-fields)
346
+ #
347
+
327
348
  # Return a single value. It is an error if the query doesn't return a
328
349
  # single record with a single column. If :transaction is true, the query
329
350
  # will be executed in a transaction and also be committed if :commit is
@@ -776,7 +797,14 @@ module PgConn
776
797
  @savepoints = []
777
798
  pg_exec("begin")
778
799
  @error = @err = nil
779
- @timestamp = pg_exec("select current_timestamp").values[0][0] if @pg_connection
800
+ # FIXME This special-cases the situation where commands are logged to a
801
+ # file instead of being executed. Maybe remove logging (or execute always
802
+ # and log as a side-effect)
803
+ if @pg_connection
804
+ @timestamp, @timestamptz = @pg_connection.exec(
805
+ 'select current_timestamp, current_timestamp::timestamp without time zone'
806
+ ).tuple_values(0)
807
+ end
780
808
  end
781
809
  end
782
810
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_conn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-11 00:00:00.000000000 Z
11
+ date: 2024-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg