From 5b979dc2c0488784ea8c5ebb38dedd22a46b92fc Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Fri, 28 Feb 2025 21:55:35 +0800 Subject: [PATCH] fix build with latest postgresql (cherry picked from commit 648d5671aae775053ae19a8e8da41c0857f8c9aa) --- ...nection-encoding-compatible-to-Mohre.patch | 31 +++++++++++++++++++ rubygem-pg.spec | 12 +++++-- 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 backport-Use-a-connection-encoding-compatible-to-Mohre.patch diff --git a/backport-Use-a-connection-encoding-compatible-to-Mohre.patch b/backport-Use-a-connection-encoding-compatible-to-Mohre.patch new file mode 100644 index 0000000..eb97797 --- /dev/null +++ b/backport-Use-a-connection-encoding-compatible-to-Mohre.patch @@ -0,0 +1,31 @@ +From dd138ecf313274cc6a5481071bf301dc8c5139d8 Mon Sep 17 00:00:00 2001 +From: Lars Kanis +Date: Fri, 28 Feb 2025 10:39:07 +0100 +Subject: [PATCH] =?UTF-8?q?Use=20a=20connection=20encoding=20compatible=20?= + =?UTF-8?q?to=20"M=C3=B6hre"?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The function PQescapeString was changed in PostgreSQL 17.4, 16.8, 15.12, 14.17, and 13.20. +It now returns a predefined invalid character as a replacement in the connection encoding, if the input text is not valid according to the current connection encoding. +Using a compatible connection encoding avoids this, so that we get the original text out of the singleton escape function. + +Fixes #628 +--- + spec/pg/connection_spec.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/spec/pg/connection_spec.rb b/spec/pg/connection_spec.rb +index 63d3585a..b6460446 100644 +--- a/spec/pg/connection_spec.rb ++++ b/spec/pg/connection_spec.rb +@@ -2325,7 +2325,7 @@ def wait_check_socket(conn) + + it "uses the previous string encoding for escaped string" do + original = "Möhre to 'scape".encode( "iso-8859-1" ) +- @conn.set_client_encoding( "euc_jp" ) ++ @conn.set_client_encoding( "iso-8859-2" ) + escaped = described_class.escape( original ) + expect( escaped.encoding ).to eq( Encoding::ISO8859_1 ) + expect( escaped ).to eq( "Möhre to ''scape".encode(Encoding::ISO8859_1) ) diff --git a/rubygem-pg.spec b/rubygem-pg.spec index 82ad29a..87394b9 100644 --- a/rubygem-pg.spec +++ b/rubygem-pg.spec @@ -3,7 +3,7 @@ Name: rubygem-%{gem_name} Version: 1.2.3 -Release: 2 +Release: 3 Summary: A Ruby interface to the PostgreSQL RDBMS # Upstream license clarification (https://bitbucket.org/ged/ruby-pg/issue/72/) # @@ -17,6 +17,8 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem # https://bitbucket.org/ged/ruby-pg/issue/183 Patch0: rubygem-pg-0.17.1-remove-rpath.patch Patch1: Fix-date-matching-failure.patch +# https://github.com/ged/ruby-pg/commit/dd138ecf313274cc6a5481071bf301dc8c5139d8 +Patch2: backport-Use-a-connection-encoding-compatible-to-Mohre.patch # Required in ext/pg_text_decoder.c Requires: rubygem(bigdecimal) BuildRequires: ruby(release) @@ -47,8 +49,9 @@ Documentation for %{name}. %prep %setup -q -n %{gem_name}-%{version} -%patch0 -p1 -%patch1 -p1 +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 %build # Create the gem as gem install only works on a gem file @@ -119,6 +122,9 @@ popd %{gem_instdir}/spec %changelog +* Fri Feb 28 2025 Funda Wang - 1.2.3-3 +- fix build with latest postgresql + * Tue Aug 02 2022 jiangxinyu - 1.2.3-2 - Fix date matching failure