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 63d3585ad..b64604467 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) )