1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-23 14:01:44 +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:
Marc G. Fournier
1998-07-24 03:32:46 +00:00
parent 6e66468f3a
commit bf00bbb0c4
82 changed files with 2161 additions and 759 deletions

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.43 1998/06/16 07:29:15 momjian Exp $
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.44 1998/07/24 03:31:04 scrappy Exp $
#
# NOTES
# Essentially all Postgres make files include this file and use the
@ -150,7 +150,7 @@ 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
# EUC_JP,EUC_CN,EUC_KR,EUC_TW,UNICODE,MULE_INTERNAL,LATIN1-5
MB=@MB@
##############################################################################

View File

@ -4,7 +4,7 @@
# Makefile for the bootstrap module
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/bootstrap/Makefile,v 1.13 1998/04/06 00:22:02 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/bootstrap/Makefile,v 1.14 1998/07/24 03:31:06 scrappy Exp $
#
#
# We must build bootparse.c and bootscanner.c with yacc and lex and sed,
@ -22,6 +22,9 @@ SRCDIR= ../..
include ../../Makefile.global
CFLAGS += -I..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
ifeq ($(CC), gcc)
CFLAGS+= -Wno-error

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.16 1998/04/26 04:05:51 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.17 1998/07/24 03:31:07 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -31,8 +31,13 @@
#include "bootstrap/bootstrap.h"
#include "catalog/heap.h"
#include "catalog/pg_am.h"
#ifdef MB
#include "catalog/pg_attribute_mb.h"
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_attribute.h"
#include "catalog/pg_class.h"
#endif
#include "commands/defrem.h"
#include "nodes/nodes.h"
#include "nodes/parsenodes.h"

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootscanner.l,v 1.8 1997/11/24 05:07:56 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootscanner.l,v 1.9 1998/07/24 03:31:08 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -20,7 +20,11 @@
#include "storage/block.h"
#include "storage/off.h"
#include "storage/itemptr.h"
#ifdef MB
#include "catalog/pg_attribute_mb.h"
#else
#include "catalog/pg_attribute.h"
#endif
#include "access/attnum.h"
#include "nodes/pg_list.h"
#include "access/tupdesc.h"
@ -28,7 +32,11 @@
#include "access/funcindex.h"
#include "storage/fd.h"
#include "catalog/pg_am.h"
#ifdef MB
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
#endif
#include "nodes/nodes.h"
#include "rewrite/prs2lock.h"
#include "access/skey.h"

View File

@ -7,7 +7,7 @@
* Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.44 1998/06/27 04:53:29 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.45 1998/07/24 03:31:08 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -41,8 +41,13 @@
#include "catalog/catname.h"
#include "catalog/index.h"
#include "catalog/pg_am.h"
#ifdef MB
#include "catalog/pg_attribute_mb.h"
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_attribute.h"
#include "catalog/pg_class.h"
#endif
#include "catalog/pg_type.h"
#include "executor/execdesc.h"
#include "executor/hashjoin.h"

View File

@ -4,7 +4,7 @@
# Makefile for catalog
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.10 1998/04/06 00:22:13 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.11 1998/07/24 03:31:09 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -24,11 +24,28 @@ SUBSYS.o: $(OBJS)
GENBKI= ./genbki.sh
ifdef MB
GLOBALBKI_SRCS= $(addprefix ../../include/catalog/, \
pg_database_mb.h pg_variable.h pg_shadow.h \
pg_group.h pg_log.h \
)
else
GLOBALBKI_SRCS= $(addprefix ../../include/catalog/, \
pg_database.h pg_variable.h pg_shadow.h \
pg_group.h pg_log.h \
)
endif
ifdef MB
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 \
pg_operator.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
pg_language.h pg_parg.h \
pg_aggregate.h pg_ipl.h pg_inheritproc.h \
pg_rewrite.h pg_listener.h pg_description.h indexing.h \
)
else
LOCALBKI_SRCS= $(addprefix ../../include/catalog/, \
pg_proc.h pg_type.h pg_attribute.h pg_class.h \
pg_inherits.h pg_index.h pg_version.h pg_statistic.h \
@ -37,7 +54,7 @@ LOCALBKI_SRCS= $(addprefix ../../include/catalog/, \
pg_aggregate.h pg_ipl.h pg_inheritproc.h \
pg_rewrite.h pg_listener.h pg_description.h indexing.h \
)
endif
global1.bki.source: $(GENBKI) $(GLOBALBKI_SRCS)
sh $(SHOPTS) $(GENBKI) $(BKIOPTS) $(GLOBALBKI_SRCS) > $@ 2>global1.description

View File

@ -4,7 +4,7 @@
# Makefile for commands
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/commands/Makefile,v 1.13 1998/06/16 07:29:20 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/commands/Makefile,v 1.14 1998/07/24 03:31:11 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -22,10 +22,6 @@ OBJS = async.o creatinh.o command.o copy.o defind.o define.o \
recipe.o explain.o sequence.o trigger.o user.o proclang.o \
dbcommands.o variable.o
ifdef MB
OBJS += mbutils.o
endif
all: SUBSYS.o
SUBSYS.o: $(OBJS)

View File

@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.23 1998/02/26 04:30:49 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.24 1998/07/24 03:31:13 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -43,7 +43,11 @@
#include <utils/excid.h>
#include <utils/mcxt.h>
#include <catalog/pg_proc.h>
#ifdef MB
#include <catalog/pg_class_mb.h>
#else
#include <catalog/pg_class.h>
#endif
#include <optimizer/internal.h>
#ifndef NO_SECURITY
#include <utils/acl.h>

View File

@ -6,7 +6,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.49 1998/07/15 18:53:40 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.50 1998/07/24 03:31:14 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -37,6 +37,10 @@
#include "commands/trigger.h"
#include <storage/fd.h>
#ifdef MB
#include "mb/pg_wchar.h"
#endif
#define ISOCTAL(c) (((c) >= '0') && ((c) <= '7'))
#define VALUE(c) ((c) - '0')
@ -61,7 +65,7 @@ static char *CopyReadAttribute(FILE *fp, bool *isnull, char *delim, int *newline
static char *CopyReadAttribute(FILE *fp, bool *isnull, char *delim);
#endif
static void CopyAttributeOut(FILE *fp, char *string, char *delim, int is_array);
static void CopyAttributeOut(FILE *fp, unsigned char *string, char *delim, int is_array);
static int CountTuples(Relation relation);
extern FILE *Pfout,
@ -277,7 +281,7 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
{
string = (char *) (*fmgr_faddr(&out_functions[i]))
(value, elements[i], typmod[i]);
CopyAttributeOut(fp, string, delim, attr[i]->attnelems);
CopyAttributeOut(fp, (unsigned char*)string, delim, attr[i]->attnelems);
pfree(string);
}
else
@ -1012,6 +1016,17 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
char c;
int done = 0;
int i = 0;
#ifdef MB
int mblen;
int encoding;
unsigned char s[2];
int j;
#endif
#ifdef MB
encoding = pg_get_client_encoding();
s[1] = 0;
#endif
#ifdef COPY_PATCH
/* if last delimiter was a newline return a NULL attribute */
@ -1029,9 +1044,9 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
while (!done)
{
c = getc(fp);
if (feof(fp))
return (NULL);
else if (c == '\\')
{
c = getc(fp);
@ -1112,21 +1127,55 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
#endif
done = 1;
}
if (!done)
if (!done) {
attribute[i++] = c;
#ifdef MB
s[0] = c;
mblen = pg_encoding_mblen(encoding, s);
mblen--;
for(j=0;j<mblen;j++) {
c = getc(fp);
if (feof(fp))
return (NULL);
attribute[i++] = c;
}
#endif
}
if (i == EXT_ATTLEN - 1)
elog(ERROR, "CopyReadAttribute - attribute length too long. line: %d", lineno);
}
attribute[i] = '\0';
#ifdef MB
return(pg_client_to_server((unsigned char*)attribute, strlen(attribute)));
#else
return (&attribute[0]);
#endif
}
static void
CopyAttributeOut(FILE *fp, char *string, char *delim, int is_array)
CopyAttributeOut(FILE *fp, unsigned char *server_string, char *delim, int is_array)
{
char c;
unsigned char *string;
unsigned char c;
#ifdef MB
int mblen;
int encoding;
int i;
#endif
#ifdef MB
string = pg_server_to_client(server_string, strlen(server_string));
encoding = pg_get_client_encoding();
#else
string = server_string;
#endif
#ifdef MB
for (; (mblen = pg_encoding_mblen(encoding, string)) &&
((c = *string) != '\0'); string += mblen)
#else
for (; (c = *string) != '\0'; string++)
#endif
{
if (c == delim[0] || c == '\n' ||
(c == '\\' && !is_array))
@ -1148,7 +1197,13 @@ CopyAttributeOut(FILE *fp, char *string, char *delim, int is_array)
fputc('\\', fp);
}
}
#ifdef MB
for (i=0;i<mblen;i++) {
fputc(*(string+i), fp);
}
#else
fputc(*string, fp);
#endif
}
}

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.15 1998/06/15 19:28:14 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.16 1998/07/24 03:31:15 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -22,7 +22,11 @@
#include "access/htup.h"
#include "access/relscan.h"
#include "catalog/catname.h"
#ifdef MB
#include "catalog/pg_database_mb.h"
#else
#include "catalog/pg_database.h"
#endif
#include "catalog/pg_shadow.h"
#include "commands/dbcommands.h"
#include "fmgr.h"
@ -43,7 +47,11 @@ static HeapTuple get_pg_dbtup(char *command, char *dbname, Relation dbrel);
static void stop_vacuum(char *dbpath, char *dbname);
void
#ifdef MB
createdb(char *dbname, char *dbpath, int encoding)
#else
createdb(char *dbname, char *dbpath)
#endif
{
Oid db_id,
user_id;
@ -90,8 +98,13 @@ createdb(char *dbname, char *dbpath)
dbname, user_id, dbname);
#endif
#ifdef MB
sprintf(buf, "insert into pg_database (datname, datdba, encoding, datpath)"
" values (\'%s\', \'%d\', \'%d\', \'%s\');", dbname, user_id, encoding, loc);
#else
sprintf(buf, "insert into pg_database (datname, datdba, datpath)"
" values (\'%s\', \'%d\', \'%s\');", dbname, user_id, loc);
#endif
pg_exec_query(buf);
}

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.11 1998/01/05 16:38:59 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.12 1998/07/24 03:31:19 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -30,7 +30,11 @@
#include <utils/excid.h>
#include <utils/mcxt.h>
#include <catalog/pg_proc.h>
#ifdef MB
#include <catalog/pg_class_mb.h>
#else
#include <catalog/pg_class.h>
#endif
#include <optimizer/internal.h>
#include <optimizer/prep.h> /* for find_all_inheritors */
#ifndef NO_SECURITY

View File

@ -20,7 +20,11 @@
#include <miscadmin.h>
#include <catalog/catname.h>
#ifdef MB
#include <catalog/pg_database_mb.h>
#else
#include <catalog/pg_database.h>
#endif
#include <catalog/pg_shadow.h>
#include <libpq/crypt.h>
#include <access/heapam.h>

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.66 1998/07/12 04:37:52 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.67 1998/07/24 03:31:20 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -27,7 +27,11 @@
#include "catalog/catalog.h"
#include "catalog/catname.h"
#include "catalog/index.h"
#ifdef MB
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
#endif
#include "catalog/pg_index.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_statistic.h"

View File

@ -2,7 +2,7 @@
* Routines for handling of 'SET var TO',
* 'SHOW var' and 'RESET var' statements.
*
* $Id: variable.c,v 1.8 1998/07/18 18:34:01 momjian Exp $
* $Id: variable.c,v 1.9 1998/07/24 03:31:20 scrappy Exp $
*
*/
@ -602,6 +602,9 @@ struct VariableParsers
{
"client_encoding", parse_client_encoding, show_client_encoding, reset_client_encoding
},
{
"server_encoding", parse_server_encoding, show_server_encoding, reset_server_encoding
},
#endif
{
NULL, NULL, NULL, NULL

View File

@ -4,7 +4,7 @@
# Makefile for parser
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.17 1998/05/13 04:54:16 thomas Exp $
# $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.18 1998/07/24 03:31:21 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -17,6 +17,9 @@ ifeq ($(CC), gcc)
CFLAGS+= -Wno-error
endif
ifdef MB
CFLAGS+= -DMB=$(MB)
endif
OBJS= analyze.o gram.o keywords.o parser.o parse_agg.o parse_clause.o \
parse_expr.o parse_func.o parse_node.o parse_oper.o parse_relation.o \

View File

@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.15 1998/07/19 05:49:22 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.16 1998/07/24 03:31:23 scrappy Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@ -46,6 +46,10 @@
#include "utils/elog.h"
#include "access/xact.h"
#ifdef MB
#include "mb/pg_wchar.h"
#endif
static char saved_relname[NAMEDATALEN]; /* need this for complex attributes */
static bool QueryIsRule = FALSE;
static List *saved_In_Expr = NIL;
@ -126,7 +130,7 @@ Oid param_type(int t); /* used in parse_expr.c */
ExplainStmt, VariableSetStmt, VariableShowStmt, VariableResetStmt,
CreateUserStmt, AlterUserStmt, DropUserStmt
%type <str> opt_database, location
%type <str> opt_database1, opt_database2, location, encoding
%type <pboolean> user_createdb_clause, user_createuser_clause
%type <str> user_passwd_clause
@ -262,7 +266,7 @@ Oid param_type(int t); /* used in parse_expr.c */
GRANT, GROUP, HAVING, HOUR_P,
IN, INNER_P, INSERT, INTERVAL, INTO, IS,
JOIN, KEY, LANGUAGE, LEADING, LEFT, LIKE, LOCAL,
MATCH, MINUTE_P, MONTH_P,
MATCH, MINUTE_P, MONTH_P, NAMES,
NATIONAL, NATURAL, NCHAR, NO, NOT, NOTIFY, NULL_P, NUMERIC,
ON, OPTION, OR, ORDER, OUTER_P,
PARTIAL, POSITION, PRECISION, PRIMARY, PRIVILEGES, PROCEDURE, PUBLIC,
@ -290,7 +294,7 @@ Oid param_type(int t); /* used in parse_expr.c */
NEW, NONE, NOTHING, NOTNULL, OIDS, OPERATOR, PROCEDURAL,
RECIPE, RENAME, RESET, RETURNS, ROW, RULE,
SEQUENCE, SETOF, SHOW, START, STATEMENT, STDIN, STDOUT, TRUSTED,
VACUUM, VERBOSE, VERSION
VACUUM, VERBOSE, VERSION, ENCODING
/* Keywords (obsolete; retain through next version for parser - thomas 1997-12-04) */
%token ARCHIVE
@ -535,6 +539,17 @@ VariableSetStmt: SET ColId TO var_value
n->value = $4;
$$ = (Node *) n;
}
| SET NAMES encoding
{
#ifdef MB
VariableSetStmt *n = makeNode(VariableSetStmt);
n->name = "client_encoding";
n->value = $3;
$$ = (Node *) n;
#else
elog(ERROR, "SET NAMES is not supported");
#endif
}
;
var_value: Sconst { $$ = $1; }
@ -2094,16 +2109,45 @@ LoadStmt: LOAD file_name
*
*****************************************************************************/
CreatedbStmt: CREATE DATABASE database_name opt_database
CreatedbStmt: CREATE DATABASE database_name WITH opt_database1 opt_database2
{
CreatedbStmt *n = makeNode(CreatedbStmt);
if ($5 == NULL && $6 == NULL) {
elog(ERROR, "CREATE DATABASE WITH requires at least an option");
}
n->dbname = $3;
n->dbpath = $5;
#ifdef MB
if ($6 != NULL) {
n->encoding = pg_char_to_encoding($6);
if (n->encoding < 0) {
elog(ERROR, "invalid encoding name %s", $6);
}
} else {
n->encoding = GetTemplateEncoding();
}
#else
elog(ERROR, "WITH ENCODING is not supported");
#endif
$$ = (Node *)n;
}
| CREATE DATABASE database_name
{
CreatedbStmt *n = makeNode(CreatedbStmt);
n->dbname = $3;
n->dbpath = $4;
n->dbpath = NULL;
#ifdef MB
n->encoding = GetTemplateEncoding();
#endif
$$ = (Node *)n;
}
;
opt_database: WITH LOCATION '=' location { $$ = $4; }
opt_database1: LOCATION '=' location { $$ = $3; }
| /*EMPTY*/ { $$ = NULL; }
;
opt_database2: ENCODING '=' encoding { $$ = $3; }
| /*EMPTY*/ { $$ = NULL; }
;
@ -2112,6 +2156,11 @@ location: Sconst { $$ = $1; }
| /*EMPTY*/ { $$ = NULL; }
;
encoding: Sconst { $$ = $1; }
| DEFAULT { $$ = NULL; }
| /*EMPTY*/ { $$ = NULL; }
;
/*****************************************************************************
*
* QUERY:
@ -4487,6 +4536,7 @@ ColId: IDENT { $$ = $1; }
| DELIMITERS { $$ = "delimiters"; }
| DOUBLE { $$ = "double"; }
| EACH { $$ = "each"; }
| ENCODING { $$ = "encoding"; }
| FUNCTION { $$ = "function"; }
| INCREMENT { $$ = "increment"; }
| INDEX { $$ = "index"; }

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.37 1998/05/09 23:28:49 thomas Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.38 1998/07/24 03:31:24 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -86,6 +86,7 @@ static ScanKeyword ScanKeywords[] = {
{"double", DOUBLE},
{"drop", DROP},
{"each", EACH},
{"encoding", ENCODING},
{"end", END_TRANS},
{"execute", EXECUTE},
{"exists", EXISTS},
@ -135,6 +136,7 @@ static ScanKeyword ScanKeywords[] = {
{"minvalue", MINVALUE},
{"month", MONTH_P},
{"move", MOVE},
{"names", NAMES},
{"national", NATIONAL},
{"natural", NATURAL},
{"nchar", NCHAR},

View File

@ -4,7 +4,7 @@
# Makefile for regex
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/regex/Makefile,v 1.6 1998/04/06 00:24:39 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/regex/Makefile,v 1.7 1998/07/24 03:31:24 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -16,7 +16,6 @@ CFLAGS += -DPOSIX_MISTAKE
OBJS = regcomp.o regerror.o regexec.o regfree.o
ifdef MB
OBJS += utils.o wstrcmp.o wstrncmp.o
CFLAGS += -DMB=$(MB)
endif

View File

@ -4,7 +4,7 @@
# Makefile for rewrite
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/rewrite/Makefile,v 1.6 1998/04/06 00:24:49 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/rewrite/Makefile,v 1.7 1998/07/24 03:31:30 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -12,6 +12,9 @@ SRCDIR = ../..
include ../../Makefile.global
CFLAGS += -I..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = rewriteRemove.o rewriteDefine.o \
rewriteHandler.o rewriteManip.o rewriteSupport.o locks.o

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.21 1998/06/15 19:29:08 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.22 1998/07/24 03:31:31 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -16,7 +16,11 @@
#include "access/heapam.h"
#include "catalog/catname.h"
#include "catalog/indexing.h"
#ifdef MB
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
#endif
#include "catalog/pg_rewrite.h"
#include "fmgr.h"
#include "nodes/parsenodes.h"

View File

@ -4,7 +4,7 @@
# Makefile for storage/lmgr
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Makefile,v 1.6 1998/04/06 00:25:43 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Makefile,v 1.7 1998/07/24 03:31:32 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -12,6 +12,9 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = lmgr.o lock.o multi.o proc.o single.o

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.13 1998/07/13 16:34:50 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.14 1998/07/24 03:31:33 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -41,7 +41,11 @@
#include "catalog/catname.h"
#include "catalog/catalog.h"
#ifdef MB
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
#endif
#include "nodes/memnodes.h"
#include "storage/bufmgr.h"

View File

@ -4,7 +4,7 @@
# Makefile for storage/smgr
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/storage/smgr/Makefile,v 1.6 1998/04/06 00:25:58 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/storage/smgr/Makefile,v 1.7 1998/07/24 03:31:35 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -13,6 +13,10 @@ include ../../../Makefile.global
CFLAGS += -I../..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = md.o mm.o smgr.o smgrtype.o
all: SUBSYS.o

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.33 1998/07/20 16:56:55 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.34 1998/07/24 03:31:35 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -568,8 +568,15 @@ mdblindwrt(char *dbstr,
Oid owner,
id;
char *tmpPath;
#ifdef MB
int tmpEncoding;
#endif
#ifdef MB
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath, &tmpEncoding);
#else
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath);
#endif
if (id != dbid)
elog(FATAL, "mdblindwrt: oid of db %s is not %u", dbstr, dbid);
@ -607,7 +614,15 @@ mdblindwrt(char *dbstr,
id;
char *tmpPath;
#ifdef MB
int tmpEncoding;
#endif
#ifdef MB
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath, &tmpEncoding);
#else
GetRawDatabaseInfo(dbstr, &owner, &id, dbpath);
#endif
if (id != dbid)
elog(FATAL, "mdblindwrt: oid of db %s is not %u", dbstr, dbid);

View File

@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.42 1998/06/16 02:53:26 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.43 1998/07/24 03:31:38 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -558,7 +558,11 @@ ProcessUtility(Node *parsetree,
*ps_status = commandTag = "CREATEDB";
CHECK_IF_ABORTED();
#ifdef MB
createdb(stmt->dbname, stmt->dbpath, stmt->encoding);
#else
createdb(stmt->dbname, stmt->dbpath);
#endif
}
break;

View File

@ -4,7 +4,7 @@
# Makefile for utils
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/Makefile,v 1.6 1998/04/06 00:26:13 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/utils/Makefile,v 1.7 1998/07/24 03:31:39 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -23,6 +23,11 @@ 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
OBJS += mb/SUBSYS.o
DIRS += mb
endif
SUBSYS.o: $(OBJS)
$(LD) -r -o SUBSYS.o $(OBJS)

View File

@ -21,7 +21,7 @@
#include "postgres.h" /* postgres system include file */
#include "utils/palloc.h"
#include "utils/builtins.h" /* where the function declarations go */
#include "regex/pg_wchar.h"
#include "mb/pg_wchar.h"
static int like(pg_wchar *text, pg_wchar *p);
@ -111,7 +111,7 @@ textnlike(struct varlena * s, struct varlena * p)
}
/* $Revision: 1.17 $
/* $Revision: 1.18 $
** "like.c" A first attempt at a LIKE operator for Postgres95.
**
** Originally written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986.

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.36 1998/07/18 18:34:12 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.37 1998/07/24 03:31:42 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -21,7 +21,7 @@ char *convertstr(char *, int, int);
#endif
#include "regex/pg_wchar.h"
#include "mb/pg_wchar.h"
/*
* CHAR() and VARCHAR() types are part of the ANSI SQL standard. CHAR()

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.38 1998/07/18 18:34:13 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.39 1998/07/24 03:31:43 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -18,7 +18,7 @@
#include "utils/palloc.h"
#include "utils/builtins.h" /* where function declarations go */
#include "regex/pg_wchar.h"
#include "mb/pg_wchar.h"
/*****************************************************************************
* USER I/O ROUTINES *

View File

@ -4,7 +4,7 @@
# Makefile for utils/cache
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/cache/Makefile,v 1.6 1998/04/06 00:26:33 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/utils/cache/Makefile,v 1.7 1998/07/24 03:31:46 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -12,6 +12,9 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = catcache.o inval.o rel.o relcache.o syscache.o lsyscache.o fcache.o

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/fcache.c,v 1.12 1998/06/15 19:29:39 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/fcache.c,v 1.13 1998/07/24 03:31:46 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -22,7 +22,11 @@
#include "catalog/pg_type.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_language.h"
#ifdef MB
#include "catalog/pg_class_mb.h"
#else
#include "catalog/pg_class.h"
#endif
#include "parser/parsetree.h" /* for getrelname() */
#include "utils/builtins.h"
#include "utils/fcache.h"

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.41 1998/07/20 16:14:16 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.42 1998/07/24 03:31:47 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -53,7 +53,11 @@
#include "catalog/indexing.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_attrdef.h"
#ifdef MB
#include "catalog/pg_attribute_mb.h"
#else
#include "catalog/pg_attribute.h"
#endif
#include "catalog/pg_index.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_class.h"

View File

@ -4,7 +4,7 @@
# Makefile for utils/init
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/init/Makefile,v 1.7 1998/04/06 00:27:07 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/utils/init/Makefile,v 1.8 1998/07/24 03:31:49 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -12,6 +12,9 @@ SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = enbl.o findbe.o globals.o miscinit.o postinit.o

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.16 1998/06/27 04:53:47 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.17 1998/07/24 03:31:50 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -234,6 +234,18 @@ SetDatabaseName(char *name)
strcpy(DatabaseName, name);
}
#ifndef MB
/* even if MB is not enabled, this function is neccesary
* since pg_proc.h does have.
*/
const char *
getdatabaseencoding()
{
elog(ERROR, "you need to enable MB to use this function");
return("");
}
#endif
#ifdef CYR_RECODE
#define MAX_TOKEN 80

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.30 1998/06/27 04:53:48 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.31 1998/07/24 03:31:50 scrappy Exp $
*
* NOTES
* InitPostgres() is the function called from PostgresMain
@ -66,7 +66,12 @@
#include "utils/inval.h"
#include "catalog/catname.h"
#ifdef MB
#include "catalog/pg_database_mb.h"
#include "mb/pg_wchar.h"
#else
#include "catalog/pg_database.h"
#endif
#include "libpq/libpq.h"
@ -78,7 +83,11 @@ static void InitStdio(void);
static void InitUserid(void);
extern char *ExpandDatabasePath(char *name);
#ifdef MB
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);
#endif
static IPCKey PostgresIpcKey;
@ -119,9 +128,16 @@ InitMyDatabaseInfo(char *name)
Oid owner;
char *path,
myPath[MAXPGPATH + 1];
#ifdef MB
int encoding;
#endif
SetDatabaseName(name);
#ifdef MB
GetRawDatabaseInfo(name, &owner, &MyDatabaseId, myPath, &encoding);
#else
GetRawDatabaseInfo(name, &owner, &MyDatabaseId, myPath);
#endif
if (!OidIsValid(MyDatabaseId))
elog(FATAL,
@ -131,6 +147,9 @@ InitMyDatabaseInfo(char *name)
path = ExpandDatabasePath(myPath);
SetDatabasePath(path);
#ifdef MB
SetDatabaseEncoding(encoding);
#endif
return;
} /* InitMyDatabaseInfo() */

View File

@ -0,0 +1,35 @@
#-------------------------------------------------------------------------
#
# Makefile--
# Makefile for utils/mb
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/mb/Makefile,v 1.1 1998/07/24 03:31:54 scrappy Exp $
#
#-------------------------------------------------------------------------
SRCDIR = ../../..
include ../../../Makefile.global
CFLAGS += -I../..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = common.o conv.o mbutils.o wchar.o wstrcmp.o wstrncmp.o variable.o
all: SUBSYS.o
SUBSYS.o: $(OBJS)
$(LD) -r -o SUBSYS.o $(OBJS)
depend dep:
$(CC) -MM $(CFLAGS) *.c >depend
clean:
rm -f SUBSYS.o $(OBJS)
ifeq (depend,$(wildcard depend))
include depend
endif

View File

@ -0,0 +1,10 @@
common.c: public functions for both the backend and the frontend.
requires conv.c and wchar.c
conv.c: static functions and a public table for code conversion
wchar.c: mostly static functions and a public table for mb string and
multi-byte conversion
mbutilc.c: public functions for the backend only.
requires conv.c and wchar.c
wstrcmp.c: strcmp for mb
wstrncmp.c: strncmp for mb
varable.c: public functions for show/set/reset variable commands

View File

@ -0,0 +1,67 @@
/*
* This file contains some public functions
* usable for both the backend and the frontend.
* Tatsuo Ishii
* $Id: common.c,v 1.1 1998/07/24 03:31:56 scrappy Exp $ */
#include <stdio.h>
#include <string.h>
#include "mb/pg_wchar.h"
/*
* convert encoding char to encoding symbol value.
* case is ignored.
* if there's no valid encoding, returns -1
*/
int pg_char_to_encoding(const char *s)
{
pg_encoding_conv_tbl *p = pg_conv_tbl;
for(;p->encoding >= 0;p++) {
if (!strcasecmp(s, p->name)) {
break;
}
}
return(p->encoding);
}
/*
* check to see if encoding name is valid
*/
int pg_valid_client_encoding(const char *name)
{
return(pg_char_to_encoding(name));
}
/*
* find encoding table entry by encoding
*/
pg_encoding_conv_tbl *pg_get_encent_by_encoding(int encoding)
{
pg_encoding_conv_tbl *p = pg_conv_tbl;
for(;p->encoding >= 0;p++) {
if (p->encoding == encoding) {
return(p);
}
}
return(0);
}
/*
* convert encoding symbol to encoding char.
* if there's no valid encoding symbol, returns ""
*/
const char *pg_encoding_to_char(int encoding)
{
pg_encoding_conv_tbl *p = pg_get_encent_by_encoding(encoding);
if (!p) return("");
return(p->name);
}
/* returns the byte length of a multi-byte word for an encoding */
int pg_encoding_mblen(int encoding, const unsigned char *mbstr)
{
return((*pg_wchar_table[encoding].mblen)(mbstr));
}

View File

@ -2,18 +2,13 @@
* conversion between client encoding and server internal encoding
* (currently mule internal code (mic) is used)
* Tatsuo Ishii
* $Id: mbutils.c,v 1.2 1998/07/18 18:34:01 momjian Exp $
* $Id: conv.c,v 1.1 1998/07/24 03:31:56 scrappy Exp $
*/
#include <stdio.h>
#include <string.h>
#include "postgres.h"
#include "miscadmin.h"
#include "regex/pg_wchar.h"
#include "commands/variable.h"
#include "mb/pg_wchar.h"
static int client_encoding = MULTIBYTE; /* defalut client encoding is set to
same as the server encoding */
/*
* convert bogus chars that cannot be represented in the current encoding
* system.
@ -296,15 +291,15 @@ static void mic2euc_tw(unsigned char *mic, unsigned char *p, int len)
}
/*
* LATIN1 ---> MIC
* LATINn ---> MIC
*/
static void latin12mic(unsigned char *l, unsigned char *p, int len)
static void latin2mic(unsigned char *l, unsigned char *p, int len, int lc)
{
int c1;
while (len-- > 0 && (c1 = *l++)) {
if (c1 > 0x7f) { /* Latin1? */
*p++ = LC_ISO8859_1;
*p++ = lc;
}
*p++ = c1;
}
@ -312,16 +307,16 @@ static void latin12mic(unsigned char *l, unsigned char *p, int len)
}
/*
* MIC ---> LATIN1
* MIC ---> LATINn
*/
static void mic2latin1(unsigned char *mic, unsigned char *p, int len)
static void mic2latin(unsigned char *mic, unsigned char *p, int len, int lc)
{
int c1;
while (len > 0 && (c1 = *mic)) {
len -= pg_mic_mblen(mic++);
if (c1 == LC_ISO8859_1) {
if (c1 == lc) {
*p++ = *mic++;
} else if (c1 > 0x7f) {
mic--;
@ -333,16 +328,48 @@ static void mic2latin1(unsigned char *mic, unsigned char *p, int len)
*p = '\0';
}
typedef struct {
int encoding; /* encoding symbol value */
char *name; /* encoding name */
int is_client_only; /* 0: server/client bothg supported
1: client only */
void (*to_mic)(); /* client encoding to MIC */
void (*from_mic)(); /* MIC to client encoding */
} pg_encoding_conv_tbl;
static void latin12mic(unsigned char *l, unsigned char *p, int len)
{
latin2mic(l, p, len, LC_ISO8859_1);
}
static void mic2latin1(unsigned char *mic, unsigned char *p, int len)
{
mic2latin(mic, p, len, LC_ISO8859_1);
}
static void latin22mic(unsigned char *l, unsigned char *p, int len)
{
latin2mic(l, p, len, LC_ISO8859_2);
}
static void mic2latin2(unsigned char *mic, unsigned char *p, int len)
{
mic2latin(mic, p, len, LC_ISO8859_2);
}
static void latin32mic(unsigned char *l, unsigned char *p, int len)
{
latin2mic(l, p, len, LC_ISO8859_3);
}
static void mic2latin3(unsigned char *mic, unsigned char *p, int len)
{
mic2latin(mic, p, len, LC_ISO8859_3);
}
static void latin42mic(unsigned char *l, unsigned char *p, int len)
{
latin2mic(l, p, len, LC_ISO8859_4);
}
static void mic2latin4(unsigned char *mic, unsigned char *p, int len)
{
mic2latin(mic, p, len, LC_ISO8859_4);
}
static void latin52mic(unsigned char *l, unsigned char *p, int len)
{
latin2mic(l, p, len, LC_ISO8859_5);
}
static void mic2latin5(unsigned char *mic, unsigned char *p, int len)
{
mic2latin(mic, p, len, LC_ISO8859_5);
}
static pg_encoding_conv_tbl conv_tbl[] = {
pg_encoding_conv_tbl pg_conv_tbl[] = {
{EUC_JP, "EUC_JP", 0, euc_jp2mic, mic2euc_jp}, /* EUC_JP */
{EUC_CN, "EUC_CN", 0, euc_cn2mic, mic2euc_cn}, /* EUC_CN */
{EUC_KR, "EUC_KR", 0, euc_kr2mic, mic2euc_kr}, /* EUC_KR */
@ -350,178 +377,10 @@ static pg_encoding_conv_tbl conv_tbl[] = {
{UNICODE, "UNICODE", 0, 0, 0}, /* UNICODE */
{MULE_INTERNAL, "MULE_INTERNAL", 0, 0, 0}, /* MULE_INTERNAL */
{LATIN1, "LATIN1", 0, latin12mic, mic2latin1}, /* ISO 8859 Latin 1 */
{LATIN2, "LATIN2", 0, latin22mic, mic2latin2}, /* ISO 8859 Latin 2 */
{LATIN3, "LATIN3", 0, latin32mic, mic2latin3}, /* ISO 8859 Latin 3 */
{LATIN4, "LATIN4", 0, latin42mic, mic2latin4}, /* ISO 8859 Latin 4 */
{LATIN5, "LATIN5", 0, latin52mic, mic2latin5}, /* ISO 8859 Latin 5 */
{SJIS, "SJIS", 1, sjis2mic, mic2sjis}, /* SJIS */
{-1, "", 0, 0, 0} /* end mark */
};
/*
* find encoding table entry by encoding
*/
static pg_encoding_conv_tbl *get_enc_ent(int encoding)
{
pg_encoding_conv_tbl *p = conv_tbl;
for(;p->encoding >= 0;p++) {
if (p->encoding == encoding) {
return(p);
}
}
return(0);
}
void (*client_to_mic)(); /* something to MIC */
void (*client_from_mic)(); /* MIC to something */
void (*server_to_mic)(); /* something to MIC */
void (*server_from_mic)(); /* MIC to something */
/*
* set the client encoding. if client/server encoding is
* not supported, returns -1
*/
int pg_set_client_encoding(int encoding)
{
client_encoding = encoding;
if (client_encoding == MULTIBYTE) { /* server == client? */
client_to_mic = client_from_mic = 0;
server_to_mic = server_from_mic = 0;
} else if (MULTIBYTE == MULE_INTERNAL) { /* server == MULE_INETRNAL? */
client_to_mic = get_enc_ent(encoding)->to_mic;
client_from_mic = get_enc_ent(encoding)->from_mic;
server_to_mic = server_from_mic = 0;
if (client_to_mic == 0 || client_from_mic == 0) {
return(-1);
}
} else if (encoding == MULE_INTERNAL) { /* client == MULE_INETRNAL? */
client_to_mic = client_from_mic = 0;
server_to_mic = get_enc_ent(MULTIBYTE)->to_mic;
server_from_mic = get_enc_ent(MULTIBYTE)->from_mic;
if (server_to_mic == 0 || server_from_mic == 0) {
return(-1);
}
} else {
client_to_mic = get_enc_ent(encoding)->to_mic;
client_from_mic = get_enc_ent(encoding)->from_mic;
server_to_mic = get_enc_ent(MULTIBYTE)->to_mic;
server_from_mic = get_enc_ent(MULTIBYTE)->from_mic;
if (client_to_mic == 0 || client_from_mic == 0) {
return(-1);
}
if (server_to_mic == 0 || server_from_mic == 0) {
return(-1);
}
}
return(0);
}
/*
* returns the current client encoding
*/
int pg_get_client_encoding()
{
return(client_encoding);
}
/*
* convert client encoding to server encoding
*/
unsigned char *pg_client_to_server(unsigned char *s, int len)
{
static unsigned char b1[MAX_PARSE_BUFFER*4]; /* is this enough? */
static unsigned char b2[MAX_PARSE_BUFFER*4]; /* is this enough? */
unsigned char *p;
if (client_to_mic) {
(*client_to_mic)(s, b1, len);
len = strlen(b1);
p = b1;
} else {
p = s;
}
if (server_from_mic) {
(*server_from_mic)(p, b2, len);
p = b2;
}
return(p);
}
/*
* convert server encoding to client encoding
*/
unsigned char *pg_server_to_client(unsigned char *s, int len)
{
static unsigned char b1[MAX_PARSE_BUFFER*4]; /* is this enough? */
static unsigned char b2[MAX_PARSE_BUFFER*4]; /* is this enough? */
unsigned char *p;
if (server_to_mic) {
(*server_to_mic)(s, b1, len);
len = strlen(b1);
p = b1;
} else {
p = s;
}
if (client_from_mic) {
(*client_from_mic)(p, b2, len);
p = b2;
}
return(p);
}
/*
* convert encoding char to encoding symbol value.
* case is ignored.
* if there's no valid encoding, returns -1
*/
int pg_char_to_encoding(const char *s)
{
pg_encoding_conv_tbl *p = conv_tbl;
for(;p->encoding >= 0;p++) {
if (!strcasecmp(s, p->name)) {
break;
}
}
return(p->encoding);
}
/*
* check to see if encoding name is valid
*/
int pg_valid_client_encoding(const char *name)
{
return(pg_char_to_encoding(name));
}
/*
* convert encoding symbol to encoding char.
* if there's no valid encoding symbol, returns ""
*/
const char *pg_encoding_to_char(int encoding)
{
pg_encoding_conv_tbl *p = get_enc_ent(encoding);
if (!p) return("");
return(p->name);
}
#ifdef MULTIBYTEUTILSDEBUG
#include <stdio.h>
main()
{
unsigned char sbuf[2048],ebuf[2048];
unsigned char *p = sbuf;
int c;
while ((c = getchar()) != EOF) {
*p++ = c;
}
*p = '\0';
/*
mic2sjis(sbuf,ebuf,2048);
*/
euc_jp2mic(sbuf,ebuf,2048);
printf("%s",ebuf);
}
#endif

View File

@ -0,0 +1,216 @@
/*
* This file contains public functions for conversion between
* client encoding and server internal encoding.
* (currently mule internal code (mic) is used)
* Tatsuo Ishii
* $Id: mbutils.c,v 1.1 1998/07/24 03:31:56 scrappy Exp $ */
#include <stdio.h>
#include <string.h>
#include "mb/pg_wchar.h"
static client_encoding = -1;
static void (*client_to_mic)(); /* something to MIC */
static void (*client_from_mic)(); /* MIC to something */
static void (*server_to_mic)(); /* something to MIC */
static void (*server_from_mic)(); /* MIC to something */
/*
* find encoding table entry by encoding
*/
static pg_encoding_conv_tbl *get_enc_ent(int encoding)
{
pg_encoding_conv_tbl *p = pg_conv_tbl;
for(;p->encoding >= 0;p++) {
if (p->encoding == encoding) {
return(p);
}
}
return(0);
}
/*
* set the client encoding. if client/server encoding is
* not supported, returns -1
*/
int pg_set_client_encoding(int encoding)
{
int current_server_encoding = GetDatabaseEncoding();
client_encoding = encoding;
if (client_encoding == current_server_encoding) { /* server == client? */
client_to_mic = client_from_mic = 0;
server_to_mic = server_from_mic = 0;
} else if (current_server_encoding == MULE_INTERNAL) { /* server == MULE_INETRNAL? */
client_to_mic = get_enc_ent(encoding)->to_mic;
client_from_mic = get_enc_ent(encoding)->from_mic;
server_to_mic = server_from_mic = 0;
if (client_to_mic == 0 || client_from_mic == 0) {
return(-1);
}
} else if (encoding == MULE_INTERNAL) { /* client == MULE_INETRNAL? */
client_to_mic = client_from_mic = 0;
server_to_mic = get_enc_ent(current_server_encoding)->to_mic;
server_from_mic = get_enc_ent(current_server_encoding)->from_mic;
if (server_to_mic == 0 || server_from_mic == 0) {
return(-1);
}
} else {
client_to_mic = get_enc_ent(encoding)->to_mic;
client_from_mic = get_enc_ent(encoding)->from_mic;
server_to_mic = get_enc_ent(current_server_encoding)->to_mic;
server_from_mic = get_enc_ent(current_server_encoding)->from_mic;
if (client_to_mic == 0 || client_from_mic == 0) {
return(-1);
}
if (server_to_mic == 0 || server_from_mic == 0) {
return(-1);
}
}
return(0);
}
/*
* returns the current client encoding
*/
int pg_get_client_encoding()
{
if (client_encoding == -1) {
/* this is the first time */
client_encoding = GetDatabaseEncoding();
}
return(client_encoding);
}
/*
* convert client encoding to server encoding. if server_encoding ==
* client_encoding or no conversion function exists,
* returns s. So be careful.
*/
unsigned char *pg_client_to_server(unsigned char *s, int len)
{
static unsigned char b1[MAX_PARSE_BUFFER*4]; /* is this enough? */
static unsigned char b2[MAX_PARSE_BUFFER*4]; /* is this enough? */
unsigned char *p = s;
if (client_encoding == GetDatabaseEncoding()) {
return(p);
}
if (client_to_mic) {
(*client_to_mic)(s, b1, len);
len = strlen(b1);
p = b1;
}
if (server_from_mic) {
(*server_from_mic)(p, b2, len);
p = b2;
}
return(p);
}
/*
* convert server encoding to client encoding. if server_encoding ==
* client_encoding or no conversion function exists,
* returns s. So be careful.
*/
unsigned char *pg_server_to_client(unsigned char *s, int len)
{
static unsigned char b1[MAX_PARSE_BUFFER*4]; /* is this enough? */
static unsigned char b2[MAX_PARSE_BUFFER*4]; /* is this enough? */
unsigned char *p = s;
if (client_encoding == GetDatabaseEncoding()) {
return(p);
}
if (server_to_mic) {
(*server_to_mic)(s, b1, len);
len = strlen(b1);
p = b1;
}
if (client_from_mic) {
(*client_from_mic)(p, b2, len);
p = b2;
}
return(p);
}
/* convert a multi-byte string to a wchar */
void pg_mb2wchar(const unsigned char *from, pg_wchar *to)
{
(*pg_wchar_table[GetDatabaseEncoding()].mb2wchar_with_len)(from,to,strlen(from));
}
/* convert a multi-byte string to a wchar with a limited length */
void pg_mb2wchar_with_len(const unsigned char *from, pg_wchar *to, int len)
{
(*pg_wchar_table[GetDatabaseEncoding()].mb2wchar_with_len)(from,to,len);
}
/* returns the byte length of a multi-byte word */
int pg_mblen(const unsigned char *mbstr)
{
return((*pg_wchar_table[GetDatabaseEncoding()].mblen)(mbstr));
}
/* returns the length (counted as a wchar) of a multi-byte string */
int pg_mbstrlen(const unsigned char *mbstr)
{
int len = 0;
while (*mbstr) {
mbstr += pg_mblen(mbstr);
len++;
}
return(len);
}
/* returns the length (counted as a wchar) of a multi-byte string
(not necessarily NULL terminated) */
int pg_mbstrlen_with_len(const unsigned char *mbstr, int limit)
{
int len = 0;
int l;
while (*mbstr && limit > 0) {
l = pg_mblen(mbstr);
limit -= l;
mbstr += l;
len++;
}
return(len);
}
/*
* fuctions for utils/init
*/
static int DatabaseEncoding = MB;
void
SetDatabaseEncoding(int encoding)
{
DatabaseEncoding = encoding;
}
int
GetDatabaseEncoding()
{
return(DatabaseEncoding);
}
/* for builtin-function */
const char *
getdatabaseencoding()
{
return(pg_encoding_to_char(DatabaseEncoding));
}
/* set and get template1 database encoding */
static int templateEncoding;
void SetTemplateEncoding(int encoding)
{
templateEncoding = encoding;
}
int GetTemplateEncoding()
{
return(templateEncoding);
}

View File

@ -1,6 +1,6 @@
/*
* testing of utf2wchar()
* $Id: utftest.c,v 1.1 1998/03/15 07:38:37 scrappy Exp $
* $Id: utftest.c,v 1.1 1998/07/24 03:31:57 scrappy Exp $
*/
#include <regex/regex.h>
#include <regex/utils.h>

View File

@ -0,0 +1,73 @@
/*
* This file contains some public functions
* related to show/set/reset variable commands.
* Tatsuo Ishii
* $Id: variable.c,v 1.1 1998/07/24 03:31:57 scrappy Exp $
*/
#include "mb/pg_wchar.h"
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(GetDatabaseEncoding()));
}
}
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 = GetDatabaseEncoding();
}
} else {
encoding = GetDatabaseEncoding();
}
pg_set_client_encoding(encoding);
return TRUE;
}
bool
parse_server_encoding(const char *value)
{
elog(NOTICE, "SET SERVER_ENCODING is not supported");
return TRUE;
}
bool
show_server_encoding()
{
elog(NOTICE, "Current server encoding is %s",
pg_encoding_to_char(GetDatabaseEncoding()));
return TRUE;
}
bool
reset_server_encoding()
{
elog(NOTICE, "RESET SERVER_ENCODING is not supported");
return TRUE;
}

View File

@ -1,9 +1,10 @@
/*
* misc conversion functions between pg_wchar and other encodings.
* conversion functions between pg_wchar and multi-byte streams.
* Tatsuo Ishii
* $Id: utils.c,v 1.4 1998/07/18 18:34:08 momjian Exp $
* $Id: wchar.c,v 1.1 1998/07/24 03:31:57 scrappy Exp $
*/
#include <regex/pg_wchar.h>
#include "mb/pg_wchar.h"
/*
* conversion to pg_wchar is done by "table driven."
@ -12,11 +13,6 @@
* supported in the client, you don't need to define
* mb2wchar_with_len() function (SJIS is the case).
*/
typedef struct {
void (*mb2wchar_with_len)(); /* convert a multi-byte string to a wchar */
int (*mblen)(); /* returns the length of a multi-byte word */
} pg_wchar_tbl;
static void pg_euc2wchar_with_len
(const unsigned char *from, pg_wchar *to, int len)
{
@ -268,7 +264,7 @@ static void pg_mule2wchar_with_len(const unsigned char *from, pg_wchar *to, int
*to = 0;
}
static int pg_mule_mblen(const unsigned char *s)
int pg_mule_mblen(const unsigned char *s)
{
int len;
@ -319,7 +315,7 @@ static int pg_sjis_mblen(const unsigned char *s)
return(len);
}
static pg_wchar_tbl pg_wchar_table[] = {
pg_wchar_tbl pg_wchar_table[] = {
{pg_eucjp2wchar_with_len, pg_eucjp_mblen},
{pg_euccn2wchar_with_len, pg_euccn_mblen},
{pg_euckr2wchar_with_len, pg_euckr_mblen},
@ -327,6 +323,22 @@ static pg_wchar_tbl pg_wchar_table[] = {
{pg_utf2wchar_with_len, pg_utf_mblen},
{pg_mule2wchar_with_len, pg_mule_mblen},
{pg_latin12wchar_with_len, pg_latin1_mblen},
{pg_latin12wchar_with_len, pg_latin1_mblen},
{pg_latin12wchar_with_len, pg_latin1_mblen},
{pg_latin12wchar_with_len, pg_latin1_mblen},
{pg_latin12wchar_with_len, pg_latin1_mblen},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0},
@ -339,66 +351,8 @@ static pg_wchar_tbl pg_wchar_table[] = {
{0, pg_sjis_mblen}
};
/*
*########################################################################
*
* Public functions
*
*########################################################################
*/
/* convert a multi-byte string to a wchar */
void pg_mb2wchar(const unsigned char *from, pg_wchar *to)
{
(*pg_wchar_table[MULTIBYTE].mb2wchar_with_len)(from,to,strlen(from));
}
/* convert a multi-byte string to a wchar with a limited length */
void pg_mb2wchar_with_len(const unsigned char *from, pg_wchar *to, int len)
{
(*pg_wchar_table[MULTIBYTE].mb2wchar_with_len)(from,to,len);
}
/* returns the byte length of a multi-byte word */
int pg_mblen(const unsigned char *mbstr)
{
return((*pg_wchar_table[MULTIBYTE].mblen)(mbstr));
}
/* returns the byte length of a multi-byte word for an encoding */
int pg_encoding_mblen(int encoding, const unsigned char *mbstr)
{
return((*pg_wchar_table[encoding].mblen)(mbstr));
}
/* returns the byte length of a word for mule internal code */
int pg_mic_mblen(const unsigned char *mbstr)
{
return(pg_mule_mblen(mbstr));
}
/* returns the length (counted as a wchar) of a multi-byte string */
int pg_mbstrlen(const unsigned char *mbstr)
{
int len = 0;
while (*mbstr) {
mbstr += pg_mblen(mbstr);
len++;
}
return(len);
}
/* returns the length (counted as a wchar) of a multi-byte string
(not necessarily NULL terminated) */
int pg_mbstrlen_with_len(const unsigned char *mbstr, int limit)
{
int len = 0;
int l;
while (*mbstr && limit > 0) {
l = pg_mblen(mbstr);
limit -= l;
mbstr += l;
len++;
}
return(len);
}

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*/
#include <regex/pg_wchar.h>
#include <mb/pg_wchar.h>
int
pg_char_and_wchar_strcmp(s1, s2)

View File

@ -33,7 +33,7 @@
* SUCH DAMAGE.
*/
#include <regex/pg_wchar.h>
#include <mb/pg_wchar.h>
int
pg_wchar_strncmp(s1, s2, n)

View File

@ -4,7 +4,7 @@
# Makefile for utils/misc
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/misc/Makefile,v 1.6 1998/04/06 00:27:16 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/utils/misc/Makefile,v 1.7 1998/07/24 03:31:58 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -13,6 +13,10 @@ include ../../../Makefile.global
CFLAGS += -I../..
ifdef MB
CFLAGS += -DMB=$(MB)
endif
OBJS = database.o superuser.o
all: SUBSYS.o

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.11 1998/07/20 16:14:18 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.12 1998/07/24 03:31:59 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -22,7 +22,12 @@
#include "access/heapam.h"
#include "access/xact.h"
#include "catalog/catname.h"
#ifdef MB
#include "catalog/pg_database_mb.h"
#include "mb/pg_wchar.h"
#else
#include "catalog/pg_database.h"
#endif
#include "fmgr.h"
#include "miscadmin.h"
#include "storage/bufmgr.h"
@ -179,7 +184,11 @@ ExpandDatabasePath(char *dbpath)
* --------------------------------
*/
void
#ifdef MB
GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path, int *encoding)
#else
GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path)
#endif
{
int dbfd;
int fileflags;
@ -273,7 +282,9 @@ GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path)
strncpy(path, VARDATA(&(tup_db->datpath)),
(VARSIZE(&(tup_db->datpath)) - VARHDRSZ));
*(path + VARSIZE(&(tup_db->datpath)) - VARHDRSZ) = '\0';
#ifdef MB
*encoding = tup_db->encoding;
#endif
goto done;
}
}

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/Makefile,v 1.13 1998/04/06 03:23:01 momjian Exp $
# $Header: /cvsroot/pgsql/src/bin/Makefile,v 1.14 1998/07/24 03:32:02 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -17,6 +17,10 @@ include ../Makefile.global
DIRS = pg_id pg_version psql pg_dump pg_passwd cleardbdir createdb \
createuser destroydb destroyuser initdb initlocation ipcclean
ifdef MB
DIRS += pg_encoding
endif
#
# TCL/TK programs
#

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/createdb/Attic/Makefile,v 1.8 1998/04/06 16:49:28 momjian Exp $
# $Header: /cvsroot/pgsql/src/bin/createdb/Attic/Makefile,v 1.9 1998/07/24 03:32:04 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -17,7 +17,7 @@ include ../../Makefile.global
all: createdb
createdb: createdb.sh
cp createdb.sh createdb
sed 's/__MB__/$(MB)/' createdb.sh > createdb
install: createdb
$(INSTALL) $(INSTL_EXE_OPTS) $< $(BINDIR)/$<

View File

@ -11,12 +11,15 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/createdb/Attic/createdb.sh,v 1.8 1998/01/29 02:26:21 scrappy Exp $
# $Header: /cvsroot/pgsql/src/bin/createdb/Attic/createdb.sh,v 1.9 1998/07/24 03:32:06 scrappy Exp $
#
#-------------------------------------------------------------------------
CMDNAME=`basename $0`
MBENABLED=__MB__
MB=
if [ -z "$USER" ]; then
if [ -z "$LOGNAME" ]; then
if [ -z "`whoami`" ]; then
@ -43,6 +46,18 @@ do
-p) PGPORT=$2; shift;;
-u) PASSWDOPT=$1;;
-D) dbpath=$2; shift;;
-E)
if [ -z "$MBENABLED" ];then
echo "$CMDNAME: you need to turn on MB compile time option"
exit 1
fi
MB=$2
MBID=`pg_encoding $MB`
if [ -z "$MBID" ];then
echo "$CMDNAME: $MB is not a valid encoding name"
exit 1
fi
shift;;
-*) echo "$CMDNAME: unrecognized parameter $1"; usage=1;;
*) dbname=$1;;
esac
@ -50,8 +65,12 @@ do
done
if [ "$usage" ]; then
echo "Usage: $CMDNAME -a <authtype> -h <server> -p <portnumber> -D <location> [dbname]"
if [ -z "$MBENABLED" ];then
echo "Usage: $CMDNAME -a <authtype> -h <server> -p <portnumber> -D <location> [dbname]"
else
echo "Usage: $CMDNAME -a <authtype> -h <server> -p <portnumber> -D <location> -E <encoding> [dbname]"
exit 1
fi
fi
if [ -z "$AUTHSYS" ]; then
@ -82,8 +101,16 @@ else
# fi
location="with location = '$dbpath'"
fi
if [ -z "$MBENABLED" -o -z "$MB" ]; then
encoding=""
else
encoding="encoding = '$MB'"
if [ -z "$location" ];then
encoding="with $encoding"
fi
fi
psql $PASSWDOPT -tq $AUTHOPT $PGHOSTOPT $PGPORTOPT -c "create database $dbname $location" template1
psql $PASSWDOPT -tq $AUTHOPT $PGHOSTOPT $PGPORTOPT -c "create database $dbname $location $encoding" template1
if [ $? -ne 0 ]; then
echo "$CMDNAME: database creation failed on $dbname."

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/initdb/Makefile,v 1.9 1998/04/06 16:50:22 momjian Exp $
# $Header: /cvsroot/pgsql/src/bin/initdb/Makefile,v 1.10 1998/07/24 03:32:08 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -16,9 +16,13 @@ include ../../Makefile.global
all: initdb
initdb: initdb.sh
sed 's/__MB__/$(MB)/' initdb.sh > initdb
install: initdb
$(INSTALL) $(INSTL_EXE_OPTS) $< $(BINDIR)/$<
clean:
rm -f initdb
dep depend:

View File

@ -1,383 +0,0 @@
#!/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: /cvsroot/pgsql/src/bin/initdb/Attic/initdb,v 1.1 1998/04/06 01:05:52 momjian Exp $
#
#-------------------------------------------------------------------------
# ----------------
# The _fUnKy_..._sTuFf_ gets set when the script is built (with make)
# from parameters set in the make file.
#
# ----------------
CMDNAME=`basename $0`
# 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//'`"
;;
*)
echo "Unrecognized option '$1'. Syntax is:"
echo "initdb [-t | --template] [-d | --debug]" \
"[-n | --noclean]" \
"[-u SUPERUSER | --username=SUPERUSER]" \
"[-r DATADIR | --pgdata=DATADIR]" \
"[-l LIBDIR | --pglib=LIBDIR]"
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.$$
echo "insert (template1 $POSTGRES_SUPERUID template1)" >> /tmp/create.$$
#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

View File

@ -0,0 +1,36 @@
#-------------------------------------------------------------------------
#
# Makefile for bin/pg_encoding
#
# Copyright (c) 1998, PostgreSQL development group
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/Makefile,v 1.1 1998/07/24 03:32:10 scrappy Exp $
#
#-------------------------------------------------------------------------
SRCDIR= ../..
include ../../Makefile.global
OBJS= pg_encoding.o
CFLAGS+= -DMB=$(MB) -I$(SRCDIR)/include
all: pg_encoding
pg_encoding: $(OBJS) $(LIBPQDIR)/libpq.a
$(CC) -o pg_encoding $(OBJS) -L$(LIBPQDIR) -lpq $(LDFLAGS)
install: pg_encoding
$(INSTALL) $(INSTL_EXE_OPTS) pg_encoding $(BINDIR)/pg_encoding
depend dep:
$(CC) -MM $(CFLAGS) *.c >depend
clean:
rm -f pg_encoding pg_encoding.o
ifeq (depend,$(wildcard depend))
include depend
endif

View File

@ -0,0 +1,49 @@
/*-------------------------------------------------------------------------
*
* pg_encoding.c--
*
*
* Copyright (c) 1998, PostgreSQL development group
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/pg_encoding.c,v 1.1 1998/07/24 03:32:10 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
#include <stdlib.h>
#include <stdio.h>
#include "postgres.h"
#include "mb/pg_wchar.h"
static void usage(void);
int
main(int argc, char **argv)
{
char c;
char *p;
int rtn;
if (argc < 2) {
usage();
exit(1);
}
p = argv[1];
while((c = *p++)) {
if (c < '0' || c > '9') {
rtn = pg_char_to_encoding(argv[1]);
if (rtn >= 0) {
printf("%d\n",rtn);
}
exit(0);
}
}
printf("%s\n",pg_encoding_to_char(atoi(argv[1])));
exit(0);
}
static void usage()
{
fprintf(stderr, "pg_encoding: encoding_name | encoding_number\n");
}

View File

@ -5,7 +5,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: psqlHelp.h,v 1.46 1998/07/18 18:34:16 momjian Exp $
* $Id: psqlHelp.h,v 1.47 1998/07/24 03:32:12 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -292,7 +292,7 @@ static struct _helpStruct QL_HELP[] = {
"set DateStyle to {'ISO' | 'SQL' | 'Postgres' | 'European' | 'US' | 'NonEuropean'}\n\
set GEQO to {'ON[=#]' | 'OFF'}\n\
set R_PLANS to {'ON' | 'OFF'}\n\
set CLIENT_ENCODING to {'EUC_JP' | 'SJIS' | 'EUC_CN' | 'EUC_KR' | 'EUC_TW' | 'MULE_INTERNAL' | 'LATIN1'}"},
set CLIENT_ENCODING to {'EUC_JP' | 'SJIS' | 'EUC_CN' | 'EUC_KR' | 'EUC_TW' | 'MULE_INTERNAL' | 'LATIN1' | 'LATIN2' | 'LATIN3' | 'LATIN4' | 'LATIN5'}"},
#else
"set DateStyle to {'ISO' | 'SQL' | 'Postgres' | 'European' | 'US' | 'NonEuropean'}\n\
set GEQO to {'ON[=#]' | 'OFF'}\n\

View File

@ -195,12 +195,12 @@ 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)
EUC_JP|EHC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5)
MB="$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])
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"

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_proc.h,v 1.62 1998/07/18 18:34:17 momjian Exp $
* $Id: pg_proc.h,v 1.63 1998/07/24 03:32:16 scrappy Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
@ -2077,12 +2077,15 @@ DESCR("trim both ends of string");
DATA(insert OID = 885 ( btrim PGUID 14 f t f 1 f 25 "25" 100 0 0 100 "select btrim($1, \' \')" - ));
DESCR("trim both ends of string");
/* SEQUENCEs nextval & currval functions */
DATA(insert OID = 1317 ( nextval PGUID 11 f t f 1 f 23 "25" 100 0 0 100 foo bar ));
DESCR("sequence next value");
DATA(insert OID = 1319 ( currval PGUID 11 f t f 1 f 23 "25" 100 0 0 100 foo bar ));
DESCR("sequence current value");
/* for multi-byte support */
DATA(insert OID = 1039 ( getdatabaseencoding PGUID 11 f t f 0 f 19 "0" 100 0 0 100 foo bar ));
/*
* prototypes for functions pg_proc.c

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: dbcommands.h,v 1.2 1998/07/09 03:28:56 scrappy Exp $
* $Id: dbcommands.h,v 1.3 1998/07/24 03:32:19 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -19,7 +19,11 @@
*/
#define SIGKILLDAEMON1 SIGTERM
#ifdef MB
extern void createdb(char *dbname, char *dbpath, int encoding);
#else
extern void createdb(char *dbname, char *dbpath);
#endif
extern void destroydb(char *dbname);
#endif /* DBCOMMANDS_H */

View File

@ -1,9 +1,11 @@
/* $Id: pg_wchar.h,v 1.4 1998/07/18 18:34:24 momjian Exp $ */
/* $Id: pg_wchar.h,v 1.1 1998/07/24 03:32:24 scrappy Exp $ */
#ifndef PG_WCHAR_H
#define PG_WCHAR_H
#include <sys/types.h>
#include "postgres.h"
#include "miscadmin.h" /* for getdatabaseencoding() */
#define EUC_JP 0 /* EUC for Japanese */
#define EUC_CN 1 /* EUC for Chinese */
@ -16,15 +18,15 @@
#define LATIN3 8 /* ISO-8859 Latin 3 */
#define LATIN4 9 /* ISO-8859 Latin 4 */
#define LATIN5 10 /* ISO-8859 Latin 5 */
#define LATIN6 11 /* ISO-8859 Latin 6 */
#define LATIN7 12 /* ISO-8859 Latin 7 */
#define LATIN8 13 /* ISO-8859 Latin 8 */
#define LATIN9 14 /* ISO-8859 Latin 9 */
/* followings are for client encoding only */
#define SJIS 16 /* Shift JIS */
#define SJIS 32 /* Shift JIS */
#ifdef MULTIBYTE
# if LATIN1 <= MULTIBYTE && MULTIBYTE <= LATIN5
typedef unsigned char pg_wchar;
# else
#ifdef MB
typedef unsigned int pg_wchar;
# endif
#else
#define pg_wchar char
#endif
@ -65,7 +67,25 @@ 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 MULTIBYTE
#ifdef MB
typedef struct {
int encoding; /* encoding symbol value */
char *name; /* encoding name */
int is_client_only; /* 0: server/client bothg supported
1: client only */
void (*to_mic)(); /* client encoding to MIC */
void (*from_mic)(); /* MIC to client encoding */
} pg_encoding_conv_tbl;
extern pg_encoding_conv_tbl pg_conv_tbl[];
typedef struct {
void (*mb2wchar_with_len)(); /* convert a multi-byte string to a wchar */
int (*mblen)(); /* returns the length of a multi-byte word */
} pg_wchar_tbl;
extern pg_wchar_tbl pg_wchar_table[];
extern void pg_mb2wchar(const unsigned char *, pg_wchar *);
extern void pg_mb2wchar_with_len(const unsigned char *, pg_wchar *, int);
extern int pg_char_and_wchar_strcmp(const char *, const pg_wchar *);
@ -74,9 +94,29 @@ extern int pg_char_and_wchar_strncmp(const char *, const pg_wchar *, size_t);
extern size_t pg_wchar_strlen(const pg_wchar *);
extern int pg_mblen(const unsigned char *);
extern int pg_encoding_mblen(int, const unsigned char *);
extern int pg_mule_mblen(const unsigned char *);
extern int pg_mic_mblen(const unsigned char *);
extern int pg_mbstrlen(const unsigned char *);
extern int pg_mbstrlen_with_len(const unsigned char *, int);
#endif
extern pg_encoding_conv_tbl *pg_get_encent_by_encoding(int);
extern bool show_client_encoding(void);
extern bool reset_client_encoding(void);
extern bool parse_client_encoding(const char *);
extern bool show_server_encoding(void);
extern bool reset_server_encoding(void);
extern bool parse_server_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 *);
extern int GetDatabaseEncoding(void);
extern void SetDatabaseEncoding(int);
extern void SetTemplateEncoding(int);
extern int GetTemplateEncoding(void);
#endif
#endif /* MB */
#endif /* PG_WCHAR_H */

View File

@ -11,7 +11,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: miscadmin.h,v 1.27 1998/07/09 03:28:55 scrappy Exp $
* $Id: miscadmin.h,v 1.28 1998/07/24 03:32:13 scrappy Exp $
*
* NOTES
* some of the information in this file will be moved to
@ -116,13 +116,22 @@ extern char *DatabaseName;
extern char *DatabasePath;
/* in utils/misc/database.c */
#ifdef MB
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);
#endif
extern int GetDatabaseInfo(char *name, Oid *owner, char *path);
extern char *ExpandDatabasePath(char *path);
/* now in utils/init/miscinit.c */
extern void SetDatabaseName(char *name);
extern void SetDatabasePath(char *path);
/* even if MB is not enabled, this function is neccesary
* since pg_proc.h does have.
*/
extern const char *getdatabaseencoding(void);
extern char *getpgusername(void);
extern void SetPgUserName(void);
extern Oid GetUserId(void);

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: parsenodes.h,v 1.50 1998/07/12 21:29:31 momjian Exp $
* $Id: parsenodes.h,v 1.51 1998/07/24 03:32:26 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -480,6 +480,10 @@ typedef struct CreatedbStmt
NodeTag type;
char *dbname; /* database to create */
char *dbpath; /* location of database */
#ifdef MB
int encoding; /* default encoding
(see regex/pg_wchar.h) */
#endif
} CreatedbStmt;
/* ----------------------

View File

@ -41,7 +41,7 @@
#define _REGEX_H_
#include <sys/types.h>
#include <regex/pg_wchar.h>
#include <mb/pg_wchar.h>
/* types */
typedef off_t regoff_t;

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.23 1998/07/12 18:48:06 momjian Exp $
# $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.24 1998/07/24 03:32:33 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -33,7 +33,7 @@ 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
OBJS+= pqutils.o pqmbutils.o
OBJS+= common.o wchar.o conv.o
endif
# Shared library stuff

View File

@ -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++)
{

View File

@ -1,2 +0,0 @@
#include "../../backend/commands/mbutils.c"

View File

@ -1 +0,0 @@
#include "../../backend/regex/utils.c"

9
src/test/mb/README Normal file
View File

@ -0,0 +1,9 @@
README for MB(multi-byte) regression test
1998/7/22
Tatsuo Ishii
This directory contains a set of tests for MB(multi-byte) supporting
extentions for PostgreSQL. To run the test, simply type:
% mbregress.sh

View File

@ -0,0 +1,87 @@
QUERY: drop table <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
ERROR: Relation <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Does Not Exist!
QUERY: create table <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD> text, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar, <20><>ע1A char(16));
QUERY: create index <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index1 on <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<28><><EFBFBD><EFBFBD>);
QUERY: create index <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index2 on <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
QUERY: insert into <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>','<27><>A01<30><31>');
QUERY: insert into <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<27><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>','<27><>B01<30><31>');
QUERY: insert into <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<27><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>Ա','<27><>Z01<30><31>');
QUERY: vacuum <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>|
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>|
(3 rows)
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<27><>Z01<30><31>';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>|
(1 row)
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<27><>z01<30><31>';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>|
(1 row)
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>|
(1 row)
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>|
(1 row)
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD> ~ '<27><><EFBFBD><EFBFBD>[<5B><>ͼ]';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>|
(2 rows)
QUERY: select * from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD> ~* '<27><><EFBFBD><EFBFBD>[<5B><>ͼ]';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a
----------+-------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>|
(2 rows)
QUERY: select *,character_length(<28><><EFBFBD><EFBFBD>) from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a|length
----------+-------+------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>| | 5
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>| | 4
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>| | 5
(3 rows)
QUERY: select *,octet_length(<28><><EFBFBD><EFBFBD>) from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a|octet_length
----------+-------+------+------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>| | 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>| | 8
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>| | 10
(3 rows)
QUERY: select *,position('<27><>' in <20><><EFBFBD><EFBFBD>) from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a|strpos
----------+-------+------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>| | 3
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>| | 0
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>| | 0
(3 rows)
QUERY: select *,substring(<28><><EFBFBD><EFBFBD> from 3 for 4) from <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>ע1a|substr
----------+-------+------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>|<7C><>A01<30><31>| |<7C><>ʾ<EFBFBD><CABE>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> |<7C><>B01<30><31>| |ͼ<><CDBC>
<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><>Z01<30><31>| |<7C><><EFBFBD><EFBFBD>Ա
(3 rows)

View File

@ -0,0 +1,87 @@
QUERY: drop table <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
ERROR: Relation <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> Does Not Exist!
QUERY: create table <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> (<28>Ѹ<EFBFBD> text, ʬ<><EFBFBD><E0A5B3><EFBFBD><EFBFBD> varchar, <20><><EFBFBD><EFBFBD>1A<31><41><EFBFBD><EFBFBD> char(16));
QUERY: create index <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>index1 on <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> using btree (<28>Ѹ<EFBFBD>);
QUERY: create index <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>index2 on <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> using hash (ʬ<><EFBFBD><E0A5B3><EFBFBD><EFBFBD>);
QUERY: insert into <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD>ԥ塼<D4A5><E5A1BC><EFBFBD>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD>ץ쥤','<27><>A01<30><31>');
QUERY: insert into <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD>ԥ塼<D4A5><E5A1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><D5A5>å<EFBFBD><C3A5><EFBFBD>','ʬB10<31><30>');
QUERY: insert into <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD>ԥ塼<D4A5><E5A1BC><EFBFBD>ץ<EFBFBD><D7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD>','<27><>Z01<30><31>');
QUERY: vacuum <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
--------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD> |<7C><>Z01<30><31> |
(3 rows)
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<><EFBFBD><E0A5B3><EFBFBD><EFBFBD> = '<27><>Z01<30><31>';
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<><EFBFBD><E0A5B3><EFBFBD><EFBFBD> ~* '<27><>z01<30><31>';
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<><EFBFBD><E0A5B3><EFBFBD><EFBFBD> like '_Z01_';
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<><EFBFBD><E0A5B3><EFBFBD><EFBFBD> like '_Z%';
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> where <20>Ѹ<EFBFBD> ~ '<27><><EFBFBD><EFBFBD><EFBFBD>ԥ塼<D4A5><E5A1BC>[<5B>ǥ<EFBFBD>]';
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
--------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> |
(2 rows)
QUERY: select * from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD> where <20>Ѹ<EFBFBD> ~* '<27><><EFBFBD><EFBFBD><EFBFBD>ԥ塼<D4A5><E5A1BC>[<5B>ǥ<EFBFBD>]';
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
--------------------------+----------+----------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> |
(2 rows)
QUERY: select *,character_length(<28>Ѹ<EFBFBD>) from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|length
--------------------------+----------+----------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> | | 12
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> | | 13
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD> |<7C><>Z01<30><31> | | 12
(3 rows)
QUERY: select *,octet_length(<28>Ѹ<EFBFBD>) from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|octet_length
--------------------------+----------+----------+------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> | | 24
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> | | 26
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD> |<7C><>Z01<30><31> | | 24
(3 rows)
QUERY: select *,position('<27><>' in <20>Ѹ<EFBFBD>) from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|strpos
--------------------------+----------+----------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> | | 7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> | | 0
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD> |<7C><>Z01<30><31> | | 0
(3 rows)
QUERY: select *,substring(<28>Ѹ<EFBFBD> from 10 for 4) from <20>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
<EFBFBD>Ѹ<EFBFBD><><EFBFBD><E0A5B3><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|substr
--------------------------+----------+----------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤 |<7C><>A01<30><31> | |<7C>ץ쥤
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>|ʬB10<31><30> | |<7C><><EFBFBD>å<EFBFBD><C3A5><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD> |<7C><>Z01<30><31> | |<7C><><EFBFBD>ޡ<EFBFBD>
(3 rows)

View File

@ -0,0 +1,87 @@
QUERY: drop table ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
ERROR: Relation ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> Does Not Exist!
QUERY: create table ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> text, <20><>׾<EFBFBD>ڵ<EFBFBD> varchar, <20><><EFBFBD><EFBFBD>1A<31><41><EFBFBD><EFBFBD> char(16));
QUERY: create index ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>index1 on ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> using btree (<28><><EFBFBD><EFBFBD>);
QUERY: create index ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>index2 on ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> using hash (<28><>׾<EFBFBD>ڵ<EFBFBD>);
QUERY: insert into ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> values('<27><>ǻ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>', 'ѦA01߾');
QUERY: insert into ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> values('<27><>ǻ<EFBFBD>ͱ׷<CDB1><D7B7>Ƚ<EFBFBD>', '<27><>B10<31><30>');
QUERY: insert into ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> values('<27><>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD>α׷<CEB1><D7B7><EFBFBD>', '<27><>Z01<30><31>');
QUERY: vacuum ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ |
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> |
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> |
(3 rows)
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> where <20><>׾<EFBFBD>ڵ<EFBFBD> = '<27><>Z01<30><31>';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> where <20><>׾<EFBFBD>ڵ<EFBFBD> ~* '<27><>z01<30><31>';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> where <20><>׾<EFBFBD>ڵ<EFBFBD> like '_Z01_';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> where <20><>׾<EFBFBD>ڵ<EFBFBD> like '_Z%';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> |
(1 row)
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD> ~ '<27><>ǻ<EFBFBD><C7BB>[<5B><><EFBFBD><EFBFBD>]';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ |
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> |
(2 rows)
QUERY: select * from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD> ~* '<27><>ǻ<EFBFBD><C7BB>[<5B><><EFBFBD><EFBFBD>]';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>
----------------+--------+----------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ |
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> |
(2 rows)
QUERY: select *,character_length(<28><><EFBFBD><EFBFBD>) from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|length
----------------+--------+----------+------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ | | 8
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> | | 7
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> | | 8
(3 rows)
QUERY: select *,octet_length(<28><><EFBFBD><EFBFBD>) from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|octet_length
----------------+--------+----------+------------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ | | 16
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> | | 14
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> | | 16
(3 rows)
QUERY: select *,position('<27><>' in <20><><EFBFBD><EFBFBD>) from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|strpos
----------------+--------+----------+------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ | | 4
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> | | 0
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> | | 0
(3 rows)
QUERY: select *,substring(<28><><EFBFBD><EFBFBD> from 3 for 4) from ͪߩѦ<DFA9><D1A6><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>׾<EFBFBD>ڵ<EFBFBD>|<7C><><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD>|substr
----------------+--------+----------+--------
<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>|ѦA01߾ | |<7C>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD> |<7C><>B10<31><30> | |<7C>ͱ׷<CDB1><D7B7><EFBFBD>
<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>|<7C><>Z01<30><31> | |<7C><><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>
(3 rows)

View File

@ -0,0 +1,333 @@
QUERY: drop table <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
ERROR: Relation <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> Does Not Exist!
QUERY: create table <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> (<28><>ђ<EFBFBD><D192> text, <20>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1A<31><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD> char(16));
QUERY: create index <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>index1 on <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> using btree (<28><>ђ<EFBFBD><D192>);
QUERY: create index <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>index2 on <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> using hash (<28>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
QUERY: insert into <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> values('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><E592A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><C792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD>','<27><><EFBFBD>A01<30><31><EFBFBD>');
QUERY: insert into <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> values('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><E592A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<E992A5><D592><EFBFBD><EFBFBD>Ò<EFBFBD><C392><EFBFBD><EFBFBD><EFBFBD>','<27>ʬB10<31><30><EFBFBD>');
QUERY: insert into <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> values('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><E592A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><ED92A5><EFBFBD>钥ޒ<E992A5><DE92>','<27><><EFBFBD>Z01<30><31><EFBFBD>');
QUERY: vacuum <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
---------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD> |<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(3 rows)
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> where <20>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<27><><EFBFBD>Z01<30><31><EFBFBD>';
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> where <20>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<27><><EFBFBD>z01<30><31><EFBFBD>';
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> where <20>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> where <20>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> where <20><>ђ<EFBFBD><D192> ~ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><E592A1><EFBFBD><EFBFBD>[<5B><>ǒ<EFBFBD><C792>]';
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
---------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> |
(2 rows)
QUERY: select * from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192> where <20><>ђ<EFBFBD><D192> ~* '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><E592A1><EFBFBD><EFBFBD>[<5B><>ǒ<EFBFBD><C792>]';
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
---------------------------------------+---------------+--------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> |
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> |
(2 rows)
QUERY: select *,character_length(<28><>ђ<EFBFBD><D192>) from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|length
---------------------------------------+---------------+--------------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> | | 12
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> | | 13
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD> |<7C><><EFBFBD>Z01<30><31><EFBFBD> | | 12
(3 rows)
QUERY: select *,octet_length(<28><>ђ<EFBFBD><D192>) from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|octet_length
---------------------------------------+---------------+--------------+------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> | | 36
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> | | 39
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD> |<7C><><EFBFBD>Z01<30><31><EFBFBD> | | 36
(3 rows)
QUERY: select *,position('<27><><EFBFBD>' in <20><>ђ<EFBFBD><D192>) from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|strpos
---------------------------------------+---------------+--------------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> | | 7
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> | | 0
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD> |<7C><><EFBFBD>Z01<30><31><EFBFBD> | | 0
(3 rows)
QUERY: select *,substring(<28><>ђ<EFBFBD><D192> from 10 for 4) from <20><>ג<EFBFBD><D792><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><D192>;
<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> |<7C>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|substr
---------------------------------------+---------------+--------------+------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD> |<7C><><EFBFBD>A01<30><31><EFBFBD> | |<7C><>ג<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ʬB10<31><30><EFBFBD> | |<7C><><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><C392><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD> |<7C><><EFBFBD>Z01<30><31><EFBFBD> | |<7C><>钥ޒ<E992A5><DE92>
(3 rows)
QUERY: drop table <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
ERROR: Relation <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Does Not Exist!
QUERY: create table <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> text, <20><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD> varchar, <20><><EFBFBD><EFBFBD>ע1A char(16));
QUERY: create index <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index1 on <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
QUERY: create index <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index2 on <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<28><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>);
QUERY: insert into <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<D491><CABE><EFBFBD>','<27><><EFBFBD>A01<30><31><EFBFBD>');
QUERY: insert into <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD>ԑͼ<D491><CDBC><EFBFBD>','<27><><EFBFBD>B01<30><31><EFBFBD>');
QUERY: insert into <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<27><><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><CC91><EFBFBD>Ա','<27><><EFBFBD>Z01<30><31><EFBFBD>');
QUERY: vacuum <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>|
(3 rows)
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD> = '<27><><EFBFBD>Z01<30><31><EFBFBD>';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>|
(1 row)
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD> ~* '<27><><EFBFBD>z01<30><31><EFBFBD>';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>|
(1 row)
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>|
(1 row)
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>|
(1 row)
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ԑͼ]';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>|
(2 rows)
QUERY: select * from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ԑͼ]';
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a
---------------+---------+--------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>|
(2 rows)
QUERY: select *,character_length(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a|length
---------------+---------+--------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>| | 5
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>| | 4
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>| | 5
(3 rows)
QUERY: select *,octet_length(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a|octet_length
---------------+---------+--------+------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>| | 15
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>| | 12
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>| | 15
(3 rows)
QUERY: select *,position('<27><><EFBFBD>' in <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a|strpos
---------------+---------+--------+------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>| | 3
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>| | 0
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>| | 0
(3 rows)
QUERY: select *,substring(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> from 3 for 4) from <20><>Ƒ<EFBFBD><EFBFBD><E391BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |<7C><>֑<EFBFBD><D691><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>ע1a|substr
---------------+---------+--------+---------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>A01<30><31><EFBFBD>| |<7C><>ԑʾ<D491><CABE><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD> |<7C><><EFBFBD>B01<30><31><EFBFBD>| |<7C>ͼ<EFBFBD><CDBC><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա|<7C><><EFBFBD>Z01<30><31><EFBFBD>| |<7C><>̑<EFBFBD><CC91><EFBFBD>Ա
(3 rows)
QUERY: drop table <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
ERROR: Relation <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> Does Not Exist!
QUERY: create table <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> (<28><><EFBFBD> text, <20><>“׾<C293><D7BE>ړ<EFBFBD><DA93> varchar, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1A<31><41>󓱸 char(16));
QUERY: create index <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>index1 on <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> using btree (<28><><EFBFBD>);
QUERY: create index <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>index2 on <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> using hash (<28><>“׾<C293><D7BE>ړ<EFBFBD><DA93>);
QUERY: insert into <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> values('<27><>ēǻ<C493><C7BB>͓<EFBFBD>𓽺<EFBFBD><F093BDBA>Ó<EFBFBD><C393><EFBFBD><EFBFBD><EFBFBD>', '<27>ѦA01<30>߾');
QUERY: insert into <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> values('<27><>ēǻ<C493><C7BB>͓<EFBFBD>ד<EFBFBD><D793><EFBFBD><EFBFBD>ȓ<EFBFBD><C893>', '<27><><EFBFBD>B10<31><30><EFBFBD>');
QUERY: insert into <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> values('<27><>ēǻ<C493><C7BB>͓<EFBFBD><CD93><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><D793><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD>Z01<30><31><EFBFBD>');
QUERY: vacuum <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ |
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> |
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(3 rows)
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> where <20><>“׾<C293><D7BE>ړ<EFBFBD><DA93> = '<27><><EFBFBD>Z01<30><31><EFBFBD>';
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> where <20><>“׾<C293><D7BE>ړ<EFBFBD><DA93> ~* '<27><><EFBFBD>z01<30><31><EFBFBD>';
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> where <20><>“׾<C293><D7BE>ړ<EFBFBD><DA93> like '_Z01_';
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> where <20><>“׾<C293><D7BE>ړ<EFBFBD><DA93> like '_Z%';
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> |
(1 row)
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> where <20><><EFBFBD> ~ '<27><>ēǻ<C493><C7BB><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]';
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ |
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> |
(2 rows)
QUERY: select * from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD> where <20><><EFBFBD> ~* '<27><>ēǻ<C493><C7BB><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]';
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸
------------------------+------------+--------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ |
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> |
(2 rows)
QUERY: select *,character_length(<28><><EFBFBD>) from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸|length
------------------------+------------+--------------+------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ | | 8
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> | | 7
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> | | 8
(3 rows)
QUERY: select *,octet_length(<28><><EFBFBD>) from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸|octet_length
------------------------+------------+--------------+------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ | | 24
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> | | 21
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> | | 24
(3 rows)
QUERY: select *,position('<27><><EFBFBD>' in <20><><EFBFBD>) from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸|strpos
------------------------+------------+--------------+------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ | | 4
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> | | 0
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> | | 0
(3 rows)
QUERY: select *,substring(<28><><EFBFBD> from 3 for 4) from <20>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><D1A6><EFBFBD>;
<EFBFBD><EFBFBD><EFBFBD> |<7C><>“׾<C293><D7BE>ړ<EFBFBD><DA93>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1a<31><61>󓱸|substr
------------------------+------------+--------------+------------
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>ѦA01<30>߾ | |<7C><>͓<EFBFBD>𓽺<EFBFBD><F093BDBA><EFBFBD>
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD> |<7C><><EFBFBD>B10<31><30><EFBFBD> | |<7C><>͓<EFBFBD>ד<EFBFBD><D793><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>Z01<30><31><EFBFBD> | |<7C><>͓<EFBFBD><CD93><EFBFBD><EFBFBD>Γ<EFBFBD><CE93>
(3 rows)
QUERY: drop table test;
ERROR: Relation test Does Not Exist!
QUERY: create table test (t text);
QUERY: insert into test values('ENGLISH');
QUERY: insert into test values('FRAN<41><4E>AIS');
QUERY: insert into test values('ESPA<50><41>OL');
QUERY: insert into test values('<27><>SLENSKA');
QUERY: insert into test values('ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA');
QUERY: vacuum test;
QUERY: select * from test;
t
------------------------------------
ENGLISH
FRAN<EFBFBD><EFBFBD>AIS
ESPA<EFBFBD><EFBFBD>OL
<EFBFBD><EFBFBD>SLENSKA
ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA
(5 rows)
QUERY: select * from test where t = 'ESPA<50><41>OL';
t
--------
ESPA<EFBFBD><EFBFBD>OL
(1 row)
QUERY: select * from test where t ~* 'espa<70><61>ol';
t
------------------------------------
ESPA<EFBFBD><EFBFBD>OL
ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA
(2 rows)
QUERY: select *,character_length(t) from test;
t |length
------------------------------------+------
ENGLISH | 7
FRAN<EFBFBD><EFBFBD>AIS | 8
ESPA<EFBFBD><EFBFBD>OL | 7
<EFBFBD><EFBFBD>SLENSKA | 8
ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA| 33
(5 rows)
QUERY: select *,octet_length(t) from test;
t |octet_length
------------------------------------+------------
ENGLISH | 7
FRAN<EFBFBD><EFBFBD>AIS | 9
ESPA<EFBFBD><EFBFBD>OL | 8
<EFBFBD><EFBFBD>SLENSKA | 9
ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA| 36
(5 rows)
QUERY: select *,position('L' in t) from test;
t |strpos
------------------------------------+------
ENGLISH | 4
FRAN<EFBFBD><EFBFBD>AIS | 0
ESPA<EFBFBD><EFBFBD>OL | 7
<EFBFBD><EFBFBD>SLENSKA | 3
ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA| 4
(5 rows)
QUERY: select *,substring(t from 3 for 4) from test;
t |substr
------------------------------------+------
ENGLISH |GLIS
FRAN<EFBFBD><EFBFBD>AIS |AN<41><4E>A
ESPA<EFBFBD><EFBFBD>OL |PA<50><41>O
<EFBFBD><EFBFBD>SLENSKA |LENS
ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA|GLIS
(5 rows)

View File

@ -0,0 +1,90 @@
QUERY: drop table <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
QUERY: create table <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> (<28>p<EFBFBD><70> text, <20><><EFBFBD>ރR<DE83>[<5B>h varchar, <20><><EFBFBD>l1A<31><41><EFBFBD><EFBFBD> char(16));
QUERY: create index <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>index1 on <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> using btree (<28>p<EFBFBD><70>);
QUERY: create index <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>index2 on <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> using hash (<28><><EFBFBD>ރR<DE83>[<5B>h);
QUERY: insert into <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> values('<27>R<EFBFBD><52><EFBFBD>s<EFBFBD><73><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C','<27>@A01<30><31>');
QUERY: insert into <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> values('<27>R<EFBFBD><52><EFBFBD>s<EFBFBD><73><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X','<27><>B10<31><30>');
QUERY: insert into <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> values('<27>R<EFBFBD><52><EFBFBD>s<EFBFBD><73><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[','<27>lZ01<30><31>');
QUERY: vacuum <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
--------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> |
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> |
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[ |<7C>lZ01<30><31> |
(3 rows)
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> where <20><><EFBFBD>ރR<DE83>[<5B>h = '<27>lZ01<30><31>';
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[|<7C>lZ01<30><31> |
(1 row)
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> where <20><><EFBFBD>ރR<DE83>[<5B>h ~* '<27>lz01<30><31>';
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[|<7C>lZ01<30><31> |
(1 row)
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> where <20><><EFBFBD>ރR<DE83>[<5B>h like '_Z01_';
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[|<7C>lZ01<30><31> |
(1 row)
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> where <20><><EFBFBD>ރR<DE83>[<5B>h like '_Z%';
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[|<7C>lZ01<30><31> |
(1 row)
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> where <20>p<EFBFBD><70> ~ '<27>R<EFBFBD><52><EFBFBD>s<EFBFBD><73><EFBFBD>[<5B>^[<5B>f<EFBFBD>O]';
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
--------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> |
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> |
(2 rows)
QUERY: select * from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> where <20>p<EFBFBD><70> ~* '<27>R<EFBFBD><52><EFBFBD>s<EFBFBD><73><EFBFBD>[<5B>^[<5B>f<EFBFBD>O]';
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>
--------------------------+----------+----------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> |
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> |
(2 rows)
QUERY: select *,character_length(<28>p<EFBFBD><70>) from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>|length
--------------------------+----------+----------+------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> | | 12
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> | | 13
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[ |<7C>lZ01<30><31> | | 12
(3 rows)
QUERY: select *,octet_length(<28>p<EFBFBD><70>) from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>|octet_length
--------------------------+----------+----------+------------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> | | 24
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> | | 26
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[ |<7C>lZ01<30><31> | | 24
(3 rows)
QUERY: select *,position('<27>f' in <20>p<EFBFBD><70>) from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>|strpos
--------------------------+----------+----------+------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> | | 7
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> | | 0
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[ |<7C>lZ01<30><31> | | 0
(3 rows)
QUERY: select *,substring(<28>p<EFBFBD><70> from 10 for 4) from <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70>;
<EFBFBD>p<EFBFBD><EFBFBD> |<7C><><EFBFBD>ރR<DE83>[<5B>h|<7C><><EFBFBD>l1a<31><61><EFBFBD><EFBFBD>|substr
--------------------------+----------+----------+--------
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C |<7C>@A01<30><31> | |<7C>v<EFBFBD><76><EFBFBD>C
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X|<7C><>B10<31><30> | |<7C>B<EFBFBD>b<EFBFBD>N<EFBFBD>X
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[ |<7C>lZ01<30><31> | |<7C><><EFBFBD>}<7D>[
(3 rows)
QUERY: copy <20>v<EFBFBD>Z<EFBFBD>@<40>p<EFBFBD><70> to stdout;
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C <09>@A01<30><31> \N
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X <09><>B10<31><30> \N
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[ <09>lZ01<30><31> \N

View File

@ -0,0 +1,87 @@
QUERY: drop table 計算機用語;
ERROR: Relation 計算機用語 Does Not Exist!
QUERY: create table 計算機用語 (用語 text, 分類コード varchar, 備考1Aだよ char(16));
QUERY: create index 計算機用語index1 on 計算機用語 using btree (用語);
QUERY: create index 計算機用語index2 on 計算機用語 using hash (分類コード);
QUERY: insert into 計算機用語 values('コンピュータディスプレイ','機A01上');
QUERY: insert into 計算機用語 values('コンピュータグラフィックス','分B10中');
QUERY: insert into 計算機用語 values('コンピュータプログラマー','人Z01下');
QUERY: vacuum 計算機用語;
QUERY: select * from 計算機用語;
用語 |分類コード|備考1aだよ
---------------------------------------+---------------+--------------
コンピュータディスプレイ |機A01上 |
コンピュータグラフィックス|分B10中 |
コンピュータプログラマー |人Z01下 |
(3 rows)
QUERY: select * from 計算機用語 where 分類コード = '人Z01下';
用語 |分類コード|備考1aだよ
------------------------------------+---------------+--------------
コンピュータプログラマー|人Z01下 |
(1 row)
QUERY: select * from 計算機用語 where 分類コード ~* '人z01下';
用語 |分類コード|備考1aだよ
------------------------------------+---------------+--------------
コンピュータプログラマー|人Z01下 |
(1 row)
QUERY: select * from 計算機用語 where 分類コード like '_Z01_';
用語 |分類コード|備考1aだよ
------------------------------------+---------------+--------------
コンピュータプログラマー|人Z01下 |
(1 row)
QUERY: select * from 計算機用語 where 分類コード like '_Z%';
用語 |分類コード|備考1aだよ
------------------------------------+---------------+--------------
コンピュータプログラマー|人Z01下 |
(1 row)
QUERY: select * from 計算機用語 where 用語 ~ 'コンピュータ[デグ]';
用語 |分類コード|備考1aだよ
---------------------------------------+---------------+--------------
コンピュータディスプレイ |機A01上 |
コンピュータグラフィックス|分B10中 |
(2 rows)
QUERY: select * from 計算機用語 where 用語 ~* 'コンピュータ[デグ]';
用語 |分類コード|備考1aだよ
---------------------------------------+---------------+--------------
コンピュータディスプレイ |機A01上 |
コンピュータグラフィックス|分B10中 |
(2 rows)
QUERY: select *,character_length(用語) from 計算機用語;
用語 |分類コード|備考1aだよ|length
---------------------------------------+---------------+--------------+------
コンピュータディスプレイ |機A01上 | | 12
コンピュータグラフィックス|分B10中 | | 13
コンピュータプログラマー |人Z01下 | | 12
(3 rows)
QUERY: select *,octet_length(用語) from 計算機用語;
用語 |分類コード|備考1aだよ|octet_length
---------------------------------------+---------------+--------------+------------
コンピュータディスプレイ |機A01上 | | 36
コンピュータグラフィックス|分B10中 | | 39
コンピュータプログラマー |人Z01下 | | 36
(3 rows)
QUERY: select *,position('デ' in 用語) from 計算機用語;
用語 |分類コード|備考1aだよ|strpos
---------------------------------------+---------------+--------------+------
コンピュータディスプレイ |機A01上 | | 7
コンピュータグラフィックス|分B10中 | | 0
コンピュータプログラマー |人Z01下 | | 0
(3 rows)
QUERY: select *,substring(用語 from 10 for 4) from 計算機用語;
用語 |分類コード|備考1aだよ|substr
---------------------------------------+---------------+--------------+------------
コンピュータディスプレイ |機A01上 | |プレイ
コンピュータグラフィックス|分B10中 | |ィックス
コンピュータプログラマー |人Z01下 | |ラマー
(3 rows)

48
src/test/mb/mbregress.sh Normal file
View File

@ -0,0 +1,48 @@
#! /bin/sh
# $Header: /cvsroot/pgsql/src/test/mb/mbregress.sh,v 1.1 1998/07/24 03:32:40 scrappy Exp $
if echo '\c' | grep -s c >/dev/null 2>&1
then
ECHO_N="echo -n"
ECHO_C=""
else
ECHO_N="echo"
ECHO_C='\c'
fi
PSQL="psql -n -e -q"
tests="euc_jp sjis euc_kr euc_cn unicode mule_internal"
unset PGCLIENTENCODING
for i in $tests
do
$ECHO_N "${i} .. " $ECHO_C
if [ $i = sjis ];then
PGCLIENTENCODING=SJIS
export PGCLIENTENCODING
$PSQL euc_jp < sql/sjis.sql > results/sjis.out 2>&1
unset PGCLIENTENCODING
else
destroydb $i >/dev/null 2>&1
createdb -E `echo $i|tr "[a-z]" "[A-Z]"` $i
$PSQL $i < sql/${i}.sql > results/${i}.out 2>&1
fi
if [ -f expected/${i}-${SYSTEM}.out ]
then
EXPECTED="expected/${i}-${SYSTEM}.out"
else
EXPECTED="expected/${i}.out"
fi
if [ `diff ${EXPECTED} results/${i}.out | wc -l` -ne 0 ]
then
( diff -wC3 ${EXPECTED} results/${i}.out; \
echo ""; \
echo "----------------------"; \
echo "" ) >> regression.diffs
echo failed
else
echo ok
fi
done

View File

@ -0,0 +1,19 @@
drop table <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
create table <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD> text, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar, <EFBFBD><EFBFBD>ע1A char(16));
create index <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index1 on <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
create index <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index2 on <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
insert into <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>','<EFBFBD><EFBFBD>A01<EFBFBD><EFBFBD>');
insert into <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>','<EFBFBD><EFBFBD>B01<EFBFBD><EFBFBD>');
insert into <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>Ա','<EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD>');
vacuum <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD>';
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD>z01<EFBFBD><EFBFBD>';
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~ '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ͼ]';
select * from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ͼ]';
select *,character_length(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,octet_length(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,position('<EFBFBD><EFBFBD>' in <EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,substring(<EFBFBD><EFBFBD><EFBFBD><EFBFBD> from 3 for 4) from <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;

View File

@ -0,0 +1,19 @@
drop table <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
create table <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> (<EFBFBD>Ѹ<EFBFBD> text, ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1A<EFBFBD><EFBFBD><EFBFBD><EFBFBD> char(16));
create index <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>index1 on <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> using btree (<EFBFBD>Ѹ<EFBFBD>);
create index <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>index2 on <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> using hash (ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
insert into <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ쥤','<EFBFBD><EFBFBD>A01<EFBFBD><EFBFBD>');
insert into <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>','ʬB10<EFBFBD><EFBFBD>');
insert into <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD>','<EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD>');
vacuum <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD>';
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD>z01<EFBFBD><EFBFBD>';
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> where ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> where <EFBFBD>Ѹ<EFBFBD> ~ '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD>[<5B>ǥ<EFBFBD>]';
select * from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD> where <EFBFBD>Ѹ<EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ塼<EFBFBD><EFBFBD>[<5B>ǥ<EFBFBD>]';
select *,character_length(<EFBFBD>Ѹ<EFBFBD>) from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
select *,octet_length(<EFBFBD>Ѹ<EFBFBD>) from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
select *,position('<EFBFBD><EFBFBD>' in <EFBFBD>Ѹ<EFBFBD>) from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;
select *,substring(<EFBFBD>Ѹ<EFBFBD> from 10 for 4) from <EFBFBD>׻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>;

View File

@ -0,0 +1,19 @@
drop table ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
create table ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD> text, <EFBFBD><EFBFBD>׾<EFBFBD>ڵ<EFBFBD> varchar, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1A<EFBFBD><EFBFBD><EFBFBD><EFBFBD> char(16));
create index ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>index1 on ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree (<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
create index ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>index2 on ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> using hash (<EFBFBD><EFBFBD>׾<EFBFBD>ڵ<EFBFBD>);
insert into ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD>ǻ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>', 'ѦA01߾');
insert into ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD>ǻ<EFBFBD>ͱ׷<EFBFBD><EFBFBD>Ƚ<EFBFBD>', '<EFBFBD><EFBFBD>B10<EFBFBD><EFBFBD>');
insert into ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD>');
vacuum ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>׾<EFBFBD>ڵ<EFBFBD> = '<EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD>';
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>׾<EFBFBD>ڵ<EFBFBD> ~* '<EFBFBD><EFBFBD>z01<EFBFBD><EFBFBD>';
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>׾<EFBFBD>ڵ<EFBFBD> like '_Z01_';
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>׾<EFBFBD>ڵ<EFBFBD> like '_Z%';
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~ '<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>]';
select * from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>]';
select *,character_length(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,octet_length(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,position('<EFBFBD><EFBFBD>' in <EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,substring(<EFBFBD><EFBFBD><EFBFBD><EFBFBD> from 3 for 4) from ͪߩѦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;

View File

@ -0,0 +1,72 @@
drop table <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
create table <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> (<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> text, <EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> char(16));
create index <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>index1 on <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> using btree (<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>);
create index <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>index2 on <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> using hash (<EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
insert into <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD>','<EFBFBD><EFBFBD><EFBFBD>A01<EFBFBD><EFBFBD><EFBFBD>');
insert into <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥Ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<EFBFBD>ʬB10<EFBFBD><EFBFBD><EFBFBD>');
insert into <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD>钥ޒ<EFBFBD><EFBFBD>','<EFBFBD><EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD><EFBFBD>');
vacuum <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> where <EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD><EFBFBD>';
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> where <EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD>z01<EFBFBD><EFBFBD><EFBFBD>';
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> where <EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> where <EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> ~ '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ǒ<EFBFBD><C792>]';
select * from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ǒ<EFBFBD><C792>]';
select *,character_length(<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
select *,octet_length(<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
select *,position('<EFBFBD><EFBFBD><EFBFBD>' in <EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
select *,substring(<EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD> from 10 for 4) from <EFBFBD><EFBFBD>ג<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ђ<EFBFBD><EFBFBD>;
drop table <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
create table <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> text, <EFBFBD><EFBFBD>֑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע1A char(16));
create index <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index1 on <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
create index <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index2 on <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> using btree(<EFBFBD><EFBFBD>֑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
insert into <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>ԑʾ<EFBFBD><EFBFBD><EFBFBD>','<EFBFBD><EFBFBD><EFBFBD>A01<EFBFBD><EFBFBD><EFBFBD>');
insert into <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑͼ<EFBFBD><EFBFBD><EFBFBD>','<EFBFBD><EFBFBD><EFBFBD>B01<EFBFBD><EFBFBD><EFBFBD>');
insert into <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԑ<EFBFBD>̑<EFBFBD><EFBFBD><EFBFBD>Ա','<EFBFBD><EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD><EFBFBD>');
vacuum <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>֑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD><EFBFBD>';
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>֑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD>z01<EFBFBD><EFBFBD><EFBFBD>';
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>֑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z01_';
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>֑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> like '_Z%';
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~ '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ԑͼ]';
select * from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>ԑͼ]';
select *,character_length(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,octet_length(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,position('<EFBFBD><EFBFBD><EFBFBD>' in <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
select *,substring(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> from 3 for 4) from <EFBFBD><EFBFBD>Ƒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
drop table <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
create table <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD> text, <EFBFBD><EFBFBD>“׾<EFBFBD><EFBFBD>ړ<EFBFBD><EFBFBD> varchar, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1A<EFBFBD><EFBFBD>󓱸 char(16));
create index <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>index1 on <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> using btree (<EFBFBD><EFBFBD><EFBFBD>);
create index <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>index2 on <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> using hash (<EFBFBD><EFBFBD>“׾<EFBFBD><EFBFBD>ړ<EFBFBD><EFBFBD>);
insert into <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>𓽺<EFBFBD><EFBFBD>Ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD>ѦA01<EFBFBD>߾');
insert into <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȓ<EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD>B10<EFBFBD><EFBFBD><EFBFBD>');
insert into <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> values('<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD>͓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Γ<EFBFBD>ד<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD><EFBFBD>');
vacuum <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>“׾<EFBFBD><EFBFBD>ړ<EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD>Z01<EFBFBD><EFBFBD><EFBFBD>';
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>“׾<EFBFBD><EFBFBD>ړ<EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD><EFBFBD>z01<EFBFBD><EFBFBD><EFBFBD>';
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>“׾<EFBFBD><EFBFBD>ړ<EFBFBD><EFBFBD> like '_Z01_';
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD>“׾<EFBFBD><EFBFBD>ړ<EFBFBD><EFBFBD> like '_Z%';
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD> ~ '<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]';
select * from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD> ~* '<EFBFBD><EFBFBD>ēǻ<EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]';
select *,character_length(<EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
select *,octet_length(<EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
select *,position('<EFBFBD><EFBFBD><EFBFBD>' in <EFBFBD><EFBFBD><EFBFBD>) from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
select *,substring(<EFBFBD><EFBFBD><EFBFBD> from 3 for 4) from <EFBFBD>ͪ<EFBFBD>ߩ<EFBFBD>Ѧ<EFBFBD><EFBFBD><EFBFBD>;
drop table test;
create table test (t text);
insert into test values('ENGLISH');
insert into test values('FRAN<EFBFBD><EFBFBD>AIS');
insert into test values('ESPA<EFBFBD><EFBFBD>OL');
insert into test values('<EFBFBD><EFBFBD>SLENSKA');
insert into test values('ENGLISH FRAN<41><4E>AIS ESPA<50><41>OL <20><>SLENSKA');
vacuum test;
select * from test;
select * from test where t = 'ESPA<EFBFBD><EFBFBD>OL';
select * from test where t ~* 'espa<EFBFBD><EFBFBD>ol';
select *,character_length(t) from test;
select *,octet_length(t) from test;
select *,position('L' in t) from test;
select *,substring(t from 3 for 4) from test;

20
src/test/mb/sql/sjis.sql Normal file
View File

@ -0,0 +1,20 @@
drop table <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
create table <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> (<EFBFBD>p<EFBFBD><EFBFBD> text, <EFBFBD><EFBFBD><EFBFBD>ރR<EFBFBD>[<EFBFBD>h varchar, <EFBFBD><EFBFBD><EFBFBD>l1A<EFBFBD><EFBFBD><EFBFBD><EFBFBD> char(16));
create index <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>index1 on <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> using btree (<EFBFBD>p<EFBFBD><EFBFBD>);
create index <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>index2 on <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> using hash (<EFBFBD><EFBFBD><EFBFBD>ރR<EFBFBD>[<EFBFBD>h);
insert into <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> values('<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>f<EFBFBD>B<EFBFBD>X<EFBFBD>v<EFBFBD><76><EFBFBD>C','<EFBFBD>@A01<30><31>');
insert into <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> values('<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>O<EFBFBD><4F><EFBFBD>t<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>X','<EFBFBD><EFBFBD>B10<EFBFBD><EFBFBD>');
insert into <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> values('<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD><4F><EFBFBD>}<7D>[','<EFBFBD>lZ01<EFBFBD><EFBFBD>');
vacuum <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD>ރR<EFBFBD>[<EFBFBD>h = '<EFBFBD>lZ01<EFBFBD><EFBFBD>';
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD>ރR<EFBFBD>[<EFBFBD>h ~* '<EFBFBD>lz01<EFBFBD><EFBFBD>';
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD>ރR<EFBFBD>[<EFBFBD>h like '_Z01_';
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> where <EFBFBD><EFBFBD><EFBFBD>ރR<EFBFBD>[<EFBFBD>h like '_Z%';
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> where <EFBFBD>p<EFBFBD><EFBFBD> ~ '<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^[<5B>f<EFBFBD>O]';
select * from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> where <EFBFBD>p<EFBFBD><EFBFBD> ~* '<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>[<5B>^[<5B>f<EFBFBD>O]';
select *,character_length(<EFBFBD>p<EFBFBD><EFBFBD>) from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
select *,octet_length(<EFBFBD>p<EFBFBD><EFBFBD>) from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
select *,position('<EFBFBD>f' in <EFBFBD>p<EFBFBD><EFBFBD>) from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
select *,substring(<EFBFBD>p<EFBFBD><EFBFBD> from 10 for 4) from <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD>;
copy <EFBFBD>v<EFBFBD>Z<EFBFBD>@<EFBFBD>p<EFBFBD><EFBFBD> to stdout;

View File

@ -0,0 +1,19 @@
drop table ;
create table ( text, varchar, 1Aだよ char(16));
create index index1 on using btree ();
create index index2 on using hash ();
insert into values('コンピュータディスプレイ','機A01上');
insert into values('コンピュータグラフィックス','分B10中');
insert into values('コンピュータプログラマー','人Z01下');
vacuum ;
select * from ;
select * from where = '人Z01下';
select * from where ~* '人z01下';
select * from where like '_Z01_';
select * from where like '_Z%';
select * from where ~ 'コンピュータ[デグ]';
select * from where ~* 'コンピュータ[デグ]';
select *,character_length() from ;
select *,octet_length() from ;
select *,position('' in ) from ;
select *,substring( from 10 for 4) from ;