mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
I really hope that I haven't missed anything in this one...
From: t-ishii@sra.co.jp Attached are patches to enhance the multi-byte support. (patches are against 7/18 snapshot) * determine encoding at initdb/createdb rather than compile time Now initdb/createdb has an option to specify the encoding. Also, I modified the syntax of CREATE DATABASE to accept encoding option. See README.mb for more details. For this purpose I have added new column "encoding" to pg_database. Also pg_attribute and pg_class are changed to catch up the modification to pg_database. Actually I haved added pg_database_mb.h, pg_attribute_mb.h and pg_class_mb.h. These are used only when MB is enabled. The reason having separate files is I couldn't find a way to use ifdef or whatever in those files. I have to admit it looks ugly. No way. * support for PGCLIENTENCODING when issuing COPY command commands/copy.c modified. * support for SQL92 syntax "SET NAMES" See gram.y. * support for LATIN2-5 * add UNICODE regression test case * new test suite for MB New directory test/mb added. * clean up source files Basic idea is to have MB's own subdirectory for easier maintenance. These are include/mb and backend/utils/mb.
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.75 1998/07/18 18:34:30 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.76 1998/07/24 03:32:33 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -44,6 +44,9 @@
|
||||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
#ifdef MB
|
||||
#include "mb/pg_wchar.h"
|
||||
#endif
|
||||
|
||||
static ConnStatusType connectDB(PGconn *conn);
|
||||
static PGconn *makeEmptyPGconn(void);
|
||||
@ -789,6 +792,34 @@ PQsetenv(PGconn *conn)
|
||||
{
|
||||
struct EnvironmentOptions *eo;
|
||||
char setQuery[80]; /* mjl: size okay? XXX */
|
||||
#ifdef MB
|
||||
char *envname = "PGCLIENTENCODING";
|
||||
char envbuf[64];
|
||||
char *env;
|
||||
char *encoding = 0;
|
||||
PGresult *rtn;
|
||||
#endif
|
||||
|
||||
#ifdef MB
|
||||
/* query server encoding */
|
||||
env = getenv(envname);
|
||||
if (!env) {
|
||||
rtn = PQexec(conn, "select getdatabaseencoding()");
|
||||
if (rtn && PQresultStatus(rtn) == PGRES_TUPLES_OK) {
|
||||
encoding = PQgetvalue(rtn,0,0);
|
||||
if (encoding) {
|
||||
/* set client encoding */
|
||||
sprintf(envbuf,"%s=%s",envname,encoding);
|
||||
putenv(envbuf);
|
||||
}
|
||||
PQclear(rtn);
|
||||
}
|
||||
if (!encoding) { /* this should not happen */
|
||||
sprintf(envbuf,"%s=%s",envname,pg_encoding_to_char(MB));
|
||||
putenv(envbuf);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
for (eo = EnvironmentOptions; eo->envName; eo++)
|
||||
{
|
||||
|
Reference in New Issue
Block a user