rubygem-pg/backport-Use-a-connection-encoding-compatible-to-Mohre.patch

32 lines
1.4 KiB
Diff
Raw Permalink Normal View History

From dd138ecf313274cc6a5481071bf301dc8c5139d8 Mon Sep 17 00:00:00 2001
From: Lars Kanis <lars.kanis@sincnovation.com>
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) )