Do not pass server_encoding to the client.
authorPeter Eisentraut
Mon, 1 Sep 2003 23:04:49 +0000 (23:04 +0000)
committerPeter Eisentraut
Mon, 1 Sep 2003 23:04:49 +0000 (23:04 +0000)
libpq, talking to an old server, should assume SQL_ASCII as the default
client encoding, because that is what the server will actually use (not
the server encoding).

doc/src/sgml/libpq.sgml
doc/src/sgml/protocol.sgml
src/backend/utils/misc/guc.c
src/interfaces/libpq/fe-protocol2.c

index debfa26b727ca634fc8d720fdad3364cbe5c8278..fd06b51905cfd6093390d9181ba3f111ae2db006 100644 (file)
@@ -1,5 +1,5 @@
 
 
  
@@ -856,21 +856,20 @@ is not known.
 
 Parameters reported as of the current release include
 server_version (cannot change after startup);
-server_encoding (also not presently changeable after start);
 client_encoding,
 is_superuser, and
 DateStyle.
 
 
 
-Pre-3.0-protocol servers do not report parameter settings,
-but libpq includes logic to obtain values for 
-server_version, server_encoding, and
-client_encoding.  Applications are encouraged to use
-PQparameterStatus rather than ad-hoc code to determine these
-values.  (Beware however that on a pre-3.0 connection, changing
-<literal>client_encoding via SET after connection startup
-will not be reflected by PQparameterStatus.)
+Pre-3.0-protocol servers do not report parameter settings, but
+libpq includes logic to obtain values for
+server_version, and client_encoding.
+Applications are encouraged to use PQparameterStatus
+rather than ad-hoc code to determine these values.  (Beware however
+that on a pre-3.0 connection, changing client_encoding via
+<command>SET after connection startup will not be reflected by
+PQparameterStatus.)
 
 
 
index 1de14ddeb61fffff6a4db0d96375ff56bcb20034..5127bd66d529f7b76d9b435f929bbfbd6713b297 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
 
  Frontend/Backend Protocol
     ParameterStatus will be generated: they are
     server_version (a pseudo-parameter that cannot change after
     startup);
-    server_encoding (also not presently changeable after start);
     client_encoding,
     is_superuser, and
     DateStyle.
index 2f8226e5d3037d235498f7f33dfa06f92cda8cd5..fbf7cc5bff898ec2590ea1aae380a1a99971836d 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut .
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.152 2003/09/01 04:15:50 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.153 2003/09/01 23:04:49 petere Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -1479,7 +1479,7 @@ static struct config_string ConfigureNamesString[] =
        {"server_encoding", PGC_INTERNAL, CLIENT_CONN_LOCALE,
            gettext_noop("Server (database) character set encoding"),
            NULL,
-           GUC_REPORT | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
+           GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
        },
        &server_encoding_string,
        "SQL_ASCII", NULL, NULL
index 1b766996910ed6fb3e57fd2a4a33bb478ad3f273..b776862ecc4fabffdbdea51f3bd37341e2039ecb 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.7 2003/08/27 00:33:34 petere Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.8 2003/09/01 23:04:49 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -177,10 +177,10 @@ pqSetenvPoll(PGconn *conn)
                     * must use begin/commit in case autocommit is off by
                     * default in a 7.3 server.
                     *
-                    * Note: version() and getdatabaseencoding() exist in all
+                    * Note: version() exists in all
                     * protocol-2.0-supporting backends.
                     */
-                   if (!PQsendQuery(conn, "begin; select version(), getdatabaseencoding(); end"))
+                   if (!PQsendQuery(conn, "begin; select version(); end"))
                        goto error_return;
 
                    conn->setenv_state = SETENV_STATE_QUERY1_WAIT;
@@ -213,8 +213,8 @@ pqSetenvPoll(PGconn *conn)
                        }
 
                        /*
-                        * Extract server version and database encoding,
-                        * and save as if ParameterStatus
+                        * Extract server version and save as if
+                        * ParameterStatus
                         */
                        val = PQgetvalue(res, 0, 0);
                        if (val && strncmp(val, "PostgreSQL ", 11) == 0)
@@ -236,12 +236,6 @@ pqSetenvPoll(PGconn *conn)
                                                  val);
                        }
 
-                       val = PQgetvalue(res, 0, 1);
-                       if (val && *val)        /* null should not happen,
-                                                * but */
-                           pqSaveParameterStatus(conn, "server_encoding",
-                                                 val);
-
                        PQclear(res);
                        /* Keep reading until PQgetResult returns NULL */
                    }
@@ -306,21 +300,17 @@ pqSetenvPoll(PGconn *conn)
                        else
                        {
                            /*
-                            * Error: presumably function not available,
-                            * so use PGCLIENTENCODING or database
-                            * encoding as the fallback.
+                            * Error: presumably function not
+                            * available, so use PGCLIENTENCODING or
+                            * SQL_ASCII as the fallback.
                             */
                            val = getenv("PGCLIENTENCODING");
                            if (val && *val)
                                pqSaveParameterStatus(conn, "client_encoding",
                                                      val);
                            else
-                           {
-                               val = PQparameterStatus(conn, "server_encoding");
-                               if (val && *val)
-                                   pqSaveParameterStatus(conn, "client_encoding",
-                                                         val);
-                           }
+                               pqSaveParameterStatus(conn, "client_encoding",
+                                                     "SQL_ASCII");
                        }
 
                        PQclear(res);