mirror of
https://github.com/postgres/postgres.git
synced 2025-07-17 06:41:09 +03:00
Hello!
Attached to the mail is locale-patch.tar.gz. In the archive there are: file README.locale short description directory src/test/locale test suite; currently only koi8-r tests, but the suite can be easily extended file locale.patch the very patch; to apply: patch < locale.patch; should be applied to postgres-6.3.2 (at least I created it with 6.3.2 without any additional patches) Files touched by the patch: src/include/utils/builtins.h src/backend/utils/adt/char.c src/backend/utils/adt/varchar.c src/backend/utils/adt/varlena.c Oleg
This commit is contained in:
17
doc/README.locale
Normal file
17
doc/README.locale
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
1998 May 25
|
||||||
|
|
||||||
|
I extended locale support. Now ORDER BY (if PostgreSQL configured with
|
||||||
|
--enable-locale) uses strcoll() for all text fields: char(n), varchar(n),
|
||||||
|
text. (I am not sure about ORDER BY char2/char4/etc.)
|
||||||
|
|
||||||
|
I included test suite .../src/test/locale. I didn't include this in
|
||||||
|
the regression test because not so much people require locale support. Read
|
||||||
|
.../src/test/locale/README for details on the test suite.
|
||||||
|
|
||||||
|
Many thanks to Oleg Bartunov (oleg@sai.msu.su) and Thomas G. Lockhart
|
||||||
|
(lockhart@alumni.caltech.edu) for hints, tips, help and discussion.
|
||||||
|
|
||||||
|
Oleg.
|
||||||
|
----
|
||||||
|
Oleg Broytmann http://members.tripod.com/~phd2/ phd2@earthling.net
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.33 1998/06/15 19:29:38 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.34 1998/06/16 06:41:50 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -475,7 +475,7 @@ bpcharlt(char *arg1, char *arg2)
|
|||||||
len1 = bcTruelen(arg1);
|
len1 = bcTruelen(arg1);
|
||||||
len2 = bcTruelen(arg2);
|
len2 = bcTruelen(arg2);
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (cmp == 0)
|
if (cmp == 0)
|
||||||
return (len1 < len2);
|
return (len1 < len2);
|
||||||
else
|
else
|
||||||
@ -494,7 +494,7 @@ bpcharle(char *arg1, char *arg2)
|
|||||||
len1 = bcTruelen(arg1);
|
len1 = bcTruelen(arg1);
|
||||||
len2 = bcTruelen(arg2);
|
len2 = bcTruelen(arg2);
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (0 == cmp)
|
if (0 == cmp)
|
||||||
return (bool) (len1 <= len2 ? 1 : 0);
|
return (bool) (len1 <= len2 ? 1 : 0);
|
||||||
else
|
else
|
||||||
@ -513,7 +513,7 @@ bpchargt(char *arg1, char *arg2)
|
|||||||
len1 = bcTruelen(arg1);
|
len1 = bcTruelen(arg1);
|
||||||
len2 = bcTruelen(arg2);
|
len2 = bcTruelen(arg2);
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (cmp == 0)
|
if (cmp == 0)
|
||||||
return (len1 > len2);
|
return (len1 > len2);
|
||||||
else
|
else
|
||||||
@ -532,7 +532,7 @@ bpcharge(char *arg1, char *arg2)
|
|||||||
len1 = bcTruelen(arg1);
|
len1 = bcTruelen(arg1);
|
||||||
len2 = bcTruelen(arg2);
|
len2 = bcTruelen(arg2);
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (0 == cmp)
|
if (0 == cmp)
|
||||||
return (bool) (len1 >= len2 ? 1 : 0);
|
return (bool) (len1 >= len2 ? 1 : 0);
|
||||||
else
|
else
|
||||||
@ -549,7 +549,7 @@ bpcharcmp(char *arg1, char *arg2)
|
|||||||
len1 = bcTruelen(arg1);
|
len1 = bcTruelen(arg1);
|
||||||
len2 = bcTruelen(arg2);
|
len2 = bcTruelen(arg2);
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if ((0 == cmp) && (len1 != len2))
|
if ((0 == cmp) && (len1 != len2))
|
||||||
return (int32) (len1 < len2 ? -1 : 1);
|
return (int32) (len1 < len2 ? -1 : 1);
|
||||||
else
|
else
|
||||||
@ -641,7 +641,7 @@ varcharlt(char *arg1, char *arg2)
|
|||||||
len1 = VARSIZE(arg1) - VARHDRSZ;
|
len1 = VARSIZE(arg1) - VARHDRSZ;
|
||||||
len2 = VARSIZE(arg2) - VARHDRSZ;
|
len2 = VARSIZE(arg2) - VARHDRSZ;
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (cmp == 0)
|
if (cmp == 0)
|
||||||
return (len1 < len2);
|
return (len1 < len2);
|
||||||
else
|
else
|
||||||
@ -660,7 +660,7 @@ varcharle(char *arg1, char *arg2)
|
|||||||
len1 = VARSIZE(arg1) - VARHDRSZ;
|
len1 = VARSIZE(arg1) - VARHDRSZ;
|
||||||
len2 = VARSIZE(arg2) - VARHDRSZ;
|
len2 = VARSIZE(arg2) - VARHDRSZ;
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (0 == cmp)
|
if (0 == cmp)
|
||||||
return (bool) (len1 <= len2 ? 1 : 0);
|
return (bool) (len1 <= len2 ? 1 : 0);
|
||||||
else
|
else
|
||||||
@ -679,7 +679,7 @@ varchargt(char *arg1, char *arg2)
|
|||||||
len1 = VARSIZE(arg1) - VARHDRSZ;
|
len1 = VARSIZE(arg1) - VARHDRSZ;
|
||||||
len2 = VARSIZE(arg2) - VARHDRSZ;
|
len2 = VARSIZE(arg2) - VARHDRSZ;
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (cmp == 0)
|
if (cmp == 0)
|
||||||
return (len1 > len2);
|
return (len1 > len2);
|
||||||
else
|
else
|
||||||
@ -698,7 +698,7 @@ varcharge(char *arg1, char *arg2)
|
|||||||
len1 = VARSIZE(arg1) - VARHDRSZ;
|
len1 = VARSIZE(arg1) - VARHDRSZ;
|
||||||
len2 = VARSIZE(arg2) - VARHDRSZ;
|
len2 = VARSIZE(arg2) - VARHDRSZ;
|
||||||
|
|
||||||
cmp = strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if (0 == cmp)
|
if (0 == cmp)
|
||||||
return (bool) (len1 >= len2 ? 1 : 0);
|
return (bool) (len1 >= len2 ? 1 : 0);
|
||||||
else
|
else
|
||||||
@ -715,7 +715,7 @@ varcharcmp(char *arg1, char *arg2)
|
|||||||
|
|
||||||
len1 = VARSIZE(arg1) - VARHDRSZ;
|
len1 = VARSIZE(arg1) - VARHDRSZ;
|
||||||
len2 = VARSIZE(arg2) - VARHDRSZ;
|
len2 = VARSIZE(arg2) - VARHDRSZ;
|
||||||
cmp = (strncmp(VARDATA(arg1), VARDATA(arg2), Min(len1, len2)));
|
cmp = varstr_cmp(VARDATA(arg1), len1, VARDATA(arg2), len2);
|
||||||
if ((0 == cmp) && (len1 != len2))
|
if ((0 == cmp) && (len1 != len2))
|
||||||
return (int32) (len1 < len2 ? -1 : 1);
|
return (int32) (len1 < len2 ? -1 : 1);
|
||||||
else
|
else
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.36 1998/06/15 19:29:38 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.37 1998/06/16 06:41:51 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -468,116 +468,87 @@ textne(text *arg1, text *arg2)
|
|||||||
return ((bool) !texteq(arg1, arg2));
|
return ((bool) !texteq(arg1, arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* text_lt()
|
/* varstr_cmp()
|
||||||
|
* Comparison function for text strings with given lengths.
|
||||||
|
* Includes locale support, but must copy strings to temporary memory
|
||||||
|
* to allow null-termination for inputs to strcoll().
|
||||||
|
* Returns -1, 0 or 1
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
varstr_cmp(unsigned char *arg1, int len1, unsigned char *arg2, int len2)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
unsigned char *a1p, *a2p;
|
||||||
|
|
||||||
|
#ifdef USE_LOCALE
|
||||||
|
a1p = (unsigned char *) palloc(len1 + 1);
|
||||||
|
a2p = (unsigned char *) palloc(len2 + 1);
|
||||||
|
|
||||||
|
memcpy(a1p, arg1, len1);
|
||||||
|
*(a1p + len1) = '\0';
|
||||||
|
memcpy(a2p, arg2, len2);
|
||||||
|
*(a2p + len2) = '\0';
|
||||||
|
|
||||||
|
result = strcoll(a1p, a2p);
|
||||||
|
|
||||||
|
pfree(a1p);
|
||||||
|
pfree(a2p);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
a1p = arg1;
|
||||||
|
a2p = arg2;
|
||||||
|
|
||||||
|
result = strncmp(a1p, a2p, Min(len1, len2));
|
||||||
|
if ((result == 0) && (len1 != len2))
|
||||||
|
result = (len1 < len2) ? -1 : 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return (result);
|
||||||
|
} /* varstr_cmp() */
|
||||||
|
|
||||||
|
/* text_cmp()
|
||||||
* Comparison function for text strings.
|
* Comparison function for text strings.
|
||||||
* Includes locale support, but must copy strings to temporary memory
|
* Includes locale support, but must copy strings to temporary memory
|
||||||
* to allow null-termination for inputs to strcoll().
|
* to allow null-termination for inputs to strcoll().
|
||||||
* XXX HACK code for textlen() indicates that there can be embedded nulls
|
* XXX HACK code for textlen() indicates that there can be embedded nulls
|
||||||
* but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
|
* but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
|
||||||
|
* Returns -1, 0 or 1
|
||||||
*/
|
*/
|
||||||
bool
|
int
|
||||||
text_lt(text *arg1, text *arg2)
|
text_cmp(text *arg1, text *arg2)
|
||||||
{
|
{
|
||||||
bool result;
|
unsigned char *a1p, *a2p;
|
||||||
|
int len1, len2;
|
||||||
#ifdef USE_LOCALE
|
|
||||||
int cval;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
int len;
|
|
||||||
unsigned char *a1p,
|
|
||||||
*a2p;
|
|
||||||
|
|
||||||
if (arg1 == NULL || arg2 == NULL)
|
if (arg1 == NULL || arg2 == NULL)
|
||||||
return ((bool) FALSE);
|
return ((bool) FALSE);
|
||||||
|
|
||||||
len = (((VARSIZE(arg1) <= VARSIZE(arg2)) ? VARSIZE(arg1) : VARSIZE(arg2)) - VARHDRSZ);
|
|
||||||
|
|
||||||
#ifdef USE_LOCALE
|
|
||||||
a1p = (unsigned char *) palloc(len + 1);
|
|
||||||
a2p = (unsigned char *) palloc(len + 1);
|
|
||||||
|
|
||||||
memcpy(a1p, VARDATA(arg1), len);
|
|
||||||
*(a1p + len) = '\0';
|
|
||||||
memcpy(a2p, VARDATA(arg2), len);
|
|
||||||
*(a2p + len) = '\0';
|
|
||||||
|
|
||||||
cval = strcoll(a1p, a2p);
|
|
||||||
result = ((cval < 0) || ((cval == 0) && (VARSIZE(arg1) < VARSIZE(arg2))));
|
|
||||||
|
|
||||||
pfree(a1p);
|
|
||||||
pfree(a2p);
|
|
||||||
#else
|
|
||||||
a1p = (unsigned char *) VARDATA(arg1);
|
a1p = (unsigned char *) VARDATA(arg1);
|
||||||
a2p = (unsigned char *) VARDATA(arg2);
|
a2p = (unsigned char *) VARDATA(arg2);
|
||||||
|
|
||||||
while (len != 0 && *a1p == *a2p)
|
len1 = VARSIZE(arg1) - VARHDRSZ;
|
||||||
{
|
len2 = VARSIZE(arg2) - VARHDRSZ;
|
||||||
a1p++;
|
|
||||||
a2p++;
|
|
||||||
len--;
|
|
||||||
};
|
|
||||||
|
|
||||||
result = (len ? (*a1p < *a2p) : (VARSIZE(arg1) < VARSIZE(arg2)));
|
return varstr_cmp(a1p, len1, a2p, len2);
|
||||||
#endif
|
} /* text_cmp() */
|
||||||
|
|
||||||
return (result);
|
/* text_lt()
|
||||||
|
* Comparison function for text strings.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
text_lt(text *arg1, text *arg2)
|
||||||
|
{
|
||||||
|
return (bool)(text_cmp(arg1, arg2) < 0);
|
||||||
} /* text_lt() */
|
} /* text_lt() */
|
||||||
|
|
||||||
/* text_le()
|
/* text_le()
|
||||||
* Comparison function for text strings.
|
* Comparison function for text strings.
|
||||||
* Includes locale support, but must copy strings to temporary memory
|
|
||||||
* to allow null-termination for inputs to strcoll().
|
|
||||||
* XXX HACK code for textlen() indicates that there can be embedded nulls
|
|
||||||
* but it appears that most routines (incl. this one) assume not! - tgl 97/04/07
|
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
text_le(text *arg1, text *arg2)
|
text_le(text *arg1, text *arg2)
|
||||||
{
|
{
|
||||||
bool result;
|
return (bool)(text_cmp(arg1, arg2) <= 0);
|
||||||
|
|
||||||
#ifdef USE_LOCALE
|
|
||||||
int cval;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
int len;
|
|
||||||
unsigned char *a1p,
|
|
||||||
*a2p;
|
|
||||||
|
|
||||||
if (arg1 == NULL || arg2 == NULL)
|
|
||||||
return ((bool) 0);
|
|
||||||
|
|
||||||
len = (((VARSIZE(arg1) <= VARSIZE(arg2)) ? VARSIZE(arg1) : VARSIZE(arg2)) - VARHDRSZ);
|
|
||||||
|
|
||||||
#ifdef USE_LOCALE
|
|
||||||
a1p = (unsigned char *) palloc(len + 1);
|
|
||||||
a2p = (unsigned char *) palloc(len + 1);
|
|
||||||
|
|
||||||
memcpy(a1p, VARDATA(arg1), len);
|
|
||||||
*(a1p + len) = '\0';
|
|
||||||
memcpy(a2p, VARDATA(arg2), len);
|
|
||||||
*(a2p + len) = '\0';
|
|
||||||
|
|
||||||
cval = strcoll(a1p, a2p);
|
|
||||||
result = ((cval < 0) || ((cval == 0) && (VARSIZE(arg1) <= VARSIZE(arg2))));
|
|
||||||
|
|
||||||
pfree(a1p);
|
|
||||||
pfree(a2p);
|
|
||||||
#else
|
|
||||||
a1p = (unsigned char *) VARDATA(arg1);
|
|
||||||
a2p = (unsigned char *) VARDATA(arg2);
|
|
||||||
|
|
||||||
while (len != 0 && *a1p == *a2p)
|
|
||||||
{
|
|
||||||
a1p++;
|
|
||||||
a2p++;
|
|
||||||
len--;
|
|
||||||
};
|
|
||||||
|
|
||||||
result = (len ? (*a1p <= *a2p) : (VARSIZE(arg1) <= VARSIZE(arg2)));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
} /* text_le() */
|
} /* text_le() */
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: builtins.h,v 1.43 1998/05/29 13:37:29 thomas Exp $
|
* $Id: builtins.h,v 1.44 1998/06/16 06:41:51 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* This should normally only be included by fmgr.h.
|
* This should normally only be included by fmgr.h.
|
||||||
@ -428,6 +428,8 @@ extern char *textout(text *vlena);
|
|||||||
extern text *textcat(text *arg1, text *arg2);
|
extern text *textcat(text *arg1, text *arg2);
|
||||||
extern bool texteq(text *arg1, text *arg2);
|
extern bool texteq(text *arg1, text *arg2);
|
||||||
extern bool textne(text *arg1, text *arg2);
|
extern bool textne(text *arg1, text *arg2);
|
||||||
|
extern int varstr_cmp(unsigned char *arg1, int len1, unsigned char *arg2, int len2);
|
||||||
|
extern int text_cmp(text *arg1, text *arg2);
|
||||||
extern bool text_lt(text *arg1, text *arg2);
|
extern bool text_lt(text *arg1, text *arg2);
|
||||||
extern bool text_le(text *arg1, text *arg2);
|
extern bool text_le(text *arg1, text *arg2);
|
||||||
extern bool text_gt(text *arg1, text *arg2);
|
extern bool text_gt(text *arg1, text *arg2);
|
||||||
|
33
src/test/locale/Makefile
Normal file
33
src/test/locale/Makefile
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#
|
||||||
|
# Makefile for example programs
|
||||||
|
#
|
||||||
|
|
||||||
|
SRCDIR= ../..
|
||||||
|
include ../../Makefile.global
|
||||||
|
|
||||||
|
#
|
||||||
|
# And where libpq goes, so goes the authentication stuff...
|
||||||
|
#
|
||||||
|
ifdef KRBVERS
|
||||||
|
LDFLAGS+= $(KRBLIBS)
|
||||||
|
CFLAGS+= $(KRBFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
PROGS = test-pgsql-locale test-ctype
|
||||||
|
DIRS = koi8-r
|
||||||
|
|
||||||
|
all: $(PROGS)
|
||||||
|
|
||||||
|
$(PROGS): % : %.c
|
||||||
|
$(CC) $(CFLAGS) -o $@ $@.c $(LDFLAGS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(PROGS) *.out
|
||||||
|
for d in $(DIRS); do \
|
||||||
|
cd $$d; \
|
||||||
|
$(MAKE) clean; \
|
||||||
|
cd ..; \
|
||||||
|
done
|
||||||
|
|
||||||
|
test-%: all
|
||||||
|
@cd `echo $@ | sed s/^test-//` && $(MAKE) test
|
27
src/test/locale/README
Normal file
27
src/test/locale/README
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
1998 May 25
|
||||||
|
|
||||||
|
This directory contains a set of tests for locales. I provided one C
|
||||||
|
program test-ctype.c to test CTYPE support in libc and installed
|
||||||
|
localedata. Then there are test-sort.pl and test-sort.py that tests
|
||||||
|
collating. (Also there is test-sort.py but it is commented out in scripts;
|
||||||
|
uncomment it if you have Python interpreter installed).
|
||||||
|
To run a test for some locale (koi8, e.g) run
|
||||||
|
make all test-$locale
|
||||||
|
(for example)
|
||||||
|
make all test-koi8
|
||||||
|
|
||||||
|
Currently, only tests for koi8 locale (russian cyrillic for UN*X)
|
||||||
|
provided in koi8 directory. Script `runall' calls test-pgsql-locale to test
|
||||||
|
whether locale support had been compiled into PotgreSQL, test-ctype to test
|
||||||
|
libc and localedata, test-sort.pl (uncomment test-sort.py, if you have
|
||||||
|
Python interpreter installed) and does tests on PostgreSQL with
|
||||||
|
test-koi8*.sql.in.
|
||||||
|
|
||||||
|
To add locale tests one need to create directory $locale and create
|
||||||
|
Makefile (and other files) similar to koi8-r/*. Actually, the simplest (I
|
||||||
|
think) method is just copy koi8-r directory and edit/replace files.
|
||||||
|
|
||||||
|
Oleg.
|
||||||
|
----
|
||||||
|
Oleg Broytmann http://members.tripod.com/~phd2/ phd2@earthling.net
|
12
src/test/locale/koi8-r/Makefile
Normal file
12
src/test/locale/koi8-r/Makefile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#
|
||||||
|
# Makefile for example programs
|
||||||
|
#
|
||||||
|
|
||||||
|
all:
|
||||||
|
-@echo "make: Nothing to be done for \`all'."
|
||||||
|
|
||||||
|
test:
|
||||||
|
@./runall
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.out
|
257
src/test/locale/koi8-r/expected/koi8-ctype.out
Normal file
257
src/test/locale/koi8-r/expected/koi8-ctype.out
Normal file
@ -0,0 +1,257 @@
|
|||||||
|
char# char alnum alpha cntrl digit lower graph print punct space upper xdigit lo up
|
||||||
|
chr#0 +
|
||||||
|
chr#1 +
|
||||||
|
chr#2 +
|
||||||
|
chr#3 +
|
||||||
|
chr#4 +
|
||||||
|
chr#5 +
|
||||||
|
chr#6 +
|
||||||
|
chr#7 +
|
||||||
|
chr#8 +
|
||||||
|
chr#9 + +
|
||||||
|
chr#10 + +
|
||||||
|
chr#11 + +
|
||||||
|
chr#12 + +
|
||||||
|
chr#13 + +
|
||||||
|
chr#14 +
|
||||||
|
chr#15 +
|
||||||
|
chr#16 +
|
||||||
|
chr#17 +
|
||||||
|
chr#18 +
|
||||||
|
chr#19 +
|
||||||
|
chr#20 +
|
||||||
|
chr#21 +
|
||||||
|
chr#22 +
|
||||||
|
chr#23 +
|
||||||
|
chr#24 +
|
||||||
|
chr#25 +
|
||||||
|
chr#26 +
|
||||||
|
chr#27 +
|
||||||
|
chr#28 +
|
||||||
|
chr#29 +
|
||||||
|
chr#30 +
|
||||||
|
chr#31 +
|
||||||
|
chr#32 + +
|
||||||
|
chr#33 ! + + + ! !
|
||||||
|
chr#34 " + + + " "
|
||||||
|
chr#35 # + + + # #
|
||||||
|
chr#36 $ + + + $ $
|
||||||
|
chr#37 % + + + % %
|
||||||
|
chr#38 & + + + & &
|
||||||
|
chr#39 ' + + + ' '
|
||||||
|
chr#40 ( + + + ( (
|
||||||
|
chr#41 ) + + + ) )
|
||||||
|
chr#42 * + + + * *
|
||||||
|
chr#43 + + + + + +
|
||||||
|
chr#44 , + + + , ,
|
||||||
|
chr#45 - + + + - -
|
||||||
|
chr#46 . + + + . .
|
||||||
|
chr#47 / + + + / /
|
||||||
|
chr#48 0 + + + + + 0 0
|
||||||
|
chr#49 1 + + + + + 1 1
|
||||||
|
chr#50 2 + + + + + 2 2
|
||||||
|
chr#51 3 + + + + + 3 3
|
||||||
|
chr#52 4 + + + + + 4 4
|
||||||
|
chr#53 5 + + + + + 5 5
|
||||||
|
chr#54 6 + + + + + 6 6
|
||||||
|
chr#55 7 + + + + + 7 7
|
||||||
|
chr#56 8 + + + + + 8 8
|
||||||
|
chr#57 9 + + + + + 9 9
|
||||||
|
chr#58 : + + + : :
|
||||||
|
chr#59 ; + + + ; ;
|
||||||
|
chr#60 < + + + < <
|
||||||
|
chr#61 = + + + = =
|
||||||
|
chr#62 > + + + > >
|
||||||
|
chr#63 ? + + + ? ?
|
||||||
|
chr#64 @ + + + @ @
|
||||||
|
chr#65 A + + + + + + a A
|
||||||
|
chr#66 B + + + + + + b B
|
||||||
|
chr#67 C + + + + + + c C
|
||||||
|
chr#68 D + + + + + + d D
|
||||||
|
chr#69 E + + + + + + e E
|
||||||
|
chr#70 F + + + + + + f F
|
||||||
|
chr#71 G + + + + + g G
|
||||||
|
chr#72 H + + + + + h H
|
||||||
|
chr#73 I + + + + + i I
|
||||||
|
chr#74 J + + + + + j J
|
||||||
|
chr#75 K + + + + + k K
|
||||||
|
chr#76 L + + + + + l L
|
||||||
|
chr#77 M + + + + + m M
|
||||||
|
chr#78 N + + + + + n N
|
||||||
|
chr#79 O + + + + + o O
|
||||||
|
chr#80 P + + + + + p P
|
||||||
|
chr#81 Q + + + + + q Q
|
||||||
|
chr#82 R + + + + + r R
|
||||||
|
chr#83 S + + + + + s S
|
||||||
|
chr#84 T + + + + + t T
|
||||||
|
chr#85 U + + + + + u U
|
||||||
|
chr#86 V + + + + + v V
|
||||||
|
chr#87 W + + + + + w W
|
||||||
|
chr#88 X + + + + + x X
|
||||||
|
chr#89 Y + + + + + y Y
|
||||||
|
chr#90 Z + + + + + z Z
|
||||||
|
chr#91 [ + + + [ [
|
||||||
|
chr#92 \ + + + \ \
|
||||||
|
chr#93 ] + + + ] ]
|
||||||
|
chr#94 ^ + + + ^ ^
|
||||||
|
chr#95 _ + + + _ _
|
||||||
|
chr#96 ` + + + ` `
|
||||||
|
chr#97 a + + + + + + a A
|
||||||
|
chr#98 b + + + + + + b B
|
||||||
|
chr#99 c + + + + + + c C
|
||||||
|
chr#100 d + + + + + + d D
|
||||||
|
chr#101 e + + + + + + e E
|
||||||
|
chr#102 f + + + + + + f F
|
||||||
|
chr#103 g + + + + + g G
|
||||||
|
chr#104 h + + + + + h H
|
||||||
|
chr#105 i + + + + + i I
|
||||||
|
chr#106 j + + + + + j J
|
||||||
|
chr#107 k + + + + + k K
|
||||||
|
chr#108 l + + + + + l L
|
||||||
|
chr#109 m + + + + + m M
|
||||||
|
chr#110 n + + + + + n N
|
||||||
|
chr#111 o + + + + + o O
|
||||||
|
chr#112 p + + + + + p P
|
||||||
|
chr#113 q + + + + + q Q
|
||||||
|
chr#114 r + + + + + r R
|
||||||
|
chr#115 s + + + + + s S
|
||||||
|
chr#116 t + + + + + t T
|
||||||
|
chr#117 u + + + + + u U
|
||||||
|
chr#118 v + + + + + v V
|
||||||
|
chr#119 w + + + + + w W
|
||||||
|
chr#120 x + + + + + x X
|
||||||
|
chr#121 y + + + + + y Y
|
||||||
|
chr#122 z + + + + + z Z
|
||||||
|
chr#123 { + + + { {
|
||||||
|
chr#124 | + + + | |
|
||||||
|
chr#125 } + + + } }
|
||||||
|
chr#126 ~ + + + ~ ~
|
||||||
|
chr#127 +
|
||||||
|
chr#128 <20> + + + <20> <20>
|
||||||
|
chr#129 <20> + + + <20> <20>
|
||||||
|
chr#130 <20> + + + <20> <20>
|
||||||
|
chr#131 <20> + + + <20> <20>
|
||||||
|
chr#132 <20> + + + <20> <20>
|
||||||
|
chr#133 <20> + + + <20> <20>
|
||||||
|
chr#134 <20> + + + <20> <20>
|
||||||
|
chr#135 <20> + + + <20> <20>
|
||||||
|
chr#136 <20> + + + <20> <20>
|
||||||
|
chr#137 <20> + + + <20> <20>
|
||||||
|
chr#138 <20> + + + <20> <20>
|
||||||
|
chr#139 <20> + + + <20> <20>
|
||||||
|
chr#140 <20> + + + <20> <20>
|
||||||
|
chr#141 <20> + + + <20> <20>
|
||||||
|
chr#142 <20> + + + <20> <20>
|
||||||
|
chr#143 <20> + + + <20> <20>
|
||||||
|
chr#144 <20> + + + <20> <20>
|
||||||
|
chr#145 <20> + + + <20> <20>
|
||||||
|
chr#146 <20> + + + <20> <20>
|
||||||
|
chr#147 <20> + + + <20> <20>
|
||||||
|
chr#148 <20> + + + <20> <20>
|
||||||
|
chr#149 <20> + + + <20> <20>
|
||||||
|
chr#150 <20> + + + <20> <20>
|
||||||
|
chr#151 <20> + + + <20> <20>
|
||||||
|
chr#152 <20> + + + <20> <20>
|
||||||
|
chr#153 <20> + + + <20> <20>
|
||||||
|
chr#154 +
|
||||||
|
chr#155 <20> + + + <20> <20>
|
||||||
|
chr#156 <20> + + + <20> <20>
|
||||||
|
chr#157 <20> + + + <20> <20>
|
||||||
|
chr#158 <20> + + + <20> <20>
|
||||||
|
chr#159 <20> + + + <20> <20>
|
||||||
|
chr#160 <20> + + + <20> <20>
|
||||||
|
chr#161 <20> + + + <20> <20>
|
||||||
|
chr#162 <20> + + + <20> <20>
|
||||||
|
chr#163 <20> + + + + + <20> <20>
|
||||||
|
chr#164 <20> + + + <20> <20>
|
||||||
|
chr#165 <20> + + + <20> <20>
|
||||||
|
chr#166 <20> + + + <20> <20>
|
||||||
|
chr#167 <20> + + + <20> <20>
|
||||||
|
chr#168 <20> + + + <20> <20>
|
||||||
|
chr#169 <20> + + + <20> <20>
|
||||||
|
chr#170 <20> + + + <20> <20>
|
||||||
|
chr#171 <20> + + + <20> <20>
|
||||||
|
chr#172 <20> + + + <20> <20>
|
||||||
|
chr#173 <20> + + + <20> <20>
|
||||||
|
chr#174 <20> + + + <20> <20>
|
||||||
|
chr#175 <20> + + + <20> <20>
|
||||||
|
chr#176 <20> + + + <20> <20>
|
||||||
|
chr#177 <20> + + + <20> <20>
|
||||||
|
chr#178 <20> + + + <20> <20>
|
||||||
|
chr#179 <20> + + + + + <20> <20>
|
||||||
|
chr#180 <20> + + + <20> <20>
|
||||||
|
chr#181 <20> + + + <20> <20>
|
||||||
|
chr#182 <20> + + + <20> <20>
|
||||||
|
chr#183 <20> + + + <20> <20>
|
||||||
|
chr#184 <20> + + + <20> <20>
|
||||||
|
chr#185 <20> + + + <20> <20>
|
||||||
|
chr#186 <20> + + + <20> <20>
|
||||||
|
chr#187 <20> + + + <20> <20>
|
||||||
|
chr#188 <20> + + + <20> <20>
|
||||||
|
chr#189 <20> + + + <20> <20>
|
||||||
|
chr#190 <20> + + + <20> <20>
|
||||||
|
chr#191 <20> + + + <20> <20>
|
||||||
|
chr#192 <20> + + + + + <20> <20>
|
||||||
|
chr#193 <20> + + + + + <20> <20>
|
||||||
|
chr#194 <20> + + + + + <20> <20>
|
||||||
|
chr#195 <20> + + + + + <20> <20>
|
||||||
|
chr#196 <20> + + + + + <20> <20>
|
||||||
|
chr#197 <20> + + + + + <20> <20>
|
||||||
|
chr#198 <20> + + + + + <20> <20>
|
||||||
|
chr#199 <20> + + + + + <20> <20>
|
||||||
|
chr#200 <20> + + + + + <20> <20>
|
||||||
|
chr#201 <20> + + + + + <20> <20>
|
||||||
|
chr#202 <20> + + + + + <20> <20>
|
||||||
|
chr#203 <20> + + + + + <20> <20>
|
||||||
|
chr#204 <20> + + + + + <20> <20>
|
||||||
|
chr#205 <20> + + + + + <20> <20>
|
||||||
|
chr#206 <20> + + + + + <20> <20>
|
||||||
|
chr#207 <20> + + + + + <20> <20>
|
||||||
|
chr#208 <20> + + + + + <20> <20>
|
||||||
|
chr#209 <20> + + + + + <20> <20>
|
||||||
|
chr#210 <20> + + + + + <20> <20>
|
||||||
|
chr#211 <20> + + + + + <20> <20>
|
||||||
|
chr#212 <20> + + + + + <20> <20>
|
||||||
|
chr#213 <20> + + + + + <20> <20>
|
||||||
|
chr#214 <20> + + + + + <20> <20>
|
||||||
|
chr#215 <20> + + + + + <20> <20>
|
||||||
|
chr#216 <20> + + + + + <20> <20>
|
||||||
|
chr#217 <20> + + + + + <20> <20>
|
||||||
|
chr#218 <20> + + + + + <20> <20>
|
||||||
|
chr#219 <20> + + + + + <20> <20>
|
||||||
|
chr#220 <20> + + + + + <20> <20>
|
||||||
|
chr#221 <20> + + + + + <20> <20>
|
||||||
|
chr#222 <20> + + + + + <20> <20>
|
||||||
|
chr#223 <20> + + + + + <20>
|
||||||
|
chr#224 <20> + + + + + <20> <20>
|
||||||
|
chr#225 <20> + + + + + <20> <20>
|
||||||
|
chr#226 <20> + + + + + <20> <20>
|
||||||
|
chr#227 <20> + + + + + <20> <20>
|
||||||
|
chr#228 <20> + + + + + <20> <20>
|
||||||
|
chr#229 <20> + + + + + <20> <20>
|
||||||
|
chr#230 <20> + + + + + <20> <20>
|
||||||
|
chr#231 <20> + + + + + <20> <20>
|
||||||
|
chr#232 <20> + + + + + <20> <20>
|
||||||
|
chr#233 <20> + + + + + <20> <20>
|
||||||
|
chr#234 <20> + + + + + <20> <20>
|
||||||
|
chr#235 <20> + + + + + <20> <20>
|
||||||
|
chr#236 <20> + + + + + <20> <20>
|
||||||
|
chr#237 <20> + + + + + <20> <20>
|
||||||
|
chr#238 <20> + + + + + <20> <20>
|
||||||
|
chr#239 <20> + + + + + <20> <20>
|
||||||
|
chr#240 <20> + + + + + <20> <20>
|
||||||
|
chr#241 <20> + + + + + <20> <20>
|
||||||
|
chr#242 <20> + + + + + <20> <20>
|
||||||
|
chr#243 <20> + + + + + <20> <20>
|
||||||
|
chr#244 <20> + + + + + <20> <20>
|
||||||
|
chr#245 <20> + + + + + <20> <20>
|
||||||
|
chr#246 <20> + + + + + <20> <20>
|
||||||
|
chr#247 <20> + + + + + <20> <20>
|
||||||
|
chr#248 <20> + + + + + <20> <20>
|
||||||
|
chr#249 <20> + + + + + <20> <20>
|
||||||
|
chr#250 <20> + + + + + <20> <20>
|
||||||
|
chr#251 <20> + + + + + <20> <20>
|
||||||
|
chr#252 <20> + + + + + <20> <20>
|
||||||
|
chr#253 <20> + + + + + <20> <20>
|
||||||
|
chr#254 <20> + + + + + <20> <20>
|
||||||
|
chr#255 + + + + + <20>
|
55
src/test/locale/koi8-r/expected/test-koi8-char.sql.out
Normal file
55
src/test/locale/koi8-r/expected/test-koi8-char.sql.out
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
abbrev|name_en |name_ru
|
||||||
|
------+--------------------+------------------------------------------------------------
|
||||||
|
ID |Idaho |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IA |Iowa |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AL |Alabama |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AK |Alaska |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AZ |Arizona |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AR |Arkansas |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WY |Wyoming |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WA |Washington |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VT |Vermont |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VA |Virginia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WI |Wisconsin |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DE |Delaware |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
GA |Georgia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WV |West Virginia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IL |Illinois |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IN |Indiana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CA |California |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KA |Kansas |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KY |Kentucky |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CO |Colorado |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CT |Connecticut |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
LA |Louisiana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MA |Massachusetts |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MN |Minnesota |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MS |Mississippi |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MO |Missouri |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MI |Michigan |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MT |Montana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ME |Maine |<7C><><EFBFBD>
|
||||||
|
MD |Maryland |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NE |Nebraska |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NV |Nevada |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NH |New Hampshire |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NJ |New Jersey |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NY |New York |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD>
|
||||||
|
NM |New Mexico |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OH |Ohio |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OK |Oklahoma |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DC |Washington DC |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
OR |Oregon |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PA |Pennsylvania |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
RI |Rhode Island |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ND |North Dakota |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NC |North Carolina |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TN |Tennessee |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TX |Texas |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
FL |Florida |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SD |South Dakota |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SC |South Carolina |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
UT |Utah |<7C><><EFBFBD>
|
||||||
|
(50 rows)
|
||||||
|
|
||||||
|
EOF
|
9
src/test/locale/koi8-r/expected/test-koi8-select.sql.out
Normal file
9
src/test/locale/koi8-r/expected/test-koi8-select.sql.out
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
abbrev|name_en |name_ru
|
||||||
|
------+--------------------+----------------------------------------------
|
||||||
|
OH |Ohio |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OK |Oklahoma |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DC |Washington DC |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
OR |Oregon |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
(4 rows)
|
||||||
|
|
||||||
|
EOF
|
9
src/test/locale/koi8-r/expected/test-koi8-sort.out
Normal file
9
src/test/locale/koi8-r/expected/test-koi8-sort.out
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Bording
|
||||||
|
hoarding
|
||||||
|
Vesta
|
||||||
|
vesta
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>
|
55
src/test/locale/koi8-r/expected/test-koi8-text.sql.out
Normal file
55
src/test/locale/koi8-r/expected/test-koi8-text.sql.out
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
abbrev|name_en |name_ru
|
||||||
|
------+--------------------+----------------------------------------------
|
||||||
|
ID |Idaho |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IA |Iowa |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AL |Alabama |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AK |Alaska |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AZ |Arizona |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AR |Arkansas |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WY |Wyoming |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WA |Washington |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VT |Vermont |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VA |Virginia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WI |Wisconsin |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DE |Delaware |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
GA |Georgia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WV |West Virginia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IL |Illinois |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IN |Indiana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CA |California |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KA |Kansas |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KY |Kentucky |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CO |Colorado |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CT |Connecticut |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
LA |Louisiana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MA |Massachusetts |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MN |Minnesota |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MS |Mississippi |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MO |Missouri |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MI |Michigan |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MT |Montana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ME |Maine |<7C><><EFBFBD>
|
||||||
|
MD |Maryland |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NE |Nebraska |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NV |Nevada |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NH |New Hampshire |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NJ |New Jersey |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NY |New York |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD>
|
||||||
|
NM |New Mexico |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OH |Ohio |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OK |Oklahoma |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DC |Washington DC |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
OR |Oregon |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PA |Pennsylvania |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
RI |Rhode Island |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ND |North Dakota |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NC |North Carolina |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TN |Tennessee |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TX |Texas |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
FL |Florida |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SD |South Dakota |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SC |South Carolina |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
UT |Utah |<7C><><EFBFBD>
|
||||||
|
(50 rows)
|
||||||
|
|
||||||
|
EOF
|
55
src/test/locale/koi8-r/expected/test-koi8-varchar.sql.out
Normal file
55
src/test/locale/koi8-r/expected/test-koi8-varchar.sql.out
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
abbrev|name_en |name_ru
|
||||||
|
------+--------------------+----------------------------------------------
|
||||||
|
ID |Idaho |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IA |Iowa |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AL |Alabama |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AK |Alaska |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AZ |Arizona |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AR |Arkansas |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WY |Wyoming |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WA |Washington |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VT |Vermont |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VA |Virginia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WI |Wisconsin |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DE |Delaware |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
GA |Georgia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WV |West Virginia |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IL |Illinois |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IN |Indiana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CA |California |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KA |Kansas |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KY |Kentucky |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CO |Colorado |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CT |Connecticut |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
LA |Louisiana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MA |Massachusetts |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MN |Minnesota |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MS |Mississippi |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MO |Missouri |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MI |Michigan |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MT |Montana |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ME |Maine |<7C><><EFBFBD>
|
||||||
|
MD |Maryland |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NE |Nebraska |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NV |Nevada |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NH |New Hampshire |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NJ |New Jersey |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NY |New York |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD>
|
||||||
|
NM |New Mexico |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OH |Ohio |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OK |Oklahoma |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DC |Washington DC |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
OR |Oregon |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PA |Pennsylvania |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
RI |Rhode Island |<7C><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ND |North Dakota |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NC |North Carolina |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TN |Tennessee |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TX |Texas |<7C><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
FL |Florida |<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SD |South Dakota |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SC |South Carolina |<7C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
UT |Utah |<7C><><EFBFBD>
|
||||||
|
(50 rows)
|
||||||
|
|
||||||
|
EOF
|
52
src/test/locale/koi8-r/runall
Executable file
52
src/test/locale/koi8-r/runall
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
PATH=..:$PATH
|
||||||
|
|
||||||
|
echo "Testing PostgreSQL compilation..."
|
||||||
|
if ! test-pgsql-locale; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
LC_CTYPE=ru_RU.KOI8-R
|
||||||
|
LC_COLLATE=$LC_CTYPE
|
||||||
|
export LC_CTYPE LC_COLLATE
|
||||||
|
|
||||||
|
echo "Testing LC_CTYPE..."
|
||||||
|
if ! test-ctype > koi8-ctype.out; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
diff expected/koi8-ctype.out koi8-ctype.out
|
||||||
|
|
||||||
|
echo "Testing LC_COLLATE..."
|
||||||
|
perl ../sort-test.pl test-koi8-sort.in > test-koi8-sort.out
|
||||||
|
diff expected/test-koi8-sort.out test-koi8-sort.out
|
||||||
|
|
||||||
|
### If you have Python - uncomment the following two lines
|
||||||
|
#python ../sort-test.py test-koi8-sort.in > test-koi8-sort.out
|
||||||
|
#diff expected/test-koi8-sort.out test-koi8-sort.out
|
||||||
|
|
||||||
|
|
||||||
|
abort() {
|
||||||
|
[ "$1" ] && echo "$*"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
for f in char varchar text; do
|
||||||
|
if echo $f | grep -q char; then
|
||||||
|
ftype="$f(60)"
|
||||||
|
else
|
||||||
|
ftype="$f"
|
||||||
|
fi
|
||||||
|
echo "Testing PgSQL: sort on $ftype type..."
|
||||||
|
|
||||||
|
destroydb testlocale >/dev/null 2>&1
|
||||||
|
createdb testlocale || abort "createdb failed"
|
||||||
|
psql -d testlocale -c "CREATE TABLE usastates (abbrev char2, name_en char(20), name_ru $ftype);" >/dev/null 2>&1 || abort "createtable failed"
|
||||||
|
psql testlocale < test-koi8.sql.in > test-koi8-$f.sql.out 2>/dev/null || abort "test query failed"
|
||||||
|
diff expected/test-koi8-$f.sql.out test-koi8-$f.sql.out
|
||||||
|
done
|
||||||
|
echo "Testing PgSQL: select on regexp..."
|
||||||
|
psql testlocale < test-koi8-select.sql.in > test-koi8-select.sql.out 2>/dev/null || abort "select query failed"
|
||||||
|
diff expected/test-koi8-select.sql.out test-koi8-select.sql.out
|
||||||
|
destroydb testlocale || abort "destroydb failed"
|
||||||
|
echo "Finished."
|
1
src/test/locale/koi8-r/test-koi8-select.sql.in
Normal file
1
src/test/locale/koi8-r/test-koi8-select.sql.in
Normal file
@ -0,0 +1 @@
|
|||||||
|
SELECT * FROM usastates WHERE name_ru ~* '^<5E>.*' ORDER BY name_ru;
|
9
src/test/locale/koi8-r/test-koi8-sort.in
Normal file
9
src/test/locale/koi8-r/test-koi8-sort.in
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Vesta
|
||||||
|
vesta
|
||||||
|
<EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
Bording
|
||||||
|
hoarding
|
53
src/test/locale/koi8-r/test-koi8.sql.in
Normal file
53
src/test/locale/koi8-r/test-koi8.sql.in
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
COPY usastates FROM stdin USING DELIMITERS '|';
|
||||||
|
AK|Alaska |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WA|Washington |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OR|Oregon |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CA|California |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NV|Nevada |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ID|Idaho |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
UT|Utah |<EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AZ|Arizona |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MT|Montana |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WY|Wyoming |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CO|Colorado |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NM|New Mexico |<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ND|North Dakota |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SD|South Dakota |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NE|Nebraska |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KA|Kansas |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OK|Oklahoma |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TX|Texas |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MN|Minnesota |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IA|Iowa |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MO|Missouri |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AR|Arkansas |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
LA|Louisiana |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WI|Wisconsin |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IL|Illinois |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
IN|Indiana |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MS|Mississippi |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
AL|Alabama |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MI|Michigan |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
OH|Ohio |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
KY|Kentucky |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
TN|Tennessee |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
GA|Georgia |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
FL|Florida |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PA|Pennsylvania |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
WV|West Virginia |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
VA|Virginia |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NC|North Carolina|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
SC|South Carolina|<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NY|New York |<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NJ|New Jersey |<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DE|Delaware |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MD|Maryland |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DC|Washington DC |<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> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
VT|Vermont |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
MA|Massachusetts |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CT|Connecticut |<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ME|Maine |<EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
NH|New Hampshire |<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
RI|Rhode Island |<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
\.
|
||||||
|
SELECT * FROM usastates ORDER BY name_ru;
|
12
src/test/locale/sort-test.pl
Executable file
12
src/test/locale/sort-test.pl
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/local/bin/perl -w
|
||||||
|
use locale;
|
||||||
|
|
||||||
|
open(INFILE, "<$ARGV[0]");
|
||||||
|
chop(my(@words) = <INFILE>);
|
||||||
|
close(INFILE);
|
||||||
|
|
||||||
|
$"="\n";
|
||||||
|
my(@result) = sort @words;
|
||||||
|
|
||||||
|
print "@result\n";
|
||||||
|
|
18
src/test/locale/sort-test.py
Executable file
18
src/test/locale/sort-test.py
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#! /usr/local/bin/python
|
||||||
|
|
||||||
|
import sys, string, locale
|
||||||
|
locale.setlocale(locale.LC_ALL, "")
|
||||||
|
|
||||||
|
if len(sys.argv) <> 2:
|
||||||
|
sys.stderr.write("Usage: sort.py filename\n")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
infile = open(sys.argv[1], 'r')
|
||||||
|
list = infile.readlines()
|
||||||
|
infile.close()
|
||||||
|
|
||||||
|
for i in range(0, len(list)):
|
||||||
|
list[i] = list[i][:-1] # chop!
|
||||||
|
|
||||||
|
list.sort(locale.strcoll)
|
||||||
|
print string.join(list, '\n')
|
65
src/test/locale/test-ctype.c
Normal file
65
src/test/locale/test-ctype.c
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
test-ctype.c
|
||||||
|
|
||||||
|
Written by Oleg BroytMann, phd2@earthling.net
|
||||||
|
with help from Oleg Bartunov, oleg@sai.msu.su
|
||||||
|
Copyright (C) 1998 PhiloSoft Design
|
||||||
|
|
||||||
|
This is copyrighted but free software. You can use it, modify and distribute
|
||||||
|
in original or modified form providing that the author's names and the above
|
||||||
|
copyright notice will remain.
|
||||||
|
|
||||||
|
Disclaimer, legal notice and absence of warranty.
|
||||||
|
This software provided "as is" without any kind of warranty. In no event
|
||||||
|
the author shall be liable for any damage, etc.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
char * flag(int b);
|
||||||
|
void describe_char(int c);
|
||||||
|
|
||||||
|
#undef LONG_FLAG
|
||||||
|
|
||||||
|
char * flag(int b)
|
||||||
|
{
|
||||||
|
#ifdef LONG_FLAG
|
||||||
|
return b ? "yes" : "no";
|
||||||
|
#else
|
||||||
|
return b ? "+" : " ";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void describe_char(int c)
|
||||||
|
{
|
||||||
|
char cp = c, up = toupper(c), lo = tolower(c);
|
||||||
|
if (!isprint(cp)) cp = ' ';
|
||||||
|
if (!isprint(up)) up = ' ';
|
||||||
|
if (!isprint(lo)) lo = ' ';
|
||||||
|
|
||||||
|
printf("chr#%-4d%2c%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%4c%4c\n", c, cp, flag(isalnum(c)), flag(isalpha(c)), flag(iscntrl(c)), flag(isdigit(c)), flag(islower(c)), flag(isgraph(c)), flag(isprint(c)), flag(ispunct(c)), flag(isspace(c)), flag(isupper(c)), flag(isxdigit(c)), lo, up);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
short c;
|
||||||
|
char * cur_locale;
|
||||||
|
|
||||||
|
cur_locale = setlocale(LC_ALL, "");
|
||||||
|
if (cur_locale) {
|
||||||
|
fprintf(stderr, "Successfulle set locale to %s\n", cur_locale);
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Cannot setup locale. Either your libc does not provide\nlocale support, or your locale data is corrupt, or you have not set\nLANG or LC_CTYPE environment variable to proper value. Program aborted.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("char# char alnum alpha cntrl digit lower graph print punct space upper xdigit lo up\n");
|
||||||
|
for (c = 0; c <= 255; c++)
|
||||||
|
describe_char(c);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
13
src/test/locale/test-pgsql-locale.c
Normal file
13
src/test/locale/test-pgsql-locale.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "postgres.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
#ifdef USE_LOCALE
|
||||||
|
printf("PostgreSQL compiled with locale support\n");
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
printf("PostgreSQL compiled without locale support\n");
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
Reference in New Issue
Block a user