pg 1.3.0.rc1-x86-mingw32 → 1.3.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -134,7 +134,7 @@ pg_recordcoder_type_map_get(VALUE self)
134
134
  * tm = PG::TypeMapByColumn.new([PG::TextEncoder::Float.new]*2)
135
135
  * # Use this type map to encode the record:
136
136
  * PG::TextEncoder::Record.new(type_map: tm).encode([1,2])
137
- * # => "(\"1.0000000000000000E+00\",\"2.0000000000000000E+00\")"
137
+ * # => "(\"1.0\",\"2.0\")"
138
138
  *
139
139
  * Records can also be encoded and decoded directly to and from the database.
140
140
  * This avoids intermediate string allocations and is very fast.
data/lib/2.5/pg_ext.so CHANGED
Binary file
data/lib/2.6/pg_ext.so CHANGED
Binary file
data/lib/2.7/pg_ext.so CHANGED
Binary file
data/lib/3.0/pg_ext.so CHANGED
Binary file
data/lib/3.1/pg_ext.so ADDED
Binary file
@@ -162,7 +162,7 @@ class PG::BasicTypeRegistry
162
162
 
163
163
  include Checker
164
164
 
165
- def initialize
165
+ def initialize
166
166
  # The key of these hashs maps to the `typname` column from the table pg_type.
167
167
  @coders_by_name = []
168
168
  end
data/lib/pg/connection.rb CHANGED
@@ -7,7 +7,7 @@ require 'io/wait'
7
7
  require 'socket'
8
8
 
9
9
  # The PostgreSQL connection class. The interface for this class is based on
10
- # {libpq}[http://www.postgresql.org/docs/9.2/interactive/libpq.html], the C
10
+ # {libpq}[http://www.postgresql.org/docs/current/libpq.html], the C
11
11
  # application programmer's interface to PostgreSQL. Some familiarity with libpq
12
12
  # is recommended, but not necessary.
13
13
  #
@@ -21,6 +21,13 @@ require 'socket'
21
21
  #
22
22
  # See the PG::Result class for information on working with the results of a query.
23
23
  #
24
+ # Many methods of this class have three variants kind of:
25
+ # 1. #exec - the base method which is an alias to #async_exec .
26
+ # This is the method that should be used in general.
27
+ # 2. #async_exec - the async aware version of the method, implemented by libpq's async API.
28
+ # 3. #sync_exec - the method version that is implemented by blocking function(s) of libpq.
29
+ #
30
+ # Sync and async version of the method can be switched by Connection.async_api= , however it is not recommended to change the default.
24
31
  class PG::Connection
25
32
 
26
33
  # The order the options are passed to the ::connect method.
@@ -364,14 +371,44 @@ class PG::Connection
364
371
  end
365
372
  end
366
373
 
367
- alias sync_get_result get_result
368
- def async_get_result(*args)
374
+ # call-seq:
375
+ # conn.get_result() -> PG::Result
376
+ # conn.get_result() {|pg_result| block }
377
+ #
378
+ # Blocks waiting for the next result from a call to
379
+ # #send_query (or another asynchronous command), and returns
380
+ # it. Returns +nil+ if no more results are available.
381
+ #
382
+ # Note: call this function repeatedly until it returns +nil+, or else
383
+ # you will not be able to issue further commands.
384
+ #
385
+ # If the optional code block is given, it will be passed <i>result</i> as an argument,
386
+ # and the PG::Result object will automatically be cleared when the block terminates.
387
+ # In this instance, <code>conn.exec</code> returns the value of the block.
388
+ def get_result(*args)
369
389
  block
370
390
  sync_get_result
371
391
  end
392
+ alias async_get_result get_result
372
393
 
373
- alias sync_get_copy_data get_copy_data
374
- def async_get_copy_data(async=false, decoder=nil)
394
+ # call-seq:
395
+ # conn.get_copy_data( [ nonblock = false [, decoder = nil ]] ) -> Object
396
+ #
397
+ # Return one row of data, +nil+
398
+ # if the copy is done, or +false+ if the call would
399
+ # block (only possible if _nonblock_ is true).
400
+ #
401
+ # If _decoder_ is not set or +nil+, data is returned as binary string.
402
+ #
403
+ # If _decoder_ is set to a PG::Coder derivation, the return type depends on this decoder.
404
+ # PG::TextDecoder::CopyRow decodes the received data fields from one row of PostgreSQL's
405
+ # COPY text format to an Array of Strings.
406
+ # Optionally the decoder can type cast the single fields to various Ruby types in one step,
407
+ # if PG::TextDecoder::CopyRow#type_map is set accordingly.
408
+ #
409
+ # See also #copy_data.
410
+ #
411
+ def get_copy_data(async=false, decoder=nil)
375
412
  if async
376
413
  return sync_get_copy_data(async, decoder)
377
414
  else
@@ -382,56 +419,143 @@ class PG::Connection
382
419
  return res
383
420
  end
384
421
  end
422
+ alias async_get_copy_data get_copy_data
385
423
 
386
- # In async_api=false mode all send calls run directly on libpq.
387
- # Blocking vs. nonblocking state can be changed in libpq.
388
- alias sync_setnonblocking setnonblocking
389
424
 
390
425
  # In async_api=true mode (default) all send calls run nonblocking.
391
426
  # The difference is that setnonblocking(true) disables automatic handling of would-block cases.
392
- def async_setnonblocking(enabled)
427
+ # In async_api=false mode all send calls run directly on libpq.
428
+ # Blocking vs. nonblocking state can be changed in libpq.
429
+
430
+ # call-seq:
431
+ # conn.setnonblocking(Boolean) -> nil
432
+ #
433
+ # Sets the nonblocking status of the connection.
434
+ # In the blocking state, calls to #send_query
435
+ # will block until the message is sent to the server,
436
+ # but will not wait for the query results.
437
+ # In the nonblocking state, calls to #send_query
438
+ # will return an error if the socket is not ready for
439
+ # writing.
440
+ # Note: This function does not affect #exec, because
441
+ # that function doesn't return until the server has
442
+ # processed the query and returned the results.
443
+ #
444
+ # Returns +nil+.
445
+ def setnonblocking(enabled)
393
446
  singleton_class.async_send_api = !enabled
394
447
  self.flush_data = !enabled
395
448
  sync_setnonblocking(true)
396
449
  end
450
+ alias async_setnonblocking setnonblocking
397
451
 
398
452
  # sync/async isnonblocking methods are switched by async_setnonblocking()
399
- alias sync_isnonblocking isnonblocking
400
- def async_isnonblocking
453
+
454
+ # call-seq:
455
+ # conn.isnonblocking() -> Boolean
456
+ #
457
+ # Returns the blocking status of the database connection.
458
+ # Returns +true+ if the connection is set to nonblocking mode and +false+ if blocking.
459
+ def isnonblocking
401
460
  false
402
461
  end
462
+ alias async_isnonblocking isnonblocking
463
+ alias nonblocking? isnonblocking
403
464
 
404
- alias sync_put_copy_data put_copy_data
405
- def async_put_copy_data(buffer, encoder=nil)
465
+ # call-seq:
466
+ # conn.put_copy_data( buffer [, encoder] ) -> Boolean
467
+ #
468
+ # Transmits _buffer_ as copy data to the server.
469
+ # Returns true if the data was sent, false if it was
470
+ # not sent (false is only possible if the connection
471
+ # is in nonblocking mode, and this command would block).
472
+ #
473
+ # _encoder_ can be a PG::Coder derivation (typically PG::TextEncoder::CopyRow).
474
+ # This encodes the data fields given as _buffer_ from an Array of Strings to
475
+ # PostgreSQL's COPY text format inclusive proper escaping. Optionally
476
+ # the encoder can type cast the fields from various Ruby types in one step,
477
+ # if PG::TextEncoder::CopyRow#type_map is set accordingly.
478
+ #
479
+ # Raises an exception if an error occurs.
480
+ #
481
+ # See also #copy_data.
482
+ #
483
+ def put_copy_data(buffer, encoder=nil)
406
484
  until sync_put_copy_data(buffer, encoder)
407
485
  flush
408
486
  end
409
487
  flush
410
488
  end
411
- alias sync_put_copy_end put_copy_end
412
- def async_put_copy_end(*args)
489
+ alias async_put_copy_data put_copy_data
490
+
491
+ # call-seq:
492
+ # conn.put_copy_end( [ error_message ] ) -> Boolean
493
+ #
494
+ # Sends end-of-data indication to the server.
495
+ #
496
+ # _error_message_ is an optional parameter, and if set,
497
+ # forces the COPY command to fail with the string
498
+ # _error_message_.
499
+ #
500
+ # Returns true if the end-of-data was sent, #false* if it was
501
+ # not sent (*false* is only possible if the connection
502
+ # is in nonblocking mode, and this command would block).
503
+ def put_copy_end(*args)
413
504
  until sync_put_copy_end(*args)
414
505
  flush
415
506
  end
416
507
  flush
417
508
  end
509
+ alias async_put_copy_end put_copy_end
418
510
 
419
- if method_defined? :encrypt_password
420
- alias sync_encrypt_password encrypt_password
421
- def async_encrypt_password( password, username, algorithm=nil )
511
+ if method_defined? :sync_encrypt_password
512
+ # call-seq:
513
+ # conn.encrypt_password( password, username, algorithm=nil ) -> String
514
+ #
515
+ # This function is intended to be used by client applications that wish to send commands like <tt>ALTER USER joe PASSWORD 'pwd'</tt>.
516
+ # It is good practice not to send the original cleartext password in such a command, because it might be exposed in command logs, activity displays, and so on.
517
+ # Instead, use this function to convert the password to encrypted form before it is sent.
518
+ #
519
+ # The +password+ and +username+ arguments are the cleartext password, and the SQL name of the user it is for.
520
+ # +algorithm+ specifies the encryption algorithm to use to encrypt the password.
521
+ # Currently supported algorithms are +md5+ and +scram-sha-256+ (+on+ and +off+ are also accepted as aliases for +md5+, for compatibility with older server versions).
522
+ # Note that support for +scram-sha-256+ was introduced in PostgreSQL version 10, and will not work correctly with older server versions.
523
+ # If algorithm is omitted or +nil+, this function will query the server for the current value of the +password_encryption+ setting.
524
+ # That can block, and will fail if the current transaction is aborted, or if the connection is busy executing another query.
525
+ # If you wish to use the default algorithm for the server but want to avoid blocking, query +password_encryption+ yourself before calling #encrypt_password, and pass that value as the algorithm.
526
+ #
527
+ # Return value is the encrypted password.
528
+ # The caller can assume the string doesn't contain any special characters that would require escaping.
529
+ #
530
+ # Available since PostgreSQL-10.
531
+ # See also corresponding {libpq function}[https://www.postgresql.org/docs/current/libpq-misc.html#LIBPQ-PQENCRYPTPASSWORDCONN].
532
+ def encrypt_password( password, username, algorithm=nil )
422
533
  algorithm ||= exec("SHOW password_encryption").getvalue(0,0)
423
534
  sync_encrypt_password(password, username, algorithm)
424
535
  end
536
+ alias async_encrypt_password encrypt_password
425
537
  end
426
538
 
427
- alias sync_reset reset
428
- def async_reset
539
+ # call-seq:
540
+ # conn.reset()
541
+ #
542
+ # Resets the backend connection. This method closes the
543
+ # backend connection and tries to re-connect.
544
+ def reset
429
545
  reset_start
430
546
  async_connect_or_reset(:reset_poll)
431
547
  end
548
+ alias async_reset reset
432
549
 
433
- alias sync_cancel cancel
434
- def async_cancel
550
+ # call-seq:
551
+ # conn.cancel() -> String
552
+ #
553
+ # Requests cancellation of the command currently being
554
+ # processed.
555
+ #
556
+ # Returns +nil+ on success, or a string containing the
557
+ # error message if a failure occurs.
558
+ def cancel
435
559
  be_pid = backend_pid
436
560
  be_key = backend_key
437
561
  cancel_request = [0x10, 1234, 5678, be_pid, be_key].pack("NnnNN")
@@ -484,6 +608,7 @@ class PG::Connection
484
608
  rescue SystemCallError => err
485
609
  err.to_s
486
610
  end
611
+ alias async_cancel cancel
487
612
 
488
613
  private def async_connect_or_reset(poll_meth)
489
614
  # Now grab a reference to the underlying socket so we know when the connection is established
@@ -520,19 +645,90 @@ class PG::Connection
520
645
  end
521
646
 
522
647
  class << self
523
- alias sync_connect new
524
-
525
- def async_connect(*args, **kwargs)
526
- conn = PG::Connection.connect_start(*args, **kwargs ) or
648
+ # call-seq:
649
+ # PG::Connection.new -> conn
650
+ # PG::Connection.new(connection_hash) -> conn
651
+ # PG::Connection.new(connection_string) -> conn
652
+ # PG::Connection.new(host, port, options, tty, dbname, user, password) -> conn
653
+ #
654
+ # Create a connection to the specified server.
655
+ #
656
+ # +connection_hash+ must be a ruby Hash with connection parameters.
657
+ # See the {list of valid parameters}[https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS] in the PostgreSQL documentation.
658
+ #
659
+ # There are two accepted formats for +connection_string+: plain <code>keyword = value</code> strings and URIs.
660
+ # See the documentation of {connection strings}[https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING].
661
+ #
662
+ # The positional parameter form has the same functionality except that the missing parameters will always take on default values. The parameters are:
663
+ # [+host+]
664
+ # server hostname
665
+ # [+port+]
666
+ # server port number
667
+ # [+options+]
668
+ # backend options
669
+ # [+tty+]
670
+ # (ignored in all versions of PostgreSQL)
671
+ # [+dbname+]
672
+ # connecting database name
673
+ # [+user+]
674
+ # login user name
675
+ # [+password+]
676
+ # login password
677
+ #
678
+ # Examples:
679
+ #
680
+ # # Connect using all defaults
681
+ # PG::Connection.new
682
+ #
683
+ # # As a Hash
684
+ # PG::Connection.new( dbname: 'test', port: 5432 )
685
+ #
686
+ # # As a String
687
+ # PG::Connection.new( "dbname=test port=5432" )
688
+ #
689
+ # # As an Array
690
+ # PG::Connection.new( nil, 5432, nil, nil, 'test', nil, nil )
691
+ #
692
+ # # As an URI
693
+ # PG::Connection.new( "postgresql://user:pass@pgsql.example.com:5432/testdb?sslmode=require" )
694
+ #
695
+ # If the Ruby default internal encoding is set (i.e., <code>Encoding.default_internal != nil</code>), the
696
+ # connection will have its +client_encoding+ set accordingly.
697
+ #
698
+ # Raises a PG::Error if the connection fails.
699
+ def new(*args, **kwargs)
700
+ conn = self.connect_start(*args, **kwargs ) or
527
701
  raise(PG::Error, "Unable to create a new connection")
528
702
 
529
703
  raise(PG::ConnectionBad, conn.error_message) if conn.status == PG::CONNECTION_BAD
530
704
 
531
705
  conn.send(:async_connect_or_reset, :connect_poll)
532
706
  end
707
+ alias async_connect new
708
+ alias connect new
709
+ alias open new
710
+ alias setdb new
711
+ alias setdblogin new
533
712
 
534
- alias sync_ping ping
535
- def async_ping(*args)
713
+ # call-seq:
714
+ # PG::Connection.ping(connection_hash) -> Integer
715
+ # PG::Connection.ping(connection_string) -> Integer
716
+ # PG::Connection.ping(host, port, options, tty, dbname, login, password) -> Integer
717
+ #
718
+ # Check server status.
719
+ #
720
+ # See PG::Connection.new for a description of the parameters.
721
+ #
722
+ # Returns one of:
723
+ # [+PQPING_OK+]
724
+ # server is accepting connections
725
+ # [+PQPING_REJECT+]
726
+ # server is alive but rejecting connections
727
+ # [+PQPING_NO_RESPONSE+]
728
+ # could not establish connection
729
+ # [+PQPING_NO_ATTEMPT+]
730
+ # connection not attempted (bad params)
731
+ def ping(*args)
536
732
  if Fiber.respond_to?(:scheduler) && Fiber.scheduler
537
733
  # Run PQping in a second thread to avoid blocking of the scheduler.
538
734
  # Unfortunately there's no nonblocking way to run ping.
@@ -541,9 +737,14 @@ class PG::Connection
541
737
  sync_ping(*args)
542
738
  end
543
739
  end
740
+ alias async_ping ping
544
741
 
545
742
  REDIRECT_CLASS_METHODS = {
546
743
  :new => [:async_connect, :sync_connect],
744
+ :connect => [:async_connect, :sync_connect],
745
+ :open => [:async_connect, :sync_connect],
746
+ :setdb => [:async_connect, :sync_connect],
747
+ :setdblogin => [:async_connect, :sync_connect],
547
748
  :ping => [:async_ping, :sync_ping],
548
749
  }
549
750
 
@@ -586,6 +787,22 @@ class PG::Connection
586
787
  end
587
788
  end
588
789
 
790
+ # Switch between sync and async libpq API.
791
+ #
792
+ # PG::Connection.async_api = true
793
+ # this is the default.
794
+ # It sets an alias from #exec to #async_exec, #reset to #async_reset and so on.
795
+ #
796
+ # PG::Connection.async_api = false
797
+ # sets an alias from #exec to #sync_exec, #reset to #sync_reset and so on.
798
+ #
799
+ # pg-1.1.0+ defaults to libpq's async API for query related blocking methods.
800
+ # pg-1.3.0+ defaults to libpq's async API for all possibly blocking methods.
801
+ #
802
+ # _PLEASE_ _NOTE_: This method is not part of the public API and is for debug and development use only.
803
+ # Do not use this method in production code.
804
+ # Any issues with the default setting of <tt>async_api=true</tt> should be reported to the maintainers instead.
805
+ #
589
806
  def async_api=(enable)
590
807
  self.async_send_api = enable
591
808
  REDIRECT_METHODS.each do |ali, (async, sync)|
@@ -599,6 +816,5 @@ class PG::Connection
599
816
  end
600
817
  end
601
818
 
602
- # pg-1.1.0+ defaults to libpq's async API for query related blocking methods
603
819
  self.async_api = true
604
820
  end # class PG::Connection
data/lib/pg/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module PG
2
2
  # Library version
3
- VERSION = '1.3.0.rc1'
3
+ VERSION = '1.3.0'
4
4
  end
data/lib/pg.rb CHANGED
@@ -63,8 +63,8 @@ module PG
63
63
 
64
64
 
65
65
  ### Convenience alias for PG::Connection.new.
66
- def self::connect( *args )
67
- return PG::Connection.new( *args )
66
+ def self::connect( *args, **kwargs )
67
+ return PG::Connection.new( *args, **kwargs )
68
68
  end
69
69
 
70
70
 
Binary file
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,34 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0.rc1
4
+ version: 1.3.0
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Michael Granger
8
8
  - Lars Kanis
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
35
+ btEP+7EplFuoiMfd
30
36
  -----END CERTIFICATE-----
31
- date: 2021-12-27 00:00:00.000000000 Z
37
+ date: 2022-01-23 00:00:00.000000000 Z
32
38
  dependencies: []
33
39
  description: Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL
34
40
  9.3 and later.
@@ -100,6 +106,7 @@ files:
100
106
  - lib/2.6/pg_ext.so
101
107
  - lib/2.7/pg_ext.so
102
108
  - lib/3.0/pg_ext.so
109
+ - lib/3.1/pg_ext.so
103
110
  - lib/pg.rb
104
111
  - lib/pg/basic_type_map_based_on_result.rb
105
112
  - lib/pg/basic_type_map_for_queries.rb
@@ -156,7 +163,7 @@ metadata:
156
163
  source_code_uri: https://github.com/ged/ruby-pg
157
164
  changelog_uri: https://github.com/ged/ruby-pg/blob/master/History.rdoc
158
165
  documentation_uri: http://deveiate.org/code/pg
159
- post_install_message:
166
+ post_install_message:
160
167
  rdoc_options:
161
168
  - "--main"
162
169
  - README.rdoc
@@ -169,15 +176,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
176
  version: '2.5'
170
177
  - - "<"
171
178
  - !ruby/object:Gem::Version
172
- version: 3.1.dev
179
+ version: 3.2.dev
173
180
  required_rubygems_version: !ruby/object:Gem::Requirement
174
181
  requirements:
175
- - - ">"
182
+ - - ">="
176
183
  - !ruby/object:Gem::Version
177
- version: 1.3.1
184
+ version: '0'
178
185
  requirements: []
179
- rubygems_version: 3.2.3
180
- signing_key:
186
+ rubygems_version: 3.3.4
187
+ signing_key:
181
188
  specification_version: 4
182
189
  summary: Pg is the Ruby interface to the PostgreSQL RDBMS
183
190
  test_files: []
metadata.gz.sig CHANGED
Binary file