create table ¼t°Ó¸ê®Æ (¦æ·~§O text, ¤½¥q©ïÀY varchar, ¦a§} varchar(16));
create index ¼t°Ó¸ê®Æindex1 on ¼t°Ó¸ê®Æ using btree (¦æ·~§O);
create index ¼t°Ó¸ê®Æindex2 on ¼t°Ó¸ê®Æ using hash (¤½¥q©ïÀY);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into ¼t°Ó¸ê®Æ values ('¹q¸£·~', '¹F¹F¬ì§Þ', '¥_A01¤¯');
insert into ¼t°Ó¸ê®Æ values ('»s³y·~', '°]·½¦³¤½¥q', '¤¤B10¤¤');
insert into ¼t°Ó¸ê®Æ values ('À\¶¼·~', '¬ü¨ýªÑ¥÷¦³¤½¥q', '°ªZ01¤E');
create table ·×»»µ¡ÍѸì (ÍѸì text, ʬÎॳ¡¼¥É varchar, È÷¹Í1A¤À¤è char(16));
create index ·×»»µ¡ÍѸìindex1 on ·×»»µ¡ÍѸì using btree (ÍѸì);
create index ·×»»µ¡ÍѸìindex2 on ·×»»µ¡ÍѸì using hash (ʬÎॳ¡¼¥É);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into ·×»»µ¡ÍѸì values('¥³¥ó¥Ô¥å¡¼¥¿¥Ç¥£¥¹¥×¥ì¥¤','µ¡A01¾å');
insert into ·×»»µ¡ÍѸì values('¥³¥ó¥Ô¥å¡¼¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹','ʬB10Ãæ');
insert into ·×»»µ¡ÍѸì values('¥³¥ó¥Ô¥å¡¼¥¿¥×¥í¥°¥é¥Þ¡¼','¿ÍZ01²¼');
create table ͪߩѦ¿ë¾î (¿ë¾î text, ÝÂ×¾ÄÚµå varchar, ºñ°í1A¶ó±¸ char(16));
create index ͪߩѦ¿ë¾îindex1 on ͪߩѦ¿ë¾î using btree (¿ë¾î);
create index ͪߩѦ¿ë¾îindex2 on ͪߩѦ¿ë¾î using hash (ÝÂ×¾ÄÚµå);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into ͪߩѦ¿ë¾î values('ÄÄÇ»Å͵ð½ºÇ÷¹ÀÌ', 'ѦA01ß¾');
insert into ͪߩѦ¿ë¾î values('ÄÄÇ»Åͱ׷¡ÇȽº', 'ÝÂB10ñé');
insert into ͪߩѦ¿ë¾î values('ÄÄÇ»ÅÍÇÁ·Î±×·¡¸Ó', 'ìÑZ01ù»');
create table ìÞÙ¸æñÕè (ÈçäÆÉ± text, ÄüƳÍñó¤ varchar, ÇâÉß varchar(16));
create index ìÞÙ¸æñÕèindex1 on ìÞÙ¸æñÕè using btree (ÈçäÆÉ±);
create index ìÞÙ¸æñÕèindex2 on ìÞÙ¸æñÕè using hash (ÄüƳÍñó¤);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into ìÞÙ¸æñÕè values ('çÙæªäÆ', 'ç®ç®ÒïÊÀ', 'Æ¡A01Äî');
insert into ìÞÙ¸æñÕè values ('êûÝßäÆ', 'ØÂäãÈ´ÓîÄüƳ', 'ÄãB10Äã');
insert into ìÞÙ¸æñÕè values ('ó§ã£äÆ', 'Ó¡ÌÀϴǹȴÓîÄüƳ', 'ØíZ01Ħ');
--- /dev/null
+drop table Ó\8bËã\99CÓÃÕZ;
+create table Ó\8bËã\99CÓÃÕZ (ÓÃÕZ text, ·Öî\90¥³©`¥É varchar, \82俼1A¤À¤è char(16));
+create index Ó\8bËã\99CÓÃÕZindex1 on Ó\8bËã\99CÓÃÕZ using btree (ÓÃÕZ);
+create index Ó\8bËã\99CÓÃÕZindex2 on Ó\8bËã\99CÓÃÕZ using hash (·Öî\90¥³©`¥É);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
+insert into Ó\8bËã\99CÓÃÕZ values('¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤','\99CA01ÉÏ');
+insert into Ó\8bËã\99CÓÃÕZ values('¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹','·ÖB10ÖÐ');
+insert into Ó\8bËã\99CÓÃÕZ values('¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©`','ÈËZ01ÏÂ');
+vacuum Ó\8bËã\99CÓÃÕZ;
+select * from Ó\8bËã\99CÓÃÕZ;
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+----------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ |
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ |
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï |
+(3 rows)
+
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É = 'ÈËZ01ÏÂ';
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+--------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï |
+(1 row)
+
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É ~* 'ÈËz01ÏÂ';
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+--------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï |
+(1 row)
+
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É like '_Z01_';
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+--------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï |
+(1 row)
+
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É like '_Z%';
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+--------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï |
+(1 row)
+
+select * from Ó\8bËã\99CÓÃÕZ where ÓÃÕZ ~ '¥³¥ó¥Ô¥å©`¥¿[¥Ç¥°]';
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+----------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ |
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ |
+(2 rows)
+
+select * from Ó\8bËã\99CÓÃÕZ where ÓÃÕZ ~* '¥³¥ó¥Ô¥å©`¥¿[¥Ç¥°]';
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è
+----------------------------+------------+------------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ |
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ |
+(2 rows)
+
+select *,character_length(ÓÃÕZ) from Ó\8bËã\99CÓÃÕZ;
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è | character_length
+----------------------------+------------+------------+------------------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ | | 12
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ | | 13
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï | | 12
+(3 rows)
+
+select *,octet_length(ÓÃÕZ) from Ó\8bËã\99CÓÃÕZ;
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è | octet_length
+----------------------------+------------+------------+--------------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ | | 36
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ | | 39
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï | | 36
+(3 rows)
+
+select *,position('¥Ç' in ÓÃÕZ) from Ó\8bËã\99CÓÃÕZ;
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è | position
+----------------------------+------------+------------+----------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ | | 7
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ | | 0
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï | | 0
+(3 rows)
+
+select *,substring(ÓÃÕZ from 10 for 4) from Ó\8bËã\99CÓÃÕZ;
+ ÓÃÕZ | ·Öî\90¥³©`¥É | \82俼1a¤À¤è | substring
+----------------------------+------------+------------+-----------
+ ¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤ | \99CA01ÉÏ | | ¥×¥ì¥¤
+ ¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹ | ·ÖB10ÖÐ | | ¥£¥Ã¥¯¥¹
+ ¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©` | ÈËZ01Ï | | ¥é¥Þ©`
+(3 rows)
+
create table \92·×\92»»\92µ¡\92ÍÑ\92¸ì (\92ÍÑ\92¸ì text, \92ʬ\92Îà\92¥³\92¡¼\92¥É varchar, \92È÷\92¹Í1A\92¤À\92¤è char(16));
create index \92·×\92»»\92µ¡\92ÍÑ\92¸ìindex1 on \92·×\92»»\92µ¡\92ÍÑ\92¸ì using btree (\92ÍÑ\92¸ì);
create index \92·×\92»»\92µ¡\92ÍÑ\92¸ìindex2 on \92·×\92»»\92µ¡\92ÍÑ\92¸ì using hash (\92ʬ\92Îà\92¥³\92¡¼\92¥É);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into \92·×\92»»\92µ¡\92ÍÑ\92¸ì values('\92¥³\92¥ó\92¥Ô\92¥å\92¡¼\92¥¿\92¥Ç\92¥£\92¥¹\92¥×\92¥ì\92¥¤','\92µ¡A01\92¾å');
insert into \92·×\92»»\92µ¡\92ÍÑ\92¸ì values('\92¥³\92¥ó\92¥Ô\92¥å\92¡¼\92¥¿\92¥°\92¥é\92¥Õ\92¥£\92¥Ã\92¥¯\92¥¹','\92ʬB10\92Ãæ');
insert into \92·×\92»»\92µ¡\92ÍÑ\92¸ì values('\92¥³\92¥ó\92¥Ô\92¥å\92¡¼\92¥¿\92¥×\92¥í\92¥°\92¥é\92¥Þ\92¡¼','\92¿ÍZ01\92²¼');
create table \93ͪ\93ß©\93Ѧ\93¿ë\93¾î (\93¿ë\93¾î text, \93ÝÂ\93×¾\93ÄÚ\93µå varchar, \93ºñ\93°í1A\93¶ó\93±¸ char(16));
create index \93ͪ\93ß©\93Ѧ\93¿ë\93¾îindex1 on \93ͪ\93ß©\93Ѧ\93¿ë\93¾î using btree (\93¿ë\93¾î);
create index \93ͪ\93ß©\93Ѧ\93¿ë\93¾îindex2 on \93ͪ\93ß©\93Ѧ\93¿ë\93¾î using hash (\93ÝÂ\93×¾\93ÄÚ\93µå);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into \93ͪ\93ß©\93Ѧ\93¿ë\93¾î values('\93ÄÄ\93Ç»\93ÅÍ\93µð\93½º\93ÇÃ\93·¹\93ÀÌ', '\93ѦA01\93ß¾');
insert into \93ͪ\93ß©\93Ѧ\93¿ë\93¾î values('\93ÄÄ\93Ç»\93ÅÍ\93±×\93·¡\93ÇÈ\93½º', '\93ÝÂB10\93ñé');
insert into \93ͪ\93ß©\93Ѧ\93¿ë\93¾î values('\93ÄÄ\93Ç»\93ÅÍ\93ÇÁ\93·Î\93±×\93·¡\93¸Ó', '\93ìÑZ01\93ù»');
create table \8cv\8eZ\8b@\97p\8cê (\97p\8cê text, \95ª\97Þ\83R\81[\83h varchar, \94õ\8dl1A\82¾\82æ char(16));
create index \8cv\8eZ\8b@\97p\8cêindex1 on \8cv\8eZ\8b@\97p\8cê using btree (\97p\8cê);
create index \8cv\8eZ\8b@\97p\8cêindex2 on \8cv\8eZ\8b@\97p\8cê using hash (\95ª\97Þ\83R\81[\83h);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into \8cv\8eZ\8b@\97p\8cê values('\83R\83\93\83s\83\85\81[\83^\83f\83B\83X\83v\83\8c\83C','\8b@A01\8fã');
insert into \8cv\8eZ\8b@\97p\8cê values('\83R\83\93\83s\83\85\81[\83^\83O\83\89\83t\83B\83b\83N\83X','\95ªB10\92\86');
insert into \8cv\8eZ\8b@\97p\8cê values('\83R\83\93\83s\83\85\81[\83^\83v\83\8d\83O\83\89\83}\81[','\90lZ01\89º');
create table 計算機用語 (用語 text, 分類コード varchar, 備考1Aだよ char(16));
create index 計算機用語index1 on 計算機用語 using btree (用語);
create index 計算機用語index2 on 計算機用語 using hash (分類コード);
+WARNING: hash indexes are not WAL-logged and their use is discouraged
insert into 計算機用語 values('コンピュータディスプレイ','機A01上');
insert into 計算機用語 values('コンピュータグラフィックス','分B10中');
insert into 計算機用語 values('コンピュータプログラマー','人Z01下');
createdb -T template0 -l C -E UTF8 utf8 || exit 1
PSQL="psql -n -e -q"
-tests="euc_jp sjis euc_kr euc_cn euc_tw big5 utf8 mule_internal"
+
+# in the test list, client-only encodings must follow the server encoding
+# they're to be tested with; see hard-coded cases below
+tests="euc_jp sjis euc_kr euc_cn euc_tw big5 utf8 gb18030 mule_internal"
+
EXITCODE=0
unset PGCLIENTENCODING
export PGCLIENTENCODING
$PSQL euc_tw < sql/big5.sql > results/big5.out 2>&1
unset PGCLIENTENCODING
+ elif [ $i = gb18030 ];then
+ PGCLIENTENCODING=GB18030
+ export PGCLIENTENCODING
+ $PSQL utf8 < sql/gb18030.sql > results/gb18030.out 2>&1
+ unset PGCLIENTENCODING
else
dropdb $i >/dev/null 2>&1
createdb -T template0 -l C -E `echo $i | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` $i >/dev/null
--- /dev/null
+drop table Ó\8bËã\99CÓÃÕZ;
+create table Ó\8bËã\99CÓÃÕZ (ÓÃÕZ text, ·Öî\90¥³©`¥É varchar, \82俼1A¤À¤è char(16));
+create index Ó\8bËã\99CÓÃÕZindex1 on Ó\8bËã\99CÓÃÕZ using btree (ÓÃÕZ);
+create index Ó\8bËã\99CÓÃÕZindex2 on Ó\8bËã\99CÓÃÕZ using hash (·Öî\90¥³©`¥É);
+insert into Ó\8bËã\99CÓÃÕZ values('¥³¥ó¥Ô¥å©`¥¿¥Ç¥£¥¹¥×¥ì¥¤','\99CA01ÉÏ');
+insert into Ó\8bËã\99CÓÃÕZ values('¥³¥ó¥Ô¥å©`¥¿¥°¥é¥Õ¥£¥Ã¥¯¥¹','·ÖB10ÖÐ');
+insert into Ó\8bËã\99CÓÃÕZ values('¥³¥ó¥Ô¥å©`¥¿¥×¥í¥°¥é¥Þ©`','ÈËZ01ÏÂ');
+vacuum Ó\8bËã\99CÓÃÕZ;
+select * from Ó\8bËã\99CÓÃÕZ;
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É = 'ÈËZ01ÏÂ';
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É ~* 'ÈËz01ÏÂ';
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É like '_Z01_';
+select * from Ó\8bËã\99CÓÃÕZ where ·Öî\90¥³©`¥É like '_Z%';
+select * from Ó\8bËã\99CÓÃÕZ where ÓÃÕZ ~ '¥³¥ó¥Ô¥å©`¥¿[¥Ç¥°]';
+select * from Ó\8bËã\99CÓÃÕZ where ÓÃÕZ ~* '¥³¥ó¥Ô¥å©`¥¿[¥Ç¥°]';
+select *,character_length(ÓÃÕZ) from Ó\8bËã\99CÓÃÕZ;
+select *,octet_length(ÓÃÕZ) from Ó\8bËã\99CÓÃÕZ;
+select *,position('¥Ç' in ÓÃÕZ) from Ó\8bËã\99CÓÃÕZ;
+select *,substring(ÓÃÕZ from 10 for 4) from Ó\8bËã\99CÓÃÕZ;