*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.117.2.1 2002/11/21 06:36:27 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.117.2.2 2003/02/19 14:14:58 ishii Exp $
*
*
*-------------------------------------------------------------------------
/* set default namespace search path */
InitializeSearchPath();
+ /* initialize client encoding */
+ InitializeClientEncoding();
+
/*
* Set up process-exit callback to do pre-shutdown cleanup. This
* should be last because we want shmem_exit to call this routine
* (currently mule internal code (mic) is used)
* Tatsuo Ishii
*
- * $Header: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v 1.36.2.1 2002/11/26 02:37:13 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v 1.36.2.2 2003/02/19 14:14:58 ishii Exp $
*/
#include "postgres.h"
int len, bool is_client_to_server);
static int cliplen(const unsigned char *str, int len, int limit);
+/* Flag to we need to initialize client encoding info */
+static int need_to_init_client_encoding = -1;
/*
* Set the client encoding and save fmgrinfo for the converion
if (!PG_VALID_FE_ENCODING(encoding))
return (-1);
+ /* If we cannot actualy set client encoding info, remeber it
+ * so that we could set it using InitializeClientEncoding()
+ * in InitPostgres()
+ */
+ if (current_server_encoding != encoding && !IsTransactionState())
+ need_to_init_client_encoding = encoding;
+
if (current_server_encoding == encoding ||
(current_server_encoding == PG_SQL_ASCII || encoding == PG_SQL_ASCII))
{
return 0;
}
+/* Initialize client encoding if necessary.
+ * called from InitPostgres() once during backend starting up.
+ */
+void
+InitializeClientEncoding()
+{
+ if (need_to_init_client_encoding > 0)
+ {
+ SetClientEncoding(need_to_init_client_encoding, 1);
+ need_to_init_client_encoding = -1;
+ }
+}
+
/*
* returns the current client encoding */
int
-/* $Id: pg_wchar.h,v 1.44 2002/09/04 20:31:42 momjian Exp $ */
+/* $Id: pg_wchar.h,v 1.44.2.1 2003/02/19 14:14:58 ishii Exp $ */
#ifndef PG_WCHAR_H
#define PG_WCHAR_H
extern void SetDefaultClientEncoding(void);
extern int SetClientEncoding(int encoding, bool doit);
+extern void InitializeClientEncoding(void);
extern int pg_get_client_encoding(void);
extern const char *pg_get_client_encoding_name(void);