From e0d8e1320be1b283e789b5f2f5788650494f636b Mon Sep 17 00:00:00 2001 From: Mostafa Abdelraouf Date: Wed, 30 Aug 2023 17:29:18 -0500 Subject: [PATCH] Avoid sending client encoding query at startup if not necessary --- ext/pg_connection.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ext/pg_connection.c b/ext/pg_connection.c index 4a0719df7..50cd7a323 100644 --- a/ext/pg_connection.c +++ b/ext/pg_connection.c @@ -4176,8 +4176,11 @@ pgconn_set_default_encoding( VALUE self ) rb_check_frozen(self); if (( enc = rb_default_internal_encoding() )) { + rb_encoding * conn_encoding = pg_conn_enc_get( conn ); encname = pg_get_rb_encoding_as_pg_encoding( enc ); - if ( pgconn_set_client_encoding_async(self, rb_str_new_cstr(encname)) != 0 ) + bool ruby_and_conn_encoding_equal = conn_encoding && strcmp(enc->name, conn_encoding->name) == 0; + + if ( !ruby_and_conn_encoding_equal && pgconn_set_client_encoding_async(self, rb_str_new_cstr(encname)) != 0 ) rb_warning( "Failed to set the default_internal encoding to %s: '%s'", encname, PQerrorMessage(conn) ); return rb_enc_from_encoding( enc );