pg 1.5.9-x64-mingw-ucrt → 1.6.0.rc1-x64-mingw-ucrt

Sign up to get free protection for your applications and to get access to all the features.
data/lib/pg/connection.rb CHANGED
@@ -356,21 +356,18 @@ class PG::Connection
356
356
  end
357
357
  end
358
358
 
359
- # Method 'ssl_attribute' was introduced in PostgreSQL 9.5.
360
- if self.instance_methods.find{|m| m.to_sym == :ssl_attribute }
361
- # call-seq:
362
- # conn.ssl_attributes -> Hash<String,String>
363
- #
364
- # Returns SSL-related information about the connection as key/value pairs
365
- #
366
- # The available attributes varies depending on the SSL library being used,
367
- # and the type of connection.
368
- #
369
- # See also #ssl_attribute
370
- def ssl_attributes
371
- ssl_attribute_names.each.with_object({}) do |n,h|
372
- h[n] = ssl_attribute(n)
373
- end
359
+ # call-seq:
360
+ # conn.ssl_attributes -> Hash<String,String>
361
+ #
362
+ # Returns SSL-related information about the connection as key/value pairs
363
+ #
364
+ # The available attributes varies depending on the SSL library being used,
365
+ # and the type of connection.
366
+ #
367
+ # See also #ssl_attribute
368
+ def ssl_attributes
369
+ ssl_attribute_names.each.with_object({}) do |n,h|
370
+ h[n] = ssl_attribute(n)
374
371
  end
375
372
  end
376
373
 
@@ -539,6 +536,25 @@ class PG::Connection
539
536
  end
540
537
  alias async_put_copy_end put_copy_end
541
538
 
539
+ if method_defined? :send_pipeline_sync
540
+ # call-seq:
541
+ # conn.pipeline_sync
542
+ #
543
+ # Marks a synchronization point in a pipeline by sending a sync message and flushing the send buffer.
544
+ # This serves as the delimiter of an implicit transaction and an error recovery point.
545
+ #
546
+ # See enter_pipeline_mode
547
+ #
548
+ # Raises PG::Error if the connection is not in pipeline mode or sending a sync message failed.
549
+ #
550
+ # Available since PostgreSQL-14
551
+ def pipeline_sync(*args)
552
+ send_pipeline_sync(*args)
553
+ flush
554
+ end
555
+ alias async_pipeline_sync pipeline_sync
556
+ end
557
+
542
558
  if method_defined? :sync_encrypt_password
543
559
  # call-seq:
544
560
  # conn.encrypt_password( password, username, algorithm=nil ) -> String
@@ -586,128 +602,144 @@ class PG::Connection
586
602
  end
587
603
  alias async_reset reset
588
604
 
589
- # call-seq:
590
- # conn.cancel() -> String
591
- #
592
- # Requests cancellation of the command currently being
593
- # processed.
594
- #
595
- # Returns +nil+ on success, or a string containing the
596
- # error message if a failure occurs.
597
- def cancel
598
- be_pid = backend_pid
599
- be_key = backend_key
600
- cancel_request = [0x10, 1234, 5678, be_pid, be_key].pack("NnnNN")
601
-
602
- if Fiber.respond_to?(:scheduler) && Fiber.scheduler && RUBY_PLATFORM =~ /mingw|mswin/
603
- # Ruby's nonblocking IO is not really supported on Windows.
604
- # We work around by using threads and explicit calls to wait_readable/wait_writable.
605
- cl = Thread.new(socket_io.remote_address) { |ra| ra.connect }.value
606
- begin
607
- cl.write_nonblock(cancel_request)
608
- rescue IO::WaitReadable, Errno::EINTR
609
- cl.wait_writable
610
- retry
611
- end
612
- begin
613
- cl.read_nonblock(1)
614
- rescue IO::WaitReadable, Errno::EINTR
615
- cl.wait_readable
616
- retry
617
- rescue EOFError
618
- end
619
- elsif RUBY_ENGINE == 'truffleruby'
620
- begin
621
- cl = socket_io.remote_address.connect
622
- rescue NotImplementedError
623
- # Workaround for truffleruby < 21.3.0
624
- cl2 = Socket.for_fd(socket_io.fileno)
625
- cl2.autoclose = false
626
- adr = cl2.remote_address
627
- if adr.ip?
628
- cl = TCPSocket.new(adr.ip_address, adr.ip_port)
629
- cl.autoclose = false
630
- else
631
- cl = UNIXSocket.new(adr.unix_path)
632
- cl.autoclose = false
605
+ if defined?(PG::CancelConnection)
606
+ # PostgreSQL-17+
607
+
608
+ def sync_cancel
609
+ cancon = PG::CancelConnection.new(self)
610
+ cancon.sync_cancel
611
+ rescue PG::Error => err
612
+ err.to_s
613
+ end
614
+
615
+ # call-seq:
616
+ # conn.cancel() -> String
617
+ #
618
+ # Requests cancellation of the command currently being
619
+ # processed.
620
+ #
621
+ # Returns +nil+ on success, or a string containing the
622
+ # error message if a failure occurs.
623
+ #
624
+ # On PostgreSQL-17+ client libaray the class PG::CancelConnection is used.
625
+ # On older client library a pure ruby implementation is used.
626
+ def cancel
627
+ cancon = PG::CancelConnection.new(self)
628
+ cancon.async_connect_timeout = conninfo_hash[:connect_timeout]
629
+ cancon.async_cancel
630
+ rescue PG::Error => err
631
+ err.to_s
632
+ end
633
+
634
+ else
635
+
636
+ # PostgreSQL < 17
637
+
638
+ def cancel
639
+ be_pid = backend_pid
640
+ be_key = backend_key
641
+ cancel_request = [0x10, 1234, 5678, be_pid, be_key].pack("NnnNN")
642
+
643
+ if Fiber.respond_to?(:scheduler) && Fiber.scheduler && RUBY_PLATFORM =~ /mingw|mswin/
644
+ # Ruby's nonblocking IO is not really supported on Windows.
645
+ # We work around by using threads and explicit calls to wait_readable/wait_writable.
646
+ cl = Thread.new(socket_io.remote_address) { |ra| ra.connect }.value
647
+ begin
648
+ cl.write_nonblock(cancel_request)
649
+ rescue IO::WaitReadable, Errno::EINTR
650
+ cl.wait_writable
651
+ retry
633
652
  end
653
+ begin
654
+ cl.read_nonblock(1)
655
+ rescue IO::WaitReadable, Errno::EINTR
656
+ cl.wait_readable
657
+ retry
658
+ rescue EOFError
659
+ end
660
+ else
661
+ cl = socket_io.remote_address.connect
662
+ # Send CANCEL_REQUEST_CODE and parameters
663
+ cl.write(cancel_request)
664
+ # Wait for the postmaster to close the connection, which indicates that it's processed the request.
665
+ cl.read(1)
634
666
  end
635
- cl.write(cancel_request)
636
- cl.read(1)
637
- else
638
- cl = socket_io.remote_address.connect
639
- # Send CANCEL_REQUEST_CODE and parameters
640
- cl.write(cancel_request)
641
- # Wait for the postmaster to close the connection, which indicates that it's processed the request.
642
- cl.read(1)
643
- end
644
667
 
645
- cl.close
646
- nil
647
- rescue SystemCallError => err
648
- err.to_s
668
+ cl.close
669
+ nil
670
+ rescue SystemCallError => err
671
+ err.to_s
672
+ end
649
673
  end
650
674
  alias async_cancel cancel
651
675
 
652
- private def async_connect_or_reset(poll_meth)
676
+ module Pollable
653
677
  # Track the progress of the connection, waiting for the socket to become readable/writable before polling it
678
+ private def polling_loop(poll_meth, connect_timeout)
679
+ if (timeo = connect_timeout.to_i) && timeo > 0
680
+ host_count = conninfo_hash[:host].to_s.count(",") + 1
681
+ stop_time = timeo * host_count + Process.clock_gettime(Process::CLOCK_MONOTONIC)
682
+ end
654
683
 
655
- if (timeo = conninfo_hash[:connect_timeout].to_i) && timeo > 0
656
- host_count = conninfo_hash[:host].to_s.count(",") + 1
657
- stop_time = timeo * host_count + Process.clock_gettime(Process::CLOCK_MONOTONIC)
658
- end
659
-
660
- poll_status = PG::PGRES_POLLING_WRITING
661
- until poll_status == PG::PGRES_POLLING_OK ||
662
- poll_status == PG::PGRES_POLLING_FAILED
663
-
664
- # Set single timeout to parameter "connect_timeout" but
665
- # don't exceed total connection time of number-of-hosts * connect_timeout.
666
- timeout = [timeo, stop_time - Process.clock_gettime(Process::CLOCK_MONOTONIC)].min if stop_time
667
- event = if !timeout || timeout >= 0
668
- # If the socket needs to read, wait 'til it becomes readable to poll again
669
- case poll_status
670
- when PG::PGRES_POLLING_READING
671
- if defined?(IO::READABLE) # ruby-3.0+
672
- socket_io.wait(IO::READABLE | IO::PRIORITY, timeout)
673
- else
674
- IO.select([socket_io], nil, [socket_io], timeout)
684
+ poll_status = PG::PGRES_POLLING_WRITING
685
+ until poll_status == PG::PGRES_POLLING_OK ||
686
+ poll_status == PG::PGRES_POLLING_FAILED
687
+
688
+ # Set single timeout to parameter "connect_timeout" but
689
+ # don't exceed total connection time of number-of-hosts * connect_timeout.
690
+ timeout = [timeo, stop_time - Process.clock_gettime(Process::CLOCK_MONOTONIC)].min if stop_time
691
+ event = if !timeout || timeout >= 0
692
+ # If the socket needs to read, wait 'til it becomes readable to poll again
693
+ case poll_status
694
+ when PG::PGRES_POLLING_READING
695
+ if defined?(IO::READABLE) # ruby-3.0+
696
+ socket_io.wait(IO::READABLE | IO::PRIORITY, timeout)
697
+ else
698
+ IO.select([socket_io], nil, [socket_io], timeout)
699
+ end
700
+
701
+ # ...and the same for when the socket needs to write
702
+ when PG::PGRES_POLLING_WRITING
703
+ if defined?(IO::WRITABLE) # ruby-3.0+
704
+ # Use wait instead of wait_readable, since connection errors are delivered as
705
+ # exceptional/priority events on Windows.
706
+ socket_io.wait(IO::WRITABLE | IO::PRIORITY, timeout)
707
+ else
708
+ # io#wait on ruby-2.x doesn't wait for priority, so fallback to IO.select
709
+ IO.select(nil, [socket_io], [socket_io], timeout)
710
+ end
675
711
  end
676
-
677
- # ...and the same for when the socket needs to write
678
- when PG::PGRES_POLLING_WRITING
679
- if defined?(IO::WRITABLE) # ruby-3.0+
680
- # Use wait instead of wait_readable, since connection errors are delivered as
681
- # exceptional/priority events on Windows.
682
- socket_io.wait(IO::WRITABLE | IO::PRIORITY, timeout)
712
+ end
713
+ # connection to server at "localhost" (127.0.0.1), port 5433 failed: timeout expired (PG::ConnectionBad)
714
+ # connection to server on socket "/var/run/postgresql/.s.PGSQL.5433" failed: No such file or directory
715
+ unless event
716
+ if self.class.send(:host_is_named_pipe?, host)
717
+ connhost = "on socket \"#{host}\""
718
+ elsif respond_to?(:hostaddr)
719
+ connhost = "at \"#{host}\" (#{hostaddr}), port #{port}"
683
720
  else
684
- # io#wait on ruby-2.x doesn't wait for priority, so fallback to IO.select
685
- IO.select(nil, [socket_io], [socket_io], timeout)
721
+ connhost = "at \"#{host}\", port #{port}"
686
722
  end
723
+ raise PG::ConnectionBad.new("connection to server #{connhost} failed: timeout expired", connection: self)
687
724
  end
688
- end
689
- # connection to server at "localhost" (127.0.0.1), port 5433 failed: timeout expired (PG::ConnectionBad)
690
- # connection to server on socket "/var/run/postgresql/.s.PGSQL.5433" failed: No such file or directory
691
- unless event
692
- if self.class.send(:host_is_named_pipe?, host)
693
- connhost = "on socket \"#{host}\""
694
- elsif respond_to?(:hostaddr)
695
- connhost = "at \"#{host}\" (#{hostaddr}), port #{port}"
696
- else
697
- connhost = "at \"#{host}\", port #{port}"
698
- end
699
- raise PG::ConnectionBad.new("connection to server #{connhost} failed: timeout expired", connection: self)
725
+
726
+ # Check to see if it's finished or failed yet
727
+ poll_status = send( poll_meth )
700
728
  end
701
729
 
702
- # Check to see if it's finished or failed yet
703
- poll_status = send( poll_meth )
730
+ unless status == PG::CONNECTION_OK
731
+ msg = error_message
732
+ finish
733
+ raise PG::ConnectionBad.new(msg, connection: self)
734
+ end
704
735
  end
736
+ end
705
737
 
706
- unless status == PG::CONNECTION_OK
707
- msg = error_message
708
- finish
709
- raise PG::ConnectionBad.new(msg, connection: self)
710
- end
738
+ include Pollable
739
+
740
+ private def async_connect_or_reset(poll_meth)
741
+ # Track the progress of the connection, waiting for the socket to become readable/writable before polling it
742
+ polling_loop(poll_meth, conninfo_hash[:connect_timeout])
711
743
 
712
744
  # Set connection to nonblocking to handle all blocking states in ruby.
713
745
  # That way a fiber scheduler is able to handle IO requests.
@@ -825,6 +857,14 @@ class PG::Connection
825
857
  iopts = PG::Connection.conninfo_parse(option_string).each_with_object({}){|h, o| o[h[:keyword].to_sym] = h[:val] if h[:val] }
826
858
  iopts = PG::Connection.conndefaults.each_with_object({}){|h, o| o[h[:keyword].to_sym] = h[:val] if h[:val] }.merge(iopts)
827
859
 
860
+ if PG::BUNDLED_LIBPQ_WITH_UNIXSOCKET && iopts[:host].to_s.empty?
861
+ # Many distors patch the hardcoded default UnixSocket path in libpq to /var/run/postgresql instead of /tmp .
862
+ # We simply try them all.
863
+ iopts[:host] = "/var/run/postgresql" + # Ubuntu, Debian, Fedora, Opensuse
864
+ ",/run/postgresql" + # Alpine, Archlinux, Gentoo
865
+ ",/tmp" # Stock PostgreSQL
866
+ end
867
+
828
868
  iopts_for_reset = iopts
829
869
  if iopts[:hostaddr]
830
870
  # hostaddr is provided -> no need to resolve hostnames
@@ -897,14 +937,29 @@ class PG::Connection
897
937
  private_constant :REDIRECT_CLASS_METHODS
898
938
 
899
939
  # These methods are affected by PQsetnonblocking
900
- REDIRECT_SEND_METHODS = PG.make_shareable({
940
+ REDIRECT_SEND_METHODS = {
901
941
  :isnonblocking => [:async_isnonblocking, :sync_isnonblocking],
902
942
  :nonblocking? => [:async_isnonblocking, :sync_isnonblocking],
903
943
  :put_copy_data => [:async_put_copy_data, :sync_put_copy_data],
904
944
  :put_copy_end => [:async_put_copy_end, :sync_put_copy_end],
905
945
  :flush => [:async_flush, :sync_flush],
906
- })
946
+ }
907
947
  private_constant :REDIRECT_SEND_METHODS
948
+ if PG::Connection.instance_methods.include? :sync_pipeline_sync
949
+ if PG::Connection.instance_methods.include? :send_pipeline_sync
950
+ # PostgreSQL-17+
951
+ REDIRECT_SEND_METHODS.merge!({
952
+ :pipeline_sync => [:async_pipeline_sync, :sync_pipeline_sync],
953
+ })
954
+ else
955
+ # PostgreSQL-14+
956
+ REDIRECT_SEND_METHODS.merge!({
957
+ :pipeline_sync => [:sync_pipeline_sync, :sync_pipeline_sync],
958
+ })
959
+ end
960
+ end
961
+ PG.make_shareable(REDIRECT_SEND_METHODS)
962
+
908
963
  REDIRECT_METHODS = {
909
964
  :exec => [:async_exec, :sync_exec],
910
965
  :query => [:async_exec, :sync_exec],
@@ -921,12 +976,13 @@ class PG::Connection
921
976
  :set_client_encoding => [:async_set_client_encoding, :sync_set_client_encoding],
922
977
  :client_encoding= => [:async_set_client_encoding, :sync_set_client_encoding],
923
978
  :cancel => [:async_cancel, :sync_cancel],
979
+ :encrypt_password => [:async_encrypt_password, :sync_encrypt_password],
924
980
  }
925
981
  private_constant :REDIRECT_METHODS
926
-
927
- if PG::Connection.instance_methods.include? :async_encrypt_password
982
+ if PG::Connection.instance_methods.include? :async_close_prepared
928
983
  REDIRECT_METHODS.merge!({
929
- :encrypt_password => [:async_encrypt_password, :sync_encrypt_password],
984
+ :close_prepared => [:async_close_prepared, :sync_close_prepared],
985
+ :close_portal => [:async_close_portal, :sync_close_portal],
930
986
  })
931
987
  end
932
988
  PG.make_shareable(REDIRECT_METHODS)
data/lib/pg/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module PG
2
2
  # Library version
3
- VERSION = '1.5.9'
3
+ VERSION = '1.6.0.rc1'
4
4
  end
data/lib/pg.rb CHANGED
@@ -6,11 +6,12 @@
6
6
  module PG
7
7
 
8
8
  # Is this file part of a fat binary gem with bundled libpq?
9
- bundled_libpq_path = File.join(__dir__, RUBY_PLATFORM.gsub(/^i386-/, "x86-"))
10
- if File.exist?(bundled_libpq_path)
9
+ # This path must be enabled by add_dll_directory on Windows.
10
+ gplat = Gem::Platform.local
11
+ bundled_libpq_path = Dir[File.expand_path("../ports/#{gplat.cpu}-#{gplat.os}*/lib", __dir__)].first
12
+ if bundled_libpq_path
11
13
  POSTGRESQL_LIB_PATH = bundled_libpq_path
12
14
  else
13
- bundled_libpq_path = nil
14
15
  # Try to load libpq path as found by extconf.rb
15
16
  begin
16
17
  require "pg/postgresql_lib_path"
@@ -22,7 +23,8 @@ module PG
22
23
  end
23
24
 
24
25
  add_dll_path = proc do |path, &block|
25
- if RUBY_PLATFORM =~/(mswin|mingw)/i && path && File.exist?(path)
26
+ if RUBY_PLATFORM =~/(mswin|mingw)/i && path
27
+ BUNDLED_LIBPQ_WITH_UNIXSOCKET = false
26
28
  begin
27
29
  require 'ruby_installer/runtime'
28
30
  RubyInstaller::Runtime.add_dll_directory(path, &block)
@@ -33,19 +35,21 @@ module PG
33
35
  ENV['PATH'] = old_path
34
36
  end
35
37
  else
36
- # No need to set a load path manually - it's set as library rpath.
38
+ # libpq is found by a relative rpath in the cross compiled extension dll
39
+ # or by the system library loader
37
40
  block.call
41
+ BUNDLED_LIBPQ_WITH_UNIXSOCKET = RUBY_PLATFORM=~/linux/i && PG::IS_BINARY_GEM
38
42
  end
39
43
  end
40
44
 
41
45
  # Add a load path to the one retrieved from pg_config
42
46
  add_dll_path.call(POSTGRESQL_LIB_PATH) do
43
- if bundled_libpq_path
44
- # It's a Windows binary gem, try the <major>.<minor> subdirectory
47
+ begin
48
+ # Try the <major>.<minor> subdirectory for fat binary gems
45
49
  major_minor = RUBY_VERSION[ /^(\d+\.\d+)/ ] or
46
50
  raise "Oops, can't extract the major/minor version from #{RUBY_VERSION.dump}"
47
51
  require "#{major_minor}/pg_ext"
48
- else
52
+ rescue LoadError
49
53
  require 'pg_ext'
50
54
  end
51
55
  end
@@ -111,6 +115,7 @@ module PG
111
115
  require 'pg/coder'
112
116
  require 'pg/type_map_by_column'
113
117
  require 'pg/connection'
118
+ require 'pg/cancel_connection'
114
119
  require 'pg/result'
115
120
  require 'pg/tuple'
116
121
  autoload :VERSION, 'pg/version'
data/pg.gemspec CHANGED
@@ -10,10 +10,10 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["ged@FaerieMUD.org", "lars@greiz-reinsdorf.de"]
11
11
 
12
12
  spec.summary = "Pg is the Ruby interface to the PostgreSQL RDBMS"
13
- spec.description = "Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL 9.3 and later."
13
+ spec.description = "Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL 10 and later."
14
14
  spec.homepage = "https://github.com/ged/ruby-pg"
15
15
  spec.license = "BSD-2-Clause"
16
- spec.required_ruby_version = ">= 2.5"
16
+ spec.required_ruby_version = ">= 2.7"
17
17
 
18
18
  spec.metadata["homepage_uri"] = spec.homepage
19
19
  spec.metadata["source_code_uri"] = "https://github.com/ged/ruby-pg"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.9
4
+ version: 1.6.0.rc1
5
5
  platform: x64-mingw-ucrt
6
6
  authors:
7
7
  - Michael Granger
@@ -34,10 +34,10 @@ cert_chain:
34
34
  5wFER6XhvvLDFAMh/jMg+s7Wd5SbSHgHNSUaUGVtdWkVPOer6oF0aLdZUR3CETkn
35
35
  5nWXZma/BUd3YgYA/Xumc6QQqIS4p7mr
36
36
  -----END CERTIFICATE-----
37
- date: 2024-10-24 00:00:00.000000000 Z
37
+ date: 2024-11-28 00:00:00.000000000 Z
38
38
  dependencies: []
39
39
  description: Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL
40
- 9.3 and later.
40
+ 10 and later.
41
41
  email:
42
42
  - ged@FaerieMUD.org
43
43
  - lars@greiz-reinsdorf.de
@@ -56,6 +56,7 @@ extra_rdoc_files:
56
56
  - ext/pg.h
57
57
  - ext/pg_binary_decoder.c
58
58
  - ext/pg_binary_encoder.c
59
+ - ext/pg_cancel_connection.c
59
60
  - ext/pg_coder.c
60
61
  - ext/pg_connection.c
61
62
  - ext/pg_copy_coder.c
@@ -82,6 +83,7 @@ extra_rdoc_files:
82
83
  - lib/pg/binary_decoder/date.rb
83
84
  - lib/pg/binary_decoder/timestamp.rb
84
85
  - lib/pg/binary_encoder/timestamp.rb
86
+ - lib/pg/cancel_connection.rb
85
87
  - lib/pg/coder.rb
86
88
  - lib/pg/connection.rb
87
89
  - lib/pg/exceptions.rb
@@ -112,7 +114,6 @@ files:
112
114
  - README.ja.md
113
115
  - README.md
114
116
  - Rakefile
115
- - Rakefile.cross
116
117
  - certs/ged.pem
117
118
  - certs/kanis@comcard.de.pem
118
119
  - certs/larskanis-2022.pem
@@ -128,6 +129,7 @@ files:
128
129
  - ext/pg.h
129
130
  - ext/pg_binary_decoder.c
130
131
  - ext/pg_binary_encoder.c
132
+ - ext/pg_cancel_connection.c
131
133
  - ext/pg_coder.c
132
134
  - ext/pg_connection.c
133
135
  - ext/pg_copy_coder.c
@@ -160,6 +162,7 @@ files:
160
162
  - lib/pg/binary_decoder/date.rb
161
163
  - lib/pg/binary_decoder/timestamp.rb
162
164
  - lib/pg/binary_encoder/timestamp.rb
165
+ - lib/pg/cancel_connection.rb
163
166
  - lib/pg/coder.rb
164
167
  - lib/pg/connection.rb
165
168
  - lib/pg/exceptions.rb
@@ -177,7 +180,6 @@ files:
177
180
  - lib/pg/tuple.rb
178
181
  - lib/pg/type_map_by_column.rb
179
182
  - lib/pg/version.rb
180
- - lib/x64-mingw-ucrt/libpq.dll
181
183
  - misc/openssl-pg-segfault.rb
182
184
  - misc/postgres/History.txt
183
185
  - misc/postgres/Manifest.txt
@@ -190,6 +192,7 @@ files:
190
192
  - misc/ruby-pg/Rakefile
191
193
  - misc/ruby-pg/lib/ruby/pg.rb
192
194
  - pg.gemspec
195
+ - ports/x64-mingw-ucrt/lib/libpq.dll
193
196
  - rakelib/task_extension.rb
194
197
  - sample/array_insert.rb
195
198
  - sample/async_api.rb
@@ -236,9 +239,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
239
  version: 3.4.dev
237
240
  required_rubygems_version: !ruby/object:Gem::Requirement
238
241
  requirements:
239
- - - ">="
242
+ - - ">"
240
243
  - !ruby/object:Gem::Version
241
- version: '0'
244
+ version: 1.3.1
242
245
  requirements: []
243
246
  rubygems_version: 3.3.26
244
247
  signing_key:
metadata.gz.sig CHANGED
Binary file