summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc G. Fournier1998-07-26 04:31:41 +0000
committerMarc G. Fournier1998-07-26 04:31:41 +0000
commit04ce155af73430c7711b38b3b8a8aba1a6abbef9 (patch)
tree72a72c7d551fba0b6314692e463eaeb681a248ae
parent780bd2b0c263688f49b9b0f5c6266b433fb2149e (diff)
As Bruce mentioned, this is due to the conflict among changes we made. Included patches should fix the problem(I changed all MB to MULTIBYTE). Please let me know if you have further problem. P.S. I did not include pathces to configure and gram.c to save the file size(configure.in and gram.y modified).
-rw-r--r--src/Makefile.global.in5
-rw-r--r--src/backend/access/common/Makefile4
-rw-r--r--src/backend/access/common/printtup.c2
-rw-r--r--src/backend/bootstrap/Makefile4
-rw-r--r--src/backend/bootstrap/bootparse.y2
-rw-r--r--src/backend/bootstrap/bootscanner.l4
-rw-r--r--src/backend/bootstrap/bootstrap.c2
-rw-r--r--src/backend/catalog/Makefile4
-rw-r--r--src/backend/commands/Makefile4
-rw-r--r--src/backend/commands/cluster.c2
-rw-r--r--src/backend/commands/copy.c18
-rw-r--r--src/backend/commands/dbcommands.c6
-rw-r--r--src/backend/commands/rename.c2
-rw-r--r--src/backend/commands/user.c2
-rw-r--r--src/backend/commands/vacuum.c2
-rw-r--r--src/backend/commands/variable.c50
-rw-r--r--src/backend/libpq/Makefile4
-rw-r--r--src/backend/libpq/pqcomm.c2
-rw-r--r--src/backend/parser/Makefile4
-rw-r--r--src/backend/parser/gram.y6
-rw-r--r--src/backend/regex/Makefile4
-rw-r--r--src/backend/regex/engine.c15
-rw-r--r--src/backend/rewrite/Makefile4
-rw-r--r--src/backend/rewrite/rewriteSupport.c2
-rw-r--r--src/backend/storage/lmgr/Makefile4
-rw-r--r--src/backend/storage/lmgr/lmgr.c2
-rw-r--r--src/backend/storage/smgr/Makefile4
-rw-r--r--src/backend/storage/smgr/md.c8
-rw-r--r--src/backend/tcop/Makefile4
-rw-r--r--src/backend/tcop/postgres.c4
-rw-r--r--src/backend/tcop/utility.c2
-rw-r--r--src/backend/utils/Makefile2
-rw-r--r--src/backend/utils/adt/Makefile4
-rw-r--r--src/backend/utils/cache/Makefile4
-rw-r--r--src/backend/utils/cache/fcache.c2
-rw-r--r--src/backend/utils/cache/relcache.c2
-rw-r--r--src/backend/utils/init/Makefile4
-rw-r--r--src/backend/utils/init/miscinit.c4
-rw-r--r--src/backend/utils/init/postinit.c10
-rw-r--r--src/backend/utils/mb/Makefile4
-rw-r--r--src/backend/utils/mb/mbutils.c2
-rw-r--r--src/backend/utils/misc/Makefile4
-rw-r--r--src/backend/utils/misc/database.c17
-rw-r--r--src/bin/Makefile2
-rw-r--r--src/bin/createdb/Makefile2
-rw-r--r--src/bin/createdb/createdb.sh2
-rw-r--r--src/bin/initdb/Makefile2
-rw-r--r--src/bin/initdb/initdb.sh438
-rw-r--r--src/bin/pg_encoding/Makefile2
-rw-r--r--src/bin/psql/Makefile.in4
-rw-r--r--src/configure.in8
-rw-r--r--src/include/commands/dbcommands.h2
-rw-r--r--src/include/commands/variable.h12
-rw-r--r--src/include/mb/pg_wchar.h6
-rw-r--r--src/include/miscadmin.h2
-rw-r--r--src/include/nodes/parsenodes.h2
-rw-r--r--src/include/regex/regex2.h10
-rw-r--r--src/interfaces/libpq/Makefile.in21
-rw-r--r--src/interfaces/libpq/fe-connect.c8
-rw-r--r--src/interfaces/libpq/fe-print.c3
-rw-r--r--src/test/mb/mbregress.sh4
-rw-r--r--src/test/regress/GNUmakefile2
-rwxr-xr-xsrc/test/regress/regress.sh4
63 files changed, 582 insertions, 195 deletions
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 30292014cf..c811eb982b 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -151,7 +151,10 @@ X11_LIBS= -lX11 @X_EXTRA_LIBS@
# enable multi-byte support
# choose one of:
# EUC_JP,EUC_CN,EUC_KR,EUC_TW,UNICODE,MULE_INTERNAL,LATIN1-5
-MB=@MB@
+MULTIBYTE=@MULTIBYTE@
+ifdef MULTIBYTE
+MBFLAGS = -DMULTIBYTE=$(MULTIBYTE)
+endif
##############################################################################
#
diff --git a/src/backend/access/common/Makefile b/src/backend/access/common/Makefile
index e944015d54..6cafe40c44 100644
--- a/src/backend/access/common/Makefile
+++ b/src/backend/access/common/Makefile
@@ -13,8 +13,8 @@ include ../../../Makefile.global
CFLAGS+=-I../..
-ifdef MB
-CFLAGS+= -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = heaptuple.o heapvalid.o indextuple.o indexvalid.o printtup.o \
diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c
index 946dcabfaf..afe251d4f7 100644
--- a/src/backend/access/common/printtup.c
+++ b/src/backend/access/common/printtup.c
@@ -24,7 +24,7 @@
#include <utils/syscache.h>
#ifdef MULTIBYTE
-#include <commands/variable.h>
+#include <mb/pg_wchar.h>
#endif
/* ----------------------------------------------------------------
diff --git a/src/backend/bootstrap/Makefile b/src/backend/bootstrap/Makefile
index c22770cfb2..29d04a327c 100644
--- a/src/backend/bootstrap/Makefile
+++ b/src/backend/bootstrap/Makefile
@@ -22,8 +22,8 @@ SRCDIR= ../..
include ../../Makefile.global
CFLAGS += -I..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
ifeq ($(CC), gcc)
diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y
index efba8434e4..ebd31f259c 100644
--- a/src/backend/bootstrap/bootparse.y
+++ b/src/backend/bootstrap/bootparse.y
@@ -31,7 +31,7 @@
#include "bootstrap/bootstrap.h"
#include "catalog/heap.h"
#include "catalog/pg_am.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_attribute_mb.h"
#include "catalog/pg_class_mb.h"
#else
diff --git a/src/backend/bootstrap/bootscanner.l b/src/backend/bootstrap/bootscanner.l
index 91c7dfe440..6449470860 100644
--- a/src/backend/bootstrap/bootscanner.l
+++ b/src/backend/bootstrap/bootscanner.l
@@ -20,7 +20,7 @@
#include "storage/block.h"
#include "storage/off.h"
#include "storage/itemptr.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_attribute_mb.h"
#else
#include "catalog/pg_attribute.h"
@@ -32,7 +32,7 @@
#include "access/funcindex.h"
#include "storage/fd.h"
#include "catalog/pg_am.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index ee7160b6ab..185dc6532a 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -41,7 +41,7 @@
#include "catalog/catname.h"
#include "catalog/index.h"
#include "catalog/pg_am.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_attribute_mb.h"
#include "catalog/pg_class_mb.h"
#else
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 087d13cf60..8d084864ac 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -24,7 +24,7 @@ SUBSYS.o: $(OBJS)
GENBKI= ./genbki.sh
-ifdef MB
+ifdef MULTIBYTE
GLOBALBKI_SRCS= $(addprefix ../../include/catalog/, \
pg_database_mb.h pg_variable.h pg_shadow.h \
pg_group.h pg_log.h \
@@ -36,7 +36,7 @@ GLOBALBKI_SRCS= $(addprefix ../../include/catalog/, \
)
endif
-ifdef MB
+ifdef MULTIBYTE
LOCALBKI_SRCS= $(addprefix ../../include/catalog/, \
pg_proc.h pg_type.h pg_attribute_mb.h pg_class_mb.h \
pg_inherits.h pg_index.h pg_version.h pg_statistic.h \
diff --git a/src/backend/commands/Makefile b/src/backend/commands/Makefile
index c96b1e899b..8ab23cf29c 100644
--- a/src/backend/commands/Makefile
+++ b/src/backend/commands/Makefile
@@ -13,8 +13,8 @@ include ../../Makefile.global
CFLAGS += -I..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = async.o creatinh.o command.o copy.o defind.o define.o \
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 8e0d9cba85..c2296333b6 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -43,7 +43,7 @@
#include <utils/excid.h>
#include <utils/mcxt.h>
#include <catalog/pg_proc.h>
-#ifdef MB
+#ifdef MULTIBYTE
#include <catalog/pg_class_mb.h>
#else
#include <catalog/pg_class.h>
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 59c3392b9b..c5014eae94 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -37,7 +37,7 @@
#include "commands/trigger.h"
#include <storage/fd.h>
-#ifdef MB
+#ifdef MULTIBYTE
#include "mb/pg_wchar.h"
#endif
@@ -1016,14 +1016,14 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
char c;
int done = 0;
int i = 0;
-#ifdef MB
+#ifdef MULTIBYTE
int mblen;
int encoding;
unsigned char s[2];
int j;
#endif
-#ifdef MB
+#ifdef MULTIBYTE
encoding = pg_get_client_encoding();
s[1] = 0;
#endif
@@ -1129,7 +1129,7 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
}
if (!done) {
attribute[i++] = c;
-#ifdef MB
+#ifdef MULTIBYTE
s[0] = c;
mblen = pg_encoding_mblen(encoding, s);
mblen--;
@@ -1145,7 +1145,7 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
elog(ERROR, "CopyReadAttribute - attribute length too long. line: %d", lineno);
}
attribute[i] = '\0';
-#ifdef MB
+#ifdef MULTIBYTE
return(pg_client_to_server((unsigned char*)attribute, strlen(attribute)));
#else
return (&attribute[0]);
@@ -1157,20 +1157,20 @@ CopyAttributeOut(FILE *fp, unsigned char *server_string, char *delim, int is_arr
{
unsigned char *string;
unsigned char c;
-#ifdef MB
+#ifdef MULTIBYTE
int mblen;
int encoding;
int i;
#endif
-#ifdef MB
+#ifdef MULTIBYTE
string = pg_server_to_client(server_string, strlen(server_string));
encoding = pg_get_client_encoding();
#else
string = server_string;
#endif
-#ifdef MB
+#ifdef MULTIBYTE
for (; (mblen = pg_encoding_mblen(encoding, string)) &&
((c = *string) != '\0'); string += mblen)
#else
@@ -1197,7 +1197,7 @@ CopyAttributeOut(FILE *fp, unsigned char *server_string, char *delim, int is_arr
fputc('\\', fp);
}
}
-#ifdef MB
+#ifdef MULTIBYTE
for (i=0;i<mblen;i++) {
fputc(*(string+i), fp);
}
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 18681290e9..fabcbac8ac 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -22,7 +22,7 @@
#include "access/htup.h"
#include "access/relscan.h"
#include "catalog/catname.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_database_mb.h"
#else
#include "catalog/pg_database.h"
@@ -47,7 +47,7 @@ static HeapTuple get_pg_dbtup(char *command, char *dbname, Relation dbrel);
static void stop_vacuum(char *dbpath, char *dbname);
void
-#ifdef MB
+#ifdef MULTIBYTE
createdb(char *dbname, char *dbpath, int encoding)
#else
createdb(char *dbname, char *dbpath)
@@ -98,7 +98,7 @@ createdb(char *dbname, char *dbpath)
dbname, user_id, dbname);
#endif
-#ifdef MB
+#ifdef MULTIBYTE
sprintf(buf, "insert into pg_database (datname, datdba, encoding, datpath)"
" values (\'%s\', \'%d\', \'%d\', \'%s\');", dbname, user_id, encoding, loc);
#else
diff --git a/src/backend/commands/rename.c b/src/backend/commands/rename.c
index edd025b47e..914302c2b2 100644
--- a/src/backend/commands/rename.c
+++ b/src/backend/commands/rename.c
@@ -30,7 +30,7 @@
#include <utils/excid.h>
#include <utils/mcxt.h>
#include <catalog/pg_proc.h>
-#ifdef MB
+#ifdef MULTIBYTE
#include <catalog/pg_class_mb.h>
#else
#include <catalog/pg_class.h>
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index 08088eb4b7..a7849d85fe 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -20,7 +20,7 @@
#include <miscadmin.h>
#include <catalog/catname.h>
-#ifdef MB
+#ifdef MULTIBYTE
#include <catalog/pg_database_mb.h>
#else
#include <catalog/pg_database.h>
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index cf8cf4acd2..a04611fd0c 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -27,7 +27,7 @@
#include "catalog/catalog.h"
#include "catalog/catname.h"
#include "catalog/index.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 3f38602c76..2272aa0502 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -16,7 +16,7 @@
#include "utils/builtins.h"
#include "optimizer/internal.h"
#ifdef MULTIBYTE
-#include "regex/pg_wchar.h"
+#include "mb/pg_wchar.h"
#endif
extern Cost _cpu_page_wight_;
@@ -522,54 +522,6 @@ reset_timezone()
return TRUE;
} /* reset_timezone() */
-#ifdef MULTIBYTE
-/*-----------------------------------------------------------------------*/
-bool
-parse_client_encoding(const char *value)
-{
- int encoding;
-
- encoding = pg_valid_client_encoding(value);
- if (encoding < 0) {
- elog(ERROR, "Client encoding %s is not supported", value);
- } else {
- if (pg_set_client_encoding(encoding)) {
- elog(ERROR, "Conversion between %s and %s is not supported",
- value, pg_encoding_to_char(MULTIBYTE));
- }
- }
- return TRUE;
-}
-
-bool
-show_client_encoding()
-{
- elog(NOTICE, "Current client encoding is %s",
- pg_encoding_to_char(pg_get_client_encoding()));
- return TRUE;
-}
-
-bool
-reset_client_encoding()
-{
- int encoding;
- char *env = getenv("PGCLIENTENCODING");
-
- if (env) {
- encoding = pg_char_to_encoding(env);
- if (encoding < 0) {
- encoding = MULTIBYTE;
- }
- } else {
- encoding = MULTIBYTE;
- }
- pg_set_client_encoding(encoding);
- return TRUE;
-}
-
-/*-----------------------------------------------------------------------*/
-#endif
-
/*-----------------------------------------------------------------------*/
struct VariableParsers
{
diff --git a/src/backend/libpq/Makefile b/src/backend/libpq/Makefile
index 73754b9613..c348769532 100644
--- a/src/backend/libpq/Makefile
+++ b/src/backend/libpq/Makefile
@@ -19,8 +19,8 @@ CFLAGS+= $(KRBFLAGS)
LDFLAGS+= $(KRBLIBS)
endif
-ifdef MB
-CFLAGS+= -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = be-dumpdata.o be-fsstubs.o be-pqexec.o pqcomprim.o\
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index a4e19e50f4..d4df5b2e55 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -68,7 +68,7 @@
#include "libpq/libpq.h" /* where the declarations go */
#include "storage/ipc.h"
#ifdef MULTIBYTE
-#include "commands/variable.h"
+#include "mb/pg_wchar.h"
#endif
/* ----------------
diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile
index bf808c99d5..90bcbaf6c8 100644
--- a/src/backend/parser/Makefile
+++ b/src/backend/parser/Makefile
@@ -17,8 +17,8 @@ ifeq ($(CC), gcc)
CFLAGS+= -Wno-error
endif
-ifdef MB
-CFLAGS+= -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS= analyze.o gram.o keywords.o parser.o parse_agg.o parse_clause.o \
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 154fd2aff1..9fb740a489 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -46,7 +46,7 @@
#include "utils/elog.h"
#include "access/xact.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "mb/pg_wchar.h"
#endif
@@ -2084,7 +2084,7 @@ CreatedbStmt: CREATE DATABASE database_name WITH opt_database1 opt_database2
}
n->dbname = $3;
n->dbpath = $5;
-#ifdef MB
+#ifdef MULTIBYTE
if ($6 != NULL) {
n->encoding = pg_char_to_encoding($6);
if (n->encoding < 0) {
@@ -2103,7 +2103,7 @@ CreatedbStmt: CREATE DATABASE database_name WITH opt_database1 opt_database2
CreatedbStmt *n = makeNode(CreatedbStmt);
n->dbname = $3;
n->dbpath = NULL;
-#ifdef MB
+#ifdef MULTIBYTE
n->encoding = GetTemplateEncoding();
#endif
$$ = (Node *)n;
diff --git a/src/backend/regex/Makefile b/src/backend/regex/Makefile
index 3ef68308bf..022f073164 100644
--- a/src/backend/regex/Makefile
+++ b/src/backend/regex/Makefile
@@ -15,8 +15,8 @@ CFLAGS += -I..
CFLAGS += -DPOSIX_MISTAKE
OBJS = regcomp.o regerror.o regexec.o regfree.o
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
all: SUBSYS.o
diff --git a/src/backend/regex/engine.c b/src/backend/regex/engine.c
index 43988b6dbd..4c51fa5add 100644
--- a/src/backend/regex/engine.c
+++ b/src/backend/regex/engine.c
@@ -118,19 +118,8 @@ extern "C"
#define CODEMAX (BOL+5) /* highest code used */
#ifdef MULTIBYTE
-# if MULTIBYTE == MULE_INTERNAL
-# define NONCHAR(c) ((c) > 16777216) /* 16777216 == 2^24 == 3 bytes */
-# define NNONCHAR (CODEMAX-16777216)
-# elif MULTIBYTE == EUC_JP || MULTIBYTE == EUC_CN || MULTIBYTE == EUC_KR || MULTIBYTE == EUC_TW
-# define NONCHAR(c) ((c) > USHRT_MAX)
-# define NNONCHAR (CODEMAX-USHRT_MAX)
-# elif MULTIBYTE == UNICODE
-# define NONCHAR(c) ((c) > USHRT_MAX)
-# define NNONCHAR (CODEMAX-USHRT_MAX)
-# else /* assume 1 byte code such as ISO8859-1 */
-# define NONCHAR(c) ((c) > UCHAR_MAX)
-# define NNONCHAR (CODEMAX-UCHAR_MAX)
-# endif
+# define NONCHAR(c) ((c) > 16777216) /* 16777216 == 2^24 == 3 bytes */
+# define NNONCHAR (CODEMAX-16777216)
#else
# define NONCHAR(c) ((c) > CHAR_MAX)
# define NNONCHAR (CODEMAX-CHAR_MAX)
diff --git a/src/backend/rewrite/Makefile b/src/backend/rewrite/Makefile
index b71239d51f..59523e1f9e 100644
--- a/src/backend/rewrite/Makefile
+++ b/src/backend/rewrite/Makefile
@@ -12,8 +12,8 @@ SRCDIR = ../..
include ../../Makefile.global
CFLAGS += -I..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = rewriteRemove.o rewriteDefine.o \
diff --git a/src/backend/rewrite/rewriteSupport.c b/src/backend/rewrite/rewriteSupport.c
index 8e85023415..1bd5a06117 100644
--- a/src/backend/rewrite/rewriteSupport.c
+++ b/src/backend/rewrite/rewriteSupport.c
@@ -16,7 +16,7 @@
#include "access/heapam.h"
#include "catalog/catname.h"
#include "catalog/indexing.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
diff --git a/src/backend/storage/lmgr/Makefile b/src/backend/storage/lmgr/Makefile
index 0f8151e22d..2645834214 100644
--- a/src/backend/storage/lmgr/Makefile
+++ b/src/backend/storage/lmgr/Makefile
@@ -12,8 +12,8 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = lmgr.o lock.o multi.o proc.o single.o
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index a9b83db1d3..c127a556ac 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -41,7 +41,7 @@
#include "catalog/catname.h"
#include "catalog/catalog.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
diff --git a/src/backend/storage/smgr/Makefile b/src/backend/storage/smgr/Makefile
index ef4f1074d2..b3b171930c 100644
--- a/src/backend/storage/smgr/Makefile
+++ b/src/backend/storage/smgr/Makefile
@@ -13,8 +13,8 @@ include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = md.o mm.o smgr.o smgrtype.o
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index 6e4cb0fb82..ea8770c153 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -568,11 +568,11 @@ mdblindwrt(char *dbstr,
Oid owner,
id;
char *tmpPath;
-#ifdef MB
+#ifdef MULTIBYTE
int tmpEncoding;
#endif
-#ifdef MB
+#ifdef MULTIBYTE
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath, &tmpEncoding);
#else
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath);
@@ -614,11 +614,11 @@ mdblindwrt(char *dbstr,
id;
char *tmpPath;
-#ifdef MB
+#ifdef MULTIBYTE
int tmpEncoding;
#endif
-#ifdef MB
+#ifdef MULTIBYTE
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath, &tmpEncoding);
#else
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath);
diff --git a/src/backend/tcop/Makefile b/src/backend/tcop/Makefile
index b01a8e2de1..e8059fc581 100644
--- a/src/backend/tcop/Makefile
+++ b/src/backend/tcop/Makefile
@@ -13,8 +13,8 @@ include ../../Makefile.global
CFLAGS+= -I..
-ifdef MB
-CFLAGS+= -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
ifeq ($(CC), gcc)
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index a8f6532742..3727b1f3c3 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -84,7 +84,7 @@
#endif
#ifdef MULTIBYTE
-#include "commands/variable.h"
+#include "mb/pg_wchar.h"
#endif
/* ----------------
@@ -1339,7 +1339,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface");
- puts("$Revision: 1.80 $ $Date: 1998/07/18 18:34:09 $");
+ puts("$Revision: 1.81 $ $Date: 1998/07/26 04:30:46 $");
}
/* ----------------
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 769ba070a1..15ccbac0c3 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -558,7 +558,7 @@ ProcessUtility(Node *parsetree,
*ps_status = commandTag = "CREATEDB";
CHECK_IF_ABORTED();
-#ifdef MB
+#ifdef MULTIBYTE
createdb(stmt->dbname, stmt->dbpath, stmt->encoding);
#else
createdb(stmt->dbname, stmt->dbpath);
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index 730164c5e5..3264f5c41c 100644
--- a/src/backend/utils/Makefile
+++ b/src/backend/utils/Makefile
@@ -23,7 +23,7 @@ OBJS = fmgrtab.o adt/SUBSYS.o cache/SUBSYS.o error/SUBSYS.o \
DIRS = adt cache error fmgr hash init misc mmgr sort time
-ifdef MB
+ifdef MULTIBYTE
OBJS += mb/SUBSYS.o
DIRS += mb
endif
diff --git a/src/backend/utils/adt/Makefile b/src/backend/utils/adt/Makefile
index e77ac6fe03..9381925fcf 100644
--- a/src/backend/utils/adt/Makefile
+++ b/src/backend/utils/adt/Makefile
@@ -13,8 +13,8 @@ include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS+=-DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = acl.o arrayfuncs.o arrayutils.o bool.o cash.o char.o chunk.o \
diff --git a/src/backend/utils/cache/Makefile b/src/backend/utils/cache/Makefile
index 0b840c638a..f147063067 100644
--- a/src/backend/utils/cache/Makefile
+++ b/src/backend/utils/cache/Makefile
@@ -12,8 +12,8 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = catcache.o inval.o rel.o relcache.o syscache.o lsyscache.o fcache.o
diff --git a/src/backend/utils/cache/fcache.c b/src/backend/utils/cache/fcache.c
index 5b6855194b..d64e8e6919 100644
--- a/src/backend/utils/cache/fcache.c
+++ b/src/backend/utils/cache/fcache.c
@@ -22,7 +22,7 @@
#include "catalog/pg_type.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_language.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 6fbab9ad2d..88bfd0ca33 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -53,7 +53,7 @@
#include "catalog/indexing.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_attrdef.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_attribute_mb.h"
#else
#include "catalog/pg_attribute.h"
diff --git a/src/backend/utils/init/Makefile b/src/backend/utils/init/Makefile
index e647bfaca7..726a7ead90 100644
--- a/src/backend/utils/init/Makefile
+++ b/src/backend/utils/init/Makefile
@@ -12,8 +12,8 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = enbl.o findbe.o globals.o miscinit.o postinit.o
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 5c8faa507f..a76c73cc25 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -234,8 +234,8 @@ SetDatabaseName(char *name)
strcpy(DatabaseName, name);
}
-#ifndef MB
-/* even if MB is not enabled, this function is neccesary
+#ifndef MULTIBYTE
+/* even if MULTIBYTE is not enabled, this function is neccesary
* since pg_proc.h does have.
*/
const char *
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 3c9371fa56..c764271ae1 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -66,7 +66,7 @@
#include "utils/inval.h"
#include "catalog/catname.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_database_mb.h"
#include "mb/pg_wchar.h"
#else
@@ -83,7 +83,7 @@ static void InitStdio(void);
static void InitUserid(void);
extern char *ExpandDatabasePath(char *name);
-#ifdef MB
+#ifdef MULTIBYTE
extern void GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path, int *encoding);
#else
extern void GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path);
@@ -128,12 +128,12 @@ InitMyDatabaseInfo(char *name)
Oid owner;
char *path,
myPath[MAXPGPATH + 1];
-#ifdef MB
+#ifdef MULTIBYTE
int encoding;
#endif
SetDatabaseName(name);
-#ifdef MB
+#ifdef MULTIBYTE
GetRawDatabaseInfo(name, &owner, &MyDatabaseId, myPath, &encoding);
#else
GetRawDatabaseInfo(name, &owner, &MyDatabaseId, myPath);
@@ -147,7 +147,7 @@ InitMyDatabaseInfo(char *name)
path = ExpandDatabasePath(myPath);
SetDatabasePath(path);
-#ifdef MB
+#ifdef MULTIBYTE
SetDatabaseEncoding(encoding);
#endif
diff --git a/src/backend/utils/mb/Makefile b/src/backend/utils/mb/Makefile
index bb78db5477..adc8641d9e 100644
--- a/src/backend/utils/mb/Makefile
+++ b/src/backend/utils/mb/Makefile
@@ -12,8 +12,8 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = common.o conv.o mbutils.o wchar.o wstrcmp.o wstrncmp.o variable.o
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 4024e1b5ff..1b366e16f5 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -183,7 +183,7 @@ int pg_mbstrlen_with_len(const unsigned char *mbstr, int limit)
/*
* fuctions for utils/init
*/
-static int DatabaseEncoding = MB;
+static int DatabaseEncoding = MULTIBYTE;
void
SetDatabaseEncoding(int encoding)
{
diff --git a/src/backend/utils/misc/Makefile b/src/backend/utils/misc/Makefile
index 4f5fe49fdc..905aa4c51f 100644
--- a/src/backend/utils/misc/Makefile
+++ b/src/backend/utils/misc/Makefile
@@ -13,8 +13,8 @@ include ../../../Makefile.global
CFLAGS += -I../..
-ifdef MB
-CFLAGS += -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS = database.o superuser.o
diff --git a/src/backend/utils/misc/database.c b/src/backend/utils/misc/database.c
index 83907f1d86..4f9dac07fc 100644
--- a/src/backend/utils/misc/database.c
+++ b/src/backend/utils/misc/database.c
@@ -22,7 +22,7 @@
#include "access/heapam.h"
#include "access/xact.h"
#include "catalog/catname.h"
-#ifdef MB
+#ifdef MULTIBYTE
#include "catalog/pg_database_mb.h"
#include "mb/pg_wchar.h"
#else
@@ -184,7 +184,7 @@ ExpandDatabasePath(char *dbpath)
* --------------------------------
*/
void
-#ifdef MB
+#ifdef MULTIBYTE
GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path, int *encoding)
#else
GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path)
@@ -275,14 +275,23 @@ GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path)
* means of getting at sys cat attrs.
*/
tup_db = (Form_pg_database) GETSTRUCT(tup);
-
+#ifdef MULTIBYTE
+ /* get encoding from template database.
+ This is the "default for default" for
+ create database command.
+ */
+ if (strcmp("template1",tup_db->datname.data) == 0)
+ {
+ SetTemplateEncoding(tup_db->encoding);
+ }
+#endif
if (strcmp(name, tup_db->datname.data) == 0)
{
*db_id = tup->t_oid;
strncpy(path, VARDATA(&(tup_db->datpath)),
(VARSIZE(&(tup_db->datpath)) - VARHDRSZ));
*(path + VARSIZE(&(tup_db->datpath)) - VARHDRSZ) = '\0';
-#ifdef MB
+#ifdef MULTIBYTE
*encoding = tup_db->encoding;
#endif
goto done;
diff --git a/src/bin/Makefile b/src/bin/Makefile
index 4b69461691..4daa231730 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -17,7 +17,7 @@ include ../Makefile.global
DIRS = pg_id pg_version psql pg_dump pg_passwd cleardbdir createdb \
createuser destroydb destroyuser initdb initlocation ipcclean
-ifdef MB
+ifdef MULTIBYTE
DIRS += pg_encoding
endif
diff --git a/src/bin/createdb/Makefile b/src/bin/createdb/Makefile
index 8585360fc8..d1e2d1d2e0 100644
--- a/src/bin/createdb/Makefile
+++ b/src/bin/createdb/Makefile
@@ -17,7 +17,7 @@ include ../../Makefile.global
all: createdb
createdb: createdb.sh
- sed 's/__MB__/$(MB)/' createdb.sh > createdb
+ sed 's/__MULTIBYTE__/$(MULTIBYTE)/' createdb.sh > createdb
install: createdb
$(INSTALL) $(INSTL_EXE_OPTS) $< $(BINDIR)/$<
diff --git a/src/bin/createdb/createdb.sh b/src/bin/createdb/createdb.sh
index 7adefea9c9..5c5d3eb11d 100644
--- a/src/bin/createdb/createdb.sh
+++ b/src/bin/createdb/createdb.sh
@@ -17,7 +17,7 @@
CMDNAME=`basename $0`
-MBENABLED=__MB__
+MBENABLED=__MULTIBYTE__
MB=
if [ -z "$USER" ]; then
diff --git a/src/bin/initdb/Makefile b/src/bin/initdb/Makefile
index 6619b34ffd..6a2f58b766 100644
--- a/src/bin/initdb/Makefile
+++ b/src/bin/initdb/Makefile
@@ -17,7 +17,7 @@ include ../../Makefile.global
all: initdb
initdb: initdb.sh
- sed 's/__MB__/$(MB)/' initdb.sh > initdb
+ sed 's/__MULTIBYTE__/$(MULTIBYTE)/' initdb.sh > initdb
install: initdb
$(INSTALL) $(INSTL_EXE_OPTS) $< $(BINDIR)/$<
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh
index f525cb77ea..a532d05bd1 100644
--- a/src/bin/initdb/initdb.sh
+++ b/src/bin/initdb/initdb.sh
@@ -38,6 +38,444 @@
CMDNAME=`basename $0`
+MULTIBYTE=__MULTIBYTE__
+if [ -n "$MULTIBYTE" ];then
+ MULTIBYTEID=`pg_encoding $MULTIBYTE`
+fi
+
+# Find the default PGLIB directory (the directory that contains miscellaneous
+# files that are part of Postgres). The user-written program postconfig
+# outputs variable settings like "PGLIB=/usr/lib/whatever". If it doesn't
+# output a PGLIB value, then there is no default and the user must
+# specify the pglib option. Postconfig may validly not exist, in which case
+# our invocation of it silently fails.
+
+# The 2>/dev/null is to swallow the "postconfig: not found" message if there
+# is no postconfig.
+
+postconfig_result="`sh -c postconfig 2>/dev/null`"
+if [ ! -z "$postconfig_result" ]; then
+ set -a # Make the following variable assignment exported to environment
+ eval "$postconfig_result"
+ set +a # back to normal
+fi
+
+# Set defaults:
+debug=0
+noclean=0
+template_only=0
+POSTGRES_SUPERUSERNAME=$USER
+
+while [ "$#" -gt 0 ]
+do
+# ${ARG#--username=} is not reliable or available on all platforms
+
+ case "$1" in
+ --debug|-d)
+ debug=1
+ echo "Running with debug mode on."
+ ;;
+ --noclean|-n)
+ noclean=1
+ echo "Running with noclean mode on. "
+ "Mistakes will not be cleaned up."
+ ;;
+ --template|-t)
+ template_only=1
+ echo "updating template1 database only."
+ ;;
+ --username=*)
+ POSTGRES_SUPERUSERNAME="`echo $1 | sed 's/^--username=//'`"
+ ;;
+ -u)
+ shift
+ POSTGRES_SUPERUSERNAME="$1"
+ ;;
+ -u*)
+ POSTGRES_SUPERUSERNAME="`echo $1 | sed 's/^-u//'`"
+ ;;
+ --pgdata=*)
+ PGDATA="`echo $1 | sed 's/^--pgdata=//'`"
+ ;;
+ -r)
+ shift
+ PGDATA="$1"
+ ;;
+ -r*)
+ PGDATA="`echo $1 | sed 's/^-r//'`"
+ ;;
+ --pglib=*)
+ PGLIB="`echo $1 | sed 's/^--pglib=//'`"
+ ;;
+ -l)
+ shift
+ PGLIB="$1"
+ ;;
+ -l*)
+ PGLIB="`echo $1 | sed 's/^-l//'`"
+ ;;
+
+ --pgencoding=*)
+ if [ -z "$MULTIBYTE" ];then
+ echo "MULTIBYTE support seems to be disabled"
+ exit 100
+ fi
+ mb="`echo $1 | sed 's/^--pgencoding=//'`"
+ MULTIBYTEID=`pg_encoding $mb`
+ if [ -z "$MULTIBYTEID" ];then
+ echo "$mb is not a valid encoding name"
+ exit 100
+ fi
+ ;;
+ -e)
+ if [ -z "$MULTIBYTE" ];then
+ echo "MULTIBYTE support seems to be disabled"
+ exit 100
+ fi
+ shift
+ MULTIBYTEID=`pg_encoding $1`
+ if [ -z "$MULTIBYTEID" ];then
+ echo "$1 is not a valid encoding name"
+ exit 100
+ fi
+ ;;
+ -e*)
+ if [ -z "$MULTIBYTE" ];then
+ echo "MULTIBYTE support seems to be disabled"
+ exit 100
+ fi
+ mb="`echo $1 | sed 's/^-e//'`"
+ MULTIBYTEID=`pg_encoding $mb`
+ if [ -z "$MULTIBYTEID" ];then
+ echo "$mb is not a valid encoding name"
+ exit 100
+ fi
+ ;;
+ *)
+ echo "Unrecognized option '$1'. Syntax is:"
+ if [ -z "$MULTIBYTE" ];then
+ echo "initdb [-t | --template] [-d | --debug]" \
+ "[-n | --noclean]" \
+ "[-u SUPERUSER | --username=SUPERUSER]" \
+ "[-r DATADIR | --pgdata=DATADIR]" \
+ "[-l LIBDIR | --pglib=LIBDIR]"
+ else
+ echo "initdb [-t | --template] [-d | --debug]" \
+ "[-n | --noclean]" \
+ "[-u SUPERUSER | --username=SUPERUSER]" \
+ "[-r DATADIR | --pgdata=DATADIR]" \
+ "[-l LIBDIR | --pglib=LIBDIR]" \
+ "[-e ENCODING | --pgencoding=ENCODING]"
+ fi
+ exit 100
+ esac
+ shift
+done
+
+#-------------------------------------------------------------------------
+# Make sure he told us where to find the Postgres files.
+#-------------------------------------------------------------------------
+if [ -z "$PGLIB" ]; then
+ echo "$CMDNAME does not know where to find the files that make up "
+ echo "Postgres (the PGLIB directory). You must identify the PGLIB "
+ echo "directory either with a --pglib invocation option, or by "
+ echo "setting the PGLIB environment variable, or by having a program "
+ echo "called 'postconfig' in your search path that outputs an asignment "
+ echo "for PGLIB."
+ exit 20
+fi
+
+#-------------------------------------------------------------------------
+# Make sure he told us where to build the database system
+#-------------------------------------------------------------------------
+
+if [ -z "$PGDATA" ]; then
+ echo "$CMDNAME: You must identify the PGDATA directory, where the data"
+ echo "for this database system will reside. Do this with either a"
+ echo "--pgdata invocation option or a PGDATA environment variable."
+ echo
+ exit 20
+fi
+
+TEMPLATE=$PGLIB/local1_template1.bki.source
+GLOBAL=$PGLIB/global1.bki.source
+TEMPLATE_DESCR=$PGLIB/local1_template1.description
+GLOBAL_DESCR=$PGLIB/global1.description
+PG_HBA_SAMPLE=$PGLIB/pg_hba.conf.sample
+PG_GEQO_SAMPLE=$PGLIB/pg_geqo.sample
+
+
+#-------------------------------------------------------------------------
+# Find the input files
+#-------------------------------------------------------------------------
+
+for PREREQ_FILE in $TEMPLATE $GLOBAL $PG_HBA_SAMPLE; do
+ if [ ! -f $PREREQ_FILE ]; then
+ echo "$CMDNAME does not find the file '$PREREQ_FILE'."
+ echo "This means you have identified an invalid PGLIB directory."
+ echo "You specify a PGLIB directory with a --pglib invocation "
+ echo "option, a PGLIB environment variable, or a postconfig program."
+ exit 1
+ fi
+done
+
+echo "$CMDNAME: using $TEMPLATE as input to create the template database."
+if [ $template_only -eq 0 ]; then
+ echo "$CMDNAME: using $GLOBAL as input to create the global classes."
+ echo "$CMDNAME: using $PG_HBA_SAMPLE as the host-based authentication" \
+ "control file."
+ echo
+fi
+
+#---------------------------------------------------------------------------
+# Figure out who the Postgres superuser for the new database system will be.
+#---------------------------------------------------------------------------
+
+if [ -z "$POSTGRES_SUPERUSERNAME" ]; then
+ echo "Can't tell what username to use. You don't have the USER"
+ echo "environment variable set to your username and didn't specify the "
+ echo "--username option"
+ exit 1
+fi
+
+POSTGRES_SUPERUID=`pg_id $POSTGRES_SUPERUSERNAME`
+
+if [ $POSTGRES_SUPERUID = NOUSER ]; then
+ echo "Valid username not given. You must specify the username for "
+ echo "the Postgres superuser for the database system you are "
+ echo "initializing, either with the --username option or by default "
+ echo "to the USER environment variable."
+ exit 10
+fi
+
+if [ $POSTGRES_SUPERUID -ne `pg_id` -a `pg_id` -ne 0 ]; then
+ echo "Only the unix superuser may initialize a database with a different"
+ echo "Postgres superuser. (You must be able to create files that belong"
+ echo "to the specified unix user)."
+ exit 2
+fi
+
+echo "We are initializing the database system with username" \
+ "$POSTGRES_SUPERUSERNAME (uid=$POSTGRES_SUPERUID)."
+echo "This user will own all the files and must also own the server process."
+echo
+
+# -----------------------------------------------------------------------
+# Create the data directory if necessary
+# -----------------------------------------------------------------------
+
+# umask must disallow access to group, other for files and dirs
+umask 077
+
+if [ -f "$PGDATA/PG_VERSION" ]; then
+ if [ $template_only -eq 0 ]; then
+ echo "$CMDNAME: error: File $PGDATA/PG_VERSION already exists."
+ echo "This probably means initdb has already been run and the "
+ echo "database system already exists."
+ echo
+ echo "If you want to create a new database system, either remove "
+ echo "the $PGDATA directory or run initdb with a --pgdata option "
+ echo "other than $PGDATA."
+ exit 1
+ fi
+else
+ if [ ! -d $PGDATA ]; then
+ echo "Creating Postgres database system directory $PGDATA"
+ echo
+ mkdir $PGDATA
+ if [ $? -ne 0 ]; then exit 5; fi
+ fi
+ if [ ! -d $PGDATA/base ]; then
+ echo "Creating Postgres database system directory $PGDATA/base"
+ echo
+ mkdir $PGDATA/base
+ if [ $? -ne 0 ]; then exit 5; fi
+ fi
+fi
+
+#----------------------------------------------------------------------------
+# Create the template1 database
+#----------------------------------------------------------------------------
+
+rm -rf $PGDATA/base/template1
+mkdir $PGDATA/base/template1
+
+if [ "$debug" -eq 1 ]; then
+ BACKEND_TALK_ARG="-d"
+else
+ BACKEND_TALK_ARG="-Q"
+fi
+
+BACKENDARGS="-boot -C -F -D$PGDATA $BACKEND_TALK_ARG"
+
+echo "$CMDNAME: creating template database in $PGDATA/base/template1"
+echo "Running: postgres $BACKENDARGS template1"
+
+cat $TEMPLATE \
+| sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \
+ -e "s/PGUID/$POSTGRES_SUPERUID/" \
+| postgres $BACKENDARGS template1
+
+if [ $? -ne 0 ]; then
+ echo "$CMDNAME: could not create template database"
+ if [ $noclean -eq 0 ]; then
+ echo "$CMDNAME: cleaning up by wiping out $PGDATA/base/template1"
+ rm -rf $PGDATA/base/template1
+ else
+ echo "$CMDNAME: cleanup not done because noclean options was used."
+ fi
+ exit 1;
+fi
+
+echo
+
+pg_version $PGDATA/base/template1
+
+#----------------------------------------------------------------------------
+# Create the global classes, if requested.
+#----------------------------------------------------------------------------
+
+if [ $template_only -eq 0 ]; then
+ echo "Creating global classes in $PG_DATA/base"
+ echo "Running: postgres $BACKENDARGS template1"
+
+ cat $GLOBAL \
+ | sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \
+ -e "s/PGUID/$POSTGRES_SUPERUID/" \
+ | postgres $BACKENDARGS template1
+
+ if (test $? -ne 0)
+ then
+ echo "$CMDNAME: could not create global classes."
+ if (test $noclean -eq 0); then
+ echo "$CMDNAME: cleaning up."
+ rm -rf $PGDATA
+ else
+ echo "$CMDNAME: cleanup not done (noclean mode set)."
+ fi
+ exit 1;
+ fi
+
+ echo
+
+ pg_version $PGDATA
+
+ cp $PG_HBA_SAMPLE $PGDATA/pg_hba.conf
+ cp $PG_GEQO_SAMPLE $PGDATA/pg_geqo.sample
+
+ echo "Adding template1 database to pg_database..."
+
+ echo "open pg_database" > /tmp/create.$$
+ if [ -z "$MULTIBYTE" ];then
+ echo "insert (template1 $POSTGRES_SUPERUID template1)" >> /tmp/create.$$
+ else
+ echo "insert (template1 $POSTGRES_SUPERUID $MULTIBYTEID template1)" >> /tmp/create.$$
+ fi
+ #echo "show" >> /tmp/create.$$
+ echo "close pg_database" >> /tmp/create.$$
+
+ echo "Running: postgres $BACKENDARGS template1 < /tmp/create.$$"
+
+ postgres $BACKENDARGS template1 < /tmp/create.$$
+
+ if [ $? -ne 0 ]; then
+ echo "$CMDNAME: could not log template database"
+ if [ $noclean -eq 0 ]; then
+ echo "$CMDNAME: cleaning up."
+ rm -rf $PGDATA
+ else
+ echo "$CMDNAME: cleanup not done (noclean mode set)."
+ fi
+ exit 1;
+ fi
+ rm -f /tmp/create.$$
+fi
+
+echo
+
+PGSQL_OPT="-o /dev/null -F -Q -D$PGDATA"
+
+# If the COPY is first, the VACUUM generates an error, so we vacuum first
+echo "vacuuming template1"
+echo "vacuum" | postgres $PGSQL_OPT template1 > /dev/null
+
+echo "COPY pg_shadow TO '$PGDATA/pg_pwd' USING DELIMITERS '\\t'" | \
+ postgres $PGSQL_OPT template1 > /dev/null
+
+echo "creating public pg_user view"
+echo "CREATE TABLE xpg_user ( \
+ usename name, \
+ usesysid int4, \
+ usecreatedb bool, \
+ usetrace bool, \
+ usesuper bool, \
+ usecatupd bool, \
+ passwd text, \
+ valuntil abstime);" | postgres $PGSQL_OPT template1 > /dev/null
+
+#move it into pg_user
+echo "UPDATE pg_class SET relname = 'pg_user' WHERE relname = 'xpg_user';" |\
+ postgres $PGSQL_OPT template1 > /dev/null
+echo "UPDATE pg_type SET typname = 'pg_user' WHERE typname = 'xpg_user';" |\
+ postgres $PGSQL_OPT template1 > /dev/null
+mv $PGDATA/base/template1/xpg_user $PGDATA/base/template1/pg_user
+
+echo "CREATE RULE _RETpg_user AS ON SELECT TO pg_user DO INSTEAD \
+ SELECT usename, usesysid, usecreatedb, usetrace, \
+ usesuper, usecatupd, '********'::text as passwd, \
+ valuntil FROM pg_shadow;" | \
+ postgres $PGSQL_OPT template1 > /dev/null
+echo "REVOKE ALL on pg_shadow FROM public" | \
+ postgres $PGSQL_OPT template1 > /dev/null
+
+echo "loading pg_description"
+echo "copy pg_description from '$TEMPLATE_DESCR'" | \
+ postgres $PGSQL_OPT template1 > /dev/null
+echo "copy pg_description from '$GLOBAL_DESCR'" | \
+ postgres $PGSQL_OPT template1 > /dev/null
+echo "vacuum analyze" | \
+ postgres $PGSQL_OPT template1 > /dev/null
+
+#!/bin/sh
+#-------------------------------------------------------------------------
+#
+# initdb.sh--
+# Create (initialize) a Postgres database system.
+#
+# A database system is a collection of Postgres databases all managed
+# by the same postmaster.
+#
+# To create the database system, we create the directory that contains
+# all its data, create the files that hold the global classes, create
+# a few other control files for it, and create one database: the
+# template database.
+#
+# The template database is an ordinary Postgres database. Its data
+# never changes, though. It exists to make it easy for Postgres to
+# create other databases -- it just copies.
+#
+# Optionally, we can skip creating the database system and just create
+# (or replace) the template database.
+#
+# To create all those classes, we run the postgres (backend) program and
+# feed it data from bki files that are in the Postgres library directory.
+#
+# Copyright (c) 1994, Regents of the University of California
+#
+#
+# IDENTIFICATION
+# $Header$
+#
+#-------------------------------------------------------------------------
+
+# ----------------
+# The _fUnKy_..._sTuFf_ gets set when the script is built (with make)
+# from parameters set in the make file.
+#
+# ----------------
+
+CMDNAME=`basename $0`
+
MB=__MB__
if [ -n "$MB" ];then
MBID=`pg_encoding $MB`
diff --git a/src/bin/pg_encoding/Makefile b/src/bin/pg_encoding/Makefile
index 5b7e57f141..61ddcafc48 100644
--- a/src/bin/pg_encoding/Makefile
+++ b/src/bin/pg_encoding/Makefile
@@ -15,7 +15,7 @@ include ../../Makefile.global
OBJS= pg_encoding.o
-CFLAGS+= -DMB=$(MB) -I$(SRCDIR)/include
+CFLAGS+= $(MBFLAGS) -I$(SRCDIR)/include
all: pg_encoding
diff --git a/src/bin/psql/Makefile.in b/src/bin/psql/Makefile.in
index 6f23679f3f..6f3e39e9ed 100644
--- a/src/bin/psql/Makefile.in
+++ b/src/bin/psql/Makefile.in
@@ -24,8 +24,8 @@ LDFLAGS+= $(KRBLIBS)
CFLAGS+= $(KRBFLAGS)
endif
-ifdef MB
-CFLAGS+= -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS= psql.o stringutils.o @STRDUP@
diff --git a/src/configure.in b/src/configure.in
index 04361a259e..ad1f34d8f2 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -190,20 +190,20 @@ AC_ARG_ENABLE(
AC_MSG_RESULT(disabled)
)
-AC_MSG_CHECKING(setting MB)
+AC_MSG_CHECKING(setting MULTIBYE)
AC_ARG_WITH(mb,
[ --with-mb=<encoding> enable multi-byte support ],
[
case "$withval" in
EUC_JP|EHC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5)
- MB="$withval";
+ MULTIBYTE="$withval";
AC_MSG_RESULT("enabled with $withval")
;;
*)
AC_MSG_ERROR([*** You must supply an argument to the --with-mb option one of EUC_JP,EHC_CN,EUC_KR,EUC_TW,UNICODE,MULE_INTERNAL,LATIN1-5])
;;
esac
- MB="$withval"
+ MULTIBYTEB="$withval"
],
AC_MSG_RESULT("disabled")
)
@@ -325,7 +325,7 @@ AC_SUBST(DLSUFFIX)
AC_SUBST(DL_LIB)
AC_SUBST(USE_TCL)
AC_SUBST(USE_PERL)
-AC_SUBST(MB)
+AC_SUBST(MULTIBYTE)
dnl Check for C++ support (allow override if needed)
HAVECXX='HAVE_Cplusplus=true'
diff --git a/src/include/commands/dbcommands.h b/src/include/commands/dbcommands.h
index d3430c1c80..a828def910 100644
--- a/src/include/commands/dbcommands.h
+++ b/src/include/commands/dbcommands.h
@@ -19,7 +19,7 @@
*/
#define SIGKILLDAEMON1 SIGTERM
-#ifdef MB
+#ifdef MULTIBYTE
extern void createdb(char *dbname, char *dbpath, int encoding);
#else
extern void createdb(char *dbname, char *dbpath);
diff --git a/src/include/commands/variable.h b/src/include/commands/variable.h
index eda0589b2f..6f45a7924b 100644
--- a/src/include/commands/variable.h
+++ b/src/include/commands/variable.h
@@ -54,17 +54,5 @@ extern bool set_geqo(void);
extern bool show_geqo(void);
extern bool reset_geqo(void);
extern bool parse_geqo(const char *);
-#ifdef MULTIBYTE
-extern bool show_client_encoding(void);
-extern bool reset_client_encoding(void);
-extern bool parse_client_encoding(const char *);
-extern int pg_set_client_encoding(int);
-extern int pg_get_client_encoding(void);
-extern unsigned char *pg_client_to_server(unsigned char *, int);
-extern unsigned char *pg_server_to_client(unsigned char *, int);
-extern int pg_valid_client_encoding(const char *);
-extern const char *pg_encoding_to_char(int);
-extern int pg_char_to_encoding(const char *);
-#endif
#endif /* VARIABLE_H */
diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h
index 9ad90bd372..8569f462dd 100644
--- a/src/include/mb/pg_wchar.h
+++ b/src/include/mb/pg_wchar.h
@@ -25,7 +25,7 @@
/* followings are for client encoding only */
#define SJIS 32 /* Shift JIS */
-#ifdef MB
+#ifdef MULTIBYTE
typedef unsigned int pg_wchar;
#else
#define pg_wchar char
@@ -67,7 +67,7 @@ typedef unsigned int pg_wchar;
#define LC_CNS11643_6 0xf9 /* CNS 11643-1992 Plane 6 */
#define LC_CNS11643_7 0xfa /* CNS 11643-1992 Plane 7 */
-#ifdef MB
+#ifdef MULTIBYTE
typedef struct {
int encoding; /* encoding symbol value */
char *name; /* encoding name */
@@ -117,6 +117,6 @@ extern void SetDatabaseEncoding(int);
extern void SetTemplateEncoding(int);
extern int GetTemplateEncoding(void);
-#endif /* MB */
+#endif /* MULTIBYTE */
#endif /* PG_WCHAR_H */
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index 6ad5760f6f..749d989483 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -116,7 +116,7 @@ extern char *DatabaseName;
extern char *DatabasePath;
/* in utils/misc/database.c */
-#ifdef MB
+#ifdef MULTIBYTE
extern void GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path, int *encoding);
#else
extern void GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path);
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index b52f8ccc23..de5083e1d8 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -480,7 +480,7 @@ typedef struct CreatedbStmt
NodeTag type;
char *dbname; /* database to create */
char *dbpath; /* location of database */
-#ifdef MB
+#ifdef MULTIBYTE
int encoding; /* default encoding
(see regex/pg_wchar.h) */
#endif
diff --git a/src/include/regex/regex2.h b/src/include/regex/regex2.h
index 3bd1469750..e17491164a 100644
--- a/src/include/regex/regex2.h
+++ b/src/include/regex/regex2.h
@@ -197,15 +197,7 @@ struct re_guts
/* misc utilities */
#ifdef MULTIBYTE
-# if MULTIBYTE == MULE_INTERNAL
-# define OUT (16777216+1) /* 16777216 == 2^24 == 3 bytes */
-# elif MULTIBYTE == EUC_JP || MULTIBYTE == EUC_CN || MULTIBYTE == EUC_KR || MULTIBYTE == EUC_TW
-# define OUT (USHRT_MAX+1) /* 2 bytes */
-# elif MULTIBYTE == UNICODE
-# define OUT (USHRT_MAX+1) /* 2 bytes. assuming UCS-2 */
-# else
-# define OUT (UCHAR_MAX+1) /* other codes. assuming 1 byte */
-# endif
+# define OUT (16777216+1) /* 16777216 == 2^24 == 3 bytes */
#else
# define OUT (CHAR_MAX+1) /* a non-character value */
#endif
diff --git a/src/interfaces/libpq/Makefile.in b/src/interfaces/libpq/Makefile.in
index 023bd02bdb..affd0b9eb6 100644
--- a/src/interfaces/libpq/Makefile.in
+++ b/src/interfaces/libpq/Makefile.in
@@ -25,14 +25,14 @@ ifdef KRBVERS
CFLAGS+= $(KRBFLAGS)
endif
-ifdef MB
-CFLAGS+= -DMB=$(MB)
+ifdef MULTIBYTE
+CFLAGS+= $(MBFLAGS)
endif
OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
dllist.o pqsignal.o
-ifdef MB
+ifdef MULTIBYTE
OBJS+= common.o wchar.o conv.o
endif
@@ -42,7 +42,7 @@ install-shlib-dep :=
ifeq ($(PORTNAME), linux)
install-shlib-dep := install-shlib
- shlib := libpq.so.$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+ shlib := libpq.so.$(SO_MAJOR_VERSION)
LDFLAGS_SL = -shared -soname libpq.so.$(SO_MAJOR_VERSION)
CFLAGS += $(CFLAGS_SL)
endif
@@ -104,6 +104,19 @@ fe-lobj.o: $(SRCDIR)/backend/fmgr.h
dllist.c: $(SRCDIR)/backend/lib/dllist.c
-ln -s $(SRCDIR)/backend/lib/dllist.c .
+ifdef MULTIBYTE
+# We need to compile this with special options for shared libs,
+# so we can't use the object in $(SRCDIR)/backend
+common.c: $(SRCDIR)/backend/utils/mb/common.c
+ -ln -s $(SRCDIR)/backend/utils/mb/common.c .
+
+wchar.c: $(SRCDIR)/backend/utils/mb/wchar.c
+ -ln -s $(SRCDIR)/backend/utils/mb/wchar.c .
+
+conv.c: $(SRCDIR)/backend/utils/mb/conv.c
+ -ln -s $(SRCDIR)/backend/utils/mb/conv.c .
+endif
+
# The following rules cause dependencies in the backend directory to
# get made if they don't exist, but don't cause them to get remade if they
# are out of date.
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index f2947cb5c6..98af42a95c 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -44,7 +44,7 @@
#include <crypt.h>
#endif
-#ifdef MB
+#ifdef MULTIBYTE
#include "mb/pg_wchar.h"
#endif
@@ -792,7 +792,7 @@ PQsetenv(PGconn *conn)
{
struct EnvironmentOptions *eo;
char setQuery[80]; /* mjl: size okay? XXX */
-#ifdef MB
+#ifdef MULTIBYTE
char *envname = "PGCLIENTENCODING";
char envbuf[64];
char *env;
@@ -800,7 +800,7 @@ PQsetenv(PGconn *conn)
PGresult *rtn;
#endif
-#ifdef MB
+#ifdef MULTIBYTE
/* query server encoding */
env = getenv(envname);
if (!env) {
@@ -815,7 +815,7 @@ PQsetenv(PGconn *conn)
PQclear(rtn);
}
if (!encoding) { /* this should not happen */
- sprintf(envbuf,"%s=%s",envname,pg_encoding_to_char(MB));
+ sprintf(envbuf,"%s=%s",envname,pg_encoding_to_char(MULTIBYTE));
putenv(envbuf);
}
}
diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c
index 79250be327..768d89016c 100644
--- a/src/interfaces/libpq/fe-print.c
+++ b/src/interfaces/libpq/fe-print.c
@@ -36,8 +36,7 @@
#endif /* WIN32 */
#ifdef MULTIBYTE
-#include "regex/pg_wchar.h"
-#include "commands/variable.h"
+#include "mb/pg_wchar.h"
#endif
#ifdef TIOCGWINSZ
diff --git a/src/test/mb/mbregress.sh b/src/test/mb/mbregress.sh
index f2667ec440..589ed6a164 100644
--- a/src/test/mb/mbregress.sh
+++ b/src/test/mb/mbregress.sh
@@ -10,6 +10,10 @@ else
ECHO_C='\c'
fi
+if [ ! -d results ];then
+ mkdir results
+fi
+
PSQL="psql -n -e -q"
tests="euc_jp sjis euc_kr euc_cn unicode mule_internal"
unset PGCLIENTENCODING
diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile
index 58de189ecc..c34384425b 100644
--- a/src/test/regress/GNUmakefile
+++ b/src/test/regress/GNUmakefile
@@ -50,7 +50,7 @@ all: $(INFILES)
# run the test
#
runtest: $(INFILES)
- MB=$(MB);export MB; \
+ MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
$(SHELL) ./regress.sh 2>&1 | tee regress.out
@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out"
diff --git a/src/test/regress/regress.sh b/src/test/regress/regress.sh
index cf9956743c..6086cc93e9 100755
--- a/src/test/regress/regress.sh
+++ b/src/test/regress/regress.sh
@@ -42,8 +42,8 @@ fi
echo "=============== running regression queries... ================="
echo "" > regression.diffs
-if [ a$MB != a ];then
- mbtests=`echo $MB|tr "[A-Z]" "[a-z]"`
+if [ -n "$MULTIBYTE" ];then
+ mbtests=`echo $MULTIBYTE|tr "[A-Z]" "[a-z]"`
else
mbtests=""
fi