From 609026bb6b9cc05f9aa0e5a4ad7e06b5a352e969 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" <scrappy@hub.org> Date: Sun, 15 Mar 1998 07:53:03 +0000 Subject: [PATCH] From: t-ishii@sra.co.jp Included are patches intended for allowing PostgreSQL to handle multi-byte charachter sets such as EUC(Extende Unix Code), Unicode and Mule internal code. With the MB patch you can use multi-byte character sets in regexp and LIKE. The encoding system chosen is determined at the compile time. To enable the MB extension, you need to define a variable "MB" in Makefile.global or in Makefile.custom. For further information please take a look at README.mb under doc directory. (Note that unlike "jp patch" I do not use modified GNU regexp any more. I changed Henry Spencer's regexp coming with PostgreSQL.) --- src/test/regress/expected/euc_cn.out | 55 +++++++++++++ src/test/regress/expected/euc_jp.out | 55 +++++++++++++ src/test/regress/expected/mule_internal.out | 85 +++++++++++++++++++++ src/test/regress/sql/euc_cn.sql | 15 ++++ src/test/regress/sql/euc_jp.sql | 15 ++++ src/test/regress/sql/mule_internal.sql | 21 +++++ 6 files changed, 246 insertions(+) create mode 100644 src/test/regress/expected/euc_cn.out create mode 100644 src/test/regress/expected/euc_jp.out create mode 100644 src/test/regress/expected/mule_internal.out create mode 100644 src/test/regress/sql/euc_cn.sql create mode 100644 src/test/regress/sql/euc_jp.sql create mode 100644 src/test/regress/sql/mule_internal.sql diff --git a/src/test/regress/expected/euc_cn.out b/src/test/regress/expected/euc_cn.out new file mode 100644 index 00000000000..d927b28d205 --- /dev/null +++ b/src/test/regress/expected/euc_cn.out @@ -0,0 +1,55 @@ +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 btree(分类号); +QUERY: insert into 计算机术语 values('电脑显示屏','机A01上'); +QUERY: insert into 计算机术语 values('电脑图形','分B01中'); +QUERY: insert into 计算机术语 values('电脑程序员','人Z01下'); +QUERY: vacuum 计算机术语; +QUERY: select * from 计算机术语; +术语 |分类号 |备注1a +----------+-------+------ +电脑显示屏|机A01上| +电脑图形 |分B01中| +电脑程序员|人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上| +电脑图形 |分B01中| +(2 rows) + +QUERY: select * from 计算机术语 where 术语 ~* '电脑[显图]'; +术语 |分类号 |备注1a +----------+-------+------ +电脑显示屏|机A01上| +电脑图形 |分B01中| +(2 rows) + diff --git a/src/test/regress/expected/euc_jp.out b/src/test/regress/expected/euc_jp.out new file mode 100644 index 00000000000..c710392738f --- /dev/null +++ b/src/test/regress/expected/euc_jp.out @@ -0,0 +1,55 @@ +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) + diff --git a/src/test/regress/expected/mule_internal.out b/src/test/regress/expected/mule_internal.out new file mode 100644 index 00000000000..c797072e3d9 --- /dev/null +++ b/src/test/regress/expected/mule_internal.out @@ -0,0 +1,85 @@ +QUERY: drop table 挿讙换挼脱捀�; +ERROR: Relation 挿讙换挼脱捀� Does Not Exist! +QUERY: create table 挿讙换挼脱捀� (捦褣胳 text, 捠瑨梧挜硳〖挜� varchar, 捜鲯雇1A挙罀よ char(16)); +QUERY: create index 挿讙换挼脱捀靑ndex1 on 挿讙换挼脱捀� using btree (捦褣胳); +QUERY: create index 挿讙换挼脱捀靑ndex2 on 挿讙换挼脱捀� using hash (捠瑨梧挜硳〖挜�); +QUERY: insert into 挿讙换挼脱捀� values('挜硳ン挜話ュ挕紥タ挜菕ィ挜箳プ挜鞉イ','挼01捑�'); +QUERY: insert into 挿讙换挼脱捀� values('挜硳ン挜話ュ挕紥タ挜皰ラ挜諕ィ挜脪ク挜�','捠珺10捗�'); +QUERY: insert into 挿讙换挼脱捀� values('挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖','捒蚙01挷�'); +QUERY: insert into 挿讙换挼脱捀� values('懙鐟脑懴詰示懫�','懟鶤01懮�'); +QUERY: insert into 挿讙换挼脱捀� values('懙鐟脑懲紤形','懛諦01懼�'); +QUERY: insert into 挿讙换挼脱捀� values('懙鐟脑懗虘序懺�','懭薢01懴�'); +QUERY: vacuum 挿讙换挼脱捀�; +QUERY: select * from 挿讙换挼脱捀�; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +---------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜菕ィ挜箳プ挜鞉イ |挼01捑� | +挜硳ン挜話ュ挕紥タ挜皰ラ挜諕ィ挜脪ク挜箌捠珺10捗� | +挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖 |捒蚙01挷� | +懙鐟脑懴詰示懫� |懟鶤01懮� | +懙鐟脑懲紤形 |懛諦01懼� | +懙鐟脑懗虘序懺� |懭薢01懴� | +(6 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捠瑨梧挜硳〖挜� = '捒蚙01挷�'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖|捒蚙01挷� | +(1 row) + +QUERY: select * from 挿讙换挼脱捀� where 捠瑨梧挜硳〖挜� ~ 'Z01'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖|捒蚙01挷� | +懙鐟脑懗虘序懺� |懭薢01懴� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捠瑨梧挜硳〖挜� ~* 'z01'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖|捒蚙01挷� | +懙鐟脑懗虘序懺� |懭薢01懴� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捠瑨梧挜硳〖挜� like '_Z01_'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖|捒蚙01挷� | +懙鐟脑懗虘序懺� |懭薢01懴� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捠瑨梧挜硳〖挜� like '_Z%'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖|捒蚙01挷� | +懙鐟脑懗虘序懺� |懭薢01懴� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捦褣胳 ~ '挜硳ン挜話ュ挕紥タ[挜菕グ]'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +---------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜菕ィ挜箳プ挜鞉イ |挼01捑� | +挜硳ン挜話ュ挕紥タ挜皰ラ挜諕ィ挜脪ク挜箌捠珺10捗� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捦褣胳 ~* '挜硳ン挜話ュ挕紥タ[挜菕グ]'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +---------------------------------------+---------------+-------------- +挜硳ン挜話ュ挕紥タ挜菕ィ挜箳プ挜鞉イ |挼01捑� | +挜硳ン挜話ュ挕紥タ挜皰ラ挜諕ィ挜脪ク挜箌捠珺10捗� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捦褣胳 ~ '懙鐟脑[懴詰图]'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +---------------+---------------+-------------- +懙鐟脑懴詰示懫羭懟鶤01懮� | +懙鐟脑懲紤形 |懛諦01懼� | +(2 rows) + +QUERY: select * from 挿讙换挼脱捀� where 捦褣胳 ~* '懙鐟脑[懴詰图]'; +捦褣胳 |捠瑨梧挜硳〖挜蓔捜鲯雇1a挙罀よ +---------------+---------------+-------------- +懙鐟脑懴詰示懫羭懟鶤01懮� | +懙鐟脑懲紤形 |懛諦01懼� | +(2 rows) + diff --git a/src/test/regress/sql/euc_cn.sql b/src/test/regress/sql/euc_cn.sql new file mode 100644 index 00000000000..461c0c864f8 --- /dev/null +++ b/src/test/regress/sql/euc_cn.sql @@ -0,0 +1,15 @@ +drop table 计算机术语; +create table 计算机术语(术语 text, 分类号 varchar, 备注1A char(16)); +create index 计算机术语index1 on 计算机术语 using btree(术语); +create index 计算机术语index2 on 计算机术语 using btree(分类号); +insert into 计算机术语 values('电脑显示屏','机A01上'); +insert into 计算机术语 values('电脑图形','分B01中'); +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 术语 ~* '电脑[显图]'; diff --git a/src/test/regress/sql/euc_jp.sql b/src/test/regress/sql/euc_jp.sql new file mode 100644 index 00000000000..8cba58055d5 --- /dev/null +++ b/src/test/regress/sql/euc_jp.sql @@ -0,0 +1,15 @@ +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 脱胳 ~* 'コンピュ〖タ[デグ]'; diff --git a/src/test/regress/sql/mule_internal.sql b/src/test/regress/sql/mule_internal.sql new file mode 100644 index 00000000000..6d07906ff78 --- /dev/null +++ b/src/test/regress/sql/mule_internal.sql @@ -0,0 +1,21 @@ +drop table 挿讙换挼脱捀�; +create table 挿讙换挼脱捀� (捦褣胳 text, 捠瑨梧挜硳〖挜� varchar, 捜鲯雇1A挙罀よ char(16)); +create index 挿讙换挼脱捀靑ndex1 on 挿讙换挼脱捀� using btree (捦褣胳); +create index 挿讙换挼脱捀靑ndex2 on 挿讙换挼脱捀� using hash (捠瑨梧挜硳〖挜�); +insert into 挿讙换挼脱捀� values('挜硳ン挜話ュ挕紥タ挜菕ィ挜箳プ挜鞉イ','挼01捑�'); +insert into 挿讙换挼脱捀� values('挜硳ン挜話ュ挕紥タ挜皰ラ挜諕ィ挜脪ク挜�','捠珺10捗�'); +insert into 挿讙换挼脱捀� values('挜硳ン挜話ュ挕紥タ挜讙ロ挜皰ラ挜迴〖','捒蚙01挷�'); +insert into 挿讙换挼脱捀� values('懙鐟脑懴詰示懫�','懟鶤01懮�'); +insert into 挿讙换挼脱捀� values('懙鐟脑懲紤形','懛諦01懼�'); +insert into 挿讙换挼脱捀� values('懙鐟脑懗虘序懺�','懭薢01懴�'); +vacuum 挿讙换挼脱捀�; +select * from 挿讙换挼脱捀�; +select * from 挿讙换挼脱捀� where 捠瑨梧挜硳〖挜� = '捒蚙01挷�'; +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 * from 挿讙换挼脱捀� where 捦褣胳 ~ '懙鐟脑[懴詰图]'; +select * from 挿讙换挼脱捀� where 捦褣胳 ~* '懙鐟脑[懴詰图]'; -- GitLab