diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index 55da30ab626..e9ae26ca793 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] post_commit_to = "commits@lists.mysql.com" post_push_to = "commits@lists.mysql.com" -tree_name = "mysql-5.1-rpl-merge" +tree_name = "mysql-5.5-next-mr" diff --git a/.bzrignore b/.bzrignore index 124424b7b11..87d108ff1f4 100644 --- a/.bzrignore +++ b/.bzrignore @@ -3074,3 +3074,4 @@ libmysqld/rpl_handler.cc dbug/tests libmysqld/sys_vars.cc libmysqld/keycaches.cc +client/dtoa.c diff --git a/include/m_ctype.h b/include/m_ctype.h index 700f373d677..35d40e8bfa4 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -40,9 +40,9 @@ extern "C" { typedef struct unicase_info_st { - uint16 toupper; - uint16 tolower; - uint16 sort; + uint32 toupper; + uint32 tolower; + uint32 sort; } MY_UNICASE_INFO; @@ -439,6 +439,14 @@ extern size_t my_caseup_mb(CHARSET_INFO *, char *src, size_t srclen, char *dst, size_t dstlen); extern size_t my_casedn_mb(CHARSET_INFO *, char *src, size_t srclen, char *dst, size_t dstlen); +extern size_t my_caseup_mb_varlen(CHARSET_INFO *, char *src, size_t srclen, + char *dst, size_t dstlen); +extern size_t my_casedn_mb_varlen(CHARSET_INFO *, char *src, size_t srclen, + char *dst, size_t dstlen); +extern size_t my_caseup_ujis(CHARSET_INFO *, char *src, size_t srclen, + char *dst, size_t dstlen); +extern size_t my_casedn_ujis(CHARSET_INFO *, char *src, size_t srclen, + char *dst, size_t dstlen); extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *); int my_wildcmp_mb(CHARSET_INFO *, diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental index 52422f5d140..34cf1f964b8 100644 --- a/mysql-test/collections/default.experimental +++ b/mysql-test/collections/default.experimental @@ -11,16 +11,28 @@ main.information_schema # Bug#47449 2009-09-19 alik main.inform main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically main.lock_multi_bug38691 @solaris # Bug#47792 2009-10-02 alik main.lock_multi_bug38691 times out sporadically on Solaris 10 main.log_tables # Bug#47924 2009-10-08 alik main.log_tables times out sporadically +main.outfile_loaddata @solaris # bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible) main.plugin # Bug#47146 Linking problem with example plugin when dtrace enabled +main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun +main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun + +perfschema.tampered_perfschema_table1 @windows # Bug#50478 2010-01-20 alik perfschema.tampered_perfschema_table1 fails sporadically on Windows and Solaris +perfschema.tampered_perfschema_table1 @solaris # Bug#50478 2010-01-20 alik perfschema.tampered_perfschema_table1 fails sporadically on Windows and Solaris rpl.rpl_get_master_version_and_clock* # Bug#49191 2009-12-01 Daogang rpl_get_master_version_and_clock failed on PB2: COM_REGISTER_SLAVE failed rpl.rpl_heartbeat_basic # BUG#43828 2009-10-22 luis fails sporadically rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails sporadically rpl.rpl_innodb_bug28430* # Bug#46029 rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris +rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows rpl.rpl_plugin_load* @solaris # Bug#47146 +rpl.rpl_row_sp011* @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun +rpl.rpl_slave_load_remove_tmpfile* @windows # Bug#50474 2010-01-20 alik rpl_slave_load_remove_tmpfile failed on windows debug enabled binary +rpl.rpl_sync* @windows # Bug#50473 2010-01-20 alik rpl_sync fails on windows debug enabled binaries rpl.rpl_timezone* # Bug#47017 2009-10-27 alik rpl_timezone fails on PB-2 with mismatch error +sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun + # Declare all NDB-tests in ndb and rpl_ndb test suites experimental. # Usually the test cases from ndb and rpl_ndb test suites are not run in PB, # but they run by gcov. diff --git a/mysql-test/collections/mysql-next-mr.push b/mysql-test/collections/mysql-next-mr.push index 7699e2532c3..b84f43eea7c 100644 --- a/mysql-test/collections/mysql-next-mr.push +++ b/mysql-test/collections/mysql-next-mr.push @@ -1,5 +1,5 @@ -perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars -perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl -perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl +perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema +perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema +perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 diff --git a/mysql-test/collections/mysql-trunk.push b/mysql-test/collections/mysql-trunk.push index 97101d5994c..b84f43eea7c 100644 --- a/mysql-test/collections/mysql-trunk.push +++ b/mysql-test/collections/mysql-trunk.push @@ -1,5 +1,5 @@ -perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl -perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl -perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl +perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema +perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema +perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 diff --git a/mysql-test/include/ddl_i18n.check_sp.inc b/mysql-test/include/ddl_i18n.check_sp.inc index bb1657d7072..c182f797847 100644 --- a/mysql-test/include/ddl_i18n.check_sp.inc +++ b/mysql-test/include/ddl_i18n.check_sp.inc @@ -36,19 +36,19 @@ SHOW PROCEDURE STATUS LIKE 'p4'| --echo --echo ---replace_column 16 CREATED 17 ALTERED +--replace_column 23 CREATED 24 ALTERED SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| --echo ---replace_column 16 CREATED 17 ALTERED +--replace_column 23 CREATED 24 ALTERED SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| --echo ---replace_column 16 CREATED 17 ALTERED +--replace_column 23 CREATED 24 ALTERED SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| --echo ---replace_column 16 CREATED 17 ALTERED +--replace_column 23 CREATED 24 ALTERED SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| # - Initialize the used variables (actual values don't matter); diff --git a/mysql-test/r/ctype_big5.result b/mysql-test/r/ctype_big5.result index 2efcf549608..d81534ac84e 100644 --- a/mysql-test/r/ctype_big5.result +++ b/mysql-test/r/ctype_big5.result @@ -277,3 +277,281 @@ hex(a) EE00 drop table t1; End of 5.0 tests +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=big5_chinese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(8) DEFAULT NULL, + `a` varchar(1) CHARACTER SET big5 NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SELECT COUNT(*) FROM t1; +COUNT(*) +28672 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1 WHERE a<>''; +COUNT(*) +13973 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +A2CF A2CF A2E9 A A a +A2D0 A2D0 A2EA B B b +A2D1 A2D1 A2EB C C c +A2D2 A2D2 A2EC D D d +A2D3 A2D3 A2ED E E e +A2D4 A2D4 A2EE F F f +A2D5 A2D5 A2EF G G g +A2D6 A2D6 A2F0 H H h +A2D7 A2D7 A2F1 I I i +A2D8 A2D8 A2F2 J J j +A2D9 A2D9 A2F3 K K k +A2DA A2DA A2F4 L L l +A2DB A2DB A2F5 M M m +A2DC A2DC A2F6 N N n +A2DD A2DD A2F7 O O o +A2DE A2DE A2F8 P P p +A2DF A2DF A2F9 Q Q q +A2E0 A2E0 A2FA R R r +A2E1 A2E1 A2FB S S s +A2E2 A2E2 A2FC T T t +A2E3 A2E3 A2FD U U u +A2E4 A2E4 A2FE V V v +A2E5 A2E5 A340 W W w +A2E6 A2E6 A341 X X x +A2E7 A2E7 A342 Y Y y +A2E8 A2E8 A343 Z Z z +A2E9 A2CF A2E9 a A a +A2EA A2D0 A2EA b B b +A2EB A2D1 A2EB c C c +A2EC A2D2 A2EC d D d +A2ED A2D3 A2ED e E e +A2EE A2D4 A2EE f F f +A2EF A2D5 A2EF g G g +A2F0 A2D6 A2F0 h H h +A2F1 A2D7 A2F1 i I i +A2F2 A2D8 A2F2 j J j +A2F3 A2D9 A2F3 k K k +A2F4 A2DA A2F4 l L l +A2F5 A2DB A2F5 m M m +A2F6 A2DC A2F6 n N n +A2F7 A2DD A2F7 o O o +A2F8 A2DE A2F8 p P p +A2F9 A2DF A2F9 q Q q +A2FA A2E0 A2FA r R r +A2FB A2E1 A2FB s S s +A2FC A2E2 A2FC t T t +A2FD A2E3 A2FD u U u +A2FE A2E4 A2FE v V v +A340 A2E5 A340 w W w +A341 A2E6 A341 x X x +A342 A2E7 A342 y Y y +A343 A2E8 A343 z Z z +A344 A344 A35C Α Α α +A345 A345 A35D Β Β β +A346 A346 A35E Γ Γ γ +A347 A347 A35F Δ Δ δ +A348 A348 A360 Ε Ε ε +A349 A349 A361 Ζ Ζ ζ +A34A A34A A362 Η Η η +A34B A34B A363 Θ Θ θ +A34C A34C A364 Ι Ι ι +A34D A34D A365 Κ Κ κ +A34E A34E A366 Λ Λ λ +A34F A34F A367 Μ Μ μ +A350 A350 A368 Ν Ν ν +A351 A351 A369 Ξ Ξ ξ +A352 A352 A36A Ο Ο ο +A353 A353 A36B Π Π π +A354 A354 A36C Ρ Ρ ρ +A355 A355 A36D Σ Σ σ +A356 A356 A36E Τ Τ τ +A357 A357 A36F Υ Υ υ +A358 A358 A370 Φ Φ φ +A359 A359 A371 Χ Χ χ +A35A A35A A372 Ψ Ψ ψ +A35B A35B A373 Ω Ω ω +A35C A344 A35C α Α α +A35D A345 A35D β Β β +A35E A346 A35E γ Γ γ +A35F A347 A35F δ Δ δ +A360 A348 A360 ε Ε ε +A361 A349 A361 ζ Ζ ζ +A362 A34A A362 η Η η +A363 A34B A363 θ Θ θ +A364 A34C A364 ι Ι ι +A365 A34D A365 κ Κ κ +A366 A34E A366 λ Λ λ +A367 A34F A367 μ Μ μ +A368 A350 A368 ν Ν ν +A369 A351 A369 ξ Ξ ξ +A36A A352 A36A ο Ο ο +A36B A353 A36B π Π π +A36C A354 A36C ρ Ρ ρ +A36D A355 A36D σ Σ σ +A36E A356 A36E τ Τ τ +A36F A357 A36F υ Υ υ +A370 A358 A370 φ Φ φ +A371 A359 A371 χ Χ χ +A372 A35A A372 ψ Ψ ψ +A373 A35B A373 ω Ω ω +C7B1 C7B1 C7CC Д Д д +C7B2 C7B2 C7CD Е Е е +C7B3 C7B3 C7CE Ё Ё ё +C7B4 C7B4 C7CF Ж Ж ж +C7B5 C7B5 C7D0 З З з +C7B6 C7B6 C7D1 И И и +C7B7 C7B7 C7D2 Й Й й +C7B8 C7B8 C7D3 К К к +C7B9 C7B9 C7D4 Л Л л +C7BA C7BA C7D5 М М м +C7BB C7BB C7DC У У у +C7BC C7BC C7DD Ф Ф ф +C7BD C7BD C7DE Х Х х +C7BE C7BE C7DF Ц Ц ц +C7BF C7BF C7E0 Ч Ч ч +C7C0 C7C0 C7E1 Ш Ш ш +C7C1 C7C1 C7E2 Щ Щ щ +C7C2 C7C2 C7E3 Ъ Ъ ъ +C7C3 C7C3 C7E4 Ы Ы ы +C7C4 C7C4 C7E5 Ь Ь ь +C7C5 C7C5 C7E6 Э Э э +C7C6 C7C6 C7E7 Ю Ю ю +C7C7 C7C7 C7E8 Я Я я +C7CC C7B1 C7CC д Д д +C7CD C7B2 C7CD е Е е +C7CE C7B3 C7CE ё Ё ё +C7CF C7B4 C7CF ж Ж ж +C7D0 C7B5 C7D0 з З з +C7D1 C7B6 C7D1 и И и +C7D2 C7B7 C7D2 й Й й +C7D3 C7B8 C7D3 к К к +C7D4 C7B9 C7D4 л Л л +C7D5 C7BA C7D5 м М м +C7DC C7BB C7DC у У у +C7DD C7BC C7DD ф Ф ф +C7DE C7BD C7DE х Х х +C7DF C7BE C7DF ц Ц ц +C7E0 C7BF C7E0 ч Ч ч +C7E1 C7C0 C7E1 ш Ш ш +C7E2 C7C1 C7E2 щ Щ щ +C7E3 C7C2 C7E3 ъ Ъ ъ +C7E4 C7C3 C7E4 ы Ы ы +C7E5 C7C4 C7E5 ь Ь ь +C7E6 C7C5 C7E6 э Э э +C7E7 C7C6 C7E7 ю Ю ю +C7E8 C7C7 C7E8 я Я я +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A2B9 Ⅰ +A2BA Ⅱ +A2BB Ⅲ +A2BC Ⅳ +A2BD Ⅴ +A2BE Ⅵ +A2BF Ⅶ +A2C0 Ⅷ +A2C1 Ⅸ +A2C2 Ⅹ +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +C7C8 а +C7C9 б +C7CA в +C7CB г +C7D6 н +C7D7 о +C7D8 п +C7D9 р +C7DA с +C7DB т +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_cp932_binlog_stm.result b/mysql-test/r/ctype_cp932_binlog_stm.result index f5ae318222d..47ff51a9c44 100644 --- a/mysql-test/r/ctype_cp932_binlog_stm.result +++ b/mysql-test/r/ctype_cp932_binlog_stm.result @@ -63,3 +63,331 @@ hex(a) hex(lower(a)) hex(upper(a)) 8372835E 8372835E 8372835E DROP TABLE t1; End of 5.1 tests +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=cp932_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +INSERT t1 (code) SELECT head FROM head +WHERE (head BETWEEN 'A1' AND 'DF') +ORDER BY head; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(8) DEFAULT NULL, + `a` varchar(1) CHARACTER SET cp932 NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1; +COUNT(*) +14623 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1; +COUNT(*) +63 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +COUNT(*) +11280 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 +WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) +ORDER BY code; +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +8260 8260 8281 A A a +8261 8261 8282 B B b +8262 8262 8283 C C c +8263 8263 8284 D D d +8264 8264 8285 E E e +8265 8265 8286 F F f +8266 8266 8287 G G g +8267 8267 8288 H H h +8268 8268 8289 I I i +8269 8269 828A J J j +826A 826A 828B K K k +826B 826B 828C L L l +826C 826C 828D M M m +826D 826D 828E N N n +826E 826E 828F O O o +826F 826F 8290 P P p +8270 8270 8291 Q Q q +8271 8271 8292 R R r +8272 8272 8293 S S s +8273 8273 8294 T T t +8274 8274 8295 U U u +8275 8275 8296 V V v +8276 8276 8297 W W w +8277 8277 8298 X X x +8278 8278 8299 Y Y y +8279 8279 829A Z Z z +8281 8260 8281 a A a +8282 8261 8282 b B b +8283 8262 8283 c C c +8284 8263 8284 d D d +8285 8264 8285 e E e +8286 8265 8286 f F f +8287 8266 8287 g G g +8288 8267 8288 h H h +8289 8268 8289 i I i +828A 8269 828A j J j +828B 826A 828B k K k +828C 826B 828C l L l +828D 826C 828D m M m +828E 826D 828E n N n +828F 826E 828F o O o +8290 826F 8290 p P p +8291 8270 8291 q Q q +8292 8271 8292 r R r +8293 8272 8293 s S s +8294 8273 8294 t T t +8295 8274 8295 u U u +8296 8275 8296 v V v +8297 8276 8297 w W w +8298 8277 8298 x X x +8299 8278 8299 y Y y +829A 8279 829A z Z z +839F 839F 83BF Α Α α +83A0 83A0 83C0 Β Β β +83A1 83A1 83C1 Γ Γ γ +83A2 83A2 83C2 Δ Δ δ +83A3 83A3 83C3 Ε Ε ε +83A4 83A4 83C4 Ζ Ζ ζ +83A5 83A5 83C5 Η Η η +83A6 83A6 83C6 Θ Θ θ +83A7 83A7 83C7 Ι Ι ι +83A8 83A8 83C8 Κ Κ κ +83A9 83A9 83C9 Λ Λ λ +83AA 83AA 83CA Μ Μ μ +83AB 83AB 83CB Ν Ν ν +83AC 83AC 83CC Ξ Ξ ξ +83AD 83AD 83CD Ο Ο ο +83AE 83AE 83CE Π Π π +83AF 83AF 83CF Ρ Ρ ρ +83B0 83B0 83D0 Σ Σ σ +83B1 83B1 83D1 Τ Τ τ +83B2 83B2 83D2 Υ Υ υ +83B3 83B3 83D3 Φ Φ φ +83B4 83B4 83D4 Χ Χ χ +83B5 83B5 83D5 Ψ Ψ ψ +83B6 83B6 83D6 Ω Ω ω +83BF 839F 83BF α Α α +83C0 83A0 83C0 β Β β +83C1 83A1 83C1 γ Γ γ +83C2 83A2 83C2 δ Δ δ +83C3 83A3 83C3 ε Ε ε +83C4 83A4 83C4 ζ Ζ ζ +83C5 83A5 83C5 η Η η +83C6 83A6 83C6 θ Θ θ +83C7 83A7 83C7 ι Ι ι +83C8 83A8 83C8 κ Κ κ +83C9 83A9 83C9 λ Λ λ +83CA 83AA 83CA μ Μ μ +83CB 83AB 83CB ν Ν ν +83CC 83AC 83CC ξ Ξ ξ +83CD 83AD 83CD ο Ο ο +83CE 83AE 83CE π Π π +83CF 83AF 83CF ρ Ρ ρ +83D0 83B0 83D0 σ Σ σ +83D1 83B1 83D1 τ Τ τ +83D2 83B2 83D2 υ Υ υ +83D3 83B3 83D3 φ Φ φ +83D4 83B4 83D4 χ Χ χ +83D5 83B5 83D5 ψ Ψ ψ +83D6 83B6 83D6 ω Ω ω +8440 8440 8470 А А а +8441 8441 8471 Б Б б +8442 8442 8472 В В в +8443 8443 8473 Г Г г +8444 8444 8474 Д Д д +8445 8445 8475 Е Е е +8446 8446 8476 Ё Ё ё +8447 8447 8477 Ж Ж ж +8448 8448 8478 З З з +8449 8449 8479 И И и +844A 844A 847A Й Й й +844B 844B 847B К К к +844C 844C 847C Л Л л +844D 844D 847D М М м +844E 844E 847E Н Н н +844F 844F 8480 О О о +8450 8450 8481 П П п +8451 8451 8482 Р Р р +8452 8452 8483 С С с +8453 8453 8484 Т Т т +8454 8454 8485 У У у +8455 8455 8486 Ф Ф ф +8456 8456 8487 Х Х х +8457 8457 8488 Ц Ц ц +8458 8458 8489 Ч Ч ч +8459 8459 848A Ш Ш ш +845A 845A 848B Щ Щ щ +845B 845B 848C Ъ Ъ ъ +845C 845C 848D Ы Ы ы +845D 845D 848E Ь Ь ь +845E 845E 848F Э Э э +845F 845F 8490 Ю Ю ю +8460 8460 8491 Я Я я +8470 8440 8470 а А а +8471 8441 8471 б Б б +8472 8442 8472 в В в +8473 8443 8473 г Г г +8474 8444 8474 д Д д +8475 8445 8475 е Е е +8476 8446 8476 ё Ё ё +8477 8447 8477 ж Ж ж +8478 8448 8478 з З з +8479 8449 8479 и И и +847A 844A 847A й Й й +847B 844B 847B к К к +847C 844C 847C л Л л +847D 844D 847D м М м +847E 844E 847E н Н н +8480 844F 8480 о О о +8481 8450 8481 п П п +8482 8451 8482 р Р р +8483 8452 8483 с С с +8484 8453 8484 т Т т +8485 8454 8485 у У у +8486 8455 8486 ф Ф ф +8487 8456 8487 х Х х +8488 8457 8488 ц Ц ц +8489 8458 8489 ч Ч ч +848A 8459 848A ш Ш ш +848B 845A 848B щ Щ щ +848C 845B 848C ъ Ъ ъ +848D 845C 848D ы Ы ы +848E 845D 848E ь Ь ь +848F 845E 848F э Э э +8490 845F 8490 ю Ю ю +8491 8460 8491 я Я я +8754 8754 EEEF Ⅰ Ⅰ ⅰ +8755 8755 EEF0 Ⅱ Ⅱ ⅱ +8756 8756 EEF1 Ⅲ Ⅲ ⅲ +8757 8757 EEF2 Ⅳ Ⅳ ⅳ +8758 8758 EEF3 Ⅴ Ⅴ ⅴ +8759 8759 EEF4 Ⅵ Ⅵ ⅵ +875A 875A EEF5 Ⅶ Ⅶ ⅶ +875B 875B EEF6 Ⅷ Ⅷ ⅷ +875C 875C EEF7 Ⅸ Ⅸ ⅸ +875D 875D EEF8 Ⅹ Ⅹ ⅹ +EEEF 8754 EEEF ⅰ Ⅰ ⅰ +EEF0 8755 EEF0 ⅱ Ⅱ ⅱ +EEF1 8756 EEF1 ⅲ Ⅲ ⅲ +EEF2 8757 EEF2 ⅳ Ⅳ ⅳ +EEF3 8758 EEF3 ⅴ Ⅴ ⅴ +EEF4 8759 EEF4 ⅵ Ⅵ ⅵ +EEF5 875A EEF5 ⅶ Ⅶ ⅶ +EEF6 875B EEF6 ⅷ Ⅷ ⅷ +EEF7 875C EEF7 ⅸ Ⅸ ⅸ +EEF8 875D EEF8 ⅹ Ⅹ ⅹ +FA40 FA4A FA40 ⅰ Ⅰ ⅰ +FA41 FA4B FA41 ⅱ Ⅱ ⅱ +FA42 FA4C FA42 ⅲ Ⅲ ⅲ +FA43 FA4D FA43 ⅳ Ⅳ ⅳ +FA44 FA4E FA44 ⅴ Ⅴ ⅴ +FA45 FA4F FA45 ⅵ Ⅵ ⅵ +FA46 FA50 FA46 ⅶ Ⅶ ⅶ +FA47 FA51 FA47 ⅷ Ⅷ ⅷ +FA48 FA52 FA48 ⅸ Ⅸ ⅸ +FA49 FA53 FA49 ⅹ Ⅹ ⅹ +FA4A FA4A FA40 Ⅰ Ⅰ ⅰ +FA4B FA4B FA41 Ⅱ Ⅱ ⅱ +FA4C FA4C FA42 Ⅲ Ⅲ ⅲ +FA4D FA4D FA43 Ⅳ Ⅳ ⅳ +FA4E FA4E FA44 Ⅴ Ⅴ ⅴ +FA4F FA4F FA45 Ⅵ Ⅵ ⅵ +FA50 FA50 FA46 Ⅶ Ⅶ ⅶ +FA51 FA51 FA47 Ⅷ Ⅷ ⅷ +FA52 FA52 FA48 Ⅸ Ⅸ ⅸ +FA53 FA53 FA49 Ⅹ Ⅹ ⅹ +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +81F0 Å +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_eucjpms.result b/mysql-test/r/ctype_eucjpms.result index 21aa38b7fe6..c8ece9a28cd 100755 --- a/mysql-test/r/ctype_eucjpms.result +++ b/mysql-test/r/ctype_eucjpms.result @@ -9859,3 +9859,567 @@ hex(convert(_eucjpms 0xA5FE41 using ucs2)) select hex(convert(_eucjpms 0x8FABF841 using ucs2)); hex(convert(_eucjpms 0x8FABF841 using ucs2)) 003F0041 +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=eucjpms_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0; +INSERT INTO t1 (code) SELECT concat('8E', head) FROM head +WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head; +INSERT INTO t1 (code) SELECT concat(head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +INSERT INTO t1 (code) SELECT concat('8F', head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(6) CHARACTER SET eucjpms NOT NULL DEFAULT '', + `a` varchar(1) CHARACTER SET eucjpms NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1; +COUNT(*) +56959 +SELECT COUNT(*) FROM t1 WHERE a<>''; +COUNT(*) +17735 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +COUNT(*) +8899 +SELECT * FROM t1 WHERE CHAR_LENGTH(a)=2; +code a +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3; +COUNT(*) +8836 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code; +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +8FA6E1 8FA6E1 8FA6F1 Ά Ά ά +8FA6E2 8FA6E2 8FA6F2 Έ Έ έ +8FA6E3 8FA6E3 8FA6F3 Ή Ή ή +8FA6E4 8FA6E4 8FA6F4 Ί Ί ί +8FA6E5 8FA6E5 8FA6F5 Ϊ Ϊ ϊ +8FA6E7 8FA6E7 8FA6F7 Ό Ό ό +8FA6E9 8FA6E9 8FA6F9 Ύ Ύ ύ +8FA6EA 8FA6EA 8FA6FA Ϋ Ϋ ϋ +8FA6EC 8FA6EC 8FA6FC Ώ Ώ ώ +8FA6F1 8FA6E1 8FA6F1 ά Ά ά +8FA6F2 8FA6E2 8FA6F2 έ Έ έ +8FA6F3 8FA6E3 8FA6F3 ή Ή ή +8FA6F4 8FA6E4 8FA6F4 ί Ί ί +8FA6F5 8FA6E5 8FA6F5 ϊ Ϊ ϊ +8FA6F7 8FA6E7 8FA6F7 ό Ό ό +8FA6F8 A6B2 8FA6F8 ς Σ ς +8FA6F9 8FA6E9 8FA6F9 ύ Ύ ύ +8FA6FA 8FA6EA 8FA6FA ϋ Ϋ ϋ +8FA6FC 8FA6EC 8FA6FC ώ Ώ ώ +8FA7C2 8FA7C2 8FA7F2 Ђ Ђ ђ +8FA7C3 8FA7C3 8FA7F3 Ѓ Ѓ ѓ +8FA7C4 8FA7C4 8FA7F4 Є Є є +8FA7C5 8FA7C5 8FA7F5 Ѕ Ѕ ѕ +8FA7C6 8FA7C6 8FA7F6 І І і +8FA7C7 8FA7C7 8FA7F7 Ї Ї ї +8FA7C8 8FA7C8 8FA7F8 Ј Ј ј +8FA7C9 8FA7C9 8FA7F9 Љ Љ љ +8FA7CA 8FA7CA 8FA7FA Њ Њ њ +8FA7CB 8FA7CB 8FA7FB Ћ Ћ ћ +8FA7CC 8FA7CC 8FA7FC Ќ Ќ ќ +8FA7CD 8FA7CD 8FA7FD Ў Ў ў +8FA7CE 8FA7CE 8FA7FE Џ Џ џ +8FA7F2 8FA7C2 8FA7F2 ђ Ђ ђ +8FA7F3 8FA7C3 8FA7F3 ѓ Ѓ ѓ +8FA7F4 8FA7C4 8FA7F4 є Є є +8FA7F5 8FA7C5 8FA7F5 ѕ Ѕ ѕ +8FA7F6 8FA7C6 8FA7F6 і І і +8FA7F7 8FA7C7 8FA7F7 ї Ї ї +8FA7F8 8FA7C8 8FA7F8 ј Ј ј +8FA7F9 8FA7C9 8FA7F9 љ Љ љ +8FA7FA 8FA7CA 8FA7FA њ Њ њ +8FA7FB 8FA7CB 8FA7FB ћ Ћ ћ +8FA7FC 8FA7CC 8FA7FC ќ Ќ ќ +8FA7FD 8FA7CD 8FA7FD ў Ў ў +8FA7FE 8FA7CE 8FA7FE џ Џ џ +8FA9A1 8FA9A1 8FA9C1 Æ Æ æ +8FA9A2 8FA9A2 8FA9C2 Đ Đ đ +8FA9A4 8FA9A4 8FA9C4 Ħ Ħ ħ +8FA9A6 8FA9A6 8FA9C6 IJ IJ ij +8FA9A8 8FA9A8 8FA9C8 Ł Ł ł +8FA9A9 8FA9A9 8FA9C9 Ŀ Ŀ ŀ +8FA9AB 8FA9AB 8FA9CB Ŋ Ŋ ŋ +8FA9AC 8FA9AC 8FA9CC Ø Ø ø +8FA9AD 8FA9AD 8FA9CD Œ Œ œ +8FA9AF 8FA9AF 8FA9CF Ŧ Ŧ ŧ +8FA9B0 8FA9B0 8FA9D0 Þ Þ þ +8FA9C1 8FA9A1 8FA9C1 æ Æ æ +8FA9C2 8FA9A2 8FA9C2 đ Đ đ +8FA9C4 8FA9A4 8FA9C4 ħ Ħ ħ +8FA9C5 49 8FA9C5 ı I ı +8FA9C6 8FA9A6 8FA9C6 ij IJ ij +8FA9C8 8FA9A8 8FA9C8 ł Ł ł +8FA9C9 8FA9A9 8FA9C9 ŀ Ŀ ŀ +8FA9CB 8FA9AB 8FA9CB ŋ Ŋ ŋ +8FA9CC 8FA9AC 8FA9CC ø Ø ø +8FA9CD 8FA9AD 8FA9CD œ Œ œ +8FA9CF 8FA9AF 8FA9CF ŧ Ŧ ŧ +8FA9D0 8FA9B0 8FA9D0 þ Þ þ +8FAAA1 8FAAA1 8FABA1 Á Á á +8FAAA2 8FAAA2 8FABA2 À À à +8FAAA3 8FAAA3 8FABA3 Ä Ä ä +8FAAA4 8FAAA4 8FABA4   â +8FAAA5 8FAAA5 8FABA5 Ă Ă ă +8FAAA6 8FAAA6 8FABA6 Ǎ Ǎ ǎ +8FAAA7 8FAAA7 8FABA7 Ā Ā ā +8FAAA8 8FAAA8 8FABA8 Ą Ą ą +8FAAA9 8FAAA9 8FABA9 Å Å å +8FAAAA 8FAAAA 8FABAA à à ã +8FAAAB 8FAAAB 8FABAB Ć Ć ć +8FAAAC 8FAAAC 8FABAC Ĉ Ĉ ĉ +8FAAAD 8FAAAD 8FABAD Č Č č +8FAAAE 8FAAAE 8FABAE Ç Ç ç +8FAAAF 8FAAAF 8FABAF Ċ Ċ ċ +8FAAB0 8FAAB0 8FABB0 Ď Ď ď +8FAAB1 8FAAB1 8FABB1 É É é +8FAAB2 8FAAB2 8FABB2 È È è +8FAAB3 8FAAB3 8FABB3 Ë Ë ë +8FAAB4 8FAAB4 8FABB4 Ê Ê ê +8FAAB5 8FAAB5 8FABB5 Ě Ě ě +8FAAB6 8FAAB6 8FABB6 Ė Ė ė +8FAAB7 8FAAB7 8FABB7 Ē Ē ē +8FAAB8 8FAAB8 8FABB8 Ę Ę ę +8FAABA 8FAABA 8FABBA Ĝ Ĝ ĝ +8FAABB 8FAABB 8FABBB Ğ Ğ ğ +8FAABD 8FAABD 8FABBD Ġ Ġ ġ +8FAABE 8FAABE 8FABBE Ĥ Ĥ ĥ +8FAABF 8FAABF 8FABBF Í Í í +8FAAC0 8FAAC0 8FABC0 Ì Ì ì +8FAAC1 8FAAC1 8FABC1 Ï Ï ï +8FAAC2 8FAAC2 8FABC2 Î Î î +8FAAC3 8FAAC3 8FABC3 Ǐ Ǐ ǐ +8FAAC4 8FAAC4 69 İ İ i +8FAAC5 8FAAC5 8FABC5 Ī Ī ī +8FAAC6 8FAAC6 8FABC6 Į Į į +8FAAC7 8FAAC7 8FABC7 Ĩ Ĩ ĩ +8FAAC8 8FAAC8 8FABC8 Ĵ Ĵ ĵ +8FAAC9 8FAAC9 8FABC9 Ķ Ķ ķ +8FAACA 8FAACA 8FABCA Ĺ Ĺ ĺ +8FAACB 8FAACB 8FABCB Ľ Ľ ľ +8FAACC 8FAACC 8FABCC Ļ Ļ ļ +8FAACD 8FAACD 8FABCD Ń Ń ń +8FAACE 8FAACE 8FABCE Ň Ň ň +8FAACF 8FAACF 8FABCF Ņ Ņ ņ +8FAAD0 8FAAD0 8FABD0 Ñ Ñ ñ +8FAAD1 8FAAD1 8FABD1 Ó Ó ó +8FAAD2 8FAAD2 8FABD2 Ò Ò ò +8FAAD3 8FAAD3 8FABD3 Ö Ö ö +8FAAD4 8FAAD4 8FABD4 Ô Ô ô +8FAAD5 8FAAD5 8FABD5 Ǒ Ǒ ǒ +8FAAD6 8FAAD6 8FABD6 Ő Ő ő +8FAAD7 8FAAD7 8FABD7 Ō Ō ō +8FAAD8 8FAAD8 8FABD8 Õ Õ õ +8FAAD9 8FAAD9 8FABD9 Ŕ Ŕ ŕ +8FAADA 8FAADA 8FABDA Ř Ř ř +8FAADB 8FAADB 8FABDB Ŗ Ŗ ŗ +8FAADC 8FAADC 8FABDC Ś Ś ś +8FAADD 8FAADD 8FABDD Ŝ Ŝ ŝ +8FAADE 8FAADE 8FABDE Š Š š +8FAADF 8FAADF 8FABDF Ş Ş ş +8FAAE0 8FAAE0 8FABE0 Ť Ť ť +8FAAE1 8FAAE1 8FABE1 Ţ Ţ ţ +8FAAE2 8FAAE2 8FABE2 Ú Ú ú +8FAAE3 8FAAE3 8FABE3 Ù Ù ù +8FAAE4 8FAAE4 8FABE4 Ü Ü ü +8FAAE5 8FAAE5 8FABE5 Û Û û +8FAAE6 8FAAE6 8FABE6 Ŭ Ŭ ŭ +8FAAE7 8FAAE7 8FABE7 Ǔ Ǔ ǔ +8FAAE8 8FAAE8 8FABE8 Ű Ű ű +8FAAE9 8FAAE9 8FABE9 Ū Ū ū +8FAAEA 8FAAEA 8FABEA Ų Ų ų +8FAAEB 8FAAEB 8FABEB Ů Ů ů +8FAAEC 8FAAEC 8FABEC Ũ Ũ ũ +8FAAED 8FAAED 8FABED Ǘ Ǘ ǘ +8FAAEE 8FAAEE 8FABEE Ǜ Ǜ ǜ +8FAAEF 8FAAEF 8FABEF Ǚ Ǚ ǚ +8FAAF0 8FAAF0 8FABF0 Ǖ Ǖ ǖ +8FAAF1 8FAAF1 8FABF1 Ŵ Ŵ ŵ +8FAAF2 8FAAF2 8FABF2 Ý Ý ý +8FAAF3 8FAAF3 8FABF3 Ÿ Ÿ ÿ +8FAAF4 8FAAF4 8FABF4 Ŷ Ŷ ŷ +8FAAF5 8FAAF5 8FABF5 Ź Ź ź +8FAAF6 8FAAF6 8FABF6 Ž Ž ž +8FAAF7 8FAAF7 8FABF7 Ż Ż ż +8FABA1 8FAAA1 8FABA1 á Á á +8FABA2 8FAAA2 8FABA2 à À à +8FABA3 8FAAA3 8FABA3 ä Ä ä +8FABA4 8FAAA4 8FABA4 â  â +8FABA5 8FAAA5 8FABA5 ă Ă ă +8FABA6 8FAAA6 8FABA6 ǎ Ǎ ǎ +8FABA7 8FAAA7 8FABA7 ā Ā ā +8FABA8 8FAAA8 8FABA8 ą Ą ą +8FABA9 8FAAA9 8FABA9 å Å å +8FABAA 8FAAAA 8FABAA ã à ã +8FABAB 8FAAAB 8FABAB ć Ć ć +8FABAC 8FAAAC 8FABAC ĉ Ĉ ĉ +8FABAD 8FAAAD 8FABAD č Č č +8FABAE 8FAAAE 8FABAE ç Ç ç +8FABAF 8FAAAF 8FABAF ċ Ċ ċ +8FABB0 8FAAB0 8FABB0 ď Ď ď +8FABB1 8FAAB1 8FABB1 é É é +8FABB2 8FAAB2 8FABB2 è È è +8FABB3 8FAAB3 8FABB3 ë Ë ë +8FABB4 8FAAB4 8FABB4 ê Ê ê +8FABB5 8FAAB5 8FABB5 ě Ě ě +8FABB6 8FAAB6 8FABB6 ė Ė ė +8FABB7 8FAAB7 8FABB7 ē Ē ē +8FABB8 8FAAB8 8FABB8 ę Ę ę +8FABBA 8FAABA 8FABBA ĝ Ĝ ĝ +8FABBB 8FAABB 8FABBB ğ Ğ ğ +8FABBD 8FAABD 8FABBD ġ Ġ ġ +8FABBE 8FAABE 8FABBE ĥ Ĥ ĥ +8FABBF 8FAABF 8FABBF í Í í +8FABC0 8FAAC0 8FABC0 ì Ì ì +8FABC1 8FAAC1 8FABC1 ï Ï ï +8FABC2 8FAAC2 8FABC2 î Î î +8FABC3 8FAAC3 8FABC3 ǐ Ǐ ǐ +8FABC5 8FAAC5 8FABC5 ī Ī ī +8FABC6 8FAAC6 8FABC6 į Į į +8FABC7 8FAAC7 8FABC7 ĩ Ĩ ĩ +8FABC8 8FAAC8 8FABC8 ĵ Ĵ ĵ +8FABC9 8FAAC9 8FABC9 ķ Ķ ķ +8FABCA 8FAACA 8FABCA ĺ Ĺ ĺ +8FABCB 8FAACB 8FABCB ľ Ľ ľ +8FABCC 8FAACC 8FABCC ļ Ļ ļ +8FABCD 8FAACD 8FABCD ń Ń ń +8FABCE 8FAACE 8FABCE ň Ň ň +8FABCF 8FAACF 8FABCF ņ Ņ ņ +8FABD0 8FAAD0 8FABD0 ñ Ñ ñ +8FABD1 8FAAD1 8FABD1 ó Ó ó +8FABD2 8FAAD2 8FABD2 ò Ò ò +8FABD3 8FAAD3 8FABD3 ö Ö ö +8FABD4 8FAAD4 8FABD4 ô Ô ô +8FABD5 8FAAD5 8FABD5 ǒ Ǒ ǒ +8FABD6 8FAAD6 8FABD6 ő Ő ő +8FABD7 8FAAD7 8FABD7 ō Ō ō +8FABD8 8FAAD8 8FABD8 õ Õ õ +8FABD9 8FAAD9 8FABD9 ŕ Ŕ ŕ +8FABDA 8FAADA 8FABDA ř Ř ř +8FABDB 8FAADB 8FABDB ŗ Ŗ ŗ +8FABDC 8FAADC 8FABDC ś Ś ś +8FABDD 8FAADD 8FABDD ŝ Ŝ ŝ +8FABDE 8FAADE 8FABDE š Š š +8FABDF 8FAADF 8FABDF ş Ş ş +8FABE0 8FAAE0 8FABE0 ť Ť ť +8FABE1 8FAAE1 8FABE1 ţ Ţ ţ +8FABE2 8FAAE2 8FABE2 ú Ú ú +8FABE3 8FAAE3 8FABE3 ù Ù ù +8FABE4 8FAAE4 8FABE4 ü Ü ü +8FABE5 8FAAE5 8FABE5 û Û û +8FABE6 8FAAE6 8FABE6 ŭ Ŭ ŭ +8FABE7 8FAAE7 8FABE7 ǔ Ǔ ǔ +8FABE8 8FAAE8 8FABE8 ű Ű ű +8FABE9 8FAAE9 8FABE9 ū Ū ū +8FABEA 8FAAEA 8FABEA ų Ų ų +8FABEB 8FAAEB 8FABEB ů Ů ů +8FABEC 8FAAEC 8FABEC ũ Ũ ũ +8FABED 8FAAED 8FABED ǘ Ǘ ǘ +8FABEE 8FAAEE 8FABEE ǜ Ǜ ǜ +8FABEF 8FAAEF 8FABEF ǚ Ǚ ǚ +8FABF0 8FAAF0 8FABF0 ǖ Ǖ ǖ +8FABF1 8FAAF1 8FABF1 ŵ Ŵ ŵ +8FABF2 8FAAF2 8FABF2 ý Ý ý +8FABF3 8FAAF3 8FABF3 ÿ Ÿ ÿ +8FABF4 8FAAF4 8FABF4 ŷ Ŷ ŷ +8FABF5 8FAAF5 8FABF5 ź Ź ź +8FABF6 8FAAF6 8FABF6 ž Ž ž +8FABF7 8FAAF7 8FABF7 ż Ż ż +8FF3F3 8FF3FD 8FF3F3 ⅰ Ⅰ ⅰ +8FF3F4 8FF3FE 8FF3F4 ⅱ Ⅱ ⅱ +8FF3F5 8FF4A1 8FF3F5 ⅲ Ⅲ ⅲ +8FF3F6 8FF4A2 8FF3F6 ⅳ Ⅳ ⅳ +8FF3F7 8FF4A3 8FF3F7 ⅴ Ⅴ ⅴ +8FF3F8 8FF4A4 8FF3F8 ⅵ Ⅵ ⅵ +8FF3F9 8FF4A5 8FF3F9 ⅶ Ⅶ ⅶ +8FF3FA 8FF4A6 8FF3FA ⅷ Ⅷ ⅷ +8FF3FB 8FF4A7 8FF3FB ⅸ Ⅸ ⅸ +8FF3FC 8FF4A8 8FF3FC ⅹ Ⅹ ⅹ +8FF3FD 8FF3FD 8FF3F3 Ⅰ Ⅰ ⅰ +8FF3FE 8FF3FE 8FF3F4 Ⅱ Ⅱ ⅱ +8FF4A1 8FF4A1 8FF3F5 Ⅲ Ⅲ ⅲ +8FF4A2 8FF4A2 8FF3F6 Ⅳ Ⅳ ⅳ +8FF4A3 8FF4A3 8FF3F7 Ⅴ Ⅴ ⅴ +8FF4A4 8FF4A4 8FF3F8 Ⅵ Ⅵ ⅵ +8FF4A5 8FF4A5 8FF3F9 Ⅶ Ⅶ ⅶ +8FF4A6 8FF4A6 8FF3FA Ⅷ Ⅷ ⅷ +8FF4A7 8FF4A7 8FF3FB Ⅸ Ⅸ ⅸ +8FF4A8 8FF4A8 8FF3FC Ⅹ Ⅹ ⅹ +A2F2 A2F2 8FABA9 Å Å å +A3C1 A3C1 A3E1 A A a +A3C2 A3C2 A3E2 B B b +A3C3 A3C3 A3E3 C C c +A3C4 A3C4 A3E4 D D d +A3C5 A3C5 A3E5 E E e +A3C6 A3C6 A3E6 F F f +A3C7 A3C7 A3E7 G G g +A3C8 A3C8 A3E8 H H h +A3C9 A3C9 A3E9 I I i +A3CA A3CA A3EA J J j +A3CB A3CB A3EB K K k +A3CC A3CC A3EC L L l +A3CD A3CD A3ED M M m +A3CE A3CE A3EE N N n +A3CF A3CF A3EF O O o +A3D0 A3D0 A3F0 P P p +A3D1 A3D1 A3F1 Q Q q +A3D2 A3D2 A3F2 R R r +A3D3 A3D3 A3F3 S S s +A3D4 A3D4 A3F4 T T t +A3D5 A3D5 A3F5 U U u +A3D6 A3D6 A3F6 V V v +A3D7 A3D7 A3F7 W W w +A3D8 A3D8 A3F8 X X x +A3D9 A3D9 A3F9 Y Y y +A3DA A3DA A3FA Z Z z +A3E1 A3C1 A3E1 a A a +A3E2 A3C2 A3E2 b B b +A3E3 A3C3 A3E3 c C c +A3E4 A3C4 A3E4 d D d +A3E5 A3C5 A3E5 e E e +A3E6 A3C6 A3E6 f F f +A3E7 A3C7 A3E7 g G g +A3E8 A3C8 A3E8 h H h +A3E9 A3C9 A3E9 i I i +A3EA A3CA A3EA j J j +A3EB A3CB A3EB k K k +A3EC A3CC A3EC l L l +A3ED A3CD A3ED m M m +A3EE A3CE A3EE n N n +A3EF A3CF A3EF o O o +A3F0 A3D0 A3F0 p P p +A3F1 A3D1 A3F1 q Q q +A3F2 A3D2 A3F2 r R r +A3F3 A3D3 A3F3 s S s +A3F4 A3D4 A3F4 t T t +A3F5 A3D5 A3F5 u U u +A3F6 A3D6 A3F6 v V v +A3F7 A3D7 A3F7 w W w +A3F8 A3D8 A3F8 x X x +A3F9 A3D9 A3F9 y Y y +A3FA A3DA A3FA z Z z +A6A1 A6A1 A6C1 Α Α α +A6A2 A6A2 A6C2 Β Β β +A6A3 A6A3 A6C3 Γ Γ γ +A6A4 A6A4 A6C4 Δ Δ δ +A6A5 A6A5 A6C5 Ε Ε ε +A6A6 A6A6 A6C6 Ζ Ζ ζ +A6A7 A6A7 A6C7 Η Η η +A6A8 A6A8 A6C8 Θ Θ θ +A6A9 A6A9 A6C9 Ι Ι ι +A6AA A6AA A6CA Κ Κ κ +A6AB A6AB A6CB Λ Λ λ +A6AC A6AC A6CC Μ Μ μ +A6AD A6AD A6CD Ν Ν ν +A6AE A6AE A6CE Ξ Ξ ξ +A6AF A6AF A6CF Ο Ο ο +A6B0 A6B0 A6D0 Π Π π +A6B1 A6B1 A6D1 Ρ Ρ ρ +A6B2 A6B2 A6D2 Σ Σ σ +A6B3 A6B3 A6D3 Τ Τ τ +A6B4 A6B4 A6D4 Υ Υ υ +A6B5 A6B5 A6D5 Φ Φ φ +A6B6 A6B6 A6D6 Χ Χ χ +A6B7 A6B7 A6D7 Ψ Ψ ψ +A6B8 A6B8 A6D8 Ω Ω ω +A6C1 A6A1 A6C1 α Α α +A6C2 A6A2 A6C2 β Β β +A6C3 A6A3 A6C3 γ Γ γ +A6C4 A6A4 A6C4 δ Δ δ +A6C5 A6A5 A6C5 ε Ε ε +A6C6 A6A6 A6C6 ζ Ζ ζ +A6C7 A6A7 A6C7 η Η η +A6C8 A6A8 A6C8 θ Θ θ +A6C9 A6A9 A6C9 ι Ι ι +A6CA A6AA A6CA κ Κ κ +A6CB A6AB A6CB λ Λ λ +A6CC A6AC A6CC μ Μ μ +A6CD A6AD A6CD ν Ν ν +A6CE A6AE A6CE ξ Ξ ξ +A6CF A6AF A6CF ο Ο ο +A6D0 A6B0 A6D0 π Π π +A6D1 A6B1 A6D1 ρ Ρ ρ +A6D2 A6B2 A6D2 σ Σ σ +A6D3 A6B3 A6D3 τ Τ τ +A6D4 A6B4 A6D4 υ Υ υ +A6D5 A6B5 A6D5 φ Φ φ +A6D6 A6B6 A6D6 χ Χ χ +A6D7 A6B7 A6D7 ψ Ψ ψ +A6D8 A6B8 A6D8 ω Ω ω +A7A1 A7A1 A7D1 А А а +A7A2 A7A2 A7D2 Б Б б +A7A3 A7A3 A7D3 В В в +A7A4 A7A4 A7D4 Г Г г +A7A5 A7A5 A7D5 Д Д д +A7A6 A7A6 A7D6 Е Е е +A7A7 A7A7 A7D7 Ё Ё ё +A7A8 A7A8 A7D8 Ж Ж ж +A7A9 A7A9 A7D9 З З з +A7AA A7AA A7DA И И и +A7AB A7AB A7DB Й Й й +A7AC A7AC A7DC К К к +A7AD A7AD A7DD Л Л л +A7AE A7AE A7DE М М м +A7AF A7AF A7DF Н Н н +A7B0 A7B0 A7E0 О О о +A7B1 A7B1 A7E1 П П п +A7B2 A7B2 A7E2 Р Р р +A7B3 A7B3 A7E3 С С с +A7B4 A7B4 A7E4 Т Т т +A7B5 A7B5 A7E5 У У у +A7B6 A7B6 A7E6 Ф Ф ф +A7B7 A7B7 A7E7 Х Х х +A7B8 A7B8 A7E8 Ц Ц ц +A7B9 A7B9 A7E9 Ч Ч ч +A7BA A7BA A7EA Ш Ш ш +A7BB A7BB A7EB Щ Щ щ +A7BC A7BC A7EC Ъ Ъ ъ +A7BD A7BD A7ED Ы Ы ы +A7BE A7BE A7EE Ь Ь ь +A7BF A7BF A7EF Э Э э +A7C0 A7C0 A7F0 Ю Ю ю +A7C1 A7C1 A7F1 Я Я я +A7D1 A7A1 A7D1 а А а +A7D2 A7A2 A7D2 б Б б +A7D3 A7A3 A7D3 в В в +A7D4 A7A4 A7D4 г Г г +A7D5 A7A5 A7D5 д Д д +A7D6 A7A6 A7D6 е Е е +A7D7 A7A7 A7D7 ё Ё ё +A7D8 A7A8 A7D8 ж Ж ж +A7D9 A7A9 A7D9 з З з +A7DA A7AA A7DA и И и +A7DB A7AB A7DB й Й й +A7DC A7AC A7DC к К к +A7DD A7AD A7DD л Л л +A7DE A7AE A7DE м М м +A7DF A7AF A7DF н Н н +A7E0 A7B0 A7E0 о О о +A7E1 A7B1 A7E1 п П п +A7E2 A7B2 A7E2 р Р р +A7E3 A7B3 A7E3 с С с +A7E4 A7B4 A7E4 т Т т +A7E5 A7B5 A7E5 у У у +A7E6 A7B6 A7E6 ф Ф ф +A7E7 A7B7 A7E7 х Х х +A7E8 A7B8 A7E8 ц Ц ц +A7E9 A7B9 A7E9 ч Ч ч +A7EA A7BA A7EA ш Ш ш +A7EB A7BB A7EB щ Щ щ +A7EC A7BC A7EC ъ Ъ ъ +A7ED A7BD A7ED ы Ы ы +A7EE A7BE A7EE ь Ь ь +A7EF A7BF A7EF э Э э +A7F0 A7C0 A7F0 ю Ю ю +A7F1 A7C1 A7F1 я Я я +ADB5 ADB5 8FF3F3 Ⅰ Ⅰ ⅰ +ADB6 ADB6 8FF3F4 Ⅱ Ⅱ ⅱ +ADB7 ADB7 8FF3F5 Ⅲ Ⅲ ⅲ +ADB8 ADB8 8FF3F6 Ⅳ Ⅳ ⅳ +ADB9 ADB9 8FF3F7 Ⅴ Ⅴ ⅴ +ADBA ADBA 8FF3F8 Ⅵ Ⅵ ⅵ +ADBB ADBB 8FF3F9 Ⅶ Ⅶ ⅶ +ADBC ADBC 8FF3FA Ⅷ Ⅷ ⅷ +ADBD ADBD 8FF3FB Ⅸ Ⅸ ⅸ +ADBE ADBE 8FF3FC Ⅹ Ⅹ ⅹ +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +8FAABC Ģ +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +8FA9C3 ð +8FABB9 ǵ +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_euckr.result b/mysql-test/r/ctype_euckr.result index 3cc74864400..c20504e9ed7 100644 --- a/mysql-test/r/ctype_euckr.result +++ b/mysql-test/r/ctype_euckr.result @@ -24255,3 +24255,350 @@ FDFD FDFD E7BEB2 FDFD FDFE FDFE E8A9B0 FDFE DROP TABLE t1, t2; End of 5.4 tests +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=euckr_korean_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(8) DEFAULT NULL, + `a` varchar(1) CHARACTER SET euckr NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1 WHERE a<>''; +COUNT(*) +22428 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +A3C1 A3C1 A3E1 A A a +A3C2 A3C2 A3E2 B B b +A3C3 A3C3 A3E3 C C c +A3C4 A3C4 A3E4 D D d +A3C5 A3C5 A3E5 E E e +A3C6 A3C6 A3E6 F F f +A3C7 A3C7 A3E7 G G g +A3C8 A3C8 A3E8 H H h +A3C9 A3C9 A3E9 I I i +A3CA A3CA A3EA J J j +A3CB A3CB A3EB K K k +A3CC A3CC A3EC L L l +A3CD A3CD A3ED M M m +A3CE A3CE A3EE N N n +A3CF A3CF A3EF O O o +A3D0 A3D0 A3F0 P P p +A3D1 A3D1 A3F1 Q Q q +A3D2 A3D2 A3F2 R R r +A3D3 A3D3 A3F3 S S s +A3D4 A3D4 A3F4 T T t +A3D5 A3D5 A3F5 U U u +A3D6 A3D6 A3F6 V V v +A3D7 A3D7 A3F7 W W w +A3D8 A3D8 A3F8 X X x +A3D9 A3D9 A3F9 Y Y y +A3DA A3DA A3FA Z Z z +A3E1 A3C1 A3E1 a A a +A3E2 A3C2 A3E2 b B b +A3E3 A3C3 A3E3 c C c +A3E4 A3C4 A3E4 d D d +A3E5 A3C5 A3E5 e E e +A3E6 A3C6 A3E6 f F f +A3E7 A3C7 A3E7 g G g +A3E8 A3C8 A3E8 h H h +A3E9 A3C9 A3E9 i I i +A3EA A3CA A3EA j J j +A3EB A3CB A3EB k K k +A3EC A3CC A3EC l L l +A3ED A3CD A3ED m M m +A3EE A3CE A3EE n N n +A3EF A3CF A3EF o O o +A3F0 A3D0 A3F0 p P p +A3F1 A3D1 A3F1 q Q q +A3F2 A3D2 A3F2 r R r +A3F3 A3D3 A3F3 s S s +A3F4 A3D4 A3F4 t T t +A3F5 A3D5 A3F5 u U u +A3F6 A3D6 A3F6 v V v +A3F7 A3D7 A3F7 w W w +A3F8 A3D8 A3F8 x X x +A3F9 A3D9 A3F9 y Y y +A3FA A3DA A3FA z Z z +A5A1 A5B0 A5A1 ⅰ Ⅰ ⅰ +A5A2 A5B1 A5A2 ⅱ Ⅱ ⅱ +A5A3 A5B2 A5A3 ⅲ Ⅲ ⅲ +A5A4 A5B3 A5A4 ⅳ Ⅳ ⅳ +A5A5 A5B4 A5A5 ⅴ Ⅴ ⅴ +A5A6 A5B5 A5A6 ⅵ Ⅵ ⅵ +A5A7 A5B6 A5A7 ⅶ Ⅶ ⅶ +A5A8 A5B7 A5A8 ⅷ Ⅷ ⅷ +A5A9 A5B8 A5A9 ⅸ Ⅸ ⅸ +A5AA A5B9 A5AA ⅹ Ⅹ ⅹ +A5B0 A5B0 A5A1 Ⅰ Ⅰ ⅰ +A5B1 A5B1 A5A2 Ⅱ Ⅱ ⅱ +A5B2 A5B2 A5A3 Ⅲ Ⅲ ⅲ +A5B3 A5B3 A5A4 Ⅳ Ⅳ ⅳ +A5B4 A5B4 A5A5 Ⅴ Ⅴ ⅴ +A5B5 A5B5 A5A6 Ⅵ Ⅵ ⅵ +A5B6 A5B6 A5A7 Ⅶ Ⅶ ⅶ +A5B7 A5B7 A5A8 Ⅷ Ⅷ ⅷ +A5B8 A5B8 A5A9 Ⅸ Ⅸ ⅸ +A5B9 A5B9 A5AA Ⅹ Ⅹ ⅹ +A5C1 A5C1 A5E1 Α Α α +A5C2 A5C2 A5E2 Β Β β +A5C3 A5C3 A5E3 Γ Γ γ +A5C4 A5C4 A5E4 Δ Δ δ +A5C5 A5C5 A5E5 Ε Ε ε +A5C6 A5C6 A5E6 Ζ Ζ ζ +A5C7 A5C7 A5E7 Η Η η +A5C8 A5C8 A5E8 Θ Θ θ +A5C9 A5C9 A5E9 Ι Ι ι +A5CA A5CA A5EA Κ Κ κ +A5CB A5CB A5EB Λ Λ λ +A5CC A5CC A5EC Μ Μ μ +A5CD A5CD A5ED Ν Ν ν +A5CE A5CE A5EE Ξ Ξ ξ +A5CF A5CF A5EF Ο Ο ο +A5D0 A5D0 A5F0 Π Π π +A5D1 A5D1 A5F1 Ρ Ρ ρ +A5D2 A5D2 A5F2 Σ Σ σ +A5D3 A5D3 A5F3 Τ Τ τ +A5D4 A5D4 A5F4 Υ Υ υ +A5D5 A5D5 A5F5 Φ Φ φ +A5D6 A5D6 A5F6 Χ Χ χ +A5D7 A5D7 A5F7 Ψ Ψ ψ +A5D8 A5D8 A5F8 Ω Ω ω +A5E1 A5C1 A5E1 α Α α +A5E2 A5C2 A5E2 β Β β +A5E3 A5C3 A5E3 γ Γ γ +A5E4 A5C4 A5E4 δ Δ δ +A5E5 A5C5 A5E5 ε Ε ε +A5E6 A5C6 A5E6 ζ Ζ ζ +A5E7 A5C7 A5E7 η Η η +A5E8 A5C8 A5E8 θ Θ θ +A5E9 A5C9 A5E9 ι Ι ι +A5EA A5CA A5EA κ Κ κ +A5EB A5CB A5EB λ Λ λ +A5EC A5CC A5EC μ Μ μ +A5ED A5CD A5ED ν Ν ν +A5EE A5CE A5EE ξ Ξ ξ +A5EF A5CF A5EF ο Ο ο +A5F0 A5D0 A5F0 π Π π +A5F1 A5D1 A5F1 ρ Ρ ρ +A5F2 A5D2 A5F2 σ Σ σ +A5F3 A5D3 A5F3 τ Τ τ +A5F4 A5D4 A5F4 υ Υ υ +A5F5 A5D5 A5F5 φ Φ φ +A5F6 A5D6 A5F6 χ Χ χ +A5F7 A5D7 A5F7 ψ Ψ ψ +A5F8 A5D8 A5F8 ω Ω ω +A7D9 A7D9 A5F8 Ω Ω ω +A8A1 A8A1 A9A1 Æ Æ æ +A8A2 A8A2 A9A3 Ð Ð ð +A8A4 A8A4 A9A4 Ħ Ħ ħ +A8A6 A8A6 A9A6 IJ IJ ij +A8A8 A8A8 A9A8 Ŀ Ŀ ŀ +A8A9 A8A9 A9A9 Ł Ł ł +A8AA A8AA A9AA Ø Ø ø +A8AB A8AB A9AB Œ Œ œ +A8AD A8AD A9AD Þ Þ þ +A8AE A8AE A9AE Ŧ Ŧ ŧ +A8AF A8AF A9AF Ŋ Ŋ ŋ +A9A1 A8A1 A9A1 æ Æ æ +A9A3 A8A2 A9A3 ð Ð ð +A9A4 A8A4 A9A4 ħ Ħ ħ +A9A5 49 A9A5 ı I ı +A9A6 A8A6 A9A6 ij IJ ij +A9A8 A8A8 A9A8 ŀ Ŀ ŀ +A9A9 A8A9 A9A9 ł Ł ł +A9AA A8AA A9AA ø Ø ø +A9AB A8AB A9AB œ Œ œ +A9AD A8AD A9AD þ Þ þ +A9AE A8AE A9AE ŧ Ŧ ŧ +A9AF A8AF A9AF ŋ Ŋ ŋ +ACA1 ACA1 ACD1 А А а +ACA2 ACA2 ACD2 Б Б б +ACA3 ACA3 ACD3 В В в +ACA4 ACA4 ACD4 Г Г г +ACA5 ACA5 ACD5 Д Д д +ACA6 ACA6 ACD6 Е Е е +ACA7 ACA7 ACD7 Ё Ё ё +ACA8 ACA8 ACD8 Ж Ж ж +ACA9 ACA9 ACD9 З З з +ACAA ACAA ACDA И И и +ACAB ACAB ACDB Й Й й +ACAC ACAC ACDC К К к +ACAD ACAD ACDD Л Л л +ACAE ACAE ACDE М М м +ACAF ACAF ACDF Н Н н +ACB0 ACB0 ACE0 О О о +ACB1 ACB1 ACE1 П П п +ACB2 ACB2 ACE2 Р Р р +ACB3 ACB3 ACE3 С С с +ACB4 ACB4 ACE4 Т Т т +ACB5 ACB5 ACE5 У У у +ACB6 ACB6 ACE6 Ф Ф ф +ACB7 ACB7 ACE7 Х Х х +ACB8 ACB8 ACE8 Ц Ц ц +ACB9 ACB9 ACE9 Ч Ч ч +ACBA ACBA ACEA Ш Ш ш +ACBB ACBB ACEB Щ Щ щ +ACBC ACBC ACEC Ъ Ъ ъ +ACBD ACBD ACED Ы Ы ы +ACBE ACBE ACEE Ь Ь ь +ACBF ACBF ACEF Э Э э +ACC0 ACC0 ACF0 Ю Ю ю +ACC1 ACC1 ACF1 Я Я я +ACD1 ACA1 ACD1 а А а +ACD2 ACA2 ACD2 б Б б +ACD3 ACA3 ACD3 в В в +ACD4 ACA4 ACD4 г Г г +ACD5 ACA5 ACD5 д Д д +ACD6 ACA6 ACD6 е Е е +ACD7 ACA7 ACD7 ё Ё ё +ACD8 ACA8 ACD8 ж Ж ж +ACD9 ACA9 ACD9 з З з +ACDA ACAA ACDA и И и +ACDB ACAB ACDB й Й й +ACDC ACAC ACDC к К к +ACDD ACAD ACDD л Л л +ACDE ACAE ACDE м М м +ACDF ACAF ACDF н Н н +ACE0 ACB0 ACE0 о О о +ACE1 ACB1 ACE1 п П п +ACE2 ACB2 ACE2 р Р р +ACE3 ACB3 ACE3 с С с +ACE4 ACB4 ACE4 т Т т +ACE5 ACB5 ACE5 у У у +ACE6 ACB6 ACE6 ф Ф ф +ACE7 ACB7 ACE7 х Х х +ACE8 ACB8 ACE8 ц Ц ц +ACE9 ACB9 ACE9 ч Ч ч +ACEA ACBA ACEA ш Ш ш +ACEB ACBB ACEB щ Щ щ +ACEC ACBC ACEC ъ Ъ ъ +ACED ACBD ACED ы Ы ы +ACEE ACBE ACEE ь Ь ь +ACEF ACBF ACEF э Э э +ACF0 ACC0 ACF0 ю Ю ю +ACF1 ACC1 ACF1 я Я я +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A1CA Å +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A8CD ⓐ +A8CE ⓑ +A8CF ⓒ +A8D0 ⓓ +A8D1 ⓔ +A8D2 ⓕ +A8D3 ⓖ +A8D4 ⓗ +A8D5 ⓘ +A8D6 ⓙ +A8D7 ⓚ +A8D8 ⓛ +A8D9 ⓜ +A8DA ⓝ +A8DB ⓞ +A8DC ⓟ +A8DD ⓠ +A8DE ⓡ +A8DF ⓢ +A8E0 ⓣ +A8E1 ⓤ +A8E2 ⓥ +A8E3 ⓦ +A8E4 ⓧ +A8E5 ⓨ +A8E6 ⓩ +A9A2 đ +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_gb2312.result b/mysql-test/r/ctype_gb2312.result index 2f789ab5b13..9e9888aecd8 100644 --- a/mysql-test/r/ctype_gb2312.result +++ b/mysql-test/r/ctype_gb2312.result @@ -235,3 +235,316 @@ hex(a) A2A1 D7FE DROP TABLE t1; +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=gb2312_chinese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(8) DEFAULT NULL, + `a` varchar(1) CHARACTER SET gb2312 NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1 WHERE a<>''; +COUNT(*) +8178 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +A3C1 A3C1 A3E1 A A a +A3C2 A3C2 A3E2 B B b +A3C3 A3C3 A3E3 C C c +A3C4 A3C4 A3E4 D D d +A3C5 A3C5 A3E5 E E e +A3C6 A3C6 A3E6 F F f +A3C7 A3C7 A3E7 G G g +A3C8 A3C8 A3E8 H H h +A3C9 A3C9 A3E9 I I i +A3CA A3CA A3EA J J j +A3CB A3CB A3EB K K k +A3CC A3CC A3EC L L l +A3CD A3CD A3ED M M m +A3CE A3CE A3EE N N n +A3CF A3CF A3EF O O o +A3D0 A3D0 A3F0 P P p +A3D1 A3D1 A3F1 Q Q q +A3D2 A3D2 A3F2 R R r +A3D3 A3D3 A3F3 S S s +A3D4 A3D4 A3F4 T T t +A3D5 A3D5 A3F5 U U u +A3D6 A3D6 A3F6 V V v +A3D7 A3D7 A3F7 W W w +A3D8 A3D8 A3F8 X X x +A3D9 A3D9 A3F9 Y Y y +A3DA A3DA A3FA Z Z z +A3E1 A3C1 A3E1 a A a +A3E2 A3C2 A3E2 b B b +A3E3 A3C3 A3E3 c C c +A3E4 A3C4 A3E4 d D d +A3E5 A3C5 A3E5 e E e +A3E6 A3C6 A3E6 f F f +A3E7 A3C7 A3E7 g G g +A3E8 A3C8 A3E8 h H h +A3E9 A3C9 A3E9 i I i +A3EA A3CA A3EA j J j +A3EB A3CB A3EB k K k +A3EC A3CC A3EC l L l +A3ED A3CD A3ED m M m +A3EE A3CE A3EE n N n +A3EF A3CF A3EF o O o +A3F0 A3D0 A3F0 p P p +A3F1 A3D1 A3F1 q Q q +A3F2 A3D2 A3F2 r R r +A3F3 A3D3 A3F3 s S s +A3F4 A3D4 A3F4 t T t +A3F5 A3D5 A3F5 u U u +A3F6 A3D6 A3F6 v V v +A3F7 A3D7 A3F7 w W w +A3F8 A3D8 A3F8 x X x +A3F9 A3D9 A3F9 y Y y +A3FA A3DA A3FA z Z z +A6A1 A6A1 A6C1 Α Α α +A6A2 A6A2 A6C2 Β Β β +A6A3 A6A3 A6C3 Γ Γ γ +A6A4 A6A4 A6C4 Δ Δ δ +A6A5 A6A5 A6C5 Ε Ε ε +A6A6 A6A6 A6C6 Ζ Ζ ζ +A6A7 A6A7 A6C7 Η Η η +A6A8 A6A8 A6C8 Θ Θ θ +A6A9 A6A9 A6C9 Ι Ι ι +A6AA A6AA A6CA Κ Κ κ +A6AB A6AB A6CB Λ Λ λ +A6AC A6AC A6CC Μ Μ μ +A6AD A6AD A6CD Ν Ν ν +A6AE A6AE A6CE Ξ Ξ ξ +A6AF A6AF A6CF Ο Ο ο +A6B0 A6B0 A6D0 Π Π π +A6B1 A6B1 A6D1 Ρ Ρ ρ +A6B2 A6B2 A6D2 Σ Σ σ +A6B3 A6B3 A6D3 Τ Τ τ +A6B4 A6B4 A6D4 Υ Υ υ +A6B5 A6B5 A6D5 Φ Φ φ +A6B6 A6B6 A6D6 Χ Χ χ +A6B7 A6B7 A6D7 Ψ Ψ ψ +A6B8 A6B8 A6D8 Ω Ω ω +A6C1 A6A1 A6C1 α Α α +A6C2 A6A2 A6C2 β Β β +A6C3 A6A3 A6C3 γ Γ γ +A6C4 A6A4 A6C4 δ Δ δ +A6C5 A6A5 A6C5 ε Ε ε +A6C6 A6A6 A6C6 ζ Ζ ζ +A6C7 A6A7 A6C7 η Η η +A6C8 A6A8 A6C8 θ Θ θ +A6C9 A6A9 A6C9 ι Ι ι +A6CA A6AA A6CA κ Κ κ +A6CB A6AB A6CB λ Λ λ +A6CC A6AC A6CC μ Μ μ +A6CD A6AD A6CD ν Ν ν +A6CE A6AE A6CE ξ Ξ ξ +A6CF A6AF A6CF ο Ο ο +A6D0 A6B0 A6D0 π Π π +A6D1 A6B1 A6D1 ρ Ρ ρ +A6D2 A6B2 A6D2 σ Σ σ +A6D3 A6B3 A6D3 τ Τ τ +A6D4 A6B4 A6D4 υ Υ υ +A6D5 A6B5 A6D5 φ Φ φ +A6D6 A6B6 A6D6 χ Χ χ +A6D7 A6B7 A6D7 ψ Ψ ψ +A6D8 A6B8 A6D8 ω Ω ω +A7A1 A7A1 A7D1 А А а +A7A2 A7A2 A7D2 Б Б б +A7A3 A7A3 A7D3 В В в +A7A4 A7A4 A7D4 Г Г г +A7A5 A7A5 A7D5 Д Д д +A7A6 A7A6 A7D6 Е Е е +A7A7 A7A7 A7D7 Ё Ё ё +A7A8 A7A8 A7D8 Ж Ж ж +A7A9 A7A9 A7D9 З З з +A7AA A7AA A7DA И И и +A7AB A7AB A7DB Й Й й +A7AC A7AC A7DC К К к +A7AD A7AD A7DD Л Л л +A7AE A7AE A7DE М М м +A7AF A7AF A7DF Н Н н +A7B0 A7B0 A7E0 О О о +A7B1 A7B1 A7E1 П П п +A7B2 A7B2 A7E2 Р Р р +A7B3 A7B3 A7E3 С С с +A7B4 A7B4 A7E4 Т Т т +A7B5 A7B5 A7E5 У У у +A7B6 A7B6 A7E6 Ф Ф ф +A7B7 A7B7 A7E7 Х Х х +A7B8 A7B8 A7E8 Ц Ц ц +A7B9 A7B9 A7E9 Ч Ч ч +A7BA A7BA A7EA Ш Ш ш +A7BB A7BB A7EB Щ Щ щ +A7BC A7BC A7EC Ъ Ъ ъ +A7BD A7BD A7ED Ы Ы ы +A7BE A7BE A7EE Ь Ь ь +A7BF A7BF A7EF Э Э э +A7C0 A7C0 A7F0 Ю Ю ю +A7C1 A7C1 A7F1 Я Я я +A7D1 A7A1 A7D1 а А а +A7D2 A7A2 A7D2 б Б б +A7D3 A7A3 A7D3 в В в +A7D4 A7A4 A7D4 г Г г +A7D5 A7A5 A7D5 д Д д +A7D6 A7A6 A7D6 е Е е +A7D7 A7A7 A7D7 ё Ё ё +A7D8 A7A8 A7D8 ж Ж ж +A7D9 A7A9 A7D9 з З з +A7DA A7AA A7DA и И и +A7DB A7AB A7DB й Й й +A7DC A7AC A7DC к К к +A7DD A7AD A7DD л Л л +A7DE A7AE A7DE м М м +A7DF A7AF A7DF н Н н +A7E0 A7B0 A7E0 о О о +A7E1 A7B1 A7E1 п П п +A7E2 A7B2 A7E2 р Р р +A7E3 A7B3 A7E3 с С с +A7E4 A7B4 A7E4 т Т т +A7E5 A7B5 A7E5 у У у +A7E6 A7B6 A7E6 ф Ф ф +A7E7 A7B7 A7E7 х Х х +A7E8 A7B8 A7E8 ц Ц ц +A7E9 A7B9 A7E9 ч Ч ч +A7EA A7BA A7EA ш Ш ш +A7EB A7BB A7EB щ Щ щ +A7EC A7BC A7EC ъ Ъ ъ +A7ED A7BD A7ED ы Ы ы +A7EE A7BE A7EE ь Ь ь +A7EF A7BF A7EF э Э э +A7F0 A7C0 A7F0 ю Ю ю +A7F1 A7C1 A7F1 я Я я +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A2F1 Ⅰ +A2F2 Ⅱ +A2F3 Ⅲ +A2F4 Ⅳ +A2F5 Ⅴ +A2F6 Ⅵ +A2F7 Ⅶ +A2F8 Ⅷ +A2F9 Ⅸ +A2FA Ⅹ +A2FB Ⅺ +A2FC Ⅻ +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A8A1 ā +A8A2 á +A8A3 ǎ +A8A4 à +A8A5 ē +A8A6 é +A8A7 ě +A8A8 è +A8A9 ī +A8AA í +A8AB ǐ +A8AC ì +A8AD ō +A8AE ó +A8AF ǒ +A8B0 ò +A8B1 ū +A8B2 ú +A8B3 ǔ +A8B4 ù +A8B5 ǖ +A8B6 ǘ +A8B7 ǚ +A8B8 ǜ +A8B9 ü +A8BA ê +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result index c144ed6881d..0abbbec1d7b 100644 --- a/mysql-test/r/ctype_gbk.result +++ b/mysql-test/r/ctype_gbk.result @@ -255,3 +255,328 @@ SELECT a FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; DROP TABLES t1; End of 5.0 tests +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=gbk_chinese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(8) DEFAULT NULL, + `a` varchar(1) CHARACTER SET gbk NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1 WHERE a<>''; +COUNT(*) +23940 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +A2A1 A2F1 A2A1 ⅰ Ⅰ ⅰ +A2A2 A2F2 A2A2 ⅱ Ⅱ ⅱ +A2A3 A2F3 A2A3 ⅲ Ⅲ ⅲ +A2A4 A2F4 A2A4 ⅳ Ⅳ ⅳ +A2A5 A2F5 A2A5 ⅴ Ⅴ ⅴ +A2A6 A2F6 A2A6 ⅵ Ⅵ ⅵ +A2A7 A2F7 A2A7 ⅶ Ⅶ ⅶ +A2A8 A2F8 A2A8 ⅷ Ⅷ ⅷ +A2A9 A2F9 A2A9 ⅸ Ⅸ ⅸ +A2AA A2FA A2AA ⅹ Ⅹ ⅹ +A2F1 A2F1 A2A1 Ⅰ Ⅰ ⅰ +A2F2 A2F2 A2A2 Ⅱ Ⅱ ⅱ +A2F3 A2F3 A2A3 Ⅲ Ⅲ ⅲ +A2F4 A2F4 A2A4 Ⅳ Ⅳ ⅳ +A2F5 A2F5 A2A5 Ⅴ Ⅴ ⅴ +A2F6 A2F6 A2A6 Ⅵ Ⅵ ⅵ +A2F7 A2F7 A2A7 Ⅶ Ⅶ ⅶ +A2F8 A2F8 A2A8 Ⅷ Ⅷ ⅷ +A2F9 A2F9 A2A9 Ⅸ Ⅸ ⅸ +A2FA A2FA A2AA Ⅹ Ⅹ ⅹ +A3C1 A3C1 A3E1 A A a +A3C2 A3C2 A3E2 B B b +A3C3 A3C3 A3E3 C C c +A3C4 A3C4 A3E4 D D d +A3C5 A3C5 A3E5 E E e +A3C6 A3C6 A3E6 F F f +A3C7 A3C7 A3E7 G G g +A3C8 A3C8 A3E8 H H h +A3C9 A3C9 A3E9 I I i +A3CA A3CA A3EA J J j +A3CB A3CB A3EB K K k +A3CC A3CC A3EC L L l +A3CD A3CD A3ED M M m +A3CE A3CE A3EE N N n +A3CF A3CF A3EF O O o +A3D0 A3D0 A3F0 P P p +A3D1 A3D1 A3F1 Q Q q +A3D2 A3D2 A3F2 R R r +A3D3 A3D3 A3F3 S S s +A3D4 A3D4 A3F4 T T t +A3D5 A3D5 A3F5 U U u +A3D6 A3D6 A3F6 V V v +A3D7 A3D7 A3F7 W W w +A3D8 A3D8 A3F8 X X x +A3D9 A3D9 A3F9 Y Y y +A3DA A3DA A3FA Z Z z +A3E1 A3C1 A3E1 a A a +A3E2 A3C2 A3E2 b B b +A3E3 A3C3 A3E3 c C c +A3E4 A3C4 A3E4 d D d +A3E5 A3C5 A3E5 e E e +A3E6 A3C6 A3E6 f F f +A3E7 A3C7 A3E7 g G g +A3E8 A3C8 A3E8 h H h +A3E9 A3C9 A3E9 i I i +A3EA A3CA A3EA j J j +A3EB A3CB A3EB k K k +A3EC A3CC A3EC l L l +A3ED A3CD A3ED m M m +A3EE A3CE A3EE n N n +A3EF A3CF A3EF o O o +A3F0 A3D0 A3F0 p P p +A3F1 A3D1 A3F1 q Q q +A3F2 A3D2 A3F2 r R r +A3F3 A3D3 A3F3 s S s +A3F4 A3D4 A3F4 t T t +A3F5 A3D5 A3F5 u U u +A3F6 A3D6 A3F6 v V v +A3F7 A3D7 A3F7 w W w +A3F8 A3D8 A3F8 x X x +A3F9 A3D9 A3F9 y Y y +A3FA A3DA A3FA z Z z +A6A1 A6A1 A6C1 Α Α α +A6A2 A6A2 A6C2 Β Β β +A6A3 A6A3 A6C3 Γ Γ γ +A6A4 A6A4 A6C4 Δ Δ δ +A6A5 A6A5 A6C5 Ε Ε ε +A6A6 A6A6 A6C6 Ζ Ζ ζ +A6A7 A6A7 A6C7 Η Η η +A6A8 A6A8 A6C8 Θ Θ θ +A6A9 A6A9 A6C9 Ι Ι ι +A6AA A6AA A6CA Κ Κ κ +A6AB A6AB A6CB Λ Λ λ +A6AC A6AC A6CC Μ Μ μ +A6AD A6AD A6CD Ν Ν ν +A6AE A6AE A6CE Ξ Ξ ξ +A6AF A6AF A6CF Ο Ο ο +A6B0 A6B0 A6D0 Π Π π +A6B1 A6B1 A6D1 Ρ Ρ ρ +A6B2 A6B2 A6D2 Σ Σ σ +A6B3 A6B3 A6D3 Τ Τ τ +A6B4 A6B4 A6D4 Υ Υ υ +A6B5 A6B5 A6D5 Φ Φ φ +A6B6 A6B6 A6D6 Χ Χ χ +A6B7 A6B7 A6D7 Ψ Ψ ψ +A6B8 A6B8 A6D8 Ω Ω ω +A6C1 A6A1 A6C1 α Α α +A6C2 A6A2 A6C2 β Β β +A6C3 A6A3 A6C3 γ Γ γ +A6C4 A6A4 A6C4 δ Δ δ +A6C5 A6A5 A6C5 ε Ε ε +A6C6 A6A6 A6C6 ζ Ζ ζ +A6C7 A6A7 A6C7 η Η η +A6C8 A6A8 A6C8 θ Θ θ +A6C9 A6A9 A6C9 ι Ι ι +A6CA A6AA A6CA κ Κ κ +A6CB A6AB A6CB λ Λ λ +A6CC A6AC A6CC μ Μ μ +A6CD A6AD A6CD ν Ν ν +A6CE A6AE A6CE ξ Ξ ξ +A6CF A6AF A6CF ο Ο ο +A6D0 A6B0 A6D0 π Π π +A6D1 A6B1 A6D1 ρ Ρ ρ +A6D2 A6B2 A6D2 σ Σ σ +A6D3 A6B3 A6D3 τ Τ τ +A6D4 A6B4 A6D4 υ Υ υ +A6D5 A6B5 A6D5 φ Φ φ +A6D6 A6B6 A6D6 χ Χ χ +A6D7 A6B7 A6D7 ψ Ψ ψ +A6D8 A6B8 A6D8 ω Ω ω +A7A1 A7A1 A7D1 А А а +A7A2 A7A2 A7D2 Б Б б +A7A3 A7A3 A7D3 В В в +A7A4 A7A4 A7D4 Г Г г +A7A5 A7A5 A7D5 Д Д д +A7A6 A7A6 A7D6 Е Е е +A7A7 A7A7 A7D7 Ё Ё ё +A7A8 A7A8 A7D8 Ж Ж ж +A7A9 A7A9 A7D9 З З з +A7AA A7AA A7DA И И и +A7AB A7AB A7DB Й Й й +A7AC A7AC A7DC К К к +A7AD A7AD A7DD Л Л л +A7AE A7AE A7DE М М м +A7AF A7AF A7DF Н Н н +A7B0 A7B0 A7E0 О О о +A7B1 A7B1 A7E1 П П п +A7B2 A7B2 A7E2 Р Р р +A7B3 A7B3 A7E3 С С с +A7B4 A7B4 A7E4 Т Т т +A7B5 A7B5 A7E5 У У у +A7B6 A7B6 A7E6 Ф Ф ф +A7B7 A7B7 A7E7 Х Х х +A7B8 A7B8 A7E8 Ц Ц ц +A7B9 A7B9 A7E9 Ч Ч ч +A7BA A7BA A7EA Ш Ш ш +A7BB A7BB A7EB Щ Щ щ +A7BC A7BC A7EC Ъ Ъ ъ +A7BD A7BD A7ED Ы Ы ы +A7BE A7BE A7EE Ь Ь ь +A7BF A7BF A7EF Э Э э +A7C0 A7C0 A7F0 Ю Ю ю +A7C1 A7C1 A7F1 Я Я я +A7D1 A7A1 A7D1 а А а +A7D2 A7A2 A7D2 б Б б +A7D3 A7A3 A7D3 в В в +A7D4 A7A4 A7D4 г Г г +A7D5 A7A5 A7D5 д Д д +A7D6 A7A6 A7D6 е Е е +A7D7 A7A7 A7D7 ё Ё ё +A7D8 A7A8 A7D8 ж Ж ж +A7D9 A7A9 A7D9 з З з +A7DA A7AA A7DA и И и +A7DB A7AB A7DB й Й й +A7DC A7AC A7DC к К к +A7DD A7AD A7DD л Л л +A7DE A7AE A7DE м М м +A7DF A7AF A7DF н Н н +A7E0 A7B0 A7E0 о О о +A7E1 A7B1 A7E1 п П п +A7E2 A7B2 A7E2 р Р р +A7E3 A7B3 A7E3 с С с +A7E4 A7B4 A7E4 т Т т +A7E5 A7B5 A7E5 у У у +A7E6 A7B6 A7E6 ф Ф ф +A7E7 A7B7 A7E7 х Х х +A7E8 A7B8 A7E8 ц Ц ц +A7E9 A7B9 A7E9 ч Ч ч +A7EA A7BA A7EA ш Ш ш +A7EB A7BB A7EB щ Щ щ +A7EC A7BC A7EC ъ Ъ ъ +A7ED A7BD A7ED ы Ы ы +A7EE A7BE A7EE ь Ь ь +A7EF A7BF A7EF э Э э +A7F0 A7C0 A7F0 ю Ю ю +A7F1 A7C1 A7F1 я Я я +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A2FB Ⅺ +A2FC Ⅻ +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +A8A1 ā +A8A2 á +A8A3 ǎ +A8A4 à +A8A5 ē +A8A6 é +A8A7 ě +A8A8 è +A8A9 ī +A8AA í +A8AB ǐ +A8AC ì +A8AD ō +A8AE ó +A8AF ǒ +A8B0 ò +A8B1 ū +A8B2 ú +A8B3 ǔ +A8B4 ù +A8B5 ǖ +A8B6 ǘ +A8B7 ǚ +A8B8 ǜ +A8B9 ü +A8BA ê +A8BD ń +A8BE ň +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_sjis.result b/mysql-test/r/ctype_sjis.result index 1469e335f23..f450dd0488d 100644 --- a/mysql-test/r/ctype_sjis.result +++ b/mysql-test/r/ctype_sjis.result @@ -219,3 +219,290 @@ hex(a) hex(lower(a)) hex(upper(a)) 8372835E 8372835E 8372835E DROP TABLE t1; # End of 5.1 tests +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=sjis_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +INSERT t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF'); +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(8) DEFAULT NULL, + `a` varchar(1) CHARACTER SET sjis NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1; +COUNT(*) +14623 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1; +COUNT(*) +63 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +COUNT(*) +11280 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) +FROM t1 +WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) +ORDER BY code; +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +8260 8260 8281 A A a +8261 8261 8282 B B b +8262 8262 8283 C C c +8263 8263 8284 D D d +8264 8264 8285 E E e +8265 8265 8286 F F f +8266 8266 8287 G G g +8267 8267 8288 H H h +8268 8268 8289 I I i +8269 8269 828A J J j +826A 826A 828B K K k +826B 826B 828C L L l +826C 826C 828D M M m +826D 826D 828E N N n +826E 826E 828F O O o +826F 826F 8290 P P p +8270 8270 8291 Q Q q +8271 8271 8292 R R r +8272 8272 8293 S S s +8273 8273 8294 T T t +8274 8274 8295 U U u +8275 8275 8296 V V v +8276 8276 8297 W W w +8277 8277 8298 X X x +8278 8278 8299 Y Y y +8279 8279 829A Z Z z +8281 8260 8281 a A a +8282 8261 8282 b B b +8283 8262 8283 c C c +8284 8263 8284 d D d +8285 8264 8285 e E e +8286 8265 8286 f F f +8287 8266 8287 g G g +8288 8267 8288 h H h +8289 8268 8289 i I i +828A 8269 828A j J j +828B 826A 828B k K k +828C 826B 828C l L l +828D 826C 828D m M m +828E 826D 828E n N n +828F 826E 828F o O o +8290 826F 8290 p P p +8291 8270 8291 q Q q +8292 8271 8292 r R r +8293 8272 8293 s S s +8294 8273 8294 t T t +8295 8274 8295 u U u +8296 8275 8296 v V v +8297 8276 8297 w W w +8298 8277 8298 x X x +8299 8278 8299 y Y y +829A 8279 829A z Z z +839F 839F 83BF Α Α α +83A0 83A0 83C0 Β Β β +83A1 83A1 83C1 Γ Γ γ +83A2 83A2 83C2 Δ Δ δ +83A3 83A3 83C3 Ε Ε ε +83A4 83A4 83C4 Ζ Ζ ζ +83A5 83A5 83C5 Η Η η +83A6 83A6 83C6 Θ Θ θ +83A7 83A7 83C7 Ι Ι ι +83A8 83A8 83C8 Κ Κ κ +83A9 83A9 83C9 Λ Λ λ +83AA 83AA 83CA Μ Μ μ +83AB 83AB 83CB Ν Ν ν +83AC 83AC 83CC Ξ Ξ ξ +83AD 83AD 83CD Ο Ο ο +83AE 83AE 83CE Π Π π +83AF 83AF 83CF Ρ Ρ ρ +83B0 83B0 83D0 Σ Σ σ +83B1 83B1 83D1 Τ Τ τ +83B2 83B2 83D2 Υ Υ υ +83B3 83B3 83D3 Φ Φ φ +83B4 83B4 83D4 Χ Χ χ +83B5 83B5 83D5 Ψ Ψ ψ +83B6 83B6 83D6 Ω Ω ω +83BF 839F 83BF α Α α +83C0 83A0 83C0 β Β β +83C1 83A1 83C1 γ Γ γ +83C2 83A2 83C2 δ Δ δ +83C3 83A3 83C3 ε Ε ε +83C4 83A4 83C4 ζ Ζ ζ +83C5 83A5 83C5 η Η η +83C6 83A6 83C6 θ Θ θ +83C7 83A7 83C7 ι Ι ι +83C8 83A8 83C8 κ Κ κ +83C9 83A9 83C9 λ Λ λ +83CA 83AA 83CA μ Μ μ +83CB 83AB 83CB ν Ν ν +83CC 83AC 83CC ξ Ξ ξ +83CD 83AD 83CD ο Ο ο +83CE 83AE 83CE π Π π +83CF 83AF 83CF ρ Ρ ρ +83D0 83B0 83D0 σ Σ σ +83D1 83B1 83D1 τ Τ τ +83D2 83B2 83D2 υ Υ υ +83D3 83B3 83D3 φ Φ φ +83D4 83B4 83D4 χ Χ χ +83D5 83B5 83D5 ψ Ψ ψ +83D6 83B6 83D6 ω Ω ω +8440 8440 8470 А А а +8441 8441 8471 Б Б б +8442 8442 8472 В В в +8443 8443 8473 Г Г г +8444 8444 8474 Д Д д +8445 8445 8475 Е Е е +8446 8446 8476 Ё Ё ё +8447 8447 8477 Ж Ж ж +8448 8448 8478 З З з +8449 8449 8479 И И и +844A 844A 847A Й Й й +844B 844B 847B К К к +844C 844C 847C Л Л л +844D 844D 847D М М м +844E 844E 847E Н Н н +844F 844F 8480 О О о +8450 8450 8481 П П п +8451 8451 8482 Р Р р +8452 8452 8483 С С с +8453 8453 8484 Т Т т +8454 8454 8485 У У у +8455 8455 8486 Ф Ф ф +8456 8456 8487 Х Х х +8457 8457 8488 Ц Ц ц +8458 8458 8489 Ч Ч ч +8459 8459 848A Ш Ш ш +845A 845A 848B Щ Щ щ +845B 845B 848C Ъ Ъ ъ +845C 845C 848D Ы Ы ы +845D 845D 848E Ь Ь ь +845E 845E 848F Э Э э +845F 845F 8490 Ю Ю ю +8460 8460 8491 Я Я я +8470 8440 8470 а А а +8471 8441 8471 б Б б +8472 8442 8472 в В в +8473 8443 8473 г Г г +8474 8444 8474 д Д д +8475 8445 8475 е Е е +8476 8446 8476 ё Ё ё +8477 8447 8477 ж Ж ж +8478 8448 8478 з З з +8479 8449 8479 и И и +847A 844A 847A й Й й +847B 844B 847B к К к +847C 844C 847C л Л л +847D 844D 847D м М м +847E 844E 847E н Н н +8480 844F 8480 о О о +8481 8450 8481 п П п +8482 8451 8482 р Р р +8483 8452 8483 с С с +8484 8453 8484 т Т т +8485 8454 8485 у У у +8486 8455 8486 ф Ф ф +8487 8456 8487 х Х х +8488 8457 8488 ц Ц ц +8489 8458 8489 ч Ч ч +848A 8459 848A ш Ш ш +848B 845A 848B щ Щ щ +848C 845B 848C ъ Ъ ъ +848D 845C 848D ы Ы ы +848E 845D 848E ь Ь ь +848F 845E 848F э Э э +8490 845F 8490 ю Ю ю +8491 8460 8491 я Я я +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +81F0 Å +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ctype_ujis.result b/mysql-test/r/ctype_ujis.result index 540ba178756..1c4cfcd6ec5 100644 --- a/mysql-test/r/ctype_ujis.result +++ b/mysql-test/r/ctype_ujis.result @@ -2377,3 +2377,535 @@ DROP TABLE t2; set names default; set character_set_database=default; set character_set_server=default; +# +# Start of 5.5 tests +# +# +# Testing WL#4583 Case conversion in Asian character sets +# +SET NAMES utf8; +SET collation_connection=ujis_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0; +INSERT INTO t1 (code) SELECT concat('8E', head) FROM head +WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head; +INSERT INTO t1 (code) SELECT concat(head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +INSERT INTO t1 (code) SELECT concat('8F', head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '80' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `code` varchar(6) CHARACTER SET ujis NOT NULL DEFAULT '', + `a` varchar(1) CHARACTER SET ujis NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +UPDATE t1 SET a=unhex(code) ORDER BY code; +Warnings: +Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1 +Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2 +Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3 +Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4 +Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5 +Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6 +Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7 +Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8 +Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9 +Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10 +Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11 +Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12 +Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13 +Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14 +Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15 +Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16 +Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17 +Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18 +Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19 +Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20 +Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21 +Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22 +Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23 +Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24 +Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25 +Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26 +Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27 +Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28 +Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29 +Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30 +Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31 +Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32 +Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33 +Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34 +Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35 +Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36 +Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37 +Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38 +Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39 +Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40 +Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41 +Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42 +Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43 +Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44 +Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45 +Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46 +Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47 +Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48 +Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49 +Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50 +Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51 +Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52 +Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53 +Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54 +Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55 +Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56 +Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57 +Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58 +Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59 +Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60 +Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61 +Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62 +Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63 +Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64 +SELECT COUNT(*) FROM t1; +COUNT(*) +44671 +SELECT COUNT(*) FROM t1 WHERE a<>''; +COUNT(*) +17735 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +COUNT(*) +8899 +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3; +COUNT(*) +8836 +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code; +code hex(upper(a)) hex(lower(a)) a upper(a) lower(a) +8FA6E1 8FA6E1 8FA6F1 Ά Ά ά +8FA6E2 8FA6E2 8FA6F2 Έ Έ έ +8FA6E3 8FA6E3 8FA6F3 Ή Ή ή +8FA6E4 8FA6E4 8FA6F4 Ί Ί ί +8FA6E5 8FA6E5 8FA6F5 Ϊ Ϊ ϊ +8FA6E7 8FA6E7 8FA6F7 Ό Ό ό +8FA6E9 8FA6E9 8FA6F9 Ύ Ύ ύ +8FA6EA 8FA6EA 8FA6FA Ϋ Ϋ ϋ +8FA6EC 8FA6EC 8FA6FC Ώ Ώ ώ +8FA6F1 8FA6E1 8FA6F1 ά Ά ά +8FA6F2 8FA6E2 8FA6F2 έ Έ έ +8FA6F3 8FA6E3 8FA6F3 ή Ή ή +8FA6F4 8FA6E4 8FA6F4 ί Ί ί +8FA6F5 8FA6E5 8FA6F5 ϊ Ϊ ϊ +8FA6F7 8FA6E7 8FA6F7 ό Ό ό +8FA6F8 A6B2 8FA6F8 ς Σ ς +8FA6F9 8FA6E9 8FA6F9 ύ Ύ ύ +8FA6FA 8FA6EA 8FA6FA ϋ Ϋ ϋ +8FA6FC 8FA6EC 8FA6FC ώ Ώ ώ +8FA7C2 8FA7C2 8FA7F2 Ђ Ђ ђ +8FA7C3 8FA7C3 8FA7F3 Ѓ Ѓ ѓ +8FA7C4 8FA7C4 8FA7F4 Є Є є +8FA7C5 8FA7C5 8FA7F5 Ѕ Ѕ ѕ +8FA7C6 8FA7C6 8FA7F6 І І і +8FA7C7 8FA7C7 8FA7F7 Ї Ї ї +8FA7C8 8FA7C8 8FA7F8 Ј Ј ј +8FA7C9 8FA7C9 8FA7F9 Љ Љ љ +8FA7CA 8FA7CA 8FA7FA Њ Њ њ +8FA7CB 8FA7CB 8FA7FB Ћ Ћ ћ +8FA7CC 8FA7CC 8FA7FC Ќ Ќ ќ +8FA7CD 8FA7CD 8FA7FD Ў Ў ў +8FA7CE 8FA7CE 8FA7FE Џ Џ џ +8FA7F2 8FA7C2 8FA7F2 ђ Ђ ђ +8FA7F3 8FA7C3 8FA7F3 ѓ Ѓ ѓ +8FA7F4 8FA7C4 8FA7F4 є Є є +8FA7F5 8FA7C5 8FA7F5 ѕ Ѕ ѕ +8FA7F6 8FA7C6 8FA7F6 і І і +8FA7F7 8FA7C7 8FA7F7 ї Ї ї +8FA7F8 8FA7C8 8FA7F8 ј Ј ј +8FA7F9 8FA7C9 8FA7F9 љ Љ љ +8FA7FA 8FA7CA 8FA7FA њ Њ њ +8FA7FB 8FA7CB 8FA7FB ћ Ћ ћ +8FA7FC 8FA7CC 8FA7FC ќ Ќ ќ +8FA7FD 8FA7CD 8FA7FD ў Ў ў +8FA7FE 8FA7CE 8FA7FE џ Џ џ +8FA9A1 8FA9A1 8FA9C1 Æ Æ æ +8FA9A2 8FA9A2 8FA9C2 Đ Đ đ +8FA9A4 8FA9A4 8FA9C4 Ħ Ħ ħ +8FA9A6 8FA9A6 8FA9C6 IJ IJ ij +8FA9A8 8FA9A8 8FA9C8 Ł Ł ł +8FA9A9 8FA9A9 8FA9C9 Ŀ Ŀ ŀ +8FA9AB 8FA9AB 8FA9CB Ŋ Ŋ ŋ +8FA9AC 8FA9AC 8FA9CC Ø Ø ø +8FA9AD 8FA9AD 8FA9CD Œ Œ œ +8FA9AF 8FA9AF 8FA9CF Ŧ Ŧ ŧ +8FA9B0 8FA9B0 8FA9D0 Þ Þ þ +8FA9C1 8FA9A1 8FA9C1 æ Æ æ +8FA9C2 8FA9A2 8FA9C2 đ Đ đ +8FA9C4 8FA9A4 8FA9C4 ħ Ħ ħ +8FA9C5 49 8FA9C5 ı I ı +8FA9C6 8FA9A6 8FA9C6 ij IJ ij +8FA9C8 8FA9A8 8FA9C8 ł Ł ł +8FA9C9 8FA9A9 8FA9C9 ŀ Ŀ ŀ +8FA9CB 8FA9AB 8FA9CB ŋ Ŋ ŋ +8FA9CC 8FA9AC 8FA9CC ø Ø ø +8FA9CD 8FA9AD 8FA9CD œ Œ œ +8FA9CF 8FA9AF 8FA9CF ŧ Ŧ ŧ +8FA9D0 8FA9B0 8FA9D0 þ Þ þ +8FAAA1 8FAAA1 8FABA1 Á Á á +8FAAA2 8FAAA2 8FABA2 À À à +8FAAA3 8FAAA3 8FABA3 Ä Ä ä +8FAAA4 8FAAA4 8FABA4   â +8FAAA5 8FAAA5 8FABA5 Ă Ă ă +8FAAA6 8FAAA6 8FABA6 Ǎ Ǎ ǎ +8FAAA7 8FAAA7 8FABA7 Ā Ā ā +8FAAA8 8FAAA8 8FABA8 Ą Ą ą +8FAAA9 8FAAA9 8FABA9 Å Å å +8FAAAA 8FAAAA 8FABAA à à ã +8FAAAB 8FAAAB 8FABAB Ć Ć ć +8FAAAC 8FAAAC 8FABAC Ĉ Ĉ ĉ +8FAAAD 8FAAAD 8FABAD Č Č č +8FAAAE 8FAAAE 8FABAE Ç Ç ç +8FAAAF 8FAAAF 8FABAF Ċ Ċ ċ +8FAAB0 8FAAB0 8FABB0 Ď Ď ď +8FAAB1 8FAAB1 8FABB1 É É é +8FAAB2 8FAAB2 8FABB2 È È è +8FAAB3 8FAAB3 8FABB3 Ë Ë ë +8FAAB4 8FAAB4 8FABB4 Ê Ê ê +8FAAB5 8FAAB5 8FABB5 Ě Ě ě +8FAAB6 8FAAB6 8FABB6 Ė Ė ė +8FAAB7 8FAAB7 8FABB7 Ē Ē ē +8FAAB8 8FAAB8 8FABB8 Ę Ę ę +8FAABA 8FAABA 8FABBA Ĝ Ĝ ĝ +8FAABB 8FAABB 8FABBB Ğ Ğ ğ +8FAABD 8FAABD 8FABBD Ġ Ġ ġ +8FAABE 8FAABE 8FABBE Ĥ Ĥ ĥ +8FAABF 8FAABF 8FABBF Í Í í +8FAAC0 8FAAC0 8FABC0 Ì Ì ì +8FAAC1 8FAAC1 8FABC1 Ï Ï ï +8FAAC2 8FAAC2 8FABC2 Î Î î +8FAAC3 8FAAC3 8FABC3 Ǐ Ǐ ǐ +8FAAC4 8FAAC4 69 İ İ i +8FAAC5 8FAAC5 8FABC5 Ī Ī ī +8FAAC6 8FAAC6 8FABC6 Į Į į +8FAAC7 8FAAC7 8FABC7 Ĩ Ĩ ĩ +8FAAC8 8FAAC8 8FABC8 Ĵ Ĵ ĵ +8FAAC9 8FAAC9 8FABC9 Ķ Ķ ķ +8FAACA 8FAACA 8FABCA Ĺ Ĺ ĺ +8FAACB 8FAACB 8FABCB Ľ Ľ ľ +8FAACC 8FAACC 8FABCC Ļ Ļ ļ +8FAACD 8FAACD 8FABCD Ń Ń ń +8FAACE 8FAACE 8FABCE Ň Ň ň +8FAACF 8FAACF 8FABCF Ņ Ņ ņ +8FAAD0 8FAAD0 8FABD0 Ñ Ñ ñ +8FAAD1 8FAAD1 8FABD1 Ó Ó ó +8FAAD2 8FAAD2 8FABD2 Ò Ò ò +8FAAD3 8FAAD3 8FABD3 Ö Ö ö +8FAAD4 8FAAD4 8FABD4 Ô Ô ô +8FAAD5 8FAAD5 8FABD5 Ǒ Ǒ ǒ +8FAAD6 8FAAD6 8FABD6 Ő Ő ő +8FAAD7 8FAAD7 8FABD7 Ō Ō ō +8FAAD8 8FAAD8 8FABD8 Õ Õ õ +8FAAD9 8FAAD9 8FABD9 Ŕ Ŕ ŕ +8FAADA 8FAADA 8FABDA Ř Ř ř +8FAADB 8FAADB 8FABDB Ŗ Ŗ ŗ +8FAADC 8FAADC 8FABDC Ś Ś ś +8FAADD 8FAADD 8FABDD Ŝ Ŝ ŝ +8FAADE 8FAADE 8FABDE Š Š š +8FAADF 8FAADF 8FABDF Ş Ş ş +8FAAE0 8FAAE0 8FABE0 Ť Ť ť +8FAAE1 8FAAE1 8FABE1 Ţ Ţ ţ +8FAAE2 8FAAE2 8FABE2 Ú Ú ú +8FAAE3 8FAAE3 8FABE3 Ù Ù ù +8FAAE4 8FAAE4 8FABE4 Ü Ü ü +8FAAE5 8FAAE5 8FABE5 Û Û û +8FAAE6 8FAAE6 8FABE6 Ŭ Ŭ ŭ +8FAAE7 8FAAE7 8FABE7 Ǔ Ǔ ǔ +8FAAE8 8FAAE8 8FABE8 Ű Ű ű +8FAAE9 8FAAE9 8FABE9 Ū Ū ū +8FAAEA 8FAAEA 8FABEA Ų Ų ų +8FAAEB 8FAAEB 8FABEB Ů Ů ů +8FAAEC 8FAAEC 8FABEC Ũ Ũ ũ +8FAAED 8FAAED 8FABED Ǘ Ǘ ǘ +8FAAEE 8FAAEE 8FABEE Ǜ Ǜ ǜ +8FAAEF 8FAAEF 8FABEF Ǚ Ǚ ǚ +8FAAF0 8FAAF0 8FABF0 Ǖ Ǖ ǖ +8FAAF1 8FAAF1 8FABF1 Ŵ Ŵ ŵ +8FAAF2 8FAAF2 8FABF2 Ý Ý ý +8FAAF3 8FAAF3 8FABF3 Ÿ Ÿ ÿ +8FAAF4 8FAAF4 8FABF4 Ŷ Ŷ ŷ +8FAAF5 8FAAF5 8FABF5 Ź Ź ź +8FAAF6 8FAAF6 8FABF6 Ž Ž ž +8FAAF7 8FAAF7 8FABF7 Ż Ż ż +8FABA1 8FAAA1 8FABA1 á Á á +8FABA2 8FAAA2 8FABA2 à À à +8FABA3 8FAAA3 8FABA3 ä Ä ä +8FABA4 8FAAA4 8FABA4 â  â +8FABA5 8FAAA5 8FABA5 ă Ă ă +8FABA6 8FAAA6 8FABA6 ǎ Ǎ ǎ +8FABA7 8FAAA7 8FABA7 ā Ā ā +8FABA8 8FAAA8 8FABA8 ą Ą ą +8FABA9 8FAAA9 8FABA9 å Å å +8FABAA 8FAAAA 8FABAA ã à ã +8FABAB 8FAAAB 8FABAB ć Ć ć +8FABAC 8FAAAC 8FABAC ĉ Ĉ ĉ +8FABAD 8FAAAD 8FABAD č Č č +8FABAE 8FAAAE 8FABAE ç Ç ç +8FABAF 8FAAAF 8FABAF ċ Ċ ċ +8FABB0 8FAAB0 8FABB0 ď Ď ď +8FABB1 8FAAB1 8FABB1 é É é +8FABB2 8FAAB2 8FABB2 è È è +8FABB3 8FAAB3 8FABB3 ë Ë ë +8FABB4 8FAAB4 8FABB4 ê Ê ê +8FABB5 8FAAB5 8FABB5 ě Ě ě +8FABB6 8FAAB6 8FABB6 ė Ė ė +8FABB7 8FAAB7 8FABB7 ē Ē ē +8FABB8 8FAAB8 8FABB8 ę Ę ę +8FABBA 8FAABA 8FABBA ĝ Ĝ ĝ +8FABBB 8FAABB 8FABBB ğ Ğ ğ +8FABBD 8FAABD 8FABBD ġ Ġ ġ +8FABBE 8FAABE 8FABBE ĥ Ĥ ĥ +8FABBF 8FAABF 8FABBF í Í í +8FABC0 8FAAC0 8FABC0 ì Ì ì +8FABC1 8FAAC1 8FABC1 ï Ï ï +8FABC2 8FAAC2 8FABC2 î Î î +8FABC3 8FAAC3 8FABC3 ǐ Ǐ ǐ +8FABC5 8FAAC5 8FABC5 ī Ī ī +8FABC6 8FAAC6 8FABC6 į Į į +8FABC7 8FAAC7 8FABC7 ĩ Ĩ ĩ +8FABC8 8FAAC8 8FABC8 ĵ Ĵ ĵ +8FABC9 8FAAC9 8FABC9 ķ Ķ ķ +8FABCA 8FAACA 8FABCA ĺ Ĺ ĺ +8FABCB 8FAACB 8FABCB ľ Ľ ľ +8FABCC 8FAACC 8FABCC ļ Ļ ļ +8FABCD 8FAACD 8FABCD ń Ń ń +8FABCE 8FAACE 8FABCE ň Ň ň +8FABCF 8FAACF 8FABCF ņ Ņ ņ +8FABD0 8FAAD0 8FABD0 ñ Ñ ñ +8FABD1 8FAAD1 8FABD1 ó Ó ó +8FABD2 8FAAD2 8FABD2 ò Ò ò +8FABD3 8FAAD3 8FABD3 ö Ö ö +8FABD4 8FAAD4 8FABD4 ô Ô ô +8FABD5 8FAAD5 8FABD5 ǒ Ǒ ǒ +8FABD6 8FAAD6 8FABD6 ő Ő ő +8FABD7 8FAAD7 8FABD7 ō Ō ō +8FABD8 8FAAD8 8FABD8 õ Õ õ +8FABD9 8FAAD9 8FABD9 ŕ Ŕ ŕ +8FABDA 8FAADA 8FABDA ř Ř ř +8FABDB 8FAADB 8FABDB ŗ Ŗ ŗ +8FABDC 8FAADC 8FABDC ś Ś ś +8FABDD 8FAADD 8FABDD ŝ Ŝ ŝ +8FABDE 8FAADE 8FABDE š Š š +8FABDF 8FAADF 8FABDF ş Ş ş +8FABE0 8FAAE0 8FABE0 ť Ť ť +8FABE1 8FAAE1 8FABE1 ţ Ţ ţ +8FABE2 8FAAE2 8FABE2 ú Ú ú +8FABE3 8FAAE3 8FABE3 ù Ù ù +8FABE4 8FAAE4 8FABE4 ü Ü ü +8FABE5 8FAAE5 8FABE5 û Û û +8FABE6 8FAAE6 8FABE6 ŭ Ŭ ŭ +8FABE7 8FAAE7 8FABE7 ǔ Ǔ ǔ +8FABE8 8FAAE8 8FABE8 ű Ű ű +8FABE9 8FAAE9 8FABE9 ū Ū ū +8FABEA 8FAAEA 8FABEA ų Ų ų +8FABEB 8FAAEB 8FABEB ů Ů ů +8FABEC 8FAAEC 8FABEC ũ Ũ ũ +8FABED 8FAAED 8FABED ǘ Ǘ ǘ +8FABEE 8FAAEE 8FABEE ǜ Ǜ ǜ +8FABEF 8FAAEF 8FABEF ǚ Ǚ ǚ +8FABF0 8FAAF0 8FABF0 ǖ Ǖ ǖ +8FABF1 8FAAF1 8FABF1 ŵ Ŵ ŵ +8FABF2 8FAAF2 8FABF2 ý Ý ý +8FABF3 8FAAF3 8FABF3 ÿ Ÿ ÿ +8FABF4 8FAAF4 8FABF4 ŷ Ŷ ŷ +8FABF5 8FAAF5 8FABF5 ź Ź ź +8FABF6 8FAAF6 8FABF6 ž Ž ž +8FABF7 8FAAF7 8FABF7 ż Ż ż +A2F2 A2F2 8FABA9 Å Å å +A3C1 A3C1 A3E1 A A a +A3C2 A3C2 A3E2 B B b +A3C3 A3C3 A3E3 C C c +A3C4 A3C4 A3E4 D D d +A3C5 A3C5 A3E5 E E e +A3C6 A3C6 A3E6 F F f +A3C7 A3C7 A3E7 G G g +A3C8 A3C8 A3E8 H H h +A3C9 A3C9 A3E9 I I i +A3CA A3CA A3EA J J j +A3CB A3CB A3EB K K k +A3CC A3CC A3EC L L l +A3CD A3CD A3ED M M m +A3CE A3CE A3EE N N n +A3CF A3CF A3EF O O o +A3D0 A3D0 A3F0 P P p +A3D1 A3D1 A3F1 Q Q q +A3D2 A3D2 A3F2 R R r +A3D3 A3D3 A3F3 S S s +A3D4 A3D4 A3F4 T T t +A3D5 A3D5 A3F5 U U u +A3D6 A3D6 A3F6 V V v +A3D7 A3D7 A3F7 W W w +A3D8 A3D8 A3F8 X X x +A3D9 A3D9 A3F9 Y Y y +A3DA A3DA A3FA Z Z z +A3E1 A3C1 A3E1 a A a +A3E2 A3C2 A3E2 b B b +A3E3 A3C3 A3E3 c C c +A3E4 A3C4 A3E4 d D d +A3E5 A3C5 A3E5 e E e +A3E6 A3C6 A3E6 f F f +A3E7 A3C7 A3E7 g G g +A3E8 A3C8 A3E8 h H h +A3E9 A3C9 A3E9 i I i +A3EA A3CA A3EA j J j +A3EB A3CB A3EB k K k +A3EC A3CC A3EC l L l +A3ED A3CD A3ED m M m +A3EE A3CE A3EE n N n +A3EF A3CF A3EF o O o +A3F0 A3D0 A3F0 p P p +A3F1 A3D1 A3F1 q Q q +A3F2 A3D2 A3F2 r R r +A3F3 A3D3 A3F3 s S s +A3F4 A3D4 A3F4 t T t +A3F5 A3D5 A3F5 u U u +A3F6 A3D6 A3F6 v V v +A3F7 A3D7 A3F7 w W w +A3F8 A3D8 A3F8 x X x +A3F9 A3D9 A3F9 y Y y +A3FA A3DA A3FA z Z z +A6A1 A6A1 A6C1 Α Α α +A6A2 A6A2 A6C2 Β Β β +A6A3 A6A3 A6C3 Γ Γ γ +A6A4 A6A4 A6C4 Δ Δ δ +A6A5 A6A5 A6C5 Ε Ε ε +A6A6 A6A6 A6C6 Ζ Ζ ζ +A6A7 A6A7 A6C7 Η Η η +A6A8 A6A8 A6C8 Θ Θ θ +A6A9 A6A9 A6C9 Ι Ι ι +A6AA A6AA A6CA Κ Κ κ +A6AB A6AB A6CB Λ Λ λ +A6AC A6AC A6CC Μ Μ μ +A6AD A6AD A6CD Ν Ν ν +A6AE A6AE A6CE Ξ Ξ ξ +A6AF A6AF A6CF Ο Ο ο +A6B0 A6B0 A6D0 Π Π π +A6B1 A6B1 A6D1 Ρ Ρ ρ +A6B2 A6B2 A6D2 Σ Σ σ +A6B3 A6B3 A6D3 Τ Τ τ +A6B4 A6B4 A6D4 Υ Υ υ +A6B5 A6B5 A6D5 Φ Φ φ +A6B6 A6B6 A6D6 Χ Χ χ +A6B7 A6B7 A6D7 Ψ Ψ ψ +A6B8 A6B8 A6D8 Ω Ω ω +A6C1 A6A1 A6C1 α Α α +A6C2 A6A2 A6C2 β Β β +A6C3 A6A3 A6C3 γ Γ γ +A6C4 A6A4 A6C4 δ Δ δ +A6C5 A6A5 A6C5 ε Ε ε +A6C6 A6A6 A6C6 ζ Ζ ζ +A6C7 A6A7 A6C7 η Η η +A6C8 A6A8 A6C8 θ Θ θ +A6C9 A6A9 A6C9 ι Ι ι +A6CA A6AA A6CA κ Κ κ +A6CB A6AB A6CB λ Λ λ +A6CC A6AC A6CC μ Μ μ +A6CD A6AD A6CD ν Ν ν +A6CE A6AE A6CE ξ Ξ ξ +A6CF A6AF A6CF ο Ο ο +A6D0 A6B0 A6D0 π Π π +A6D1 A6B1 A6D1 ρ Ρ ρ +A6D2 A6B2 A6D2 σ Σ σ +A6D3 A6B3 A6D3 τ Τ τ +A6D4 A6B4 A6D4 υ Υ υ +A6D5 A6B5 A6D5 φ Φ φ +A6D6 A6B6 A6D6 χ Χ χ +A6D7 A6B7 A6D7 ψ Ψ ψ +A6D8 A6B8 A6D8 ω Ω ω +A7A1 A7A1 A7D1 А А а +A7A2 A7A2 A7D2 Б Б б +A7A3 A7A3 A7D3 В В в +A7A4 A7A4 A7D4 Г Г г +A7A5 A7A5 A7D5 Д Д д +A7A6 A7A6 A7D6 Е Е е +A7A7 A7A7 A7D7 Ё Ё ё +A7A8 A7A8 A7D8 Ж Ж ж +A7A9 A7A9 A7D9 З З з +A7AA A7AA A7DA И И и +A7AB A7AB A7DB Й Й й +A7AC A7AC A7DC К К к +A7AD A7AD A7DD Л Л л +A7AE A7AE A7DE М М м +A7AF A7AF A7DF Н Н н +A7B0 A7B0 A7E0 О О о +A7B1 A7B1 A7E1 П П п +A7B2 A7B2 A7E2 Р Р р +A7B3 A7B3 A7E3 С С с +A7B4 A7B4 A7E4 Т Т т +A7B5 A7B5 A7E5 У У у +A7B6 A7B6 A7E6 Ф Ф ф +A7B7 A7B7 A7E7 Х Х х +A7B8 A7B8 A7E8 Ц Ц ц +A7B9 A7B9 A7E9 Ч Ч ч +A7BA A7BA A7EA Ш Ш ш +A7BB A7BB A7EB Щ Щ щ +A7BC A7BC A7EC Ъ Ъ ъ +A7BD A7BD A7ED Ы Ы ы +A7BE A7BE A7EE Ь Ь ь +A7BF A7BF A7EF Э Э э +A7C0 A7C0 A7F0 Ю Ю ю +A7C1 A7C1 A7F1 Я Я я +A7D1 A7A1 A7D1 а А а +A7D2 A7A2 A7D2 б Б б +A7D3 A7A3 A7D3 в В в +A7D4 A7A4 A7D4 г Г г +A7D5 A7A5 A7D5 д Д д +A7D6 A7A6 A7D6 е Е е +A7D7 A7A7 A7D7 ё Ё ё +A7D8 A7A8 A7D8 ж Ж ж +A7D9 A7A9 A7D9 з З з +A7DA A7AA A7DA и И и +A7DB A7AB A7DB й Й й +A7DC A7AC A7DC к К к +A7DD A7AD A7DD л Л л +A7DE A7AE A7DE м М м +A7DF A7AF A7DF н Н н +A7E0 A7B0 A7E0 о О о +A7E1 A7B1 A7E1 п П п +A7E2 A7B2 A7E2 р Р р +A7E3 A7B3 A7E3 с С с +A7E4 A7B4 A7E4 т Т т +A7E5 A7B5 A7E5 у У у +A7E6 A7B6 A7E6 ф Ф ф +A7E7 A7B7 A7E7 х Х х +A7E8 A7B8 A7E8 ц Ц ц +A7E9 A7B9 A7E9 ч Ч ч +A7EA A7BA A7EA ш Ш ш +A7EB A7BB A7EB щ Щ щ +A7EC A7BC A7EC ъ Ъ ъ +A7ED A7BD A7ED ы Ы ы +A7EE A7BE A7EE ь Ь ь +A7EF A7BF A7EF э Э э +A7F0 A7C0 A7F0 ю Ю ю +A7F1 A7C1 A7F1 я Я я +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +8FAABC Ģ +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> +HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +code a +8FA9C3 ð +8FABB9 ǵ +DROP TABLE t1; +# +# End of 5.5 tests +# diff --git a/mysql-test/r/ddl_i18n_koi8r.result b/mysql-test/r/ddl_i18n_koi8r.result index 66ef4df32eb..2282f65c456 100644 --- a/mysql-test/r/ddl_i18n_koi8r.result +++ b/mysql-test/r/ddl_i18n_koi8r.result @@ -361,8 +361,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER koi8r koi8r_gen SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p1 def mysqltest1 p1 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10); SELECT COLLATION(1) AS c1, @@ -379,8 +379,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p2 def mysqltest1 p2 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(1) AS c1, @@ -397,8 +397,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p3 def mysqltest2 p3 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10); SELECT COLLATION(1) AS c1, @@ -415,8 +415,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p4 def mysqltest2 p4 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(1) AS c1, @@ -607,8 +607,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER koi8r koi8r_gen SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p1 def mysqltest1 p1 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10); SELECT COLLATION(1) AS c1, @@ -625,8 +625,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p2 def mysqltest1 p2 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(1) AS c1, @@ -643,8 +643,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p3 def mysqltest2 p3 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10); SELECT COLLATION(1) AS c1, @@ -661,8 +661,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p4 def mysqltest2 p4 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(1) AS c1, @@ -1009,8 +1009,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER koi8r koi8r_gen SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p1 def mysqltest1 p1 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10); SELECT COLLATION(1) AS c1, @@ -1027,8 +1027,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p2 def mysqltest1 p2 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(1) AS c1, @@ -1045,8 +1045,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p3 def mysqltest2 p3 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10); SELECT COLLATION(1) AS c1, @@ -1063,8 +1063,8 @@ SET END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p4 def mysqltest2 p4 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE 1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(1) AS c1, diff --git a/mysql-test/r/ddl_i18n_utf8.result b/mysql-test/r/ddl_i18n_utf8.result index f1f9592f5cf..9d27fdb22bb 100644 --- a/mysql-test/r/ddl_i18n_utf8.result +++ b/mysql-test/r/ddl_i18n_utf8.result @@ -361,8 +361,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER utf8 utf8_gener SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p1 def mysqltest1 p1 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -379,8 +379,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p2 def mysqltest1 p2 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -397,8 +397,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p3 def mysqltest2 p3 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -415,8 +415,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p4 def mysqltest2 p4 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -607,8 +607,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER utf8 utf8_gener SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p1 def mysqltest1 p1 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -625,8 +625,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p2 def mysqltest1 p2 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -643,8 +643,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p3 def mysqltest2 p3 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -661,8 +661,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p4 def mysqltest2 p4 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -1009,8 +1009,8 @@ mysqltest2 p4 PROCEDURE root@localhost MODIFIED CREATED DEFINER utf8 utf8_gener SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p1 def mysqltest1 p1 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p1 def mysqltest1 p1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -1027,8 +1027,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p2 def mysqltest1 p2 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p2 def mysqltest1 p2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -1045,8 +1045,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p3 def mysqltest2 p3 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p3 def mysqltest2 p3 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -1063,8 +1063,8 @@ SET парам2 = 'b'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -p4 def mysqltest2 p4 PROCEDURE NULL SQL BEGIN +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +p4 def mysqltest2 p4 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 017aa6331ff..736f42df996 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -56,6 +56,7 @@ FILES GLOBAL_STATUS GLOBAL_VARIABLES KEY_COLUMN_USAGE +PARAMETERS PARTITIONS PLUGINS PROCESSLIST @@ -776,11 +777,13 @@ table_schema table_name column_name information_schema COLUMNS COLUMN_DEFAULT information_schema COLUMNS COLUMN_TYPE information_schema EVENTS EVENT_DEFINITION +information_schema PARAMETERS DTD_IDENTIFIER information_schema PARTITIONS PARTITION_EXPRESSION information_schema PARTITIONS SUBPARTITION_EXPRESSION information_schema PARTITIONS PARTITION_DESCRIPTION information_schema PLUGINS PLUGIN_DESCRIPTION information_schema PROCESSLIST INFO +information_schema ROUTINES DTD_IDENTIFIER information_schema ROUTINES ROUTINE_DEFINITION information_schema ROUTINES ROUTINE_COMMENT information_schema TRIGGERS ACTION_CONDITION @@ -866,7 +869,7 @@ table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name not like 'ndb%' AND table_name not like 'innodb_%' GROUP BY TABLE_SCHEMA; table_schema count(*) -information_schema 29 +information_schema 30 mysql 22 create table t1 (i int, j int); create trigger trg1 before insert on t1 for each row @@ -1316,6 +1319,7 @@ FILES information_schema.FILES 1 GLOBAL_STATUS information_schema.GLOBAL_STATUS 1 GLOBAL_VARIABLES information_schema.GLOBAL_VARIABLES 1 KEY_COLUMN_USAGE information_schema.KEY_COLUMN_USAGE 1 +PARAMETERS information_schema.PARAMETERS 1 PARTITIONS information_schema.PARTITIONS 1 PLUGINS information_schema.PLUGINS 1 PROCESSLIST information_schema.PROCESSLIST 1 @@ -1711,7 +1715,7 @@ id select_type table type possible_keys key key_len ref rows Extra EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE EVENT_OBJECT_SCHEMA='test'; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE TRIGGERS ALL NULL EVENT_OBJECT_SCHEMA NULL NULL NULL Using where; Open_full_table; Scanned 1 database +1 SIMPLE TRIGGERS ALL NULL EVENT_OBJECT_SCHEMA NULL NULL NULL Using where; Open_frm_only; Scanned 1 database SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE LEFT JOIN INFORMATION_SCHEMA.COLUMNS diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result index bb75bdfff60..9b6a6e4b066 100644 --- a/mysql-test/r/information_schema_db.result +++ b/mysql-test/r/information_schema_db.result @@ -16,6 +16,7 @@ FILES GLOBAL_STATUS GLOBAL_VARIABLES KEY_COLUMN_USAGE +PARAMETERS PARTITIONS PLUGINS PROCESSLIST diff --git a/mysql-test/r/information_schema_parameters.result b/mysql-test/r/information_schema_parameters.result new file mode 100644 index 00000000000..db04f5c0bd3 --- /dev/null +++ b/mysql-test/r/information_schema_parameters.result @@ -0,0 +1,457 @@ +# ========== parameters.1 ========== +USE INFORMATION_SCHEMA; +SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS; +Table Create Table +PARAMETERS CREATE TEMPORARY TABLE `PARAMETERS` ( + `SPECIFIC_CATALOG` varchar(512) NOT NULL DEFAULT '', + `SPECIFIC_SCHEMA` varchar(64) NOT NULL DEFAULT '', + `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '', + `ORDINAL_POSITION` int(21) NOT NULL DEFAULT '0', + `PARAMETER_MODE` varchar(5) DEFAULT NULL, + `PARAMETER_NAME` varchar(64) DEFAULT NULL, + `DATA_TYPE` varchar(64) NOT NULL DEFAULT '', + `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL, + `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL, + `NUMERIC_PRECISION` int(21) DEFAULT NULL, + `NUMERIC_SCALE` int(21) DEFAULT NULL, + `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL, + `COLLATION_NAME` varchar(64) DEFAULT NULL, + `DTD_IDENTIFIER` longtext NOT NULL, + `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '' +) DEFAULT CHARSET=utf8 +SELECT * FROM information_schema.columns +WHERE table_schema = 'information_schema' + AND table_name = 'parameters' +ORDER BY ordinal_position; +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME SPECIFIC_CATALOG +ORDINAL_POSITION 1 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 512 +CHARACTER_OCTET_LENGTH 1536 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(512) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME SPECIFIC_SCHEMA +ORDINAL_POSITION 2 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME SPECIFIC_NAME +ORDINAL_POSITION 3 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME ORDINAL_POSITION +ORDINAL_POSITION 4 +COLUMN_DEFAULT 0 +IS_NULLABLE NO +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME PARAMETER_MODE +ORDINAL_POSITION 5 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 5 +CHARACTER_OCTET_LENGTH 15 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(5) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME PARAMETER_NAME +ORDINAL_POSITION 6 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME DATA_TYPE +ORDINAL_POSITION 7 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME CHARACTER_MAXIMUM_LENGTH +ORDINAL_POSITION 8 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME CHARACTER_OCTET_LENGTH +ORDINAL_POSITION 9 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME NUMERIC_PRECISION +ORDINAL_POSITION 10 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME NUMERIC_SCALE +ORDINAL_POSITION 11 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME CHARACTER_SET_NAME +ORDINAL_POSITION 12 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME COLLATION_NAME +ORDINAL_POSITION 13 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME DTD_IDENTIFIER +ORDINAL_POSITION 14 +COLUMN_DEFAULT NULL +IS_NULLABLE NO +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE longtext +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME parameters +COLUMN_NAME ROUTINE_TYPE +ORDINAL_POSITION 15 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 9 +CHARACTER_OCTET_LENGTH 27 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(9) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +DESCRIBE INFORMATION_SCHEMA.PARAMETERS; +Field Type Null Key Default Extra +SPECIFIC_CATALOG varchar(512) NO +SPECIFIC_SCHEMA varchar(64) NO +SPECIFIC_NAME varchar(64) NO +ORDINAL_POSITION int(21) NO 0 +PARAMETER_MODE varchar(5) YES NULL +PARAMETER_NAME varchar(64) YES NULL +DATA_TYPE varchar(64) NO +CHARACTER_MAXIMUM_LENGTH int(21) YES NULL +CHARACTER_OCTET_LENGTH int(21) YES NULL +NUMERIC_PRECISION int(21) YES NULL +NUMERIC_SCALE int(21) YES NULL +CHARACTER_SET_NAME varchar(64) YES NULL +COLLATION_NAME varchar(64) YES NULL +DTD_IDENTIFIER longtext NO NULL +ROUTINE_TYPE varchar(9) NO +# ========== parameters.2 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50) +RETURN CONCAT('Hello', ,s,'!'); +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS CHAR(50) +RETURN CONCAT('Hello', ,s,'!')' at line 1 +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +# ========== parameters.3 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func1 0 NULL NULL char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) FUNCTION +def i_s_parameters_test test_func1 1 IN s char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION +DROP FUNCTION test_func1; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +# ========== parameters.4 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE PROCEDURE testproc (OUT param1 INT) +BEGIN +SELECT 2+2 as param1; +END; +// +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'testproc'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test testproc 1 OUT param1 int NULL NULL 10 0 NULL NULL int(11) PROCEDURE +# ========== parameters.5 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE PROCEDURE test_proc(INOUT P INT) SET @x=P*2; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_proc 1 INOUT P int NULL NULL 10 0 NULL NULL int(11) PROCEDURE +# ========== parameters.6 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE PROCEDURE test_proc(OUT p VARCHAR(10)) SET P='test'; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_proc 1 OUT p varchar 10 10 NULL NULL latin1 latin1_swedish_ci varchar(10) PROCEDURE +# ========== parameters.7 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func1 (s char(20), t char(20)) RETURNS CHAR(40) +RETURN CONCAT(s,t); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func1 0 NULL NULL char 40 40 NULL NULL latin1 latin1_swedish_ci char(40) FUNCTION +def i_s_parameters_test test_func1 1 IN s char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION +def i_s_parameters_test test_func1 2 IN t char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION +# ========== parameters.8 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func1 0 NULL NULL char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) FUNCTION +def i_s_parameters_test test_func1 1 IN s char 20 20 NULL NULL latin1 latin1_swedish_ci char(20) FUNCTION +# ========== parameters.9 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func2'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func2 0 NULL NULL int NULL NULL 10 0 NULL NULL int(11) FUNCTION +def i_s_parameters_test test_func2 1 IN s int NULL NULL 10 0 NULL NULL int(11) FUNCTION +# ========== parameters.10 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func5 0 NULL NULL timestamp NULL NULL NULL NULL NULL NULL timestamp FUNCTION +def i_s_parameters_test test_func5 1 IN s date NULL NULL NULL NULL NULL NULL date FUNCTION +# ========== parameters.11 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func5 0 NULL NULL timestamp NULL NULL NULL NULL NULL NULL timestamp FUNCTION +def i_s_parameters_test test_func5 1 IN s date NULL NULL NULL NULL NULL NULL date FUNCTION +ALTER FUNCTION test_func5 COMMENT 'new comment added'; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func5 0 NULL NULL timestamp NULL NULL NULL NULL NULL NULL timestamp FUNCTION +def i_s_parameters_test test_func5 1 IN s date NULL NULL NULL NULL NULL NULL date FUNCTION +# ========== parameters.12 ========== +DROP DATABASE IF EXISTS i_s_parameters_test; +CREATE DATABASE i_s_parameters_test CHARACTER SET utf8; +USE i_s_parameters_test; +CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30) +RETURN CONCAT('XYZ, ' ,s); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; +SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE +def i_s_parameters_test test_func5 0 NULL NULL varchar 30 90 NULL NULL utf8 utf8_general_ci varchar(30) FUNCTION +def i_s_parameters_test test_func5 1 IN s char 20 60 NULL NULL utf8 utf8_general_ci char(20) FUNCTION +DROP DATABASE i_s_parameters_test; diff --git a/mysql-test/r/information_schema_routines.result b/mysql-test/r/information_schema_routines.result new file mode 100644 index 00000000000..664ec6bf748 --- /dev/null +++ b/mysql-test/r/information_schema_routines.result @@ -0,0 +1,737 @@ +# ========== routines.1 ========== +USE INFORMATION_SCHEMA; +SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES; +Table Create Table +ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( + `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '', + `ROUTINE_CATALOG` varchar(512) NOT NULL DEFAULT '', + `ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '', + `ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '', + `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '', + `DATA_TYPE` varchar(64) NOT NULL DEFAULT '', + `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL, + `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL, + `NUMERIC_PRECISION` int(21) DEFAULT NULL, + `NUMERIC_SCALE` int(21) DEFAULT NULL, + `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL, + `COLLATION_NAME` varchar(64) DEFAULT NULL, + `DTD_IDENTIFIER` longtext, + `ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '', + `ROUTINE_DEFINITION` longtext, + `EXTERNAL_NAME` varchar(64) DEFAULT NULL, + `EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL, + `PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '', + `IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '', + `SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '', + `SQL_PATH` varchar(64) DEFAULT NULL, + `SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '', + `CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `SQL_MODE` varchar(8192) NOT NULL DEFAULT '', + `ROUTINE_COMMENT` longtext NOT NULL, + `DEFINER` varchar(77) NOT NULL DEFAULT '', + `CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '', + `COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '', + `DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT '' +) DEFAULT CHARSET=utf8 +SELECT * FROM information_schema.columns +WHERE table_schema = 'information_schema' + AND table_name = 'routines' +ORDER BY ordinal_position; +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME SPECIFIC_NAME +ORDINAL_POSITION 1 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_CATALOG +ORDINAL_POSITION 2 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 512 +CHARACTER_OCTET_LENGTH 1536 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(512) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_SCHEMA +ORDINAL_POSITION 3 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_NAME +ORDINAL_POSITION 4 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_TYPE +ORDINAL_POSITION 5 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 9 +CHARACTER_OCTET_LENGTH 27 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(9) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME DATA_TYPE +ORDINAL_POSITION 6 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME CHARACTER_MAXIMUM_LENGTH +ORDINAL_POSITION 7 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME CHARACTER_OCTET_LENGTH +ORDINAL_POSITION 8 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME NUMERIC_PRECISION +ORDINAL_POSITION 9 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME NUMERIC_SCALE +ORDINAL_POSITION 10 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE int(21) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME CHARACTER_SET_NAME +ORDINAL_POSITION 11 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME COLLATION_NAME +ORDINAL_POSITION 12 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME DTD_IDENTIFIER +ORDINAL_POSITION 13 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE longtext +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_BODY +ORDINAL_POSITION 14 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 8 +CHARACTER_OCTET_LENGTH 24 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(8) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_DEFINITION +ORDINAL_POSITION 15 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE longtext +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME EXTERNAL_NAME +ORDINAL_POSITION 16 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME EXTERNAL_LANGUAGE +ORDINAL_POSITION 17 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME PARAMETER_STYLE +ORDINAL_POSITION 18 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 8 +CHARACTER_OCTET_LENGTH 24 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(8) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME IS_DETERMINISTIC +ORDINAL_POSITION 19 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 3 +CHARACTER_OCTET_LENGTH 9 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(3) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME SQL_DATA_ACCESS +ORDINAL_POSITION 20 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME SQL_PATH +ORDINAL_POSITION 21 +COLUMN_DEFAULT NULL +IS_NULLABLE YES +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 64 +CHARACTER_OCTET_LENGTH 192 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(64) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME SECURITY_TYPE +ORDINAL_POSITION 22 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 7 +CHARACTER_OCTET_LENGTH 21 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(7) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME CREATED +ORDINAL_POSITION 23 +COLUMN_DEFAULT 0000-00-00 00:00:00 +IS_NULLABLE NO +DATA_TYPE datetime +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE datetime +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME LAST_ALTERED +ORDINAL_POSITION 24 +COLUMN_DEFAULT 0000-00-00 00:00:00 +IS_NULLABLE NO +DATA_TYPE datetime +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL +COLUMN_TYPE datetime +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME SQL_MODE +ORDINAL_POSITION 25 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 8192 +CHARACTER_OCTET_LENGTH 24576 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(8192) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME ROUTINE_COMMENT +ORDINAL_POSITION 26 +COLUMN_DEFAULT NULL +IS_NULLABLE NO +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE longtext +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME DEFINER +ORDINAL_POSITION 27 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 77 +CHARACTER_OCTET_LENGTH 231 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(77) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME CHARACTER_SET_CLIENT +ORDINAL_POSITION 28 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 32 +CHARACTER_OCTET_LENGTH 96 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(32) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME COLLATION_CONNECTION +ORDINAL_POSITION 29 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 32 +CHARACTER_OCTET_LENGTH 96 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(32) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +TABLE_CATALOG def +TABLE_SCHEMA information_schema +TABLE_NAME routines +COLUMN_NAME DATABASE_COLLATION +ORDINAL_POSITION 30 +COLUMN_DEFAULT +IS_NULLABLE NO +DATA_TYPE varchar +CHARACTER_MAXIMUM_LENGTH 32 +CHARACTER_OCTET_LENGTH 96 +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME utf8 +COLLATION_NAME utf8_general_ci +COLUMN_TYPE varchar(32) +COLUMN_KEY +EXTRA +PRIVILEGES # +COLUMN_COMMENT +DESCRIBE INFORMATION_SCHEMA.ROUTINES; +Field Type Null Key Default Extra +SPECIFIC_NAME varchar(64) NO +ROUTINE_CATALOG varchar(512) NO +ROUTINE_SCHEMA varchar(64) NO +ROUTINE_NAME varchar(64) NO +ROUTINE_TYPE varchar(9) NO +DATA_TYPE varchar(64) NO +CHARACTER_MAXIMUM_LENGTH int(21) YES NULL +CHARACTER_OCTET_LENGTH int(21) YES NULL +NUMERIC_PRECISION int(21) YES NULL +NUMERIC_SCALE int(21) YES NULL +CHARACTER_SET_NAME varchar(64) YES NULL +COLLATION_NAME varchar(64) YES NULL +DTD_IDENTIFIER longtext YES NULL +ROUTINE_BODY varchar(8) NO +ROUTINE_DEFINITION longtext YES NULL +EXTERNAL_NAME varchar(64) YES NULL +EXTERNAL_LANGUAGE varchar(64) YES NULL +PARAMETER_STYLE varchar(8) NO +IS_DETERMINISTIC varchar(3) NO +SQL_DATA_ACCESS varchar(64) NO +SQL_PATH varchar(64) YES NULL +SECURITY_TYPE varchar(7) NO +CREATED datetime NO 0000-00-00 00:00:00 +LAST_ALTERED datetime NO 0000-00-00 00:00:00 +SQL_MODE varchar(8192) NO +ROUTINE_COMMENT longtext NO NULL +DEFINER varchar(77) NO +CHARACTER_SET_CLIENT varchar(32) NO +COLLATION_CONNECTION varchar(32) NO +DATABASE_COLLATION varchar(32) NO +# ========== routines.2 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50) +RETURN CONCAT('Hello', ,s,'!'); +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS CHAR(50) +RETURN CONCAT('Hello', ,s,'!')' at line 1 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +# ========== routines.3 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func1 def i_s_routines_test test_func1 FUNCTION char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) SQL RETURN CONCAT('Hello, ',s,'!') NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +DROP FUNCTION test_func1; +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +# ========== routines.4 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE PROCEDURE testproc (OUT param1 INT) +BEGIN +SELECT 2+2 as param1; +END; +// +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'testproc'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +testproc def i_s_routines_test testproc PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN +SELECT 2+2 as param1; +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +# ========== routines.5 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func1 def i_s_routines_test test_func1 FUNCTION char 50 50 NULL NULL latin1 latin1_swedish_ci char(50) SQL RETURN CONCAT('Hello, ',s,'!') NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +# ========== routines.6 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2; +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func2'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func2 def i_s_routines_test test_func2 FUNCTION int NULL NULL 10 0 NULL NULL int(11) SQL RETURN s*2 NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +# ========== routines.7 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func5 def i_s_routines_test test_func5 FUNCTION timestamp NULL NULL NULL NULL NULL NULL timestamp SQL RETURN CURRENT_TIMESTAMP NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +# ========== routines.8 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func5 def i_s_routines_test test_func5 FUNCTION timestamp NULL NULL NULL NULL NULL NULL timestamp SQL RETURN CURRENT_TIMESTAMP NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +ALTER FUNCTION test_func5 COMMENT 'new comment added'; +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func5 def i_s_routines_test test_func5 FUNCTION timestamp NULL NULL NULL NULL NULL NULL timestamp SQL RETURN CURRENT_TIMESTAMP NULL NULL SQL NO CONTAINS SQL NULL DEFINER new comment added root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +# ========== routines.9 ========== +DROP DATABASE IF EXISTS i_s_routines_test; +CREATE DATABASE i_s_routines_test CHARACTER SET utf8; +USE i_s_routines_test; +CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30) +RETURN CONCAT('XYZ, ' ,s); +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +test_func5 def i_s_routines_test test_func5 FUNCTION varchar 30 90 NULL NULL utf8 utf8_general_ci varchar(30) SQL RETURN CONCAT('XYZ, ' ,s) NULL NULL SQL NO CONTAINS SQL NULL DEFINER root@localhost latin1 latin1_swedish_ci utf8_general_ci +DROP DATABASE i_s_routines_test; diff --git a/mysql-test/r/mysqlcheck.result b/mysql-test/r/mysqlcheck.result index 89f7e1dab95..06175955d7f 100644 --- a/mysql-test/r/mysqlcheck.result +++ b/mysql-test/r/mysqlcheck.result @@ -164,9 +164,6 @@ WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name; TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION def #mysql50#a@b tr1 INSERT def #mysql50#a@b #mysql50#c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci def #mysql50#a@b tr2 INSERT def #mysql50#a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci -Warnings: -Warning 1603 Triggers for table `#mysql50#a@b`.`#mysql50#c@d` have no creation context -Warning 1603 Triggers for table `#mysql50#a@b`.`t1` have no creation context mysqlcheck --fix-db-names --fix-table-names --all-databases USE `a@b`; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS diff --git a/mysql-test/r/mysqlshow.result b/mysql-test/r/mysqlshow.result index 1313d573af2..4293465df67 100644 --- a/mysql-test/r/mysqlshow.result +++ b/mysql-test/r/mysqlshow.result @@ -90,6 +90,7 @@ Database: information_schema | GLOBAL_STATUS | | GLOBAL_VARIABLES | | KEY_COLUMN_USAGE | +| PARAMETERS | | PARTITIONS | | PLUGINS | | PROCESSLIST | @@ -131,6 +132,7 @@ Database: INFORMATION_SCHEMA | GLOBAL_STATUS | | GLOBAL_VARIABLES | | KEY_COLUMN_USAGE | +| PARAMETERS | | PARTITIONS | | PLUGINS | | PROCESSLIST | diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 4dcf6c52673..22b5b29a0c1 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -1106,7 +1106,7 @@ def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 153 def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 1 0 33 def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 1 0 33 def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 27 9 N 1 0 33 -def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 253 192 0 Y 0 0 33 +def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 252 589815 0 Y 16 0 33 def information_schema ROUTINES ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 1 0 33 def information_schema ROUTINES ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 16 0 33 def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 0 0 33 @@ -1161,7 +1161,7 @@ def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 153 def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 1 0 33 def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 1 0 33 def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 27 8 N 1 0 33 -def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 253 192 7 Y 0 0 33 +def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 252 589815 7 Y 16 0 33 def information_schema ROUTINES ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 1 0 33 def information_schema ROUTINES ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 16 0 33 def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 0 0 33 diff --git a/mysql-test/r/sp-ucs2.result b/mysql-test/r/sp-ucs2.result index 5d4289a60c5..aa87e8865ed 100644 --- a/mysql-test/r/sp-ucs2.result +++ b/mysql-test/r/sp-ucs2.result @@ -132,7 +132,7 @@ RETURN 0 utf8 utf8_general_ci latin1_swedish_ci SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='bug48766'; DTD_IDENTIFIER -enum('w') CHARSET ucs2 +enum('w') DROP FUNCTION bug48766; CREATE FUNCTION bug48766 () RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2 @@ -144,5 +144,5 @@ RETURN 0 utf8 utf8_general_ci latin1_swedish_ci SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='bug48766'; DTD_IDENTIFIER -enum('а','б','в','г') CHARSET ucs2 +enum('а','б','в','г') DROP FUNCTION bug48766; diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index 8f756a4c303..5e316fe1d76 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -4990,22 +4990,22 @@ SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"| dtd_identifier -char(10) CHARSET utf8 +char(10) SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"| dtd_identifier -char(10) CHARSET koi8r +char(10) SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"| dtd_identifier -char(10) CHARSET utf8 +char(10) SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"| dtd_identifier -char(10) CHARSET koi8r +char(10) SELECT CHARSET(bug16211_f1())| CHARSET(bug16211_f1()) utf8 @@ -5040,22 +5040,22 @@ SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"| dtd_identifier -char(10) CHARSET utf8 +char(10) SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"| dtd_identifier -char(10) CHARSET koi8r +char(10) SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"| dtd_identifier -char(10) CHARSET utf8 +char(10) SELECT dtd_identifier FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"| dtd_identifier -char(10) CHARSET koi8r +char(10) SELECT CHARSET(bug16211_f1())| CHARSET(bug16211_f1()) utf8 diff --git a/mysql-test/r/trigger-compat.result b/mysql-test/r/trigger-compat.result index 14ef4f54f27..d1f1ec87efd 100644 --- a/mysql-test/r/trigger-compat.result +++ b/mysql-test/r/trigger-compat.result @@ -26,8 +26,6 @@ SELECT trigger_name, definer FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_n trigger_name definer wl2818_trg1 wl2818_trg2 mysqltest_dfn@localhost -Warnings: -Warning 1454 No definer attribute for trigger 'mysqltest_db1'.'wl2818_trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger. SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name; TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION diff --git a/mysql-test/r/trigger_notembedded.result b/mysql-test/r/trigger_notembedded.result index c39e3d1c85d..982966f6689 100644 --- a/mysql-test/r/trigger_notembedded.result +++ b/mysql-test/r/trigger_notembedded.result @@ -165,8 +165,6 @@ trg2 @ trg3 @abc@def@@ trg4 @hostname trg5 @abcdef@@@hostname -Warnings: -Warning 1454 No definer attribute for trigger 'mysqltest_db1'.'trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger. SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ORDER BY trigger_name; TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION diff --git a/mysql-test/suite/funcs_1/datadict/is_routines.inc b/mysql-test/suite/funcs_1/datadict/is_routines.inc index c2b547e600f..f3ab766e885 100644 --- a/mysql-test/suite/funcs_1/datadict/is_routines.inc +++ b/mysql-test/suite/funcs_1/datadict/is_routines.inc @@ -181,19 +181,19 @@ FLUSH PRIVILEGES; --echo # Establish connection testuser1 (user=testuser1) --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (testuser1, localhost, testuser1, , db_datadict); ---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss" +--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss" SELECT * FROM information_schema.routines; --echo # Establish connection testuser2 (user=testuser2) --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (testuser2, localhost, testuser2, , db_datadict); ---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss" +--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss" SELECT * FROM information_schema.routines; --echo # Establish connection testuser3 (user=testuser3) --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (testuser3, localhost, testuser3, , test); ---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss" +--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss" SELECT * FROM information_schema.routines; # Cleanup @@ -238,7 +238,7 @@ USE db_datadict; CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict'; CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0; --vertical_results ---replace_column 16 17 +--replace_column 23 24 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict' ORDER BY routine_name; --horizontal_results @@ -246,7 +246,7 @@ ORDER BY routine_name; ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER; ALTER FUNCTION function_for_routines COMMENT 'updated comments'; --vertical_results ---replace_column 16 17 +--replace_column 23 24 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict' ORDER BY routine_name; --horizontal_results @@ -258,7 +258,7 @@ SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'; CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict'; CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0; --vertical_results ---replace_column 16 17 +--replace_column 23 24 SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict' ORDER BY routine_name; --horizontal_results @@ -403,7 +403,7 @@ CALL db_datadict.sp_6_408004 (); SELECT * FROM db_datadict.res_6_408004_2; --vertical_results ---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss" +--replace_column 23 "YYYY-MM-DD hh:mm:ss" 24 "YYYY-MM-DD hh:mm:ss" SELECT *, LENGTH(routine_definition) FROM information_schema.routines WHERE routine_schema = 'db_datadict'; --horizontal_results diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result index 8b87e583c60..4d85b97369c 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result @@ -109,6 +109,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -136,6 +143,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -163,6 +177,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -188,6 +209,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -327,6 +355,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -354,6 +389,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -381,6 +423,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -406,6 +455,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -538,6 +594,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -565,6 +628,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -592,6 +662,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -617,6 +694,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index 6c11f1d2524..a460e694aac 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -125,6 +125,21 @@ def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varc def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema PARAMETERS CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema PARAMETERS COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema PARAMETERS DATA_TYPE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema PARAMETERS DTD_IDENTIFIER 14 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select +def information_schema PARAMETERS NUMERIC_PRECISION 10 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema PARAMETERS NUMERIC_SCALE 11 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema PARAMETERS ORDINAL_POSITION 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select +def information_schema PARAMETERS PARAMETER_MODE 5 NULL YES varchar 5 15 NULL NULL utf8 utf8_general_ci varchar(5) select +def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema PARAMETERS ROUTINE_TYPE 15 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select +def information_schema PARAMETERS SPECIFIC_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select +def information_schema PARAMETERS SPECIFIC_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select def information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select def information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select @@ -179,29 +194,36 @@ def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NO v def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -def information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select -def information_schema ROUTINES COLLATION_CONNECTION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select -def information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select -def information_schema ROUTINES DATABASE_COLLATION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select -def information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select -def information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -def information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -def information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -def information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select -def information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select -def information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select -def information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select +def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema ROUTINES CHARACTER_SET_CLIENT 28 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select +def information_schema ROUTINES CHARACTER_SET_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES COLLATION_CONNECTION 29 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select +def information_schema ROUTINES COLLATION_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES CREATED 23 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select +def information_schema ROUTINES DATABASE_COLLATION 30 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select +def information_schema ROUTINES DATA_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES DEFINER 27 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) select +def information_schema ROUTINES DTD_IDENTIFIER 13 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select +def information_schema ROUTINES EXTERNAL_LANGUAGE 17 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES EXTERNAL_NAME 16 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES IS_DETERMINISTIC 19 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select +def information_schema ROUTINES LAST_ALTERED 24 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select +def information_schema ROUTINES NUMERIC_PRECISION 9 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema ROUTINES NUMERIC_SCALE 10 NULL YES int NULL NULL 10 0 NULL NULL int(21) select +def information_schema ROUTINES PARAMETER_STYLE 18 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select +def information_schema ROUTINES ROUTINE_BODY 14 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select def information_schema ROUTINES ROUTINE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select -def information_schema ROUTINES ROUTINE_COMMENT 19 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select -def information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select +def information_schema ROUTINES ROUTINE_COMMENT 26 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select +def information_schema ROUTINES ROUTINE_DEFINITION 15 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select def information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) select -def information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select +def information_schema ROUTINES SECURITY_TYPE 22 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select def information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -def information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -def information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select -def information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES SQL_DATA_ACCESS 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +def information_schema ROUTINES SQL_MODE 25 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select +def information_schema ROUTINES SQL_PATH 21 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select def information_schema SCHEMATA CATALOG_NAME 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select @@ -489,6 +511,21 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU 3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) +3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema PARAMETERS ORDINAL_POSITION int NULL NULL NULL NULL int(21) +3.0000 information_schema PARAMETERS PARAMETER_MODE varchar 5 15 utf8 utf8_general_ci varchar(5) +3.0000 information_schema PARAMETERS PARAMETER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema PARAMETERS CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema PARAMETERS NUMERIC_PRECISION int NULL NULL NULL NULL int(21) +NULL information_schema PARAMETERS NUMERIC_SCALE int NULL NULL NULL NULL int(21) +3.0000 information_schema PARAMETERS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +1.0000 information_schema PARAMETERS DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext +3.0000 information_schema PARAMETERS ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9) 3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) 3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) @@ -548,7 +585,14 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7) 3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9) -3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema ROUTINES DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema ROUTINES CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema ROUTINES NUMERIC_PRECISION int NULL NULL NULL NULL int(21) +NULL information_schema ROUTINES NUMERIC_SCALE int NULL NULL NULL NULL int(21) +3.0000 information_schema ROUTINES CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema ROUTINES COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +1.0000 information_schema ROUTINES DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext 3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8) 1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext 3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) diff --git a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result index 52d0ac3eef5..d02270a6b6f 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result @@ -125,6 +125,21 @@ def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varc def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema PARAMETERS CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema PARAMETERS COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema PARAMETERS DATA_TYPE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema PARAMETERS DTD_IDENTIFIER 14 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext +def information_schema PARAMETERS NUMERIC_PRECISION 10 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema PARAMETERS NUMERIC_SCALE 11 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema PARAMETERS ORDINAL_POSITION 4 0 NO int NULL NULL 10 0 NULL NULL int(21) +def information_schema PARAMETERS PARAMETER_MODE 5 NULL YES varchar 5 15 NULL NULL utf8 utf8_general_ci varchar(5) +def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema PARAMETERS ROUTINE_TYPE 15 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) +def information_schema PARAMETERS SPECIFIC_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) +def information_schema PARAMETERS SPECIFIC_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned def information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned def information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime @@ -137,7 +152,7 @@ def information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 def information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) def information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext def information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext -def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) +def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) def information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned def information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext @@ -179,29 +194,36 @@ def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NO v def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) -def information_schema ROUTINES COLLATION_CONNECTION 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) -def information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime -def information_schema ROUTINES DATABASE_COLLATION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) -def information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) -def information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) -def information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime -def information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) -def information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) +def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema ROUTINES CHARACTER_SET_CLIENT 28 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) +def information_schema ROUTINES CHARACTER_SET_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES COLLATION_CONNECTION 29 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) +def information_schema ROUTINES COLLATION_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES CREATED 23 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime +def information_schema ROUTINES DATABASE_COLLATION 30 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) +def information_schema ROUTINES DATA_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES DEFINER 27 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77) +def information_schema ROUTINES DTD_IDENTIFIER 13 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext +def information_schema ROUTINES EXTERNAL_LANGUAGE 17 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES EXTERNAL_NAME 16 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES IS_DETERMINISTIC 19 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) +def information_schema ROUTINES LAST_ALTERED 24 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime +def information_schema ROUTINES NUMERIC_PRECISION 9 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema ROUTINES NUMERIC_SCALE 10 NULL YES int NULL NULL 10 0 NULL NULL int(21) +def information_schema ROUTINES PARAMETER_STYLE 18 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) +def information_schema ROUTINES ROUTINE_BODY 14 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) def information_schema ROUTINES ROUTINE_CATALOG 2 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) -def information_schema ROUTINES ROUTINE_COMMENT 19 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext +def information_schema ROUTINES ROUTINE_COMMENT 26 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext +def information_schema ROUTINES ROUTINE_DEFINITION 15 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext def information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9) -def information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) +def information_schema ROUTINES SECURITY_TYPE 22 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) def information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) -def information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) -def information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES SQL_DATA_ACCESS 20 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema ROUTINES SQL_MODE 25 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) +def information_schema ROUTINES SQL_PATH 21 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema SCHEMATA CATALOG_NAME 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) @@ -252,6 +274,15 @@ def information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 u def information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime def information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned +def information_schema TABLESPACES AUTOEXTEND_SIZE 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned +def information_schema TABLESPACES ENGINE 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema TABLESPACES EXTENT_SIZE 5 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned +def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema TABLESPACES MAXIMUM_SIZE 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned +def information_schema TABLESPACES NODEGROUP_ID 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned +def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES varchar 2048 6144 NULL NULL utf8 utf8_general_ci varchar(2048) +def information_schema TABLESPACES TABLESPACE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) +def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) @@ -480,6 +511,21 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU 3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) +3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema PARAMETERS ORDINAL_POSITION int NULL NULL NULL NULL int(21) +3.0000 information_schema PARAMETERS PARAMETER_MODE varchar 5 15 utf8 utf8_general_ci varchar(5) +3.0000 information_schema PARAMETERS PARAMETER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema PARAMETERS CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema PARAMETERS NUMERIC_PRECISION int NULL NULL NULL NULL int(21) +NULL information_schema PARAMETERS NUMERIC_SCALE int NULL NULL NULL NULL int(21) +3.0000 information_schema PARAMETERS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema PARAMETERS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +1.0000 information_schema PARAMETERS DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext +3.0000 information_schema PARAMETERS ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9) 3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) 3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) @@ -487,7 +533,7 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU 3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12) +3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 18 54 utf8 utf8_general_ci varchar(18) 3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8 utf8_general_ci varchar(12) 1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext 1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext @@ -539,7 +585,14 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7) 3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9) -3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema ROUTINES DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema ROUTINES CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) +NULL information_schema ROUTINES NUMERIC_PRECISION int NULL NULL NULL NULL int(21) +NULL information_schema ROUTINES NUMERIC_SCALE int NULL NULL NULL NULL int(21) +3.0000 information_schema ROUTINES CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema ROUTINES COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +1.0000 information_schema ROUTINES DTD_IDENTIFIER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext 3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8) 1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext 3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) @@ -552,7 +605,7 @@ NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7) NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime 3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192) -3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64) +1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext 3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77) 3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32) 3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32) @@ -607,6 +660,15 @@ NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned 3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255) 3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80) +3.0000 information_schema TABLESPACES TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema TABLESPACES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema TABLESPACES TABLESPACE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64) +3.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) +NULL information_schema TABLESPACES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned +NULL information_schema TABLESPACES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned +NULL information_schema TABLESPACES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned +NULL information_schema TABLESPACES NODEGROUP_ID bigint NULL NULL NULL NULL bigint(21) unsigned +3.0000 information_schema TABLESPACES TABLESPACE_COMMENT varchar 2048 6144 utf8 utf8_general_ci varchar(2048) 3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) 3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result index d8322ed1660..7c52358258b 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result @@ -110,7 +110,7 @@ def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NUL def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) def mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) -def mysql proc comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64) +def mysql proc comment 16 NULL NO text 65535 65535 NULL NULL utf8 utf8_bin text def mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP def mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI def mysql proc db_collation 19 NULL YES char 32 96 NULL NULL utf8 utf8_bin char(32) @@ -130,7 +130,7 @@ def mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI def mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL def mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI def mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant') -def mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI +def mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI def mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI def mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp on update CURRENT_TIMESTAMP def mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI @@ -180,6 +180,7 @@ def mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum(' def mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') +def mysql user Create_tablespace_priv 32 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') @@ -193,10 +194,10 @@ def mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI def mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') -def mysql user max_connections 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned -def mysql user max_questions 36 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned -def mysql user max_updates 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned -def mysql user max_user_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned +def mysql user max_connections 39 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned +def mysql user max_questions 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned +def mysql user max_updates 38 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned +def mysql user max_user_connections 40 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned def mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41) def mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') @@ -207,14 +208,14 @@ def mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum(' def mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') -def mysql user ssl_cipher 33 NULL NO blob 65535 65535 NULL NULL NULL NULL blob -def mysql user ssl_type 32 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') +def mysql user ssl_cipher 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob +def mysql user ssl_type 33 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') def mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Trigger_priv 31 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') def mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI -def mysql user x509_issuer 34 NULL NO blob 65535 65535 NULL NULL NULL NULL blob -def mysql user x509_subject 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob +def mysql user x509_issuer 35 NULL NO blob 65535 65535 NULL NULL NULL NULL blob +def mysql user x509_subject 36 NULL NO blob 65535 65535 NULL NULL NULL NULL blob ########################################################################## # Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH ########################################################################## @@ -233,6 +234,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME 1.0000 char latin1 latin1_bin 1.0000 char latin1 latin1_swedish_ci 1.0000 varchar latin1 latin1_swedish_ci +1.0000 text utf8 utf8_bin 1.0000 mediumtext utf8 utf8_general_ci 1.0000 text utf8 utf8_general_ci SELECT DISTINCT @@ -403,7 +405,7 @@ NULL mysql ndb_binlog_index schemaops bigint NULL NULL NULL NULL bigint(20) unsi NULL mysql proc created timestamp NULL NULL NULL NULL timestamp NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp 3.0000 mysql proc sql_mode set 478 1434 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') -3.0000 mysql proc comment char 64 192 utf8 utf8_bin char(64) +1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text 3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32) 3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32) 3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32) @@ -411,7 +413,7 @@ NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp 3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60) 3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64) 3.0000 mysql procs_priv User char 16 48 utf8 utf8_bin char(16) -3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_bin char(64) +3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_general_ci char(64) 3.0000 mysql procs_priv Routine_type enum 9 27 utf8 utf8_bin enum('FUNCTION','PROCEDURE') 3.0000 mysql procs_priv Grantor char 77 231 utf8 utf8_bin char(77) 3.0000 mysql procs_priv Proc_priv set 27 81 utf8 utf8_general_ci set('Execute','Alter Routine','Grant') @@ -489,6 +491,7 @@ NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint( 3.0000 mysql user Create_user_priv enum 1 3 utf8 utf8_general_ci enum('N','Y') 3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y') 3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y') +3.0000 mysql user Create_tablespace_priv enum 1 3 utf8 utf8_general_ci enum('N','Y') 3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') 1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob 1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob diff --git a/mysql-test/suite/funcs_1/r/is_routines.result b/mysql-test/suite/funcs_1/r/is_routines.result index 8e37b995322..6f07f2efd1b 100644 --- a/mysql-test/suite/funcs_1/r/is_routines.result +++ b/mysql-test/suite/funcs_1/r/is_routines.result @@ -33,7 +33,14 @@ ROUTINE_CATALOG varchar(512) NO ROUTINE_SCHEMA varchar(64) NO ROUTINE_NAME varchar(64) NO ROUTINE_TYPE varchar(9) NO -DTD_IDENTIFIER varchar(64) YES NULL +DATA_TYPE varchar(64) NO +CHARACTER_MAXIMUM_LENGTH int(21) YES NULL +CHARACTER_OCTET_LENGTH int(21) YES NULL +NUMERIC_PRECISION int(21) YES NULL +NUMERIC_SCALE int(21) YES NULL +CHARACTER_SET_NAME varchar(64) YES NULL +COLLATION_NAME varchar(64) YES NULL +DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO ROUTINE_DEFINITION longtext YES NULL EXTERNAL_NAME varchar(64) YES NULL @@ -59,7 +66,14 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( `ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '', `ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '', `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '', - `DTD_IDENTIFIER` varchar(64) DEFAULT NULL, + `DATA_TYPE` varchar(64) NOT NULL DEFAULT '', + `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL, + `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL, + `NUMERIC_PRECISION` int(21) DEFAULT NULL, + `NUMERIC_SCALE` int(21) DEFAULT NULL, + `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL, + `COLLATION_NAME` varchar(64) DEFAULT NULL, + `DTD_IDENTIFIER` longtext, `ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '', `ROUTINE_DEFINITION` longtext, `EXTERNAL_NAME` varchar(64) DEFAULT NULL, @@ -85,7 +99,14 @@ ROUTINE_CATALOG varchar(512) NO ROUTINE_SCHEMA varchar(64) NO ROUTINE_NAME varchar(64) NO ROUTINE_TYPE varchar(9) NO -DTD_IDENTIFIER varchar(64) YES NULL +DATA_TYPE varchar(64) NO +CHARACTER_MAXIMUM_LENGTH int(21) YES NULL +CHARACTER_OCTET_LENGTH int(21) YES NULL +NUMERIC_PRECISION int(21) YES NULL +NUMERIC_SCALE int(21) YES NULL +CHARACTER_SET_NAME varchar(64) YES NULL +COLLATION_NAME varchar(64) YES NULL +DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO ROUTINE_DEFINITION longtext YES NULL EXTERNAL_NAME varchar(64) YES NULL @@ -164,16 +185,16 @@ GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost'; FLUSH PRIVILEGES; # Establish connection testuser1 (user=testuser1) SELECT * FROM information_schema.routines; -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -sp_6_408002_1 def db_datadict sp_6_408002_1 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci -sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +sp_6_408002_1 def db_datadict sp_6_408002_1 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci # Establish connection testuser2 (user=testuser2) SELECT * FROM information_schema.routines; -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION -sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL NULL NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci # Establish connection testuser3 (user=testuser3) SELECT * FROM information_schema.routines; -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION # Switch to connection default and close connections testuser1,testuser2,testuser3 DROP USER 'testuser1'@'localhost'; DROP USER 'testuser2'@'localhost'; @@ -187,7 +208,7 @@ DROP DATABASE db_datadict_2; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'; -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION USE db_datadict; CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict'; CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0; @@ -198,6 +219,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME function_for_routines ROUTINE_TYPE FUNCTION +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER int(11) ROUTINE_BODY SQL ROUTINE_DEFINITION RETURN 0 @@ -221,6 +249,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME sp_for_routines ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION SELECT 'db_datadict' @@ -248,6 +283,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME function_for_routines ROUTINE_TYPE FUNCTION +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER int(11) ROUTINE_BODY SQL ROUTINE_DEFINITION RETURN 0 @@ -271,6 +313,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME sp_for_routines ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION SELECT 'db_datadict' @@ -292,7 +341,7 @@ DATABASE_COLLATION latin1_swedish_ci DROP PROCEDURE sp_for_routines; DROP FUNCTION function_for_routines; SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'; -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict'; CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0; SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict' @@ -302,6 +351,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME function_for_routines ROUTINE_TYPE FUNCTION +DATA_TYPE int +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION 10 +NUMERIC_SCALE 0 +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER int(11) ROUTINE_BODY SQL ROUTINE_DEFINITION RETURN 0 @@ -325,6 +381,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME sp_for_routines ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION SELECT 'db_datadict' @@ -346,7 +409,7 @@ DATABASE_COLLATION latin1_swedish_ci use test; DROP DATABASE db_datadict; SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'; -SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION ######################################################################### # 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for # ROUTINE_DEFINITION column @@ -490,6 +553,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_datadict ROUTINE_NAME sp_6_408004 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN diff --git a/mysql-test/suite/funcs_1/r/is_tables_is.result b/mysql-test/suite/funcs_1/r/is_tables_is.result index 13b5218fc2f..ff00acb0c18 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_is.result +++ b/mysql-test/suite/funcs_1/r/is_tables_is.result @@ -268,6 +268,29 @@ user_comment Separator ----------------------------------------------------- TABLE_CATALOG def TABLE_SCHEMA information_schema +TABLE_NAME PARAMETERS +TABLE_TYPE SYSTEM VIEW +ENGINE MyISAM +VERSION 10 +ROW_FORMAT Dynamic +TABLE_ROWS #TBLR# +AVG_ROW_LENGTH #ARL# +DATA_LENGTH #DL# +MAX_DATA_LENGTH #MDL# +INDEX_LENGTH #IL# +DATA_FREE #DF# +AUTO_INCREMENT NULL +CREATE_TIME #CRT# +UPDATE_TIME #UT# +CHECK_TIME #CT# +TABLE_COLLATION utf8_general_ci +CHECKSUM NULL +CREATE_OPTIONS #CO# +TABLE_COMMENT #TC# +user_comment +Separator ----------------------------------------------------- +TABLE_CATALOG def +TABLE_SCHEMA information_schema TABLE_NAME PARTITIONS TABLE_TYPE SYSTEM VIEW ENGINE MyISAM @@ -929,6 +952,29 @@ user_comment Separator ----------------------------------------------------- TABLE_CATALOG def TABLE_SCHEMA information_schema +TABLE_NAME PARAMETERS +TABLE_TYPE SYSTEM VIEW +ENGINE MyISAM +VERSION 10 +ROW_FORMAT Dynamic +TABLE_ROWS #TBLR# +AVG_ROW_LENGTH #ARL# +DATA_LENGTH #DL# +MAX_DATA_LENGTH #MDL# +INDEX_LENGTH #IL# +DATA_FREE #DF# +AUTO_INCREMENT NULL +CREATE_TIME #CRT# +UPDATE_TIME #UT# +CHECK_TIME #CT# +TABLE_COLLATION utf8_general_ci +CHECKSUM NULL +CREATE_OPTIONS #CO# +TABLE_COMMENT #TC# +user_comment +Separator ----------------------------------------------------- +TABLE_CATALOG def +TABLE_SCHEMA information_schema TABLE_NAME PARTITIONS TABLE_TYPE SYSTEM VIEW ENGINE MyISAM diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result index 44af7800b8f..9a7063b4e7e 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result @@ -110,6 +110,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -137,6 +144,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -164,6 +178,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -189,6 +210,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -328,6 +356,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -355,6 +390,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -382,6 +424,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -407,6 +456,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -539,6 +595,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -566,6 +629,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -593,6 +663,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -618,6 +695,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result index 44af7800b8f..9a7063b4e7e 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result @@ -110,6 +110,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -137,6 +144,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -164,6 +178,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -189,6 +210,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -328,6 +356,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -355,6 +390,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -382,6 +424,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -407,6 +456,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -539,6 +595,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -566,6 +629,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -593,6 +663,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -618,6 +695,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result index 8b87e583c60..4d85b97369c 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result @@ -109,6 +109,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -136,6 +143,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -163,6 +177,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -188,6 +209,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -327,6 +355,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -354,6 +389,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -381,6 +423,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -406,6 +455,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -538,6 +594,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_1 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -565,6 +628,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME fn_2 ROUTINE_TYPE FUNCTION +DATA_TYPE year +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER year(4) ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -592,6 +662,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_1 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN @@ -617,6 +694,13 @@ ROUTINE_CATALOG def ROUTINE_SCHEMA db_storedproc ROUTINE_NAME sp_2 ROUTINE_TYPE PROCEDURE +DATA_TYPE +CHARACTER_MAXIMUM_LENGTH NULL +CHARACTER_OCTET_LENGTH NULL +NUMERIC_PRECISION NULL +NUMERIC_SCALE NULL +CHARACTER_SET_NAME NULL +COLLATION_NAME NULL DTD_IDENTIFIER NULL ROUTINE_BODY SQL ROUTINE_DEFINITION BEGIN diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc index d6fd397561c..2102377f907 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc @@ -8,7 +8,7 @@ --vertical_results ---replace_column 16 17 +--replace_column 23 24 SELECT * FROM information_schema.routines where routine_schema = 'db_storedproc'; diff --git a/mysql-test/t/ctype_big5.test b/mysql-test/t/ctype_big5.test index a75fd917052..b024420dee3 100644 --- a/mysql-test/t/ctype_big5.test +++ b/mysql-test/t/ctype_big5.test @@ -84,3 +84,64 @@ select hex(a) from t1; drop table t1; --echo End of 5.0 tests + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=big5_chinese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all values [80..FF][20..FF] +# Expected valid big5 codes: [A1..F9][40..7E,A1..FE] (89x157=13973) +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +SELECT COUNT(*) FROM t1; +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1 WHERE a<>''; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +# +# Make sure all possible conversion happened +# +# Expect U+2160 to U+2169 ROMAN NUMERAL ONE to ROMAN NUMERAL TEN +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect U+0430 to U+0433 CYRILLIC SMALL LETTER A, BE, VE, GHE +# Expect U+043D to U+0442 CYRILLIC SMALL LETTER EN, O, PE, ER, ES, TE +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +DROP TABLE t1; + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_cp932_binlog_stm.test b/mysql-test/t/ctype_cp932_binlog_stm.test index b001b8e927d..ba329f3127a 100644 --- a/mysql-test/t/ctype_cp932_binlog_stm.test +++ b/mysql-test/t/ctype_cp932_binlog_stm.test @@ -41,3 +41,79 @@ SELECT hex(a), hex(lower(a)), hex(upper(a)) FROM t1 ORDER BY binary(a); DROP TABLE t1; --echo End of 5.1 tests + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=cp932_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all codes [80..FF][20..FF] +# excluding Half Width Kana [A1..DF] +# Expected valid cp932 multibyte codes: +# [81..9F,E0..FC][40..7E,80..fC] (60x188=11280 characters) +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +# +# Populate t1 with Half Width Kana [A1..DF] +# +INSERT t1 (code) SELECT head FROM head +WHERE (head BETWEEN 'A1' AND 'DF') +ORDER BY head; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 +WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) +ORDER BY code; +# +# Make sure all possible conversion happened +# +# Expect U+212B ANGSTROM SIGN +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect no results +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_eucjpms.test b/mysql-test/t/ctype_eucjpms.test index ec358d94900..799c8c1796f 100644 --- a/mysql-test/t/ctype_eucjpms.test +++ b/mysql-test/t/ctype_eucjpms.test @@ -381,3 +381,89 @@ select hex(convert(_eucjpms 0xA5FE41 using ucs2)); # the next character, which is a single byte character 0x41. select hex(convert(_eucjpms 0x8FABF841 using ucs2)); + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=eucjpms_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all eucjpms codes. +# +CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0; +# +# Pupulate JIS-X-0201 range (Half Width Kana) +# Expected valid code range: [8E][A1..DF] (1x63 characters) +# +INSERT INTO t1 (code) SELECT concat('8E', head) FROM head +WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head; +# +# Populate JIS-X-0208 range +# Expected valid codes: [A1..FE][A1..FE] (94x94=8836 characters) +# +INSERT INTO t1 (code) SELECT concat(head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +# +# Populate JIS-X-0212 range +# Expected valid codes [8F][A1..FE][A1..FE] (1x94x94=8836 characters) +# +INSERT INTO t1 (code) SELECT concat('8F', head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; + +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t1 WHERE a<>''; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +SELECT * FROM t1 WHERE CHAR_LENGTH(a)=2; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3; + + +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code; +# +# Make sure all possible conversion happened +# +# Expect U+0122 LATIN CAPITAL LETTER G WITH CEDILLA +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect U+00F0 LATIN SMALL LETTER ETH +# Expect U+01F5 LATIN SMALL LETTER G WITH ACUTE +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_euckr.test b/mysql-test/t/ctype_euckr.test index fcb94e7b6d1..644ffbb96d9 100644 --- a/mysql-test/t/ctype_euckr.test +++ b/mysql-test/t/ctype_euckr.test @@ -107,3 +107,68 @@ SELECT s, hex(a), hex(u), hex(a2) FROM t2 ORDER BY s; DROP TABLE t1, t2; --echo End of 5.4 tests + + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=euckr_korean_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all codes [80..FF][20..FF] +# Expected valid euckr codes: [81..FE][41..5A,61..7A,81..FE] +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1 WHERE a<>''; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +# +# Make sure all possible conversion happened +# +# Expect U+212B ANGSTROM SIGN +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect U+0111 LATIN SMALL LETTER D WITH STROKE +# Expect U+24D0 to U+24E9 CIRCLED LATIN SMALL LETTER A to Z +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_gb2312.test b/mysql-test/t/ctype_gb2312.test index 86d1c7f72c9..f092a0a501f 100644 --- a/mysql-test/t/ctype_gb2312.test +++ b/mysql-test/t/ctype_gb2312.test @@ -33,3 +33,94 @@ SELECT hex(a) FROM t1 ORDER BY a; DROP TABLE t1; # End of 4.1 tests + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=gb2312_chinese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all codes [80..FF][20..FF] +# Expected valid gb2312 codes [A1..F7][A1..FE] +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1 WHERE a<>''; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +# +# Make sure all possible conversion happened +# +# Expect U+2160 to U+216B ROMAN NUMERAL ONE to ROMAN NUMERAL TWELVE +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect +# U+00E0 LATIN SMALL LETTER A WITH GRAVE +# U+00E1 LATIN SMALL LETTER A WITH ACUTE +# U+00E8 LATIN SMALL LETTER E WITH GRAVE +# U+00E9 LATIN SMALL LETTER E WITH ACUTE +# U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX +# U+00EC LATIN SMALL LETTER I WITH GRAVE +# U+00ED LATIN SMALL LETTER I WITH ACUTE +# U+00F2 LATIN SMALL LETTER O WITH GRAVE +# U+00F3 LATIN SMALL LETTER O WITH ACUTE +# U+00F9 LATIN SMALL LETTER U WITH GRAVE +# U+00FA LATIN SMALL LETTER U WITH ACUTE +# U+00FC LATIN SMALL LETTER U WITH DIAERESIS +# U+0101 LATIN SMALL LETTER A WITH MACRON +# U+0113 LATIN SMALL LETTER E WITH MACRON +# U+011B LATIN SMALL LETTER E WITH CARON +# U+012B LATIN SMALL LETTER I WITH MACRON +# U+0144 LATIN SMALL LETTER N WITH ACUTE +# U+0148 LATIN SMALL LETTER N WITH CARON +# U+014D LATIN SMALL LETTER O WITH MACRON +# U+016B LATIN SMALL LETTER U WITH MACRON +# U+01CE LATIN SMALL LETTER A WITH CARON +# U+01D0 LATIN SMALL LETTER I WITH CARON +# U+01D2 LATIN SMALL LETTER O WITH CARON +# U+01D4 LATIN SMALL LETTER U WITH CARON +# U+01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +# U+01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +# U+01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON +# U+01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_gbk.test b/mysql-test/t/ctype_gbk.test index 91fe50d89b9..b9e25e97a3c 100644 --- a/mysql-test/t/ctype_gbk.test +++ b/mysql-test/t/ctype_gbk.test @@ -68,3 +68,94 @@ SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; DROP TABLES t1; --echo End of 5.0 tests + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=gbk_chinese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all codes [80..FF][20..FF] +# Expected valid gbk codes [81..FE][40..7E,80..FE] +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1 WHERE a<>''; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); +# +# Make sure all possible conversion happened +# +# Expect U+216A to U+216B ROMAN NUMERAL ELEVEN to ROMAN TWELVE +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect +# U+00E0 LATIN SMALL LETTER A WITH GRAVE +# U+00E1 LATIN SMALL LETTER A WITH ACUTE +# U+00E8 LATIN SMALL LETTER E WITH GRAVE +# U+00E9 LATIN SMALL LETTER E WITH ACUTE +# U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX +# U+00EC LATIN SMALL LETTER I WITH GRAVE +# U+00ED LATIN SMALL LETTER I WITH ACUTE +# U+00F2 LATIN SMALL LETTER O WITH GRAVE +# U+00F3 LATIN SMALL LETTER O WITH ACUTE +# U+00F9 LATIN SMALL LETTER U WITH GRAVE +# U+00FA LATIN SMALL LETTER U WITH ACUTE +# U+00FC LATIN SMALL LETTER U WITH DIAERESIS +# U+0101 LATIN SMALL LETTER A WITH MACRON +# U+0113 LATIN SMALL LETTER E WITH MACRON +# U+011B LATIN SMALL LETTER E WITH CARON +# U+012B LATIN SMALL LETTER I WITH MACRON +# U+0144 LATIN SMALL LETTER N WITH ACUTE +# U+0148 LATIN SMALL LETTER N WITH CARON +# U+014D LATIN SMALL LETTER O WITH MACRON +# U+016B LATIN SMALL LETTER U WITH MACRON +# U+01CE LATIN SMALL LETTER A WITH CARON +# U+01D0 LATIN SMALL LETTER I WITH CARON +# U+01D2 LATIN SMALL LETTER O WITH CARON +# U+01D4 LATIN SMALL LETTER U WITH CARON +# U+01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +# U+01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +# U+01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON +# U+01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_sjis.test b/mysql-test/t/ctype_sjis.test index 7de94e34dea..5f0a403c933 100644 --- a/mysql-test/t/ctype_sjis.test +++ b/mysql-test/t/ctype_sjis.test @@ -93,3 +93,78 @@ SELECT hex(a), hex(lower(a)), hex(upper(a)) FROM t1 ORDER BY binary(a); DROP TABLE t1; --echo # End of 5.1 tests + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=sjis_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all codes [80..FF][20..FF] +# excluding Half Width Kana [A1..DF] +# Expected valid sjis codes: +# [81..9F,E0..FC][40..7E,80..fC] (60x188=11280 characters) +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +# +# Populate Half Width Kana: [A1..DF] +# +INSERT t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF'); +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) +FROM t1 +WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) +ORDER BY code; +# +# Make sure all possible conversion happened +# +# Expect U+212B ANGSTROM SIGN +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect no results +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/ctype_ujis.test b/mysql-test/t/ctype_ujis.test index 400f1301dd3..68b56118a21 100644 --- a/mysql-test/t/ctype_ujis.test +++ b/mysql-test/t/ctype_ujis.test @@ -1212,3 +1212,88 @@ DROP TABLE t2; set names default; set character_set_database=default; set character_set_server=default; + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=ujis_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all ujis codes. +# +# +CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0; +# +# Pupulate JIS-X-0201 range (Half Width Kana) +# Valid characters: [8E][A1-DF] +# +INSERT INTO t1 (code) SELECT concat('8E', head) FROM head +WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head; +# +# Populate JIS-X-0208 range +# Expected valid range: [A1..FE][A1..FE] +# +INSERT INTO t1 (code) SELECT concat(head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +# +# Populate JIS-X-0212 range +# Expected valid range: [8F][A1..FE][A1..FE] +# +INSERT INTO t1 (code) SELECT concat('8F', head, tail) +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '80' AND 'FF') +ORDER BY head, tail; +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; + +UPDATE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t1 WHERE a<>''; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3; +# +# Display all characters that have upper or lower case mapping. +# +SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code; +# +# Make sure all possible conversion happened +# +# Expect U+0122 LATIN CAPITAL LETTER G WITH CEDILLA +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# U+00F0 LATIN SMALL LETTER ETH +# U+01F5 LATIN SMALL LETTER G WITH ACUTE +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +DROP TABLE t1; + + +--echo # +--echo # End of 5.5 tests +--echo # diff --git a/mysql-test/t/information_schema_parameters.test b/mysql-test/t/information_schema_parameters.test new file mode 100644 index 00000000000..ec9616926b7 --- /dev/null +++ b/mysql-test/t/information_schema_parameters.test @@ -0,0 +1,251 @@ +#------------------------------------------------------------------------------ +# i_s_parameters.test +# .test file for MySQL regression suite +# Purpose: To test the presence, structure, and behavior +# of INFORMATION_SCHEMA.PARAMETERS +# Author: pcrews +# Last modified: 2007-12-03 +#------------------------------------------------------------------------------ + +############################################################################### +# Testcase parameters.1: Verify INFORMATION_SCHEMA.PARAMETERS view has the +# following structure: +# SPECIFIC_CATALOG NULL +# SPECIFIC_SCHEMA routine's database +# SPECIFIC_NAME routine's name +# ORDINAL_POSITION first stored routine parameter is 1, +# always 0 for stored function RETURN +# PARAMETER_MODE 'IN' or 'OUT' or 'INOUT' +# PARAMETER_NAME the parameter's name +# DATA_TYPE same as for COLUMNS +# CHARACTER_MAXIMUM_LENGTH same as for COLUMNS +# CHARACTER_OCTET_LENGTH same as for COLUMNS +# CHARACTER_SET_NAME same as for COLUMNS +# COLLATION_NAME same as for COLUMNS +# NUMERIC_PRECISION same as for COLUMNS +# NUMERIC_SCALE same as for COLUMNS +# DTD_IDENTIFIER same as for PARAMETERS +############################################################################### +-- echo # ========== parameters.1 ========== +USE INFORMATION_SCHEMA; +--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" "" +SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS; + +# embedded server does not display privileges +--replace_column 18 # +query_vertical SELECT * FROM information_schema.columns +WHERE table_schema = 'information_schema' + AND table_name = 'parameters' +ORDER BY ordinal_position; + +DESCRIBE INFORMATION_SCHEMA.PARAMETERS; + +############################################################################### +# Testcase parameters.2: Unsuccessful stored procedure CREATE will not populate +# I_S.PARAMETERS view +############################################################################### +-- echo # ========== parameters.2 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +# Missing closing ')' character at the end of 's char(20) in func declaration +--error ER_PARSE_ERROR +CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50) +RETURN CONCAT('Hello', ,s,'!'); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; + +############################################################################### +# Testcase parameters.3: DROP FUNCTION - Verify DROP of a stored procedure +# removes I_S.PARAMETERS data for that +# function / procedure +############################################################################### +-- echo # ========== parameters.3 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; +DROP FUNCTION test_func1; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; + +############################################################################### +# Testcase parameters.4: CREATE PROCEDURE - IN +############################################################################### +-- echo # ========== parameters.4 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +delimiter //; +CREATE PROCEDURE testproc (OUT param1 INT) + BEGIN + SELECT 2+2 as param1; + END; +// +delimiter ;// +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'testproc'; + + +############################################################################### +# Testcase parameters.5: CREATE PROCEDURE - INOUT +############################################################################### +-- echo # ========== parameters.5 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE PROCEDURE test_proc(INOUT P INT) SET @x=P*2; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc'; + +############################################################################### +# Testcase parameters.6: CREATE PROCEDURE - OUT +############################################################################### +-- echo # ========== parameters.6 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE PROCEDURE test_proc(OUT p VARCHAR(10)) SET P='test'; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_proc'; + +############################################################################### +# Testcase parameters.7: CREATE FUNCTION - ORDINAL POSITION +# Verify proper behavior for several aspects here +# 3 rows should be created -- 1 for each IN parameter +# 1 for the RETURNS param +# ORDINAL POSITION values should be 0 for RETURNS +# 1 and 2 for IN parameters +# PARAM NAME and MODE should = NULL for RETURNS parm +############################################################################### +-- echo # ========== parameters.7 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE FUNCTION test_func1 (s char(20), t char(20)) RETURNS CHAR(40) +RETURN CONCAT(s,t); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; + +############################################################################### +# Testcase parameters.8: CREATE FUNCTION - CHAR parameters +# Verify CHAR related columns are populated for such a +# parameter -- NUMERIC columns should be NULL +############################################################################### +-- echo # ========== parameters.8 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func1'; + +############################################################################### +# Testcase parameters.9: CREATE FUNCTION - NUMERIC parameters +# Verify NUMERIC related columns are populated for such +# parameter -- CHAR columns should be NULL +############################################################################### +-- echo # ========== parameters.9 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func2'; + +############################################################################### +# Testcase parameters.10: CREATE FUNCTION - DATE +# Verify NUMERIC and CHAR related columns are NULL +############################################################################### +-- echo # ========== parameters.10 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; + +############################################################################### +# Testcase parameters.11: ALTER FUNCTION +# Quick check to ensure ALTER doesn't affect this view +# Should have no effect -- comment visible in ROUTINES +# tested in i_s_routines.test +############################################################################### +-- echo # ========== parameters.11 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test; +USE i_s_parameters_test; + +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; +ALTER FUNCTION test_func5 COMMENT 'new comment added'; +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; + +############################################################################### +# Testcase parameters.12: MULTI-BYTE CHAR SETS +# Verify that CHAR_MAX_LENGTH and CHAR_OCTET_LENGTH +# differ as expected for multi-byte char sets +# Normally both values are equal +############################################################################### +-- echo # ========== parameters.12 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_parameters_test; +--enable_warnings + +CREATE DATABASE i_s_parameters_test CHARACTER SET utf8; +USE i_s_parameters_test; + +CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30) +RETURN CONCAT('XYZ, ' ,s); +SELECT * FROM INFORMATION_SCHEMA.PARAMETERS +WHERE SPECIFIC_SCHEMA = 'i_s_parameters_test' AND SPECIFIC_NAME = 'test_func5'; + +# Cleanup +DROP DATABASE i_s_parameters_test; diff --git a/mysql-test/t/information_schema_routines.test b/mysql-test/t/information_schema_routines.test new file mode 100644 index 00000000000..c107b1dc2ce --- /dev/null +++ b/mysql-test/t/information_schema_routines.test @@ -0,0 +1,247 @@ +#------------------------------------------------------------------------------ +# i_s_routines.test +# .test file for MySQL regression suite +# Purpose: To test the presence, structure, and behavior +# of INFORMATION_SCHEMA.ROUTINES +# Author: pcrews +# Last modified: 2007-12-04 +#------------------------------------------------------------------------------ + +################################################################################ +# Testcase routines.1: Ensure that the INFORMATION_SCHEMA.ROUTINES +# table has the following columns, in the following order: +# +# SPECIFIC_NAME (shows the name of an accessible stored +# procedure, or routine), +# ROUTINE_CATALOG (always shows NULL), +# ROUTINE_SCHEMA (shows the database, or schema, in which +# the routine resides), +# ROUTINE_NAME (shows the same stored procedure name), +# ROUTINE_TYPE (shows whether the stored procedure is a +# procedure or a function), +# DATA_TYPE (new column as of 6.0) +# CHARACTER_MAXIMUM_LENGTH (new column as of 6.0) +# CHARACTER_OCTET_LENGTH (new column as of 6.0) +# NUMERIC_PRECISION (new column as of 6.0) +# NUMERIC_SCALE (new column as of 6.0) +# CHARACTER_SET_NAME (new column as of 6.0) +# COLLATION_NAME (new column as of 6.0) +# DTD_IDENTIFIER (shows, for a function, the complete +# data type definition of the value the function will +# return; otherwise NULL), +# ROUTINE_BODY (shows the language in which the stored +# procedure is written; currently always SQL), +# ROUTINE_DEFINITION (shows as much of the routine body as +# is possible in the allotted space), +# EXTERNAL_NAME (always shows NULL), +# EXTERNAL_LANGUAGE (always shows NULL), +# PARAMETER_STYLE (shows the routine's parameter style; +# always SQL), +# IS_DETERMINISTIC (shows whether the routine is +# deterministic), +# SQL_DATA_ACCESS (shows the routine's defined +# sql-data-access clause value), +# SQL_PATH (always shows NULL), +# SECURITY_TYPE (shows whether the routine's defined +# security_type is 'definer' or 'invoker'), +# CREATED (shows the timestamp of the time the routine was +# created), +# LAST_ALTERED (shows the timestamp of the time the routine +# was last altered), +# SQL_MODE (shows the sql_mode setting at the time the +# routine was created), +# ROUTINE_COMMENT (shows the comment, if any, defined for +# the routine; otherwise NULL), +# DEFINER (shows the user who created the routine). +################################################################################ +-- echo # ========== routines.1 ========== +USE INFORMATION_SCHEMA; +--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" "" +SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES; + +# embedded server does not display privileges +--replace_column 18 # +query_vertical SELECT * FROM information_schema.columns +WHERE table_schema = 'information_schema' + AND table_name = 'routines' +ORDER BY ordinal_position; + +DESCRIBE INFORMATION_SCHEMA.ROUTINES; + +############################################################################### +# Testcase routines.2: Unsuccessful stored procedure CREATE will not populate +# I_S.ROUTINES view +############################################################################### +-- echo # ========== routines.2 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +# Missing closing ')' character at the end of 's char(20) in func declaration +--error ER_PARSE_ERROR +CREATE FUNCTION test_func1 (s char(20) RETURNS CHAR(50) +RETURN CONCAT('Hello', ,s,'!'); +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; + +############################################################################### +# Testcase routines.3: DROP FUNCTION - Verify DROP of a stored procedure +# removes I_S.PARAMETERS data for that +# function / procedure +############################################################################### +-- echo # ========== routines.3 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; +DROP FUNCTION test_func1; +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; + + +################################################################################ +# Testcase routines.4: Verify that the new columns from WL#2822 are NULL for a +# stored procedure +################################################################################ +-- echo # ========== routines.4 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +delimiter //; +CREATE PROCEDURE testproc (OUT param1 INT) + BEGIN + SELECT 2+2 as param1; + END; +// +delimiter ;// +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'testproc'; + + +################################################################################ +# Testcase routines.5: Verify that the new columns from WL#2822 are populated +# for a stored function, that the NUMERIC columns +# are not populated when the function returns non-numeric +# data, and that the CHARACTER columns are populated +# for CHAR functions +################################################################################ +-- echo # ========== routines.5 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +CREATE FUNCTION test_func1 (s char(20)) RETURNS CHAR(50) +RETURN CONCAT('Hello, ',s,'!'); +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func1'; + + + +################################################################################ +# Testcase routines.6: Verify that the new columns from WL#2822 are populated +# for a stored function, that the CHARACTER columns +# are not populated when the function returns numeric +# data, and that the NUMERIC columns are populated +# for numeric functions +################################################################################ +-- echo # ========== routines.6 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +CREATE FUNCTION test_func2 (s int) RETURNS INT RETURN s*2; +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func2'; + +################################################################################ +# Testcase routines.7: Verify that the new columns from WL#2822 are populated +# for a stored function, that the CHARACTER and NUMERIC +# columns are not populated when the function returns date +# or time data +################################################################################ +-- echo # ========== routines.7 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; + +############################################################################### +# Testcase routines.8: ALTER FUNCTION +# Quick check to ensure ALTER properly updates +# I_S.ROUTINES.COMMENT +############################################################################### +-- echo # ========== routines.8 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + +CREATE DATABASE i_s_routines_test; +USE i_s_routines_test; + +CREATE FUNCTION test_func5 (s date) RETURNS TIMESTAMP +RETURN CURRENT_TIMESTAMP; +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; +ALTER FUNCTION test_func5 COMMENT 'new comment added'; +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; + +############################################################################### +# Testcase routines.9: MULTI-BYTE CHAR SETS +# Verify that CHAR_MAX_LENGTH and CHAR_OCTET_LENGTH +# differ as expected for multi-byte char sets +# Normally both values are equal +############################################################################### +-- echo # ========== routines.9 ========== +--disable_warnings +DROP DATABASE IF EXISTS i_s_routines_test; +--enable_warnings + + +CREATE DATABASE i_s_routines_test CHARACTER SET utf8; +USE i_s_routines_test; + +CREATE FUNCTION test_func5 (s CHAR(20)) RETURNS VARCHAR(30) +RETURN CONCAT('XYZ, ' ,s); +--replace_column 23 24 +SELECT * FROM INFORMATION_SCHEMA.ROUTINES +WHERE ROUTINE_SCHEMA = 'i_s_routines_test' AND ROUTINE_NAME = 'test_func5'; + +# final clean up +DROP DATABASE i_s_routines_test; diff --git a/sql/handler.h b/sql/handler.h index 711cc823f96..f4064b51de9 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -555,6 +555,7 @@ enum enum_schema_tables SCH_GLOBAL_VARIABLES, SCH_KEY_COLUMN_USAGE, SCH_OPEN_TABLES, + SCH_PARAMETERS, SCH_PARTITIONS, SCH_PLUGINS, SCH_PROCESSLIST, diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index dc119013302..4d5490e8219 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1319,6 +1319,10 @@ thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table); void close_data_files_and_morph_locks(THD *thd, const char *db, const char *table_name); void close_handle_and_leave_table_as_lock(TABLE *table); +bool open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias, + uint db_stat, uint prgflag, + uint ha_open_flags, TABLE *outparam, + TABLE_LIST *table_desc, MEM_ROOT *mem_root); bool wait_for_tables(THD *thd); bool table_is_used(TABLE *table, bool wait_for_name_lock); TABLE *drop_locked_tables(THD *thd,const char *db, const char *table_name); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c6e7d99add1..6a9fd8ee37b 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3337,6 +3337,16 @@ static int init_common_variables() strmake(pidfile_name, default_logfile_name, sizeof(pidfile_name)-5); strmov(fn_ext(pidfile_name),".pid"); // Add proper extension + /* + The default-storage-engine entry in my_long_options should have a + non-null default value. It was earlier intialized as + (longlong)"MyISAM" in my_long_options but this triggered a + compiler error in the Sun Studio 12 compiler. As a work-around we + set the def_value member to 0 in my_long_options and initialize it + to the correct value here. + */ + default_storage_engine="MyISAM"; + /* Add server status variables to the dynamic list of status variables that is shown by SHOW STATUS. @@ -5954,9 +5964,12 @@ struct my_option my_long_options[]= {"default-collation", 0, "Set the default collation (deprecated option, use --collation-server instead).", (uchar**) &default_collation_name, (uchar**) &default_collation_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, + /* default-storage-engine should have "MyISAM" as def_value. Instead + of initializing it here it is done in init_common_variables() due + to a compiler bug in Sun Studio compiler. */ {"default-storage-engine", 0, "The default storage engine for new tables", (uchar**) &default_storage_engine, 0, 0, GET_STR, REQUIRED_ARG, - (longlong)"MyISAM", 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, 0 }, {"default-time-zone", 0, "Set the default time zone.", (uchar**) &default_tz_name, (uchar**) &default_tz_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 0d108fc019f..4ee0cf9d758 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -6235,8 +6235,6 @@ ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS ER_MESSAGE_AND_STATEMENT eng "%s Statement: %s" -ER_SLAVE_IGNORE_SERVER_IDS - eng "The requested server id %d clashes with the slave startup option --replicate-same-server-id" ER_DEBUG_SYNC_TIMEOUT eng "debug sync point wait timed out" ger "Debug Sync Point Wartezeit berschritten" diff --git a/sql/sp.cc b/sql/sp.cc index 11ae2646f14..9d3527dc4e6 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -31,7 +31,9 @@ create_string(THD *thd, String *buf, const char *body, ulong bodylen, st_sp_chistics *chistics, const LEX_STRING *definer_user, - const LEX_STRING *definer_host); + const LEX_STRING *definer_host, + ulong sql_mode); + static int db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, ulong sql_mode, const char *params, const char *returns, @@ -39,37 +41,6 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, const char *definer, longlong created, longlong modified, Stored_program_creation_ctx *creation_ctx); -/* - * - * DB storage of Stored PROCEDUREs and FUNCTIONs - * - */ - -enum -{ - MYSQL_PROC_FIELD_DB = 0, - MYSQL_PROC_FIELD_NAME, - MYSQL_PROC_MYSQL_TYPE, - MYSQL_PROC_FIELD_SPECIFIC_NAME, - MYSQL_PROC_FIELD_LANGUAGE, - MYSQL_PROC_FIELD_ACCESS, - MYSQL_PROC_FIELD_DETERMINISTIC, - MYSQL_PROC_FIELD_SECURITY_TYPE, - MYSQL_PROC_FIELD_PARAM_LIST, - MYSQL_PROC_FIELD_RETURNS, - MYSQL_PROC_FIELD_BODY, - MYSQL_PROC_FIELD_DEFINER, - MYSQL_PROC_FIELD_CREATED, - MYSQL_PROC_FIELD_MODIFIED, - MYSQL_PROC_FIELD_SQL_MODE, - MYSQL_PROC_FIELD_COMMENT, - MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT, - MYSQL_PROC_FIELD_COLLATION_CONNECTION, - MYSQL_PROC_FIELD_DB_COLLATION, - MYSQL_PROC_FIELD_BODY_UTF8, - MYSQL_PROC_FIELD_COUNT -}; - static const TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] = { @@ -716,6 +687,55 @@ Silence_deprecated_warning::handle_condition( } +/** + @brief The function parses input strings and returns SP stucture. + + @param[in] thd Thread handler + @param[in] defstr CREATE... string + @param[in] sql_mode SQL mode + @param[in] creation_ctx Creation context of stored routines + + @return Pointer on sp_head struct + @retval # Pointer on sp_head struct + @retval 0 error +*/ + +static sp_head *sp_compile(THD *thd, String *defstr, ulong sql_mode, + Stored_program_creation_ctx *creation_ctx) +{ + sp_head *sp; + ulong old_sql_mode= thd->variables.sql_mode; + ha_rows old_select_limit= thd->variables.select_limit; + sp_rcontext *old_spcont= thd->spcont; + Silence_deprecated_warning warning_handler; + + thd->variables.sql_mode= sql_mode; + thd->variables.select_limit= HA_POS_ERROR; + + Parser_state parser_state(thd, defstr->c_ptr(), defstr->length()); + lex_start(thd); + thd->push_internal_handler(&warning_handler); + thd->spcont= 0; + + if (parse_sql(thd, & parser_state, creation_ctx) || thd->lex == NULL) + { + sp= thd->lex->sphead; + delete sp; + sp= 0; + } + else + { + sp= thd->lex->sphead; + } + + thd->pop_internal_handler(); + thd->spcont= old_spcont; + thd->variables.sql_mode= old_sql_mode; + thd->variables.select_limit= old_select_limit; + return sp; +} + + static int db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, ulong sql_mode, const char *params, const char *returns, @@ -729,11 +749,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, LEX_STRING saved_cur_db_name= { saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) }; bool cur_db_changed; - ulong old_sql_mode= thd->variables.sql_mode; - ha_rows old_select_limit= thd->variables.select_limit; - sp_rcontext *old_spcont= thd->spcont; - Silence_deprecated_warning warning_handler; - + char definer_user_name_holder[USERNAME_LENGTH + 1]; LEX_STRING definer_user_name= { definer_user_name_holder, USERNAME_LENGTH }; @@ -741,10 +757,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, char definer_host_name_holder[HOSTNAME_LENGTH + 1]; LEX_STRING definer_host_name= { definer_host_name_holder, HOSTNAME_LENGTH }; - int ret; - - thd->variables.sql_mode= sql_mode; - thd->variables.select_limit= HA_POS_ERROR; + int ret= 0; thd->lex= &newlex; newlex.current_select= NULL; @@ -768,7 +781,8 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, params, strlen(params), returns, strlen(returns), body, strlen(body), - &chistics, &definer_user_name, &definer_host_name)) + &chistics, &definer_user_name, &definer_host_name, + sql_mode)) { ret= SP_INTERNAL_ERROR; goto end; @@ -787,17 +801,8 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, goto end; } - thd->spcont= NULL; - { - Parser_state parser_state(thd, defstr.c_ptr(), defstr.length()); - - lex_start(thd); - - thd->push_internal_handler(&warning_handler); - ret= parse_sql(thd, & parser_state, creation_ctx) || newlex.sphead == NULL; - thd->pop_internal_handler(); - + *sphp= sp_compile(thd, &defstr, sql_mode, creation_ctx); /* Force switching back to the saved current database (if changed), because it may be NULL. In this case, mysql_change_db() would @@ -806,19 +811,16 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, if (cur_db_changed && mysql_change_db(thd, &saved_cur_db_name, TRUE)) { - delete newlex.sphead; ret= SP_INTERNAL_ERROR; goto end; } - if (ret) + if (!*sphp) { - delete newlex.sphead; ret= SP_PARSE_ERROR; goto end; } - *sphp= newlex.sphead; (*sphp)->set_definer(&definer_user_name, &definer_host_name); (*sphp)->set_info(created, modified, &chistics, sql_mode); (*sphp)->set_creation_ctx(creation_ctx); @@ -836,9 +838,6 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, end: lex_end(thd->lex); - thd->spcont= old_spcont; - thd->variables.sql_mode= old_sql_mode; - thd->variables.select_limit= old_select_limit; thd->lex= old_lex; return ret; } @@ -1110,7 +1109,8 @@ sp_create_routine(THD *thd, int type, sp_head *sp) retstr.c_ptr(), retstr.length(), sp->m_body.str, sp->m_body.length, sp->m_chistics, &(thd->lex->definer->user), - &(thd->lex->definer->host))) + &(thd->lex->definer->host), + saved_mode)) { ret= SP_INTERNAL_ERROR; goto done; @@ -2071,6 +2071,7 @@ sp_cache_routines_and_add_tables_for_triggers(THD *thd, LEX *lex, Returns TRUE on success, FALSE on (alloc) failure. */ static bool + create_string(THD *thd, String *buf, int type, const char *db, ulong dblen, @@ -2080,14 +2081,17 @@ create_string(THD *thd, String *buf, const char *body, ulong bodylen, st_sp_chistics *chistics, const LEX_STRING *definer_user, - const LEX_STRING *definer_host) + const LEX_STRING *definer_host, + ulong sql_mode) { + ulong old_sql_mode= thd->variables.sql_mode; /* Make some room to begin with */ if (buf->alloc(100 + dblen + 1 + namelen + paramslen + returnslen + bodylen + chistics->comment.length + 10 /* length of " DEFINER= "*/ + USER_HOST_BUFF_SIZE)) return FALSE; + thd->variables.sql_mode= sql_mode; buf->append(STRING_WITH_LEN("CREATE ")); append_definer(thd, buf, definer_user, definer_host); if (type == TYPE_ENUM_FUNCTION) @@ -2135,5 +2139,79 @@ create_string(THD *thd, String *buf, buf->append('\n'); } buf->append(body, bodylen); + thd->variables.sql_mode= old_sql_mode; return TRUE; } + + +/** + @brief The function loads sp_head struct for information schema purposes + (used for I_S ROUTINES & PARAMETERS tables). + + @param[in] thd thread handler + @param[in] proc_table mysql.proc table structurte + @param[in] db database name + @param[in] name sp name + @param[in] sql_mode SQL mode + @param[in] type Routine type + @param[in] returns 'returns' string + @param[in] params parameters definition string + @param[out] free_sp_head returns 1 if we need to free sp_head struct + otherwise returns 0 + + @return Pointer on sp_head struct + @retval # Pointer on sp_head struct + @retval 0 error +*/ + +sp_head * +sp_load_for_information_schema(THD *thd, TABLE *proc_table, String *db, + String *name, ulong sql_mode, int type, + const char *returns, const char *params, + bool *free_sp_head) +{ + const char *sp_body; + String defstr; + struct st_sp_chistics sp_chistics; + const LEX_STRING definer_user= {(char*)STRING_WITH_LEN("")}; + const LEX_STRING definer_host= {(char*)STRING_WITH_LEN("")}; + LEX_STRING sp_db_str; + LEX_STRING sp_name_str; + sp_head *sp; + sp_cache **spc= ((type == TYPE_ENUM_PROCEDURE) ? + &thd->sp_proc_cache : &thd->sp_func_cache); + sp_db_str.str= db->c_ptr(); + sp_db_str.length= db->length(); + sp_name_str.str= name->c_ptr(); + sp_name_str.length= name->length(); + sp_name sp_name_obj(sp_db_str, sp_name_str, true); + sp_name_obj.init_qname(thd); + *free_sp_head= 0; + if ((sp= sp_cache_lookup(spc, &sp_name_obj))) + { + return sp; + } + + LEX *old_lex= thd->lex, newlex; + Stored_program_creation_ctx *creation_ctx= + Stored_routine_creation_ctx::load_from_db(thd, &sp_name_obj, proc_table); + sp_body= (type == TYPE_ENUM_FUNCTION ? "RETURN NULL" : "BEGIN END"); + bzero((char*) &sp_chistics, sizeof(sp_chistics)); + defstr.set_charset(creation_ctx->get_client_cs()); + if (!create_string(thd, &defstr, type, + sp_db_str.str, sp_db_str.length, + sp_name_obj.m_name.str, sp_name_obj.m_name.length, + params, strlen(params), + returns, strlen(returns), + sp_body, strlen(sp_body), + &sp_chistics, &definer_user, &definer_host, sql_mode)) + return 0; + + thd->lex= &newlex; + newlex.current_select= NULL; + sp= sp_compile(thd, &defstr, sql_mode, creation_ctx); + *free_sp_head= 1; + lex_end(thd->lex); + thd->lex= old_lex; + return sp; +} diff --git a/sql/sp.h b/sql/sp.h index 876287d9704..a521814401d 100644 --- a/sql/sp.h +++ b/sql/sp.h @@ -34,6 +34,32 @@ #define SP_BODY_TOO_LONG -10 #define SP_FLD_STORE_FAILED -11 +/* DB storage of Stored PROCEDUREs and FUNCTIONs */ +enum +{ + MYSQL_PROC_FIELD_DB = 0, + MYSQL_PROC_FIELD_NAME, + MYSQL_PROC_MYSQL_TYPE, + MYSQL_PROC_FIELD_SPECIFIC_NAME, + MYSQL_PROC_FIELD_LANGUAGE, + MYSQL_PROC_FIELD_ACCESS, + MYSQL_PROC_FIELD_DETERMINISTIC, + MYSQL_PROC_FIELD_SECURITY_TYPE, + MYSQL_PROC_FIELD_PARAM_LIST, + MYSQL_PROC_FIELD_RETURNS, + MYSQL_PROC_FIELD_BODY, + MYSQL_PROC_FIELD_DEFINER, + MYSQL_PROC_FIELD_CREATED, + MYSQL_PROC_FIELD_MODIFIED, + MYSQL_PROC_FIELD_SQL_MODE, + MYSQL_PROC_FIELD_COMMENT, + MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT, + MYSQL_PROC_FIELD_COLLATION_CONNECTION, + MYSQL_PROC_FIELD_DB_COLLATION, + MYSQL_PROC_FIELD_BODY_UTF8, + MYSQL_PROC_FIELD_COUNT +}; + /* Drop all routines in database 'db' */ int sp_drop_db_routines(THD *thd, char *db); @@ -86,4 +112,10 @@ extern "C" uchar* sp_sroutine_key(const uchar *ptr, size_t *plen, */ TABLE *open_proc_table_for_read(THD *thd, Open_tables_state *backup); +sp_head * +sp_load_for_information_schema(THD *thd, TABLE *proc_table, String *db, + String *name, ulong sql_mode, int type, + const char *returns, const char *params, + bool *free_sp_head); + #endif /* _SP_H_ */ diff --git a/sql/sp_head.h b/sql/sp_head.h index 138d0a2f506..fd02c799975 100644 --- a/sql/sp_head.h +++ b/sql/sp_head.h @@ -477,6 +477,7 @@ public: DBUG_VOID_RETURN; } + sp_pcontext *get_parse_context() { return m_pcont; } private: diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 59a9605d471..eb59600b360 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -107,10 +107,6 @@ static int open_unireg_entry(THD *thd, TABLE *entry, TABLE_LIST *table_list, char *cache_key, uint cache_key_length, MEM_ROOT *mem_root, uint flags); static void free_cache_entry(TABLE *entry); -static bool open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias, - uint db_stat, uint prgflag, - uint ha_open_flags, TABLE *outparam, - TABLE_LIST *table_desc, MEM_ROOT *mem_root); static void close_old_data_files(THD *thd, TABLE *table, bool morph_locks, bool send_refresh); static bool @@ -8505,7 +8501,7 @@ int init_ftfuncs(THD *thd, SELECT_LEX *select_lex, bool no_order) mem_root temporary MEM_ROOT for parsing */ -static bool +bool open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias, uint db_stat, uint prgflag, uint ha_open_flags, TABLE *outparam, TABLE_LIST *table_desc, diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 9e34c1f2d17..f8df7eb518f 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -22,6 +22,7 @@ #include "repl_failsafe.h" #include "sp.h" #include "sp_head.h" +#include "sp_pcontext.h" #include "set_var.h" #include "sql_trigger.h" #include "authors.h" @@ -999,20 +1000,21 @@ static void append_directory(THD *thd, String *packet, const char *dir_type, #define LIST_PROCESS_HOST_LEN 64 -static bool get_field_default_value(THD *thd, TABLE *table, +static bool get_field_default_value(THD *thd, Field *timestamp_field, Field *field, String *def_value, bool quoted) { bool has_default; bool has_now_default; enum enum_field_types field_type= field->type(); - /* + + /* We are using CURRENT_TIMESTAMP instead of NOW because it is more standard */ - has_now_default= table->timestamp_field == field && - field->unireg_check != Field::TIMESTAMP_UN_FIELD; - + has_now_default= (timestamp_field == field && + field->unireg_check != Field::TIMESTAMP_UN_FIELD); + has_default= (field_type != FIELD_TYPE_BLOB && !(field->flags & NO_DEFAULT_VALUE_FLAG) && field->unireg_check != Field::NEXT_NUMBER && @@ -1065,6 +1067,7 @@ static bool get_field_default_value(THD *thd, TABLE *table, return has_default; } + /* Build a CREATE TABLE statement for a table. @@ -1214,7 +1217,8 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, packet->append(STRING_WITH_LEN(" NULL")); } - if (get_field_default_value(thd, table, field, &def_value, 1)) + if (get_field_default_value(thd, table->timestamp_field, + field, &def_value, 1)) { packet->append(STRING_WITH_LEN(" DEFAULT ")); packet->append(def_value.ptr(), def_value.length(), system_charset_info); @@ -3074,17 +3078,18 @@ uint get_table_open_method(TABLE_LIST *tables, open_tables function for this table */ -static int fill_schema_table_from_frm(THD *thd,TABLE *table, - ST_SCHEMA_TABLE *schema_table, +static int fill_schema_table_from_frm(THD *thd, TABLE_LIST *tables, + ST_SCHEMA_TABLE *schema_table, LEX_STRING *db_name, LEX_STRING *table_name, enum enum_schema_tables schema_table_idx) { + TABLE *table= tables->table; TABLE_SHARE *share; TABLE tbl; TABLE_LIST table_list; uint res= 0; - int error; + int not_used; char key[MAX_DBKEY_LENGTH]; uint key_length; char db_name_buff[NAME_LEN + 1], table_name_buff[NAME_LEN + 1]; @@ -3112,61 +3117,85 @@ static int fill_schema_table_from_frm(THD *thd,TABLE *table, table_list.db= db_name->str; } + if (schema_table->i_s_requested_object & OPEN_TRIGGER_ONLY) + { + init_sql_alloc(&tbl.mem_root, TABLE_ALLOC_BLOCK_SIZE, 0); + if (!Table_triggers_list::check_n_load(thd, db_name->str, + table_name->str, &tbl, 1)) + { + table_list.table= &tbl; + res= schema_table->process_table(thd, &table_list, table, + res, db_name, table_name); + delete tbl.triggers; + } + free_root(&tbl.mem_root, MYF(0)); + goto end; + } + key_length= create_table_def_key(thd, key, &table_list, 0); mysql_mutex_lock(&LOCK_open); share= get_table_share(thd, &table_list, key, - key_length, OPEN_VIEW, &error); + key_length, OPEN_VIEW, ¬_used); if (!share) { res= 0; - goto err; + goto end_unlock; } - + if (share->is_view) { if (schema_table->i_s_requested_object & OPEN_TABLE_ONLY) { /* skip view processing */ res= 0; - goto err1; + goto end_share; } else if (schema_table->i_s_requested_object & OPEN_VIEW_FULL) { /* - tell get_all_tables() to fall back to + tell get_all_tables() to fall back to open_normal_and_derived_tables() */ res= 1; - goto err1; + goto end_share; } } - if (share->is_view || - !open_table_from_share(thd, share, table_name->str, 0, - (READ_KEYINFO | COMPUTE_TYPES | - EXTRA_RECORD | OPEN_FRM_FILE_ONLY), - thd->open_options, &tbl, FALSE)) + if (share->is_view) + { + if (open_new_frm(thd, share, table_name->str, + (uint) (HA_OPEN_KEYFILE | HA_OPEN_RNDFILE | + HA_GET_INDEX | HA_TRY_READ_ONLY), + READ_KEYINFO | COMPUTE_TYPES | EXTRA_RECORD | + OPEN_VIEW_NO_PARSE, + thd->open_options, &tbl, &table_list, thd->mem_root)) + goto end_share; + table_list.view= (LEX*) share->is_view; + res= schema_table->process_table(thd, &table_list, table, + res, db_name, table_name); + goto end_share; + } + { tbl.s= share; table_list.table= &tbl; table_list.view= (LEX*) share->is_view; res= schema_table->process_table(thd, &table_list, table, res, db_name, table_name); - closefrm(&tbl, true); - goto err; } -err1: +end_share: release_table_share(share, RELEASE_NORMAL); -err: - mysql_mutex_unlock(&LOCK_open); +end_unlock: + mysql_mutex_unlock(&LOCK_open); + +end: thd->clear_error(); return res; } - /** @brief Fill I_S tables whose data are retrieved from frm files and storage engine @@ -3223,6 +3252,10 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) */ thd->reset_n_backup_open_tables_state(&open_tables_state_backup); + schema_table_idx= get_schema_table_idx(schema_table); + tables->table_open_method= table_open_method= + get_table_open_method(tables, schema_table, schema_table_idx); + DBUG_PRINT("open_method", ("%d", tables->table_open_method)); /* this branch processes SHOW FIELDS, SHOW INDEXES commands. see sql_parse.cc, prepare_schema_table() function where @@ -3235,7 +3268,6 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) goto err; } - schema_table_idx= get_schema_table_idx(schema_table); if (get_lookup_field_values(thd, cond, tables, &lookup_field_vals)) { error= 0; @@ -3273,9 +3305,6 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) else partial_cond= make_cond_for_info_schema(cond, tables); - tables->table_open_method= table_open_method= - get_table_open_method(tables, schema_table, schema_table_idx); - if (lex->describe) { /* EXPLAIN SELECT */ @@ -3342,10 +3371,10 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) } else { - if (!(table_open_method & ~OPEN_FRM_ONLY) && + if (!(table_open_method & ~OPEN_FRM_ONLY) && !with_i_schema) { - if (!fill_schema_table_from_frm(thd, table, schema_table, db_name, + if (!fill_schema_table_from_frm(thd, tables, schema_table, db_name, table_name, schema_table_idx)) continue; } @@ -3721,6 +3750,128 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables, } +/** + @brief Store field characteristics into appropriate I_S table columns + + @param[in] table I_S table + @param[in] field processed field + @param[in] cs I_S table charset + @param[in] offset offset from beginning of table + to DATE_TYPE column in I_S table + + @return void +*/ + +void store_column_type(TABLE *table, Field *field, CHARSET_INFO *cs, + uint offset) +{ + bool is_blob; + int decimals, field_length; + const char *tmp_buff; + char column_type_buff[MAX_FIELD_WIDTH]; + String column_type(column_type_buff, sizeof(column_type_buff), cs); + + field->sql_type(column_type); + /* DTD_IDENTIFIER column */ + table->field[offset + 7]->store(column_type.ptr(), column_type.length(), cs); + table->field[offset + 7]->set_notnull(); + /* + DATA_TYPE column: + MySQL column type has the following format: + base_type [(dimension)] [unsigned] [zerofill]. + For DATA_TYPE column we extract only base type. + */ + tmp_buff= strchr(column_type.ptr(), '('); + if (!tmp_buff) + /* + if there is no dimention part then check the presence of + [unsigned] [zerofill] attributes and cut them of if exist. + */ + tmp_buff= strchr(column_type.ptr(), ' '); + table->field[offset]->store(column_type.ptr(), + (tmp_buff ? tmp_buff - column_type.ptr() : + column_type.length()), cs); + + is_blob= (field->type() == MYSQL_TYPE_BLOB); + if (field->has_charset() || is_blob || + field->real_type() == MYSQL_TYPE_VARCHAR || // For varbinary type + field->real_type() == MYSQL_TYPE_STRING) // For binary type + { + uint32 octet_max_length= field->max_display_length(); + if (is_blob && octet_max_length != (uint32) 4294967295U) + octet_max_length /= field->charset()->mbmaxlen; + longlong char_max_len= is_blob ? + (longlong) octet_max_length / field->charset()->mbminlen : + (longlong) octet_max_length / field->charset()->mbmaxlen; + /* CHARACTER_MAXIMUM_LENGTH column*/ + table->field[offset + 1]->store(char_max_len, TRUE); + table->field[offset + 1]->set_notnull(); + /* CHARACTER_OCTET_LENGTH column */ + table->field[offset + 2]->store((longlong) octet_max_length, TRUE); + table->field[offset + 2]->set_notnull(); + } + + /* + Calculate field_length and decimals. + They are set to -1 if they should not be set (we should return NULL) + */ + + decimals= field->decimals(); + switch (field->type()) { + case MYSQL_TYPE_NEWDECIMAL: + field_length= ((Field_new_decimal*) field)->precision; + break; + case MYSQL_TYPE_DECIMAL: + field_length= field->field_length - (decimals ? 2 : 1); + break; + case MYSQL_TYPE_TINY: + case MYSQL_TYPE_SHORT: + case MYSQL_TYPE_LONG: + case MYSQL_TYPE_LONGLONG: + case MYSQL_TYPE_INT24: + field_length= field->max_display_length() - 1; + break; + case MYSQL_TYPE_BIT: + field_length= field->max_display_length(); + decimals= -1; // return NULL + break; + case MYSQL_TYPE_FLOAT: + case MYSQL_TYPE_DOUBLE: + field_length= field->field_length; + if (decimals == NOT_FIXED_DEC) + decimals= -1; // return NULL + break; + default: + field_length= decimals= -1; + break; + } + + /* NUMERIC_PRECISION column */ + if (field_length >= 0) + { + table->field[offset + 3]->store((longlong) field_length, TRUE); + table->field[offset + 3]->set_notnull(); + } + /* NUMERIC_SCALE column */ + if (decimals >= 0) + { + table->field[offset + 4]->store((longlong) decimals, TRUE); + table->field[offset + 4]->set_notnull(); + } + if (field->has_charset()) + { + /* CHARACTER_SET_NAME column*/ + tmp_buff= field->charset()->csname; + table->field[offset + 5]->store(tmp_buff, strlen(tmp_buff), cs); + table->field[offset + 5]->set_notnull(); + /* COLLATION_NAME column */ + tmp_buff= field->charset()->name; + table->field[offset + 6]->store(tmp_buff, strlen(tmp_buff), cs); + table->field[offset + 6]->set_notnull(); + } +} + + static int get_schema_column_record(THD *thd, TABLE_LIST *tables, TABLE *table, bool res, LEX_STRING *db_name, @@ -3730,7 +3881,8 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, const char *wild= lex->wild ? lex->wild->ptr() : NullS; CHARSET_INFO *cs= system_charset_info; TABLE *show_table; - Field **ptr,*field; + TABLE_SHARE *show_table_share; + Field **ptr, *field, *timestamp_field; int count; DBUG_ENTER("get_schema_column_record"); @@ -3741,7 +3893,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, /* I.e. we are in SELECT FROM INFORMATION_SCHEMA.COLUMS rather than in SHOW COLUMNS - */ + */ if (thd->is_error()) push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, thd->stmt_da->sql_errno(), thd->stmt_da->message()); @@ -3752,37 +3904,62 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, } show_table= tables->table; + show_table_share= show_table->s; count= 0; - restore_record(show_table, s->default_values); - show_table->use_all_columns(); // Required for default - for (ptr= show_table->field; (field= *ptr) ; ptr++) + if (tables->view || tables->schema_table) + { + ptr= show_table->field; + timestamp_field= show_table->timestamp_field; + show_table->use_all_columns(); // Required for default + } + else + { + ptr= show_table_share->field; + timestamp_field= show_table_share->timestamp_field; + /* + read_set may be inited in case of + temporary table + */ + if (!show_table->read_set) + { + /* to satisfy 'field->val_str' ASSERTs */ + uchar *bitmaps; + uint bitmap_size= show_table_share->column_bitmap_size; + if (!(bitmaps= (uchar*) alloc_root(thd->mem_root, bitmap_size))) + DBUG_RETURN(0); + bitmap_init(&show_table->def_read_set, + (my_bitmap_map*) bitmaps, show_table_share->fields, FALSE); + bitmap_set_all(&show_table->def_read_set); + show_table->read_set= &show_table->def_read_set; + } + bitmap_set_all(show_table->read_set); + } + + for (; (field= *ptr) ; ptr++) { - const char *tmp_buff; uchar *pos; - bool is_blob; - uint flags=field->flags; char tmp[MAX_FIELD_WIDTH]; String type(tmp,sizeof(tmp), system_charset_info); char *end; - int decimals, field_length; + + /* to satisfy 'field->val_str' ASSERTs */ + field->table= show_table; + show_table->in_use= thd; if (wild && wild[0] && wild_case_compare(system_charset_info, field->field_name,wild)) continue; - flags= field->flags; count++; /* Get default row, with all NULL fields set to NULL */ restore_record(table, s->default_values); #ifndef NO_EMBEDDED_ACCESS_CHECKS uint col_access; - check_access(thd, SELECT_ACL, db_name->str, - &tables->grant.privilege, - &tables->grant.m_internal, - FALSE, FALSE); - col_access= get_column_grant(thd, &tables->grant, + check_access(thd,SELECT_ACL, db_name->str, + &tables->grant.privilege, 0, 0, test(tables->schema_table)); + col_access= get_column_grant(thd, &tables->grant, db_name->str, table_name->str, field->field_name) & COL_ACLS; if (!tables->schema_table && !col_access) @@ -3807,104 +3984,16 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, table->field[4]->store((longlong) count, TRUE); field->sql_type(type); table->field[14]->store(type.ptr(), type.length(), cs); - /* - MySQL column type has the following format: - base_type [(dimension)] [unsigned] [zerofill]. - For DATA_TYPE column we extract only base type. - */ - tmp_buff= strchr(type.ptr(), '('); - if (!tmp_buff) - /* - if there is no dimention part then check the presence of - [unsigned] [zerofill] attributes and cut them of if exist. - */ - tmp_buff= strchr(type.ptr(), ' '); - table->field[7]->store(type.ptr(), - (tmp_buff ? tmp_buff - type.ptr() : - type.length()), cs); - if (get_field_default_value(thd, show_table, field, &type, 0)) + if (get_field_default_value(thd, timestamp_field, field, &type, 0)) { table->field[5]->store(type.ptr(), type.length(), cs); table->field[5]->set_notnull(); } - pos=(uchar*) ((flags & NOT_NULL_FLAG) ? "NO" : "YES"); + pos=(uchar*) ((field->flags & NOT_NULL_FLAG) ? "NO" : "YES"); table->field[6]->store((const char*) pos, strlen((const char*) pos), cs); - is_blob= (field->type() == MYSQL_TYPE_BLOB); - if (field->has_charset() || is_blob || - field->real_type() == MYSQL_TYPE_VARCHAR || // For varbinary type - field->real_type() == MYSQL_TYPE_STRING) // For binary type - { - uint32 octet_max_length= field->max_display_length(); - if (is_blob && octet_max_length != (uint32) 4294967295U) - octet_max_length /= field->charset()->mbmaxlen; - longlong char_max_len= is_blob ? - (longlong) octet_max_length / field->charset()->mbminlen : - (longlong) octet_max_length / field->charset()->mbmaxlen; - table->field[8]->store(char_max_len, TRUE); - table->field[8]->set_notnull(); - table->field[9]->store((longlong) octet_max_length, TRUE); - table->field[9]->set_notnull(); - } - - /* - Calculate field_length and decimals. - They are set to -1 if they should not be set (we should return NULL) - */ - - decimals= field->decimals(); - switch (field->type()) { - case MYSQL_TYPE_NEWDECIMAL: - field_length= ((Field_new_decimal*) field)->precision; - break; - case MYSQL_TYPE_DECIMAL: - field_length= field->field_length - (decimals ? 2 : 1); - break; - case MYSQL_TYPE_TINY: - case MYSQL_TYPE_SHORT: - case MYSQL_TYPE_LONG: - case MYSQL_TYPE_LONGLONG: - case MYSQL_TYPE_INT24: - field_length= field->max_display_length() - 1; - break; - case MYSQL_TYPE_BIT: - field_length= field->max_display_length(); - decimals= -1; // return NULL - break; - case MYSQL_TYPE_FLOAT: - case MYSQL_TYPE_DOUBLE: - field_length= field->field_length; - if (decimals == NOT_FIXED_DEC) - decimals= -1; // return NULL - break; - default: - field_length= decimals= -1; - break; - } - - if (field_length >= 0) - { - table->field[10]->store((longlong) field_length, TRUE); - table->field[10]->set_notnull(); - } - if (decimals >= 0) - { - table->field[11]->store((longlong) decimals, TRUE); - table->field[11]->set_notnull(); - } - - if (field->has_charset()) - { - pos=(uchar*) field->charset()->csname; - table->field[12]->store((const char*) pos, - strlen((const char*) pos), cs); - table->field[12]->set_notnull(); - pos=(uchar*) field->charset()->name; - table->field[13]->store((const char*) pos, - strlen((const char*) pos), cs); - table->field[13]->set_notnull(); - } + store_column_type(table, field, cs, 7); pos=(uchar*) ((field->flags & PRI_KEY_FLAG) ? "PRI" : (field->flags & UNIQUE_KEY_FLAG) ? "UNI" : (field->flags & MULTIPLE_KEY_FLAG) ? "MUL":""); @@ -3914,7 +4003,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, end= tmp; if (field->unireg_check == Field::NEXT_NUMBER) table->field[16]->store(STRING_WITH_LEN("auto_increment"), cs); - if (show_table->timestamp_field == field && + if (timestamp_field == field && field->unireg_check != Field::TIMESTAMP_DN_FIELD) table->field[16]->store(STRING_WITH_LEN("on update CURRENT_TIMESTAMP"), cs); @@ -3927,7 +4016,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, } - int fill_schema_charsets(THD *thd, TABLE_LIST *tables, COND *cond) { CHARSET_INFO **cs; @@ -4116,6 +4204,169 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond) } +/** + @brief Store record into I_S.PARAMETERS table + + @param[in] thd thread handler + @param[in] table I_S table + @param[in] proc_table 'mysql.proc' table + @param[in] wild wild string, not used for now, + will be useful + if we add 'SHOW PARAMETERs' + @param[in] full_access if 1 user has privileges on the routine + @param[in] sp_user user in 'user@host' format + + @return Operation status + @retval 0 ok + @retval 1 error +*/ + +bool store_schema_params(THD *thd, TABLE *table, TABLE *proc_table, + const char *wild, bool full_access, + const char *sp_user) +{ + TABLE_SHARE share; + TABLE tbl; + CHARSET_INFO *cs= system_charset_info; + char params_buff[MAX_FIELD_WIDTH], returns_buff[MAX_FIELD_WIDTH], + sp_db_buff[NAME_LEN], sp_name_buff[NAME_LEN], path[FN_REFLEN], + definer_buff[USERNAME_LENGTH + HOSTNAME_LENGTH + 1]; + String params(params_buff, sizeof(params_buff), cs); + String returns(returns_buff, sizeof(returns_buff), cs); + String sp_db(sp_db_buff, sizeof(sp_db_buff), cs); + String sp_name(sp_name_buff, sizeof(sp_name_buff), cs); + String definer(definer_buff, sizeof(definer_buff), cs); + sp_head *sp; + uint routine_type; + bool free_sp_head; + DBUG_ENTER("store_schema_params"); + + bzero((char*) &tbl, sizeof(TABLE)); + (void) build_table_filename(path, sizeof(path), "", "", "", 0); + init_tmp_table_share(thd, &share, "", 0, "", path); + + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DB], &sp_db); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_NAME], &sp_name); + get_field(thd->mem_root,proc_table->field[MYSQL_PROC_FIELD_DEFINER],&definer); + routine_type= (uint) proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int(); + + if (!full_access) + full_access= !strcmp(sp_user, definer.ptr()); + if (!full_access && + check_some_routine_access(thd, sp_db.ptr(),sp_name.ptr(), + routine_type == TYPE_ENUM_PROCEDURE)) + DBUG_RETURN(0); + + params.length(0); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_PARAM_LIST], + ¶ms); + returns.length(0); + if (routine_type == TYPE_ENUM_FUNCTION) + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_RETURNS], + &returns); + + sp= sp_load_for_information_schema(thd, proc_table, &sp_db, &sp_name, + (ulong) proc_table-> + field[MYSQL_PROC_FIELD_SQL_MODE]->val_int(), + routine_type, + returns.c_ptr_safe(), + params.c_ptr_safe(), + &free_sp_head); + + if (sp) + { + Field *field; + Create_field *field_def; + String tmp_string; + if (routine_type == TYPE_ENUM_FUNCTION) + { + restore_record(table, s->default_values); + table->field[0]->store(STRING_WITH_LEN("def"), cs); + table->field[1]->store(sp_db.ptr(), sp_db.length(), cs); + table->field[2]->store(sp_name.ptr(), sp_name.length(), cs); + table->field[3]->store((longlong) 0, TRUE); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_MYSQL_TYPE], + &tmp_string); + table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); + field_def= &sp->m_return_field_def; + field= make_field(&share, (uchar*) 0, field_def->length, + (uchar*) "", 0, field_def->pack_flag, + field_def->sql_type, field_def->charset, + field_def->geom_type, Field::NONE, + field_def->interval, ""); + + field->table= &tbl; + tbl.in_use= thd; + store_column_type(table, field, cs, 6); + if (schema_table_store_record(thd, table)) + { + free_table_share(&share); + if (free_sp_head) + delete sp; + DBUG_RETURN(1); + } + } + + sp_pcontext *spcont= sp->get_parse_context(); + uint params= spcont->context_var_count(); + for (uint i= 0 ; i < params ; i++) + { + const char *tmp_buff; + sp_variable_t *spvar= spcont->find_variable(i); + field_def= &spvar->field_def; + switch (spvar->mode) { + case sp_param_in: + tmp_buff= "IN"; + break; + case sp_param_out: + tmp_buff= "OUT"; + break; + case sp_param_inout: + tmp_buff= "INOUT"; + break; + default: + tmp_buff= ""; + break; + } + + restore_record(table, s->default_values); + table->field[0]->store(STRING_WITH_LEN("def"), cs); + table->field[1]->store(sp_db.ptr(), sp_db.length(), cs); + table->field[2]->store(sp_name.ptr(), sp_name.length(), cs); + table->field[3]->store((longlong) i + 1, TRUE); + table->field[4]->store(tmp_buff, strlen(tmp_buff), cs); + table->field[4]->set_notnull(); + table->field[5]->store(spvar->name.str, spvar->name.length, cs); + table->field[5]->set_notnull(); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_MYSQL_TYPE], + &tmp_string); + table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); + + field= make_field(&share, (uchar*) 0, field_def->length, + (uchar*) "", 0, field_def->pack_flag, + field_def->sql_type, field_def->charset, + field_def->geom_type, Field::NONE, + field_def->interval, spvar->name.str); + + field->table= &tbl; + tbl.in_use= thd; + store_column_type(table, field, cs, 6); + if (schema_table_store_record(thd, table)) + { + free_table_share(&share); + if (free_sp_head) + delete sp; + DBUG_RETURN(1); + } + } + if (free_sp_head) + delete sp; + } + free_table_share(&share); + DBUG_RETURN(0); +} + + bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, const char *wild, bool full_access, const char *sp_user) { @@ -4124,75 +4375,131 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, MYSQL_TIME time; LEX *lex= thd->lex; CHARSET_INFO *cs= system_charset_info; - get_field(thd->mem_root, proc_table->field[0], &sp_db); - get_field(thd->mem_root, proc_table->field[1], &sp_name); - get_field(thd->mem_root, proc_table->field[11], &definer); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DB], &sp_db); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_NAME], &sp_name); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DEFINER],&definer); if (!full_access) full_access= !strcmp(sp_user, definer.ptr()); - if (!full_access && check_some_routine_access(thd, sp_db.ptr(), - sp_name.ptr(), - proc_table->field[2]-> - val_int() == - TYPE_ENUM_PROCEDURE)) + if (!full_access && + check_some_routine_access(thd, sp_db.ptr(), sp_name.ptr(), + proc_table->field[MYSQL_PROC_MYSQL_TYPE]-> + val_int() == TYPE_ENUM_PROCEDURE)) return 0; if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC && - proc_table->field[2]->val_int() == TYPE_ENUM_PROCEDURE) || + proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() == + TYPE_ENUM_PROCEDURE) || (lex->sql_command == SQLCOM_SHOW_STATUS_FUNC && - proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION) || + proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() == + TYPE_ENUM_FUNCTION) || (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) { restore_record(table, s->default_values); if (!wild || !wild[0] || !wild_compare(sp_name.ptr(), wild, 0)) { - int enum_idx= (int) proc_table->field[5]->val_int(); + int enum_idx= (int) proc_table->field[MYSQL_PROC_FIELD_ACCESS]->val_int(); table->field[3]->store(sp_name.ptr(), sp_name.length(), cs); - get_field(thd->mem_root, proc_table->field[3], &tmp_string); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_SPECIFIC_NAME], + &tmp_string); table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs); table->field[1]->store(STRING_WITH_LEN("def"), cs); table->field[2]->store(sp_db.ptr(), sp_db.length(), cs); - get_field(thd->mem_root, proc_table->field[2], &tmp_string); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_MYSQL_TYPE], + &tmp_string); table->field[4]->store(tmp_string.ptr(), tmp_string.length(), cs); - if (proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION) + if (proc_table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() == + TYPE_ENUM_FUNCTION) { - get_field(thd->mem_root, proc_table->field[9], &tmp_string); - table->field[5]->store(tmp_string.ptr(), tmp_string.length(), cs); - table->field[5]->set_notnull(); + sp_head *sp; + bool free_sp_head; + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_RETURNS], + &tmp_string); + + sp= sp_load_for_information_schema(thd, proc_table, &sp_db, &sp_name, + (ulong) proc_table-> + field[MYSQL_PROC_FIELD_SQL_MODE]-> + val_int(), + TYPE_ENUM_FUNCTION, + tmp_string.c_ptr_safe(), + "", &free_sp_head); + + if (sp) + { + char path[FN_REFLEN]; + TABLE_SHARE share; + TABLE tbl; + Field *field; + Create_field *field_def= &sp->m_return_field_def; + + bzero((char*) &tbl, sizeof(TABLE)); + (void) build_table_filename(path, sizeof(path), "", "", "", 0); + init_tmp_table_share(thd, &share, "", 0, "", path); + field= make_field(&share, (uchar*) 0, field_def->length, + (uchar*) "", 0, field_def->pack_flag, + field_def->sql_type, field_def->charset, + field_def->geom_type, Field::NONE, + field_def->interval, ""); + + field->table= &tbl; + tbl.in_use= thd; + store_column_type(table, field, cs, 5); + free_table_share(&share); + if (free_sp_head) + delete sp; + } } + if (full_access) { - get_field(thd->mem_root, proc_table->field[19], &tmp_string); - table->field[7]->store(tmp_string.ptr(), tmp_string.length(), cs); - table->field[7]->set_notnull(); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_BODY_UTF8], + &tmp_string); + table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); + table->field[14]->set_notnull(); } - table->field[6]->store(STRING_WITH_LEN("SQL"), cs); - table->field[10]->store(STRING_WITH_LEN("SQL"), cs); - get_field(thd->mem_root, proc_table->field[6], &tmp_string); - table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs); - table->field[12]->store(sp_data_access_name[enum_idx].str, - sp_data_access_name[enum_idx].length , cs); - get_field(thd->mem_root, proc_table->field[7], &tmp_string); - table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); - bzero((char *)&time, sizeof(time)); - ((Field_timestamp *) proc_table->field[12])->get_time(&time); - table->field[15]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); - bzero((char *)&time, sizeof(time)); - ((Field_timestamp *) proc_table->field[13])->get_time(&time); - table->field[16]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); - get_field(thd->mem_root, proc_table->field[14], &tmp_string); - table->field[17]->store(tmp_string.ptr(), tmp_string.length(), cs); - get_field(thd->mem_root, proc_table->field[15], &tmp_string); + table->field[13]->store(STRING_WITH_LEN("SQL"), cs); + table->field[17]->store(STRING_WITH_LEN("SQL"), cs); + + + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DETERMINISTIC], + &tmp_string); table->field[18]->store(tmp_string.ptr(), tmp_string.length(), cs); - table->field[19]->store(definer.ptr(), definer.length(), cs); + table->field[19]->store(sp_data_access_name[enum_idx].str, + sp_data_access_name[enum_idx].length , cs); - get_field(thd->mem_root, proc_table->field[16], &tmp_string); - table->field[20]->store(tmp_string.ptr(), tmp_string.length(), cs); - - get_field(thd->mem_root, proc_table->field[17], &tmp_string); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_SECURITY_TYPE], + &tmp_string); table->field[21]->store(tmp_string.ptr(), tmp_string.length(), cs); + bzero((char *)&time, sizeof(time)); + ((Field_timestamp *) proc_table->field[MYSQL_PROC_FIELD_CREATED])-> + get_time(&time); + table->field[22]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); + bzero((char *)&time, sizeof(time)); + ((Field_timestamp *) proc_table->field[MYSQL_PROC_FIELD_MODIFIED])-> + get_time(&time); + table->field[23]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); - get_field(thd->mem_root, proc_table->field[18], &tmp_string); - table->field[22]->store(tmp_string.ptr(), tmp_string.length(), cs); + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_SQL_MODE], + &tmp_string); + table->field[24]->store(tmp_string.ptr(), tmp_string.length(), cs); + + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_COMMENT], + &tmp_string); + table->field[25]->store(tmp_string.ptr(), tmp_string.length(), cs); + table->field[26]->store(definer.ptr(), definer.length(), cs); + + get_field(thd->mem_root, + proc_table->field[MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT], + &tmp_string); + table->field[27]->store(tmp_string.ptr(), tmp_string.length(), cs); + + get_field(thd->mem_root, + proc_table->field[ MYSQL_PROC_FIELD_COLLATION_CONNECTION], + &tmp_string); + table->field[28]->store(tmp_string.ptr(), tmp_string.length(), cs); + + get_field(thd->mem_root, proc_table->field[MYSQL_PROC_FIELD_DB_COLLATION], + &tmp_string); + table->field[29]->store(tmp_string.ptr(), tmp_string.length(), cs); return schema_table_store_record(thd, table); } @@ -4211,6 +4518,8 @@ int fill_schema_proc(THD *thd, TABLE_LIST *tables, COND *cond) bool full_access; char definer[USER_HOST_BUFF_SIZE]; Open_tables_state open_tables_state_backup; + enum enum_schema_tables schema_table_idx= + get_schema_table_idx(tables->schema_table); DBUG_ENTER("fill_schema_proc"); strxmov(definer, thd->security_ctx->priv_user, "@", @@ -4234,14 +4543,19 @@ int fill_schema_proc(THD *thd, TABLE_LIST *tables, COND *cond) res= (res == HA_ERR_END_OF_FILE) ? 0 : 1; goto err; } - if (store_schema_proc(thd, table, proc_table, wild, full_access, definer)) + + if (schema_table_idx == SCH_PROCEDURES ? + store_schema_proc(thd, table, proc_table, wild, full_access, definer) : + store_schema_params(thd, table, proc_table, wild, full_access, definer)) { res= 1; goto err; } while (!proc_table->file->index_next(proc_table->record[0])) { - if (store_schema_proc(thd, table, proc_table, wild, full_access, definer)) + if (schema_table_idx == SCH_PROCEDURES ? + store_schema_proc(thd, table, proc_table, wild, full_access, definer): + store_schema_params(thd, table, proc_table, wild, full_access, definer)) { res= 1; goto err; @@ -4356,24 +4670,15 @@ static int get_schema_views_record(THD *thd, TABLE_LIST *tables, LEX_STRING *table_name) { CHARSET_INFO *cs= system_charset_info; - DBUG_ENTER("get_schema_views_record"); - LEX_STRING *tmp_db_name, *tmp_table_name; char definer[USER_HOST_BUFF_SIZE]; uint definer_len; bool updatable_view; - /* - if SELECT FROM I_S.VIEWS uses only fields - which have OPEN_FRM_ONLY flag then 'tables' - structure is zeroed and only tables->view is set. - (see fill_schema_table_from_frm() function). - So we should disable other fields filling. - */ - bool only_share= !tables->definer.user.str; + DBUG_ENTER("get_schema_views_record"); if (tables->view) { Security_context *sctx= thd->security_ctx; - if (!only_share && !tables->allowed_show) + if (!tables->allowed_show) { if (!my_strcasecmp(system_charset_info, tables->definer.user.str, sctx->priv_user) && @@ -4391,47 +4696,42 @@ static int get_schema_views_record(THD *thd, TABLE_LIST *tables, TABLE_LIST table_list; uint view_access; memset(&table_list, 0, sizeof(table_list)); - table_list.db= tables->view_db.str; - table_list.table_name= tables->view_name.str; + table_list.db= tables->db; + table_list.table_name= tables->table_name; table_list.grant.privilege= thd->col_access; view_access= get_table_grant(thd, &table_list); - if ((view_access & (SHOW_VIEW_ACL|SELECT_ACL)) == - (SHOW_VIEW_ACL|SELECT_ACL)) - tables->allowed_show= TRUE; + if ((view_access & (SHOW_VIEW_ACL|SELECT_ACL)) == + (SHOW_VIEW_ACL|SELECT_ACL)) + tables->allowed_show= TRUE; } } #endif } restore_record(table, s->default_values); - tmp_db_name= &tables->view_db; - tmp_table_name= &tables->view_name; - if (only_share) - { - tmp_db_name= db_name; - tmp_table_name= table_name; - } table->field[0]->store(STRING_WITH_LEN("def"), cs); - table->field[1]->store(tmp_db_name->str, tmp_db_name->length, cs); - table->field[2]->store(tmp_table_name->str, tmp_table_name->length, cs); - if (!only_share) + table->field[1]->store(db_name->str, db_name->length, cs); + table->field[2]->store(table_name->str, table_name->length, cs); + + if (tables->allowed_show) { - if (tables->allowed_show) - { - table->field[3]->store(tables->view_body_utf8.str, - tables->view_body_utf8.length, - cs); - } + table->field[3]->store(tables->view_body_utf8.str, + tables->view_body_utf8.length, + cs); + } - if (tables->with_check != VIEW_CHECK_NONE) - { - if (tables->with_check == VIEW_CHECK_LOCAL) - table->field[4]->store(STRING_WITH_LEN("LOCAL"), cs); - else - table->field[4]->store(STRING_WITH_LEN("CASCADED"), cs); - } + if (tables->with_check != VIEW_CHECK_NONE) + { + if (tables->with_check == VIEW_CHECK_LOCAL) + table->field[4]->store(STRING_WITH_LEN("LOCAL"), cs); else - table->field[4]->store(STRING_WITH_LEN("NONE"), cs); + table->field[4]->store(STRING_WITH_LEN("CASCADED"), cs); + } + else + table->field[4]->store(STRING_WITH_LEN("NONE"), cs); + if (table->pos_in_table_list->table_open_method & + OPEN_FULL_TABLE) + { updatable_view= 0; if (tables->algorithm != VIEW_ALGORITHM_TMPTABLE) { @@ -4465,31 +4765,33 @@ static int get_schema_views_record(THD *thd, TABLE_LIST *tables, table->field[5]->store(STRING_WITH_LEN("YES"), cs); else table->field[5]->store(STRING_WITH_LEN("NO"), cs); - definer_len= (strxmov(definer, tables->definer.user.str, "@", - tables->definer.host.str, NullS) - definer); - table->field[6]->store(definer, definer_len, cs); - if (tables->view_suid) - table->field[7]->store(STRING_WITH_LEN("DEFINER"), cs); - else - table->field[7]->store(STRING_WITH_LEN("INVOKER"), cs); - - table->field[8]->store(tables->view_creation_ctx->get_client_cs()->csname, - strlen(tables->view_creation_ctx-> - get_client_cs()->csname), cs); - - table->field[9]->store(tables->view_creation_ctx-> - get_connection_cl()->name, - strlen(tables->view_creation_ctx-> - get_connection_cl()->name), cs); } + definer_len= (strxmov(definer, tables->definer.user.str, "@", + tables->definer.host.str, NullS) - definer); + table->field[6]->store(definer, definer_len, cs); + if (tables->view_suid) + table->field[7]->store(STRING_WITH_LEN("DEFINER"), cs); + else + table->field[7]->store(STRING_WITH_LEN("INVOKER"), cs); + + table->field[8]->store(tables->view_creation_ctx->get_client_cs()->csname, + strlen(tables->view_creation_ctx-> + get_client_cs()->csname), cs); + + table->field[9]->store(tables->view_creation_ctx-> + get_connection_cl()->name, + strlen(tables->view_creation_ctx-> + get_connection_cl()->name), cs); + + if (schema_table_store_record(thd, table)) DBUG_RETURN(1); if (res && thd->is_error()) - push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, thd->stmt_da->sql_errno(), thd->stmt_da->message()); } - if (res) + if (res) thd->clear_error(); DBUG_RETURN(0); } @@ -5995,7 +6297,7 @@ int make_character_sets_old_format(THD *thd, ST_SCHEMA_TABLE *schema_table) int make_proc_old_format(THD *thd, ST_SCHEMA_TABLE *schema_table) { - int fields_arr[]= {2, 3, 4, 19, 16, 15, 14, 18, 20, 21, 22, -1}; + int fields_arr[]= {2, 3, 4, 26, 23, 22, 21, 25, 27, 28, 29, -1}; int *field_num= fields_arr; ST_FIELD_INFO *field_info; Name_resolution_context *context= &thd->lex->select_lex.context; @@ -6447,7 +6749,14 @@ ST_FIELD_INFO proc_fields_info[]= {"ROUTINE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Name", SKIP_OPEN_TABLE}, {"ROUTINE_TYPE", 9, MYSQL_TYPE_STRING, 0, 0, "Type", SKIP_OPEN_TABLE}, - {"DTD_IDENTIFIER", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, + {"DATA_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}, + {"CHARACTER_MAXIMUM_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE}, + {"CHARACTER_OCTET_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE}, + {"NUMERIC_PRECISION", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE}, + {"NUMERIC_SCALE", 21 , MYSQL_TYPE_LONG, 0, 1, 0, SKIP_OPEN_TABLE}, + {"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, + {"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, + {"DTD_IDENTIFIER", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, {"ROUTINE_BODY", 8, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}, {"ROUTINE_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, {"EXTERNAL_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE}, @@ -6505,15 +6814,15 @@ ST_FIELD_INFO view_fields_info[]= {"TABLE_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, {"TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, {"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, - {"VIEW_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"CHECK_OPTION", 8, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"VIEW_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, + {"CHECK_OPTION", 8, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, {"IS_UPDATABLE", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"SECURITY_TYPE", 7, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, + {"SECURITY_TYPE", 7, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, {"CHARACTER_SET_CLIENT", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0, - OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, {"COLLATION_CONNECTION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0, - OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE} }; @@ -6628,38 +6937,38 @@ ST_FIELD_INFO open_tables_fields_info[]= ST_FIELD_INFO triggers_fields_info[]= { - {"TRIGGER_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"TRIGGER_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"TRIGGER_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, + {"TRIGGER_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, {"TRIGGER_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Trigger", - OPEN_FULL_TABLE}, - {"EVENT_MANIPULATION", 6, MYSQL_TYPE_STRING, 0, 0, "Event", OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, + {"EVENT_MANIPULATION", 6, MYSQL_TYPE_STRING, 0, 0, "Event", OPEN_FRM_ONLY}, {"EVENT_OBJECT_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, - OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, {"EVENT_OBJECT_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, - OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, {"EVENT_OBJECT_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Table", - OPEN_FULL_TABLE}, - {"ACTION_ORDER", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0, OPEN_FULL_TABLE}, - {"ACTION_CONDITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, + {"ACTION_ORDER", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0, OPEN_FRM_ONLY}, + {"ACTION_CONDITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FRM_ONLY}, {"ACTION_STATEMENT", 65535, MYSQL_TYPE_STRING, 0, 0, "Statement", - OPEN_FULL_TABLE}, - {"ACTION_ORIENTATION", 9, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"ACTION_TIMING", 6, MYSQL_TYPE_STRING, 0, 0, "Timing", OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, + {"ACTION_ORIENTATION", 9, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, + {"ACTION_TIMING", 6, MYSQL_TYPE_STRING, 0, 0, "Timing", OPEN_FRM_ONLY}, {"ACTION_REFERENCE_OLD_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, - OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, {"ACTION_REFERENCE_NEW_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, - OPEN_FULL_TABLE}, - {"ACTION_REFERENCE_OLD_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"ACTION_REFERENCE_NEW_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, - {"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 1, "Created", OPEN_FULL_TABLE}, - {"SQL_MODE", 32*256, MYSQL_TYPE_STRING, 0, 0, "sql_mode", OPEN_FULL_TABLE}, - {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer", OPEN_FULL_TABLE}, + OPEN_FRM_ONLY}, + {"ACTION_REFERENCE_OLD_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, + {"ACTION_REFERENCE_NEW_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FRM_ONLY}, + {"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 1, "Created", OPEN_FRM_ONLY}, + {"SQL_MODE", 32*256, MYSQL_TYPE_STRING, 0, 0, "sql_mode", OPEN_FRM_ONLY}, + {"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer", OPEN_FRM_ONLY}, {"CHARACTER_SET_CLIENT", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, - "character_set_client", OPEN_FULL_TABLE}, + "character_set_client", OPEN_FRM_ONLY}, {"COLLATION_CONNECTION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, - "collation_connection", OPEN_FULL_TABLE}, + "collation_connection", OPEN_FRM_ONLY}, {"DATABASE_COLLATION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, - "Database Collation", OPEN_FULL_TABLE}, + "Database Collation", OPEN_FRM_ONLY}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE} }; @@ -6838,6 +7147,28 @@ ST_FIELD_INFO referential_constraints_fields_info[]= }; +ST_FIELD_INFO parameters_fields_info[]= +{ + {"SPECIFIC_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"SPECIFIC_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, + OPEN_FULL_TABLE}, + {"SPECIFIC_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"ORDINAL_POSITION", 21 , MYSQL_TYPE_LONG, 0, 0, 0, OPEN_FULL_TABLE}, + {"PARAMETER_MODE", 5, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE}, + {"PARAMETER_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE}, + {"DATA_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"CHARACTER_MAXIMUM_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE}, + {"CHARACTER_OCTET_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE}, + {"NUMERIC_PRECISION", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE}, + {"NUMERIC_SCALE", 21 , MYSQL_TYPE_LONG, 0, 1, 0, OPEN_FULL_TABLE}, + {"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE}, + {"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FULL_TABLE}, + {"DTD_IDENTIFIER", 65535, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {"ROUTINE_TYPE", 9, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE}, + {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE} +}; + + ST_FIELD_INFO tablespaces_fields_info[]= { {"TABLESPACE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, @@ -6901,6 +7232,8 @@ ST_SCHEMA_TABLE schema_tables[]= OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY}, {"OPEN_TABLES", open_tables_fields_info, create_schema_table, fill_open_tables, make_old_format, 0, -1, -1, 1, 0}, + {"PARAMETERS", parameters_fields_info, create_schema_table, + fill_schema_proc, 0, 0, -1, -1, 0, 0}, {"PARTITIONS", partitions_fields_info, create_schema_table, get_all_tables, 0, get_schema_partitions_record, 1, 2, 0, OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY}, @@ -6943,7 +7276,7 @@ ST_SCHEMA_TABLE schema_tables[]= fill_schema_table_privileges, 0, 0, -1, -1, 0, 0}, {"TRIGGERS", triggers_fields_info, create_schema_table, get_all_tables, make_old_format, get_schema_triggers_record, 5, 6, 0, - OPTIMIZE_I_S_TABLE|OPEN_TABLE_ONLY}, + OPEN_TRIGGER_ONLY|OPTIMIZE_I_S_TABLE}, {"USER_PRIVILEGES", user_privileges_fields_info, create_schema_table, fill_schema_user_privileges, 0, 0, -1, -1, 0, 0}, {"VARIABLES", variables_fields_info, create_schema_table, fill_variables, diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 6f0602cedfd..ee530a74b50 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -1198,12 +1198,13 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, DBUG_RETURN(1); // EOM } - - push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_TRG_NO_CREATION_CTX, - ER(ER_TRG_NO_CREATION_CTX), - (const char*) db, - (const char*) table_name); + + if (!thd->no_warnings_for_error) + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_TRG_NO_CREATION_CTX, + ER(ER_TRG_NO_CREATION_CTX), + (const char*) db, + (const char*) table_name); if (!(trg_client_cs_name= alloc_lex_string(&table->mem_root)) || !(trg_connection_cl_name= alloc_lex_string(&table->mem_root)) || @@ -1332,12 +1333,12 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, MySQL, which does not support triggers definers. We should emit warning here. */ - - push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_TRG_NO_DEFINER, ER(ER_TRG_NO_DEFINER), - (const char*) db, - (const char*) lex.sphead->m_name.str); - + if (!thd->no_warnings_for_error) + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_TRG_NO_DEFINER, ER(ER_TRG_NO_DEFINER), + (const char*) db, + (const char*) lex.sphead->m_name.str); + /* Set definer to the '' to correct displaying in the information schema. diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 6f824750737..31e4a45ce4f 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -1123,8 +1123,18 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, table->db, table->table_name); get_default_definer(thd, &table->definer); } + + /* + Initialize view definition context by character set names loaded from + the view definition file. Use UTF8 character set if view definition + file is of old version and does not contain the character set names. + */ + table->view_creation_ctx= View_creation_ctx::create(thd, table); + if (flags & OPEN_VIEW_NO_PARSE) { + if (arena) + thd->restore_active_arena(arena, &backup); DBUG_RETURN(FALSE); } @@ -1139,13 +1149,6 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, /*TODO: md5 test here and warning if it is differ */ - /* - Initialize view definition context by character set names loaded from - the view definition file. Use UTF8 character set if view definition - file is of old version and does not contain the character set names. - */ - - table->view_creation_ctx= View_creation_ctx::create(thd, table); /* TODO: TABLE mem root should be used here when VIEW will be stored in diff --git a/sql/unireg.h b/sql/unireg.h index 3b39532d29d..def4fb12b39 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -194,6 +194,11 @@ */ #define OPTIMIZE_I_S_TABLE OPEN_VIEW_FULL*2 +/* + The flag means that we need to process trigger files only. +*/ +#define OPEN_TRIGGER_ONLY OPTIMIZE_I_S_TABLE*2 + #define SC_INFO_LENGTH 4 /* Form format constant */ #define TE_INFO_LENGTH 3 #define MTYP_NOEMPTY_BIT 128 diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index 3da307b82fc..966acdfa8f0 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -176,6 +176,623 @@ static uchar NEAR sort_order_big5[]= (uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377', }; + +static MY_UNICASE_INFO cA2[256]= +{ + /* A200-A20F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A210-A21F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A220-A22F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A230-A23F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A240-A24F */ + {0xA240,0xA240,0xFFFD}, + {0xA241,0xA241,0xFF0F}, + {0xA242,0xA242,0xFF3C}, + {0xA243,0xA243,0xFF04}, + {0xA244,0xA244,0x00A5}, + {0xA245,0xA245,0x3012}, + {0xA246,0xA246,0x00A2}, + {0xA247,0xA247,0x00A3}, + {0xA248,0xA248,0xFF05}, + {0xA249,0xA249,0xFF20}, + {0xA24A,0xA24A,0x2103}, + {0xA24B,0xA24B,0x2109}, + {0xA24C,0xA24C,0xFE69}, + {0xA24D,0xA24D,0xFE6A}, + {0xA24E,0xA24E,0xFE6B}, + {0xA24F,0xA24F,0x33D5}, + /* A250-A25F */ + {0xA250,0xA250,0x339C}, + {0xA251,0xA251,0x339D}, + {0xA252,0xA252,0x339E}, + {0xA253,0xA253,0x33CE}, + {0xA254,0xA254,0x33A1}, + {0xA255,0xA255,0x338E}, + {0xA256,0xA256,0x338F}, + {0xA257,0xA257,0x33C4}, + {0xA258,0xA258,0x00B0}, + {0xA259,0xA259,0x5159}, + {0xA25A,0xA25A,0x515B}, + {0xA25B,0xA25B,0x515E}, + {0xA25C,0xA25C,0x515D}, + {0xA25D,0xA25D,0x5161}, + {0xA25E,0xA25E,0x5163}, + {0xA25F,0xA25F,0x55E7}, + /* A260-A26F */ + {0xA260,0xA260,0x74E9}, + {0xA261,0xA261,0x7CCE}, + {0xA262,0xA262,0x2581}, + {0xA263,0xA263,0x2582}, + {0xA264,0xA264,0x2583}, + {0xA265,0xA265,0x2584}, + {0xA266,0xA266,0x2585}, + {0xA267,0xA267,0x2586}, + {0xA268,0xA268,0x2587}, + {0xA269,0xA269,0x2588}, + {0xA26A,0xA26A,0x258F}, + {0xA26B,0xA26B,0x258E}, + {0xA26C,0xA26C,0x258D}, + {0xA26D,0xA26D,0x258C}, + {0xA26E,0xA26E,0x258B}, + {0xA26F,0xA26F,0x258A}, + /* A270-A27F */ + {0xA270,0xA270,0x2589}, + {0xA271,0xA271,0x253C}, + {0xA272,0xA272,0x2534}, + {0xA273,0xA273,0x252C}, + {0xA274,0xA274,0x2524}, + {0xA275,0xA275,0x251C}, + {0xA276,0xA276,0x2594}, + {0xA277,0xA277,0x2500}, + {0xA278,0xA278,0x2502}, + {0xA279,0xA279,0x2595}, + {0xA27A,0xA27A,0x250C}, + {0xA27B,0xA27B,0x2510}, + {0xA27C,0xA27C,0x2514}, + {0xA27D,0xA27D,0x2518}, + {0xA27E,0xA27E,0x256D}, + {0x0000,0x0000,0x0000}, + /* A280-A28F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A290-A29F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A2A0-A2AF */ + {0x0000,0x0000,0x0000}, + {0xA2A1,0xA2A1,0x256E}, + {0xA2A2,0xA2A2,0x2570}, + {0xA2A3,0xA2A3,0x256F}, + {0xA2A4,0xA2A4,0x2550}, + {0xA2A5,0xA2A5,0x255E}, + {0xA2A6,0xA2A6,0x256A}, + {0xA2A7,0xA2A7,0x2561}, + {0xA2A8,0xA2A8,0x25E2}, + {0xA2A9,0xA2A9,0x25E3}, + {0xA2AA,0xA2AA,0x25E5}, + {0xA2AB,0xA2AB,0x25E4}, + {0xA2AC,0xA2AC,0x2571}, + {0xA2AD,0xA2AD,0x2572}, + {0xA2AE,0xA2AE,0x2573}, + {0xA2AF,0xA2AF,0xFF10}, + /* A2B0-A2BF */ + {0xA2B0,0xA2B0,0xFF11}, + {0xA2B1,0xA2B1,0xFF12}, + {0xA2B2,0xA2B2,0xFF13}, + {0xA2B3,0xA2B3,0xFF14}, + {0xA2B4,0xA2B4,0xFF15}, + {0xA2B5,0xA2B5,0xFF16}, + {0xA2B6,0xA2B6,0xFF17}, + {0xA2B7,0xA2B7,0xFF18}, + {0xA2B8,0xA2B8,0xFF19}, + {0xA2B9,0xA2B9,0x2160}, + {0xA2BA,0xA2BA,0x2161}, + {0xA2BB,0xA2BB,0x2162}, + {0xA2BC,0xA2BC,0x2163}, + {0xA2BD,0xA2BD,0x2164}, + {0xA2BE,0xA2BE,0x2165}, + {0xA2BF,0xA2BF,0x2166}, + /* A2C0-A2CF */ + {0xA2C0,0xA2C0,0x2167}, + {0xA2C1,0xA2C1,0x2168}, + {0xA2C2,0xA2C2,0x2169}, + {0xA2C3,0xA2C3,0x3021}, + {0xA2C4,0xA2C4,0x3022}, + {0xA2C5,0xA2C5,0x3023}, + {0xA2C6,0xA2C6,0x3024}, + {0xA2C7,0xA2C7,0x3025}, + {0xA2C8,0xA2C8,0x3026}, + {0xA2C9,0xA2C9,0x3027}, + {0xA2CA,0xA2CA,0x3028}, + {0xA2CB,0xA2CB,0x3029}, + {0xA2CC,0xA2CC,0xFFFD}, + {0xA2CD,0xA2CD,0x5344}, + {0xA2CE,0xA2CE,0xFFFD}, + {0xA2CF,0xA2E9,0xFF21}, + /* A2D0-A2DF */ + {0xA2D0,0xA2EA,0xFF22}, + {0xA2D1,0xA2EB,0xFF23}, + {0xA2D2,0xA2EC,0xFF24}, + {0xA2D3,0xA2ED,0xFF25}, + {0xA2D4,0xA2EE,0xFF26}, + {0xA2D5,0xA2EF,0xFF27}, + {0xA2D6,0xA2F0,0xFF28}, + {0xA2D7,0xA2F1,0xFF29}, + {0xA2D8,0xA2F2,0xFF2A}, + {0xA2D9,0xA2F3,0xFF2B}, + {0xA2DA,0xA2F4,0xFF2C}, + {0xA2DB,0xA2F5,0xFF2D}, + {0xA2DC,0xA2F6,0xFF2E}, + {0xA2DD,0xA2F7,0xFF2F}, + {0xA2DE,0xA2F8,0xFF30}, + {0xA2DF,0xA2F9,0xFF31}, + /* A2E0-A2EF */ + {0xA2E0,0xA2FA,0xFF32}, + {0xA2E1,0xA2FB,0xFF33}, + {0xA2E2,0xA2FC,0xFF34}, + {0xA2E3,0xA2FD,0xFF35}, + {0xA2E4,0xA2FE,0xFF36}, + {0xA2E5,0xA340,0xFF37}, + {0xA2E6,0xA341,0xFF38}, + {0xA2E7,0xA342,0xFF39}, + {0xA2E8,0xA343,0xFF3A}, + {0xA2CF,0xA2E9,0xFF41}, + {0xA2D0,0xA2EA,0xFF42}, + {0xA2D1,0xA2EB,0xFF43}, + {0xA2D2,0xA2EC,0xFF44}, + {0xA2D3,0xA2ED,0xFF45}, + {0xA2D4,0xA2EE,0xFF46}, + {0xA2D5,0xA2EF,0xFF47}, + /* A2F0-A2FF */ + {0xA2D6,0xA2F0,0xFF48}, + {0xA2D7,0xA2F1,0xFF49}, + {0xA2D8,0xA2F2,0xFF4A}, + {0xA2D9,0xA2F3,0xFF4B}, + {0xA2DA,0xA2F4,0xFF4C}, + {0xA2DB,0xA2F5,0xFF4D}, + {0xA2DC,0xA2F6,0xFF4E}, + {0xA2DD,0xA2F7,0xFF4F}, + {0xA2DE,0xA2F8,0xFF50}, + {0xA2DF,0xA2F9,0xFF51}, + {0xA2E0,0xA2FA,0xFF52}, + {0xA2E1,0xA2FB,0xFF53}, + {0xA2E2,0xA2FC,0xFF54}, + {0xA2E3,0xA2FD,0xFF55}, + {0xA2E4,0xA2FE,0xFF56}, + {0x0000,0x0000,0x0000} +}; + + +static MY_UNICASE_INFO cA3[256]= +{ + /* A300-A30F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A310-A31F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A320-A32F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A330-A33F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A340-A34F */ + {0xA2E5,0xA340,0xFF57}, + {0xA2E6,0xA341,0xFF58}, + {0xA2E7,0xA342,0xFF59}, + {0xA2E8,0xA343,0xFF5A}, + {0xA344,0xA35C,0x0391}, + {0xA345,0xA35D,0x0392}, + {0xA346,0xA35E,0x0393}, + {0xA347,0xA35F,0x0394}, + {0xA348,0xA360,0x0395}, + {0xA349,0xA361,0x0396}, + {0xA34A,0xA362,0x0397}, + {0xA34B,0xA363,0x0398}, + {0xA34C,0xA364,0x0399}, + {0xA34D,0xA365,0x039A}, + {0xA34E,0xA366,0x039B}, + {0xA34F,0xA367,0x039C}, + /* A350-A35F */ + {0xA350,0xA368,0x039D}, + {0xA351,0xA369,0x039E}, + {0xA352,0xA36A,0x039F}, + {0xA353,0xA36B,0x03A0}, + {0xA354,0xA36C,0x03A1}, + {0xA355,0xA36D,0x03A3}, + {0xA356,0xA36E,0x03A4}, + {0xA357,0xA36F,0x03A5}, + {0xA358,0xA370,0x03A6}, + {0xA359,0xA371,0x03A7}, + {0xA35A,0xA372,0x03A8}, + {0xA35B,0xA373,0x03A9}, + {0xA344,0xA35C,0x03B1}, + {0xA345,0xA35D,0x03B2}, + {0xA346,0xA35E,0x03B3}, + {0xA347,0xA35F,0x03B4}, + /* A360-A36F */ + {0xA348,0xA360,0x03B5}, + {0xA349,0xA361,0x03B6}, + {0xA34A,0xA362,0x03B7}, + {0xA34B,0xA363,0x03B8}, + {0xA34C,0xA364,0x03B9}, + {0xA34D,0xA365,0x03BA}, + {0xA34E,0xA366,0x03BB}, + {0xA34F,0xA367,0x03BC}, + {0xA350,0xA368,0x03BD}, + {0xA351,0xA369,0x03BE}, + {0xA352,0xA36A,0x03BF}, + {0xA353,0xA36B,0x03C0}, + {0xA354,0xA36C,0x03C1}, + {0xA355,0xA36D,0x03C3}, + {0xA356,0xA36E,0x03C4}, + {0xA357,0xA36F,0x03C5}, + /* A370-A37F */ + {0xA358,0xA370,0x03C6}, + {0xA359,0xA371,0x03C7}, + {0xA35A,0xA372,0x03C8}, + {0xA35B,0xA373,0x03C9}, + {0xA374,0xA374,0x3105}, + {0xA375,0xA375,0x3106}, + {0xA376,0xA376,0x3107}, + {0xA377,0xA377,0x3108}, + {0xA378,0xA378,0x3109}, + {0xA379,0xA379,0x310A}, + {0xA37A,0xA37A,0x310B}, + {0xA37B,0xA37B,0x310C}, + {0xA37C,0xA37C,0x310D}, + {0xA37D,0xA37D,0x310E}, + {0xA37E,0xA37E,0x310F}, + {0x0000,0x0000,0x0000}, + /* A380-A38F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A390-A39F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* A3A0-A3AF */ + {0x0000,0x0000,0x0000}, + {0xA3A1,0xA3A1,0x3110}, + {0xA3A2,0xA3A2,0x3111}, + {0xA3A3,0xA3A3,0x3112}, + {0xA3A4,0xA3A4,0x3113}, + {0xA3A5,0xA3A5,0x3114}, + {0xA3A6,0xA3A6,0x3115}, + {0xA3A7,0xA3A7,0x3116}, + {0xA3A8,0xA3A8,0x3117}, + {0xA3A9,0xA3A9,0x3118}, + {0xA3AA,0xA3AA,0x3119}, + {0xA3AB,0xA3AB,0x311A}, + {0xA3AC,0xA3AC,0x311B}, + {0xA3AD,0xA3AD,0x311C}, + {0xA3AE,0xA3AE,0x311D}, + {0xA3AF,0xA3AF,0x311E}, + /* A3B0-A3BF */ + {0xA3B0,0xA3B0,0x311F}, + {0xA3B1,0xA3B1,0x3120}, + {0xA3B2,0xA3B2,0x3121}, + {0xA3B3,0xA3B3,0x3122}, + {0xA3B4,0xA3B4,0x3123}, + {0xA3B5,0xA3B5,0x3124}, + {0xA3B6,0xA3B6,0x3125}, + {0xA3B7,0xA3B7,0x3126}, + {0xA3B8,0xA3B8,0x3127}, + {0xA3B9,0xA3B9,0x3128}, + {0xA3BA,0xA3BA,0x3129}, + {0xA3BB,0xA3BB,0x02D9}, + {0xA3BC,0xA3BC,0x02C9}, + {0xA3BD,0xA3BD,0x02CA}, + {0xA3BE,0xA3BE,0x02C7}, + {0xA3BF,0xA3BF,0x02CB}, + /* A3C0-A3CF */ + {0xA3C0,0xA3C0,0x003F}, + {0xA3C1,0xA3C1,0x003F}, + {0xA3C2,0xA3C2,0x003F}, + {0xA3C3,0xA3C3,0x003F}, + {0xA3C4,0xA3C4,0x003F}, + {0xA3C5,0xA3C5,0x003F}, + {0xA3C6,0xA3C6,0x003F}, + {0xA3C7,0xA3C7,0x003F}, + {0xA3C8,0xA3C8,0x003F}, + {0xA3C9,0xA3C9,0x003F}, + {0xA3CA,0xA3CA,0x003F}, + {0xA3CB,0xA3CB,0x003F}, + {0xA3CC,0xA3CC,0x003F}, + {0xA3CD,0xA3CD,0x003F}, + {0xA3CE,0xA3CE,0x003F}, + {0xA3CF,0xA3CF,0x003F}, + /* A3D0-A3DF */ + {0xA3D0,0xA3D0,0x003F}, + {0xA3D1,0xA3D1,0x003F}, + {0xA3D2,0xA3D2,0x003F}, + {0xA3D3,0xA3D3,0x003F}, + {0xA3D4,0xA3D4,0x003F}, + {0xA3D5,0xA3D5,0x003F}, + {0xA3D6,0xA3D6,0x003F}, + {0xA3D7,0xA3D7,0x003F}, + {0xA3D8,0xA3D8,0x003F}, + {0xA3D9,0xA3D9,0x003F}, + {0xA3DA,0xA3DA,0x003F}, + {0xA3DB,0xA3DB,0x003F}, + {0xA3DC,0xA3DC,0x003F}, + {0xA3DD,0xA3DD,0x003F}, + {0xA3DE,0xA3DE,0x003F}, + {0xA3DF,0xA3DF,0x003F}, + /* A3E0-A3EF */ + {0xA3E0,0xA3E0,0x003F}, + {0xA3E1,0xA3E1,0x003F}, + {0xA3E2,0xA3E2,0x003F}, + {0xA3E3,0xA3E3,0x003F}, + {0xA3E4,0xA3E4,0x003F}, + {0xA3E5,0xA3E5,0x003F}, + {0xA3E6,0xA3E6,0x003F}, + {0xA3E7,0xA3E7,0x003F}, + {0xA3E8,0xA3E8,0x003F}, + {0xA3E9,0xA3E9,0x003F}, + {0xA3EA,0xA3EA,0x003F}, + {0xA3EB,0xA3EB,0x003F}, + {0xA3EC,0xA3EC,0x003F}, + {0xA3ED,0xA3ED,0x003F}, + {0xA3EE,0xA3EE,0x003F}, + {0xA3EF,0xA3EF,0x003F}, + /* A3F0-A3FF */ + {0xA3F0,0xA3F0,0x003F}, + {0xA3F1,0xA3F1,0x003F}, + {0xA3F2,0xA3F2,0x003F}, + {0xA3F3,0xA3F3,0x003F}, + {0xA3F4,0xA3F4,0x003F}, + {0xA3F5,0xA3F5,0x003F}, + {0xA3F6,0xA3F6,0x003F}, + {0xA3F7,0xA3F7,0x003F}, + {0xA3F8,0xA3F8,0x003F}, + {0xA3F9,0xA3F9,0x003F}, + {0xA3FA,0xA3FA,0x003F}, + {0xA3FB,0xA3FB,0x003F}, + {0xA3FC,0xA3FC,0x003F}, + {0xA3FD,0xA3FD,0x003F}, + {0xA3FE,0xA3FE,0x003F}, + {0x0000,0x0000,0x0000} +}; + + +static MY_UNICASE_INFO cC7[256]= +{ + /* C700-C70F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* C710-C71F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* C720-C72F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* C730-C73F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* C740-C74F */ + {0xC740,0xC740,0x30A8}, + {0xC741,0xC741,0x30A9}, + {0xC742,0xC742,0x30AA}, + {0xC743,0xC743,0x30AB}, + {0xC744,0xC744,0x30AC}, + {0xC745,0xC745,0x30AD}, + {0xC746,0xC746,0x30AE}, + {0xC747,0xC747,0x30AF}, + {0xC748,0xC748,0x30B0}, + {0xC749,0xC749,0x30B1}, + {0xC74A,0xC74A,0x30B2}, + {0xC74B,0xC74B,0x30B3}, + {0xC74C,0xC74C,0x30B4}, + {0xC74D,0xC74D,0x30B5}, + {0xC74E,0xC74E,0x30B6}, + {0xC74F,0xC74F,0x30B7}, + /* C750-C75F */ + {0xC750,0xC750,0x30B8}, + {0xC751,0xC751,0x30B9}, + {0xC752,0xC752,0x30BA}, + {0xC753,0xC753,0x30BB}, + {0xC754,0xC754,0x30BC}, + {0xC755,0xC755,0x30BD}, + {0xC756,0xC756,0x30BE}, + {0xC757,0xC757,0x30BF}, + {0xC758,0xC758,0x30C0}, + {0xC759,0xC759,0x30C1}, + {0xC75A,0xC75A,0x30C2}, + {0xC75B,0xC75B,0x30C3}, + {0xC75C,0xC75C,0x30C4}, + {0xC75D,0xC75D,0x30C5}, + {0xC75E,0xC75E,0x30C6}, + {0xC75F,0xC75F,0x30C7}, + /* C760-C76F */ + {0xC760,0xC760,0x30C8}, + {0xC761,0xC761,0x30C9}, + {0xC762,0xC762,0x30CA}, + {0xC763,0xC763,0x30CB}, + {0xC764,0xC764,0x30CC}, + {0xC765,0xC765,0x30CD}, + {0xC766,0xC766,0x30CE}, + {0xC767,0xC767,0x30CF}, + {0xC768,0xC768,0x30D0}, + {0xC769,0xC769,0x30D1}, + {0xC76A,0xC76A,0x30D2}, + {0xC76B,0xC76B,0x30D3}, + {0xC76C,0xC76C,0x30D4}, + {0xC76D,0xC76D,0x30D5}, + {0xC76E,0xC76E,0x30D6}, + {0xC76F,0xC76F,0x30D7}, + /* C770-C77F */ + {0xC770,0xC770,0x30D8}, + {0xC771,0xC771,0x30D9}, + {0xC772,0xC772,0x30DA}, + {0xC773,0xC773,0x30DB}, + {0xC774,0xC774,0x30DC}, + {0xC775,0xC775,0x30DD}, + {0xC776,0xC776,0x30DE}, + {0xC777,0xC777,0x30DF}, + {0xC778,0xC778,0x30E0}, + {0xC779,0xC779,0x30E1}, + {0xC77A,0xC77A,0x30E2}, + {0xC77B,0xC77B,0x30E3}, + {0xC77C,0xC77C,0x30E4}, + {0xC77D,0xC77D,0x30E5}, + {0xC77E,0xC77E,0x30E6}, + {0x0000,0x0000,0x0000}, + /* C780-C78F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* C790-C79F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* C7A0-C7AF */ + {0x0000,0x0000,0x0000}, + {0xC7A1,0xC7A1,0x30E7}, + {0xC7A2,0xC7A2,0x30E8}, + {0xC7A3,0xC7A3,0x30E9}, + {0xC7A4,0xC7A4,0x30EA}, + {0xC7A5,0xC7A5,0x30EB}, + {0xC7A6,0xC7A6,0x30EC}, + {0xC7A7,0xC7A7,0x30ED}, + {0xC7A8,0xC7A8,0x30EE}, + {0xC7A9,0xC7A9,0x30EF}, + {0xC7AA,0xC7AA,0x30F0}, + {0xC7AB,0xC7AB,0x30F1}, + {0xC7AC,0xC7AC,0x30F2}, + {0xC7AD,0xC7AD,0x30F3}, + {0xC7AE,0xC7AE,0x30F4}, + {0xC7AF,0xC7AF,0x30F5}, + /* C7B0-C7BF */ + {0xC7B0,0xC7B0,0x30F6}, + {0xC7B1,0xC7CC,0x0414}, + {0xC7B2,0xC7CD,0x0415}, + {0xC7B3,0xC7CE,0x0401}, + {0xC7B4,0xC7CF,0x0416}, + {0xC7B5,0xC7D0,0x0417}, + {0xC7B6,0xC7D1,0x0418}, + {0xC7B7,0xC7D2,0x0419}, + {0xC7B8,0xC7D3,0x041A}, + {0xC7B9,0xC7D4,0x041B}, + {0xC7BA,0xC7D5,0x041C}, + {0xC7BB,0xC7DC,0x0423}, + {0xC7BC,0xC7DD,0x0424}, + {0xC7BD,0xC7DE,0x0425}, + {0xC7BE,0xC7DF,0x0426}, + {0xC7BF,0xC7E0,0x0427}, + /* C7C0-C7CF */ + {0xC7C0,0xC7E1,0x0428}, + {0xC7C1,0xC7E2,0x0429}, + {0xC7C2,0xC7E3,0x042A}, + {0xC7C3,0xC7E4,0x042B}, + {0xC7C4,0xC7E5,0x042C}, + {0xC7C5,0xC7E6,0x042D}, + {0xC7C6,0xC7E7,0x042E}, + {0xC7C7,0xC7E8,0x042F}, + {0xC7C8,0xC7C8,0x0430}, + {0xC7C9,0xC7C9,0x0431}, + {0xC7CA,0xC7CA,0x0432}, + {0xC7CB,0xC7CB,0x0433}, + {0xC7B1,0xC7CC,0x0434}, + {0xC7B2,0xC7CD,0x0435}, + {0xC7B3,0xC7CE,0x0451}, + {0xC7B4,0xC7CF,0x0436}, + /* C7D0-C7DF */ + {0xC7B5,0xC7D0,0x0437}, + {0xC7B6,0xC7D1,0x0438}, + {0xC7B7,0xC7D2,0x0439}, + {0xC7B8,0xC7D3,0x043A}, + {0xC7B9,0xC7D4,0x043B}, + {0xC7BA,0xC7D5,0x043C}, + {0xC7D6,0xC7D6,0x043D}, + {0xC7D7,0xC7D7,0x043E}, + {0xC7D8,0xC7D8,0x043F}, + {0xC7D9,0xC7D9,0x0440}, + {0xC7DA,0xC7DA,0x0441}, + {0xC7DB,0xC7DB,0x0442}, + {0xC7BB,0xC7DC,0x0443}, + {0xC7BC,0xC7DD,0x0444}, + {0xC7BD,0xC7DE,0x0445}, + {0xC7BE,0xC7DF,0x0446}, + /* C7E0-C7EF */ + {0xC7BF,0xC7E0,0x0447}, + {0xC7C0,0xC7E1,0x0448}, + {0xC7C1,0xC7E2,0x0449}, + {0xC7C2,0xC7E3,0x044A}, + {0xC7C3,0xC7E4,0x044B}, + {0xC7C4,0xC7E5,0x044C}, + {0xC7C5,0xC7E6,0x044D}, + {0xC7C6,0xC7E7,0x044E}, + {0xC7C7,0xC7E8,0x044F}, + {0xC7E9,0xC7E9,0x2460}, + {0xC7EA,0xC7EA,0x2461}, + {0xC7EB,0xC7EB,0x2462}, + {0xC7EC,0xC7EC,0x2463}, + {0xC7ED,0xC7ED,0x2464}, + {0xC7EE,0xC7EE,0x2465}, + {0xC7EF,0xC7EF,0x2466}, + /* C7F0-C7FF */ + {0xC7F0,0xC7F0,0x2467}, + {0xC7F1,0xC7F1,0x2468}, + {0xC7F2,0xC7F2,0x2469}, + {0xC7F3,0xC7F3,0x2474}, + {0xC7F4,0xC7F4,0x2475}, + {0xC7F5,0xC7F5,0x2476}, + {0xC7F6,0xC7F6,0x2477}, + {0xC7F7,0xC7F7,0x2478}, + {0xC7F8,0xC7F8,0x2479}, + {0xC7F9,0xC7F9,0x247A}, + {0xC7FA,0xC7FA,0x247B}, + {0xC7FB,0xC7FB,0x247C}, + {0xC7FC,0xC7FC,0x247D}, + {0xC7FD,0xC7FD,0x003F}, + {0xC7FE,0xC7FE,0x003F}, + {0x0000,0x0000,0x0000} +}; + + +static MY_UNICASE_INFO *my_caseinfo_big5[256]= +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, cA2, cA3, NULL, NULL, NULL, NULL, /* A */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, cC7, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +}; + + static uint16 big5strokexfrm(uint16 i) { if ((i == 0xA440) || (i == 0xA441)) return 0xA440; @@ -6393,7 +7010,7 @@ CHARSET_INFO my_charset_big5_chinese_ci= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_big5, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ @@ -6426,7 +7043,7 @@ CHARSET_INFO my_charset_big5_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_big5, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c index 07191c436b7..f36f93b5527 100644 --- a/strings/ctype-cp932.c +++ b/strings/ctype-cp932.c @@ -197,6 +197,1512 @@ static uint mbcharlen_cp932(CHARSET_INFO *cs __attribute__((unused)),uint c) #define cp932code(c,d) ((((uint) (uchar)(c)) << 8) | (uint) (uchar) (d)) +static MY_UNICASE_INFO c81[256]= +{ + /* 8100-810F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8110-811F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8120-812F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8130-813F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8140,0x8140,0x3000}, /* 8140-814F */ + {0x8141,0x8141,0x3001}, + {0x8142,0x8142,0x3002}, + {0x8143,0x8143,0xFF0C}, + {0x8144,0x8144,0xFF0E}, + {0x8145,0x8145,0x30FB}, + {0x8146,0x8146,0xFF1A}, + {0x8147,0x8147,0xFF1B}, + {0x8148,0x8148,0xFF1F}, + {0x8149,0x8149,0xFF01}, + {0x814A,0x814A,0x309B}, + {0x814B,0x814B,0x309C}, + {0x814C,0x814C,0x00B4}, + {0x814D,0x814D,0xFF40}, + {0x814E,0x814E,0x00A8}, + {0x814F,0x814F,0xFF3E}, + {0x8150,0x8150,0xFFE3}, /* 8150-815F */ + {0x8151,0x8151,0xFF3F}, + {0x8152,0x8152,0x30FD}, + {0x8153,0x8153,0x30FE}, + {0x8154,0x8154,0x309D}, + {0x8155,0x8155,0x309E}, + {0x8156,0x8156,0x3003}, + {0x8157,0x8157,0x4EDD}, + {0x8158,0x8158,0x3005}, + {0x8159,0x8159,0x3006}, + {0x815A,0x815A,0x3007}, + {0x815B,0x815B,0x30FC}, + {0x815C,0x815C,0x2015}, + {0x815D,0x815D,0x2010}, + {0x815E,0x815E,0xFF0F}, + {0x815F,0x815F,0xFF3C}, + {0x8160,0x8160,0xFF5E}, /* 8160-816F */ + {0x8161,0x8161,0x2225}, + {0x8162,0x8162,0xFF5C}, + {0x8163,0x8163,0x2026}, + {0x8164,0x8164,0x2025}, + {0x8165,0x8165,0x2018}, + {0x8166,0x8166,0x2019}, + {0x8167,0x8167,0x201C}, + {0x8168,0x8168,0x201D}, + {0x8169,0x8169,0xFF08}, + {0x816A,0x816A,0xFF09}, + {0x816B,0x816B,0x3014}, + {0x816C,0x816C,0x3015}, + {0x816D,0x816D,0xFF3B}, + {0x816E,0x816E,0xFF3D}, + {0x816F,0x816F,0xFF5B}, + {0x8170,0x8170,0xFF5D}, /* 8170-817F */ + {0x8171,0x8171,0x3008}, + {0x8172,0x8172,0x3009}, + {0x8173,0x8173,0x300A}, + {0x8174,0x8174,0x300B}, + {0x8175,0x8175,0x300C}, + {0x8176,0x8176,0x300D}, + {0x8177,0x8177,0x300E}, + {0x8178,0x8178,0x300F}, + {0x8179,0x8179,0x3010}, + {0x817A,0x817A,0x3011}, + {0x817B,0x817B,0xFF0B}, + {0x817C,0x817C,0xFF0D}, + {0x817D,0x817D,0x00B1}, + {0x817E,0x817E,0x00D7}, + {0,0,0}, + {0x8180,0x8180,0x00F7}, /* 8180-818F */ + {0x8181,0x8181,0xFF1D}, + {0x8182,0x8182,0x2260}, + {0x8183,0x8183,0xFF1C}, + {0x8184,0x8184,0xFF1E}, + {0x8185,0x8185,0x2266}, + {0x8186,0x8186,0x2267}, + {0x8187,0x8187,0x221E}, + {0x8188,0x8188,0x2234}, + {0x8189,0x8189,0x2642}, + {0x818A,0x818A,0x2640}, + {0x818B,0x818B,0x00B0}, + {0x818C,0x818C,0x2032}, + {0x818D,0x818D,0x2033}, + {0x818E,0x818E,0x2103}, + {0x818F,0x818F,0xFFE5}, + {0x8190,0x8190,0xFF04}, /* 8190-819F*/ + {0x8191,0x8191,0xFFE0}, + {0x8192,0x8192,0xFFE1}, + {0x8193,0x8193,0xFF05}, + {0x8194,0x8194,0xFF03}, + {0x8195,0x8195,0xFF06}, + {0x8196,0x8196,0xFF0A}, + {0x8197,0x8197,0xFF20}, + {0x8198,0x8198,0x00A7}, + {0x8199,0x8199,0x2606}, + {0x819A,0x819A,0x2605}, + {0x819B,0x819B,0x25CB}, + {0x819C,0x819C,0x25CF}, + {0x819D,0x819D,0x25CE}, + {0x819E,0x819E,0x25C7}, + {0x819F,0x819F,0x25C6}, + {0x81A0,0x81A0,0x25A1}, /* 81A0-81AF */ + {0x81A1,0x81A1,0x25A0}, + {0x81A2,0x81A2,0x25B3}, + {0x81A3,0x81A3,0x25B2}, + {0x81A4,0x81A4,0x25BD}, + {0x81A5,0x81A5,0x25BC}, + {0x81A6,0x81A6,0x203B}, + {0x81A7,0x81A7,0x3012}, + {0x81A8,0x81A8,0x2192}, + {0x81A9,0x81A9,0x2190}, + {0x81AA,0x81AA,0x2191}, + {0x81AB,0x81AB,0x2193}, + {0x81AC,0x81AC,0x3013}, + {0x81AD,0x81AD,0x003F}, + {0x81AE,0x81AE,0x003F}, + {0x81AF,0x81AF,0x003F}, + {0x81B0,0x81B0,0x003F}, /* 81B0-81BF */ + {0x81B1,0x81B1,0x003F}, + {0x81B2,0x81B2,0x003F}, + {0x81B3,0x81B3,0x003F}, + {0x81B4,0x81B4,0x003F}, + {0x81B5,0x81B5,0x003F}, + {0x81B6,0x81B6,0x003F}, + {0x81B7,0x81B7,0x003F}, + {0x81B8,0x81B8,0x2208}, + {0x81B9,0x81B9,0x220B}, + {0x81BA,0x81BA,0x2286}, + {0x81BB,0x81BB,0x2287}, + {0x81BC,0x81BC,0x2282}, + {0x81BD,0x81BD,0x2283}, + {0x81BE,0x81BE,0x222A}, + {0x81BF,0x81BF,0x2229}, + {0x81C0,0x81C0,0x003F}, /* 81C0-81CF */ + {0x81C1,0x81C1,0x003F}, + {0x81C2,0x81C2,0x003F}, + {0x81C3,0x81C3,0x003F}, + {0x81C4,0x81C4,0x003F}, + {0x81C5,0x81C5,0x003F}, + {0x81C6,0x81C6,0x003F}, + {0x81C7,0x81C7,0x003F}, + {0x81C8,0x81C8,0x2227}, + {0x81C9,0x81C9,0x2228}, + {0x81CA,0x81CA,0xFFE2}, + {0x81CB,0x81CB,0x21D2}, + {0x81CC,0x81CC,0x21D4}, + {0x81CD,0x81CD,0x2200}, + {0x81CE,0x81CE,0x2203}, + {0x81CF,0x81CF,0x003F}, + {0x81D0,0x81D0,0x003F}, /* 81D0-81DF */ + {0x81D1,0x81D1,0x003F}, + {0x81D2,0x81D2,0x003F}, + {0x81D3,0x81D3,0x003F}, + {0x81D4,0x81D4,0x003F}, + {0x81D5,0x81D5,0x003F}, + {0x81D6,0x81D6,0x003F}, + {0x81D7,0x81D7,0x003F}, + {0x81D8,0x81D8,0x003F}, + {0x81D9,0x81D9,0x003F}, + {0x81DA,0x81DA,0x2220}, + {0x81DB,0x81DB,0x22A5}, + {0x81DC,0x81DC,0x2312}, + {0x81DD,0x81DD,0x2202}, + {0x81DE,0x81DE,0x2207}, + {0x81DF,0x81DF,0x2261}, + {0x81E0,0x81E0,0x2252}, /* 81E0-81EF */ + {0x81E1,0x81E1,0x226A}, + {0x81E2,0x81E2,0x226B}, + {0x81E3,0x81E3,0x221A}, + {0x81E4,0x81E4,0x223D}, + {0x81E5,0x81E5,0x221D}, + {0x81E6,0x81E6,0x2235}, + {0x81E7,0x81E7,0x222B}, + {0x81E8,0x81E8,0x222C}, + {0x81E9,0x81E9,0x003F}, + {0x81EA,0x81EA,0x003F}, + {0x81EB,0x81EB,0x003F}, + {0x81EC,0x81EC,0x003F}, + {0x81ED,0x81ED,0x003F}, + {0x81EE,0x81EE,0x003F}, + {0x81EF,0x81EF,0x003F}, + {0x81F0,0x81F0,0x212B}, /* 81F0-81FF */ + {0x81F1,0x81F1,0x2030}, + {0x81F2,0x81F2,0x266F}, + {0x81F3,0x81F3,0x266D}, + {0x81F4,0x81F4,0x266A}, + {0x81F5,0x81F5,0x2020}, + {0x81F6,0x81F6,0x2021}, + {0x81F7,0x81F7,0x00B6}, + {0x81F8,0x81F8,0x003F}, + {0x81F9,0x81F9,0x003F}, + {0x81FA,0x81FA,0x003F}, + {0x81FB,0x81FB,0x003F}, + {0x81FC,0x81FC,0x25EF}, + {0,0,0}, + {0,0,0}, + {0,0,0}, +}; + + +static MY_UNICASE_INFO c82[256]= +{ + /* 8200-820F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8210-821F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8220-822F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8230-823F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8240,0x8240,0x003F}, /* 8240-824F */ + {0x8241,0x8241,0x003F}, + {0x8242,0x8242,0x003F}, + {0x8243,0x8243,0x003F}, + {0x8244,0x8244,0x003F}, + {0x8245,0x8245,0x003F}, + {0x8246,0x8246,0x003F}, + {0x8247,0x8247,0x003F}, + {0x8248,0x8248,0x003F}, + {0x8249,0x8249,0x003F}, + {0x824A,0x824A,0x003F}, + {0x824B,0x824B,0x003F}, + {0x824C,0x824C,0x003F}, + {0x824D,0x824D,0x003F}, + {0x824E,0x824E,0x003F}, + {0x824F,0x824F,0xFF10}, + {0x8250,0x8250,0xFF11}, /* 8250-825F */ + {0x8251,0x8251,0xFF12}, + {0x8252,0x8252,0xFF13}, + {0x8253,0x8253,0xFF14}, + {0x8254,0x8254,0xFF15}, + {0x8255,0x8255,0xFF16}, + {0x8256,0x8256,0xFF17}, + {0x8257,0x8257,0xFF18}, + {0x8258,0x8258,0xFF19}, + {0x8259,0x8259,0x003F}, + {0x825A,0x825A,0x003F}, + {0x825B,0x825B,0x003F}, + {0x825C,0x825C,0x003F}, + {0x825D,0x825D,0x003F}, + {0x825E,0x825E,0x003F}, + {0x825F,0x825F,0x003F}, + {0x8260,0x8281,0xFF21}, /* 8260-826F */ + {0x8261,0x8282,0xFF22}, + {0x8262,0x8283,0xFF23}, + {0x8263,0x8284,0xFF24}, + {0x8264,0x8285,0xFF25}, + {0x8265,0x8286,0xFF26}, + {0x8266,0x8287,0xFF27}, + {0x8267,0x8288,0xFF28}, + {0x8268,0x8289,0xFF29}, + {0x8269,0x828A,0xFF2A}, + {0x826A,0x828B,0xFF2B}, + {0x826B,0x828C,0xFF2C}, + {0x826C,0x828D,0xFF2D}, + {0x826D,0x828E,0xFF2E}, + {0x826E,0x828F,0xFF2F}, + {0x826F,0x8290,0xFF30}, + {0x8270,0x8291,0xFF31}, /* 8270-827F */ + {0x8271,0x8292,0xFF32}, + {0x8272,0x8293,0xFF33}, + {0x8273,0x8294,0xFF34}, + {0x8274,0x8295,0xFF35}, + {0x8275,0x8296,0xFF36}, + {0x8276,0x8297,0xFF37}, + {0x8277,0x8298,0xFF38}, + {0x8278,0x8299,0xFF39}, + {0x8279,0x829A,0xFF3A}, + {0x827A,0x827A,0x003F}, + {0x827B,0x827B,0x003F}, + {0x827C,0x827C,0x003F}, + {0x827D,0x827D,0x003F}, + {0x827E,0x827E,0x003F}, + {0,0,0}, + {0x8280,0x8280,0x003F}, /* 8280-828F */ + {0x8260,0x8281,0xFF41}, + {0x8261,0x8282,0xFF42}, + {0x8262,0x8283,0xFF43}, + {0x8263,0x8284,0xFF44}, + {0x8264,0x8285,0xFF45}, + {0x8265,0x8286,0xFF46}, + {0x8266,0x8287,0xFF47}, + {0x8267,0x8288,0xFF48}, + {0x8268,0x8289,0xFF49}, + {0x8269,0x828A,0xFF4A}, + {0x826A,0x828B,0xFF4B}, + {0x826B,0x828C,0xFF4C}, + {0x826C,0x828D,0xFF4D}, + {0x826D,0x828E,0xFF4E}, + {0x826E,0x828F,0xFF4F}, + {0x826F,0x8290,0xFF50}, /* 8290-829F */ + {0x8270,0x8291,0xFF51}, + {0x8271,0x8292,0xFF52}, + {0x8272,0x8293,0xFF53}, + {0x8273,0x8294,0xFF54}, + {0x8274,0x8295,0xFF55}, + {0x8275,0x8296,0xFF56}, + {0x8276,0x8297,0xFF57}, + {0x8277,0x8298,0xFF58}, + {0x8278,0x8299,0xFF59}, + {0x8279,0x829A,0xFF5A}, + {0x829B,0x829B,0x003F}, + {0x829C,0x829C,0x003F}, + {0x829D,0x829D,0x003F}, + {0x829E,0x829E,0x003F}, + {0x829F,0x829F,0x3041}, + {0x82A0,0x82A0,0x3042}, /* 82A0-82AF */ + {0x82A1,0x82A1,0x3043}, + {0x82A2,0x82A2,0x3044}, + {0x82A3,0x82A3,0x3045}, + {0x82A4,0x82A4,0x3046}, + {0x82A5,0x82A5,0x3047}, + {0x82A6,0x82A6,0x3048}, + {0x82A7,0x82A7,0x3049}, + {0x82A8,0x82A8,0x304A}, + {0x82A9,0x82A9,0x304B}, + {0x82AA,0x82AA,0x304C}, + {0x82AB,0x82AB,0x304D}, + {0x82AC,0x82AC,0x304E}, + {0x82AD,0x82AD,0x304F}, + {0x82AE,0x82AE,0x3050}, + {0x82AF,0x82AF,0x3051}, + {0x82B0,0x82B0,0x3052}, /* 82B0-82BF */ + {0x82B1,0x82B1,0x3053}, + {0x82B2,0x82B2,0x3054}, + {0x82B3,0x82B3,0x3055}, + {0x82B4,0x82B4,0x3056}, + {0x82B5,0x82B5,0x3057}, + {0x82B6,0x82B6,0x3058}, + {0x82B7,0x82B7,0x3059}, + {0x82B8,0x82B8,0x305A}, + {0x82B9,0x82B9,0x305B}, + {0x82BA,0x82BA,0x305C}, + {0x82BB,0x82BB,0x305D}, + {0x82BC,0x82BC,0x305E}, + {0x82BD,0x82BD,0x305F}, + {0x82BE,0x82BE,0x3060}, + {0x82BF,0x82BF,0x3061}, + {0x82C0,0x82C0,0x3062}, /* 82C0-82CF */ + {0x82C1,0x82C1,0x3063}, + {0x82C2,0x82C2,0x3064}, + {0x82C3,0x82C3,0x3065}, + {0x82C4,0x82C4,0x3066}, + {0x82C5,0x82C5,0x3067}, + {0x82C6,0x82C6,0x3068}, + {0x82C7,0x82C7,0x3069}, + {0x82C8,0x82C8,0x306A}, + {0x82C9,0x82C9,0x306B}, + {0x82CA,0x82CA,0x306C}, + {0x82CB,0x82CB,0x306D}, + {0x82CC,0x82CC,0x306E}, + {0x82CD,0x82CD,0x306F}, + {0x82CE,0x82CE,0x3070}, + {0x82CF,0x82CF,0x3071}, + {0x82D0,0x82D0,0x3072}, /* 82D0-82DF */ + {0x82D1,0x82D1,0x3073}, + {0x82D2,0x82D2,0x3074}, + {0x82D3,0x82D3,0x3075}, + {0x82D4,0x82D4,0x3076}, + {0x82D5,0x82D5,0x3077}, + {0x82D6,0x82D6,0x3078}, + {0x82D7,0x82D7,0x3079}, + {0x82D8,0x82D8,0x307A}, + {0x82D9,0x82D9,0x307B}, + {0x82DA,0x82DA,0x307C}, + {0x82DB,0x82DB,0x307D}, + {0x82DC,0x82DC,0x307E}, + {0x82DD,0x82DD,0x307F}, + {0x82DE,0x82DE,0x3080}, + {0x82DF,0x82DF,0x3081}, + {0x82E0,0x82E0,0x3082}, /* 82E0-82EF */ + {0x82E1,0x82E1,0x3083}, + {0x82E2,0x82E2,0x3084}, + {0x82E3,0x82E3,0x3085}, + {0x82E4,0x82E4,0x3086}, + {0x82E5,0x82E5,0x3087}, + {0x82E6,0x82E6,0x3088}, + {0x82E7,0x82E7,0x3089}, + {0x82E8,0x82E8,0x308A}, + {0x82E9,0x82E9,0x308B}, + {0x82EA,0x82EA,0x308C}, + {0x82EB,0x82EB,0x308D}, + {0x82EC,0x82EC,0x308E}, + {0x82ED,0x82ED,0x308F}, + {0x82EE,0x82EE,0x3090}, + {0x82EF,0x82EF,0x3091}, + {0x82F0,0x82F0,0x3092}, /* 82F0-82FF */ + {0x82F1,0x82F1,0x3093}, + {0x82F2,0x82F2,0x003F}, + {0x82F3,0x82F3,0x003F}, + {0x82F4,0x82F4,0x003F}, + {0x82F5,0x82F5,0x003F}, + {0x82F6,0x82F6,0x003F}, + {0x82F7,0x82F7,0x003F}, + {0x82F8,0x82F8,0x003F}, + {0x82F9,0x82F9,0x003F}, + {0x82FA,0x82FA,0x003F}, + {0x82FB,0x82FB,0x003F}, + {0x82FC,0x82FC,0x003F}, + {0,0,0} +}; + + +static MY_UNICASE_INFO c83[256]= +{ + /* 8300-830F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8310-831F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8320-832F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8330-833F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8340,0x8340,0x30A1}, /* 8340 */ + {0x8341,0x8341,0x30A2}, + {0x8342,0x8342,0x30A3}, + {0x8343,0x8343,0x30A4}, + {0x8344,0x8344,0x30A5}, + {0x8345,0x8345,0x30A6}, + {0x8346,0x8346,0x30A7}, + {0x8347,0x8347,0x30A8}, + {0x8348,0x8348,0x30A9}, + {0x8349,0x8349,0x30AA}, + {0x834A,0x834A,0x30AB}, + {0x834B,0x834B,0x30AC}, + {0x834C,0x834C,0x30AD}, + {0x834D,0x834D,0x30AE}, + {0x834E,0x834E,0x30AF}, + {0x834F,0x834F,0x30B0}, + {0x8350,0x8350,0x30B1}, /* 8350 */ + {0x8351,0x8351,0x30B2}, + {0x8352,0x8352,0x30B3}, + {0x8353,0x8353,0x30B4}, + {0x8354,0x8354,0x30B5}, + {0x8355,0x8355,0x30B6}, + {0x8356,0x8356,0x30B7}, + {0x8357,0x8357,0x30B8}, + {0x8358,0x8358,0x30B9}, + {0x8359,0x8359,0x30BA}, + {0x835A,0x835A,0x30BB}, + {0x835B,0x835B,0x30BC}, + {0x835C,0x835C,0x30BD}, + {0x835D,0x835D,0x30BE}, + {0x835E,0x835E,0x30BF}, + {0x835F,0x835F,0x30C0}, + {0x8360,0x8360,0x30C1}, /* 8360 */ + {0x8361,0x8361,0x30C2}, + {0x8362,0x8362,0x30C3}, + {0x8363,0x8363,0x30C4}, + {0x8364,0x8364,0x30C5}, + {0x8365,0x8365,0x30C6}, + {0x8366,0x8366,0x30C7}, + {0x8367,0x8367,0x30C8}, + {0x8368,0x8368,0x30C9}, + {0x8369,0x8369,0x30CA}, + {0x836A,0x836A,0x30CB}, + {0x836B,0x836B,0x30CC}, + {0x836C,0x836C,0x30CD}, + {0x836D,0x836D,0x30CE}, + {0x836E,0x836E,0x30CF}, + {0x836F,0x836F,0x30D0}, + {0x8370,0x8370,0x30D1}, /* 8370 */ + {0x8371,0x8371,0x30D2}, + {0x8372,0x8372,0x30D3}, + {0x8373,0x8373,0x30D4}, + {0x8374,0x8374,0x30D5}, + {0x8375,0x8375,0x30D6}, + {0x8376,0x8376,0x30D7}, + {0x8377,0x8377,0x30D8}, + {0x8378,0x8378,0x30D9}, + {0x8379,0x8379,0x30DA}, + {0x837A,0x837A,0x30DB}, + {0x837B,0x837B,0x30DC}, + {0x837C,0x837C,0x30DD}, + {0x837D,0x837D,0x30DE}, + {0x837E,0x837E,0x30DF}, + {0,0,0}, + {0x8380,0x8380,0x30E0}, /* 8380 */ + {0x8381,0x8381,0x30E1}, + {0x8382,0x8382,0x30E2}, + {0x8383,0x8383,0x30E3}, + {0x8384,0x8384,0x30E4}, + {0x8385,0x8385,0x30E5}, + {0x8386,0x8386,0x30E6}, + {0x8387,0x8387,0x30E7}, + {0x8388,0x8388,0x30E8}, + {0x8389,0x8389,0x30E9}, + {0x838A,0x838A,0x30EA}, + {0x838B,0x838B,0x30EB}, + {0x838C,0x838C,0x30EC}, + {0x838D,0x838D,0x30ED}, + {0x838E,0x838E,0x30EE}, + {0x838F,0x838F,0x30EF}, + {0x8390,0x8390,0x30F0}, /* 8390 */ + {0x8391,0x8391,0x30F1}, + {0x8392,0x8392,0x30F2}, + {0x8393,0x8393,0x30F3}, + {0x8394,0x8394,0x30F4}, + {0x8395,0x8395,0x30F5}, + {0x8396,0x8396,0x30F6}, + {0x8397,0x8397,0x003F}, + {0x8398,0x8398,0x003F}, + {0x8399,0x8399,0x003F}, + {0x839A,0x839A,0x003F}, + {0x839B,0x839B,0x003F}, + {0x839C,0x839C,0x003F}, + {0x839D,0x839D,0x003F}, + {0x839E,0x839E,0x003F}, + {0x839F,0x83BF,0x0391}, + {0x83A0,0x83C0,0x0392}, /* 83A0 */ + {0x83A1,0x83C1,0x0393}, + {0x83A2,0x83C2,0x0394}, + {0x83A3,0x83C3,0x0395}, + {0x83A4,0x83C4,0x0396}, + {0x83A5,0x83C5,0x0397}, + {0x83A6,0x83C6,0x0398}, + {0x83A7,0x83C7,0x0399}, + {0x83A8,0x83C8,0x039A}, + {0x83A9,0x83C9,0x039B}, + {0x83AA,0x83CA,0x039C}, + {0x83AB,0x83CB,0x039D}, + {0x83AC,0x83CC,0x039E}, + {0x83AD,0x83CD,0x039F}, + {0x83AE,0x83CE,0x03A0}, + {0x83AF,0x83CF,0x03A1}, + {0x83B0,0x83D0,0x03A3}, /* 83B0 */ + {0x83B1,0x83D1,0x03A4}, + {0x83B2,0x83D2,0x03A5}, + {0x83B3,0x83D3,0x03A6}, + {0x83B4,0x83D4,0x03A7}, + {0x83B5,0x83D5,0x03A8}, + {0x83B6,0x83D6,0x03A9}, + {0x83B7,0x83B7,0x003F}, + {0x83B8,0x83B8,0x003F}, + {0x83B9,0x83B9,0x003F}, + {0x83BA,0x83BA,0x003F}, + {0x83BB,0x83BB,0x003F}, + {0x83BC,0x83BC,0x003F}, + {0x83BD,0x83BD,0x003F}, + {0x83BE,0x83BE,0x003F}, + {0x839F,0x83BF,0x03B1}, + {0x83A0,0x83C0,0x03B2}, /* 83C0 */ + {0x83A1,0x83C1,0x03B3}, + {0x83A2,0x83C2,0x03B4}, + {0x83A3,0x83C3,0x03B5}, + {0x83A4,0x83C4,0x03B6}, + {0x83A5,0x83C5,0x03B7}, + {0x83A6,0x83C6,0x03B8}, + {0x83A7,0x83C7,0x03B9}, + {0x83A8,0x83C8,0x03BA}, + {0x83A9,0x83C9,0x03BB}, + {0x83AA,0x83CA,0x03BC}, + {0x83AB,0x83CB,0x03BD}, + {0x83AC,0x83CC,0x03BE}, + {0x83AD,0x83CD,0x03BF}, + {0x83AE,0x83CE,0x03C0}, + {0x83AF,0x83CF,0x03C1}, + {0x83B0,0x83D0,0x03C3}, /* 83D0 */ + {0x83B1,0x83D1,0x03C4}, + {0x83B2,0x83D2,0x03C5}, + {0x83B3,0x83D3,0x03C6}, + {0x83B4,0x83D4,0x03C7}, + {0x83B5,0x83D5,0x03C8}, + {0x83B6,0x83D6,0x03C9}, + {0x83D7,0x83D7,0x003F}, + {0x83D8,0x83D8,0x003F}, + {0x83D9,0x83D9,0x003F}, + {0x83DA,0x83DA,0x003F}, + {0x83DB,0x83DB,0x003F}, + {0x83DC,0x83DC,0x003F}, + {0x83DD,0x83DD,0x003F}, + {0x83DE,0x83DE,0x003F}, + {0x83DF,0x83DF,0x003F}, + {0x83E0,0x83E0,0x003F}, /* 83E0 */ + {0x83E1,0x83E1,0x003F}, + {0x83E2,0x83E2,0x003F}, + {0x83E3,0x83E3,0x003F}, + {0x83E4,0x83E4,0x003F}, + {0x83E5,0x83E5,0x003F}, + {0x83E6,0x83E6,0x003F}, + {0x83E7,0x83E7,0x003F}, + {0x83E8,0x83E8,0x003F}, + {0x83E9,0x83E9,0x003F}, + {0x83EA,0x83EA,0x003F}, + {0x83EB,0x83EB,0x003F}, + {0x83EC,0x83EC,0x003F}, + {0x83ED,0x83ED,0x003F}, + {0x83EE,0x83EE,0x003F}, + {0x83EF,0x83EF,0x003F}, + {0x83F0,0x83F0,0x003F}, /* 83F0 */ + {0x83F1,0x83F1,0x003F}, + {0x83F2,0x83F2,0x003F}, + {0x83F3,0x83F3,0x003F}, + {0x83F4,0x83F4,0x003F}, + {0x83F5,0x83F5,0x003F}, + {0x83F6,0x83F6,0x003F}, + {0x83F7,0x83F7,0x003F}, + {0x83F8,0x83F8,0x003F}, + {0x83F9,0x83F9,0x003F}, + {0x83FA,0x83FA,0x003F}, + {0x83FB,0x83FB,0x003F}, + {0x83FC,0x83FC,0x003F}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO c84[256]= +{ + /* 8400-840F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8410-841F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8420-842F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8430-843F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8440,0x8470,0x0410}, /* 8440 */ + {0x8441,0x8471,0x0411}, + {0x8442,0x8472,0x0412}, + {0x8443,0x8473,0x0413}, + {0x8444,0x8474,0x0414}, + {0x8445,0x8475,0x0415}, + {0x8446,0x8476,0x0401}, + {0x8447,0x8477,0x0416}, + {0x8448,0x8478,0x0417}, + {0x8449,0x8479,0x0418}, + {0x844A,0x847A,0x0419}, + {0x844B,0x847B,0x041A}, + {0x844C,0x847C,0x041B}, + {0x844D,0x847D,0x041C}, + {0x844E,0x847E,0x041D}, + {0x844F,0x8480,0x041E}, + {0x8450,0x8481,0x041F}, /* 8450 */ + {0x8451,0x8482,0x0420}, + {0x8452,0x8483,0x0421}, + {0x8453,0x8484,0x0422}, + {0x8454,0x8485,0x0423}, + {0x8455,0x8486,0x0424}, + {0x8456,0x8487,0x0425}, + {0x8457,0x8488,0x0426}, + {0x8458,0x8489,0x0427}, + {0x8459,0x848A,0x0428}, + {0x845A,0x848B,0x0429}, + {0x845B,0x848C,0x042A}, + {0x845C,0x848D,0x042B}, + {0x845D,0x848E,0x042C}, + {0x845E,0x848F,0x042D}, + {0x845F,0x8490,0x042E}, + {0x8460,0x8491,0x042F}, /* 8460 */ + {0x8461,0x8461,0x003F}, + {0x8462,0x8462,0x003F}, + {0x8463,0x8463,0x003F}, + {0x8464,0x8464,0x003F}, + {0x8465,0x8465,0x003F}, + {0x8466,0x8466,0x003F}, + {0x8467,0x8467,0x003F}, + {0x8468,0x8468,0x003F}, + {0x8469,0x8469,0x003F}, + {0x846A,0x846A,0x003F}, + {0x846B,0x846B,0x003F}, + {0x846C,0x846C,0x003F}, + {0x846D,0x846D,0x003F}, + {0x846E,0x846E,0x003F}, + {0x846F,0x846F,0x003F}, + {0x8440,0x8470,0x0430}, /* 8470 */ + {0x8441,0x8471,0x0431}, + {0x8442,0x8472,0x0432}, + {0x8443,0x8473,0x0433}, + {0x8444,0x8474,0x0434}, + {0x8445,0x8475,0x0435}, + {0x8446,0x8476,0x0451}, + {0x8447,0x8477,0x0436}, + {0x8448,0x8478,0x0437}, + {0x8449,0x8479,0x0438}, + {0x844A,0x847A,0x0439}, + {0x844B,0x847B,0x043A}, + {0x844C,0x847C,0x043B}, + {0x844D,0x847D,0x043C}, + {0x844E,0x847E,0x043D}, + {0,0,0}, + {0x844F,0x8480,0x043E}, /* 8480 */ + {0x8450,0x8481,0x043F}, + {0x8451,0x8482,0x0440}, + {0x8452,0x8483,0x0441}, + {0x8453,0x8484,0x0442}, + {0x8454,0x8485,0x0443}, + {0x8455,0x8486,0x0444}, + {0x8456,0x8487,0x0445}, + {0x8457,0x8488,0x0446}, + {0x8458,0x8489,0x0447}, + {0x8459,0x848A,0x0448}, + {0x845A,0x848B,0x0449}, + {0x845B,0x848C,0x044A}, + {0x845C,0x848D,0x044B}, + {0x845D,0x848E,0x044C}, + {0x845E,0x848F,0x044D}, + {0x845F,0x8490,0x044E}, /* 8490 */ + {0x8460,0x8491,0x044F}, + {0x8492,0x8492,0x003F}, + {0x8493,0x8493,0x003F}, + {0x8494,0x8494,0x003F}, + {0x8495,0x8495,0x003F}, + {0x8496,0x8496,0x003F}, + {0x8497,0x8497,0x003F}, + {0x8498,0x8498,0x003F}, + {0x8499,0x8499,0x003F}, + {0x849A,0x849A,0x003F}, + {0x849B,0x849B,0x003F}, + {0x849C,0x849C,0x003F}, + {0x849D,0x849D,0x003F}, + {0x849E,0x849E,0x003F}, + {0x849F,0x849F,0x2500}, + {0x84A0,0x84A0,0x2502}, /* 84A0 */ + {0x84A1,0x84A1,0x250C}, + {0x84A2,0x84A2,0x2510}, + {0x84A3,0x84A3,0x2518}, + {0x84A4,0x84A4,0x2514}, + {0x84A5,0x84A5,0x251C}, + {0x84A6,0x84A6,0x252C}, + {0x84A7,0x84A7,0x2524}, + {0x84A8,0x84A8,0x2534}, + {0x84A9,0x84A9,0x253C}, + {0x84AA,0x84AA,0x2501}, + {0x84AB,0x84AB,0x2503}, + {0x84AC,0x84AC,0x250F}, + {0x84AD,0x84AD,0x2513}, + {0x84AE,0x84AE,0x251B}, + {0x84AF,0x84AF,0x2517}, + {0x84B0,0x84B0,0x2523}, /* 84B0 */ + {0x84B1,0x84B1,0x2533}, + {0x84B2,0x84B2,0x252B}, + {0x84B3,0x84B3,0x253B}, + {0x84B4,0x84B4,0x254B}, + {0x84B5,0x84B5,0x2520}, + {0x84B6,0x84B6,0x252F}, + {0x84B7,0x84B7,0x2528}, + {0x84B8,0x84B8,0x2537}, + {0x84B9,0x84B9,0x253F}, + {0x84BA,0x84BA,0x251D}, + {0x84BB,0x84BB,0x2530}, + {0x84BC,0x84BC,0x2525}, + {0x84BD,0x84BD,0x2538}, + {0x84BE,0x84BE,0x2542}, + {0x84BF,0x84BF,0x003F}, + {0x84C0,0x84C0,0x003F}, /* 84C0 */ + {0x84C1,0x84C1,0x003F}, + {0x84C2,0x84C2,0x003F}, + {0x84C3,0x84C3,0x003F}, + {0x84C4,0x84C4,0x003F}, + {0x84C5,0x84C5,0x003F}, + {0x84C6,0x84C6,0x003F}, + {0x84C7,0x84C7,0x003F}, + {0x84C8,0x84C8,0x003F}, + {0x84C9,0x84C9,0x003F}, + {0x84CA,0x84CA,0x003F}, + {0x84CB,0x84CB,0x003F}, + {0x84CC,0x84CC,0x003F}, + {0x84CD,0x84CD,0x003F}, + {0x84CE,0x84CE,0x003F}, + {0x84CF,0x84CF,0x003F}, + {0x84D0,0x84D0,0x003F}, /* 84D0 */ + {0x84D1,0x84D1,0x003F}, + {0x84D2,0x84D2,0x003F}, + {0x84D3,0x84D3,0x003F}, + {0x84D4,0x84D4,0x003F}, + {0x84D5,0x84D5,0x003F}, + {0x84D6,0x84D6,0x003F}, + {0x84D7,0x84D7,0x003F}, + {0x84D8,0x84D8,0x003F}, + {0x84D9,0x84D9,0x003F}, + {0x84DA,0x84DA,0x003F}, + {0x84DB,0x84DB,0x003F}, + {0x84DC,0x84DC,0x003F}, + {0x84DD,0x84DD,0x003F}, + {0x84DE,0x84DE,0x003F}, + {0x84DF,0x84DF,0x003F}, + {0x84E0,0x84E0,0x003F}, /* 84E0 */ + {0x84E1,0x84E1,0x003F}, + {0x84E2,0x84E2,0x003F}, + {0x84E3,0x84E3,0x003F}, + {0x84E4,0x84E4,0x003F}, + {0x84E5,0x84E5,0x003F}, + {0x84E6,0x84E6,0x003F}, + {0x84E7,0x84E7,0x003F}, + {0x84E8,0x84E8,0x003F}, + {0x84E9,0x84E9,0x003F}, + {0x84EA,0x84EA,0x003F}, + {0x84EB,0x84EB,0x003F}, + {0x84EC,0x84EC,0x003F}, + {0x84ED,0x84ED,0x003F}, + {0x84EE,0x84EE,0x003F}, + {0x84EF,0x84EF,0x003F}, + {0x84F0,0x84F0,0x003F}, /* 84F0 */ + {0x84F1,0x84F1,0x003F}, + {0x84F2,0x84F2,0x003F}, + {0x84F3,0x84F3,0x003F}, + {0x84F4,0x84F4,0x003F}, + {0x84F5,0x84F5,0x003F}, + {0x84F6,0x84F6,0x003F}, + {0x84F7,0x84F7,0x003F}, + {0x84F8,0x84F8,0x003F}, + {0x84F9,0x84F9,0x003F}, + {0x84FA,0x84FA,0x003F}, + {0x84FB,0x84FB,0x003F}, + {0x84FC,0x84FC,0x003F}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO c87[256]= +{ + /* 8700-870F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8710-871F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8720-872F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8730-873F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8740,0x8740,0x2460}, /* 8740 */ + {0x8741,0x8741,0x2461}, + {0x8742,0x8742,0x2462}, + {0x8743,0x8743,0x2463}, + {0x8744,0x8744,0x2464}, + {0x8745,0x8745,0x2465}, + {0x8746,0x8746,0x2466}, + {0x8747,0x8747,0x2467}, + {0x8748,0x8748,0x2468}, + {0x8749,0x8749,0x2469}, + {0x874A,0x874A,0x246A}, + {0x874B,0x874B,0x246B}, + {0x874C,0x874C,0x246C}, + {0x874D,0x874D,0x246D}, + {0x874E,0x874E,0x246E}, + {0x874F,0x874F,0x246F}, + {0x8750,0x8750,0x2470}, /* 8750 */ + {0x8751,0x8751,0x2471}, + {0x8752,0x8752,0x2472}, + {0x8753,0x8753,0x2473}, + {0x8754,0xEEEF,0x2160}, + {0x8755,0xEEF0,0x2161}, + {0x8756,0xEEF1,0x2162}, + {0x8757,0xEEF2,0x2163}, + {0x8758,0xEEF3,0x2164}, + {0x8759,0xEEF4,0x2165}, + {0x875A,0xEEF5,0x2166}, + {0x875B,0xEEF6,0x2167}, + {0x875C,0xEEF7,0x2168}, + {0x875D,0xEEF8,0x2169}, + {0x875E,0x875E,0x003F}, + {0x875F,0x875F,0x3349}, + {0x8760,0x8760,0x3314}, /* 8760 */ + {0x8761,0x8761,0x3322}, + {0x8762,0x8762,0x334D}, + {0x8763,0x8763,0x3318}, + {0x8764,0x8764,0x3327}, + {0x8765,0x8765,0x3303}, + {0x8766,0x8766,0x3336}, + {0x8767,0x8767,0x3351}, + {0x8768,0x8768,0x3357}, + {0x8769,0x8769,0x330D}, + {0x876A,0x876A,0x3326}, + {0x876B,0x876B,0x3323}, + {0x876C,0x876C,0x332B}, + {0x876D,0x876D,0x334A}, + {0x876E,0x876E,0x333B}, + {0x876F,0x876F,0x339C}, + {0x8770,0x8770,0x339D}, /* 8770 */ + {0x8771,0x8771,0x339E}, + {0x8772,0x8772,0x338E}, + {0x8773,0x8773,0x338F}, + {0x8774,0x8774,0x33C4}, + {0x8775,0x8775,0x33A1}, + {0x8776,0x8776,0x003F}, + {0x8777,0x8777,0x003F}, + {0x8778,0x8778,0x003F}, + {0x8779,0x8779,0x003F}, + {0x877A,0x877A,0x003F}, + {0x877B,0x877B,0x003F}, + {0x877C,0x877C,0x003F}, + {0x877D,0x877D,0x003F}, + {0x877E,0x877E,0x337B}, + {0,0,0}, + {0x8780,0x8780,0x301D}, /* 8780 */ + {0x8781,0x8781,0x301F}, + {0x8782,0x8782,0x2116}, + {0x8783,0x8783,0x33CD}, + {0x8784,0x8784,0x2121}, + {0x8785,0x8785,0x32A4}, + {0x8786,0x8786,0x32A5}, + {0x8787,0x8787,0x32A6}, + {0x8788,0x8788,0x32A7}, + {0x8789,0x8789,0x32A8}, + {0x878A,0x878A,0x3231}, + {0x878B,0x878B,0x3232}, + {0x878C,0x878C,0x3239}, + {0x878D,0x878D,0x337E}, + {0x878E,0x878E,0x337D}, + {0x878F,0x878F,0x337C}, + {0x8790,0x8790,0x2252}, /* 8790 */ + {0x8791,0x8791,0x2261}, + {0x8792,0x8792,0x222B}, + {0x8793,0x8793,0x222E}, + {0x8794,0x8794,0x2211}, + {0x8795,0x8795,0x221A}, + {0x8796,0x8796,0x22A5}, + {0x8797,0x8797,0x2220}, + {0x8798,0x8798,0x221F}, + {0x8799,0x8799,0x22BF}, + {0x879A,0x879A,0x2235}, + {0x879B,0x879B,0x2229}, + {0x879C,0x879C,0x222A}, + {0x879D,0x879D,0x003F}, + {0x879E,0x879E,0x003F}, + {0x879F,0x879F,0x003F}, + {0x87A0,0x87A0,0x003F}, /* 87A0 */ + {0x87A1,0x87A1,0x003F}, + {0x87A2,0x87A2,0x003F}, + {0x87A3,0x87A3,0x003F}, + {0x87A4,0x87A4,0x003F}, + {0x87A5,0x87A5,0x003F}, + {0x87A6,0x87A6,0x003F}, + {0x87A7,0x87A7,0x003F}, + {0x87A8,0x87A8,0x003F}, + {0x87A9,0x87A9,0x003F}, + {0x87AA,0x87AA,0x003F}, + {0x87AB,0x87AB,0x003F}, + {0x87AC,0x87AC,0x003F}, + {0x87AD,0x87AD,0x003F}, + {0x87AE,0x87AE,0x003F}, + {0x87AF,0x87AF,0x003F}, + {0x87B0,0x87B0,0x003F}, /* 87B0 */ + {0x87B1,0x87B1,0x003F}, + {0x87B2,0x87B2,0x003F}, + {0x87B3,0x87B3,0x003F}, + {0x87B4,0x87B4,0x003F}, + {0x87B5,0x87B5,0x003F}, + {0x87B6,0x87B6,0x003F}, + {0x87B7,0x87B7,0x003F}, + {0x87B8,0x87B8,0x003F}, + {0x87B9,0x87B9,0x003F}, + {0x87BA,0x87BA,0x003F}, + {0x87BB,0x87BB,0x003F}, + {0x87BC,0x87BC,0x003F}, + {0x87BD,0x87BD,0x003F}, + {0x87BE,0x87BE,0x003F}, + {0x87BF,0x87BF,0x003F}, + {0x87C0,0x87C0,0x003F}, /* 87C0 */ + {0x87C1,0x87C1,0x003F}, + {0x87C2,0x87C2,0x003F}, + {0x87C3,0x87C3,0x003F}, + {0x87C4,0x87C4,0x003F}, + {0x87C5,0x87C5,0x003F}, + {0x87C6,0x87C6,0x003F}, + {0x87C7,0x87C7,0x003F}, + {0x87C8,0x87C8,0x003F}, + {0x87C9,0x87C9,0x003F}, + {0x87CA,0x87CA,0x003F}, + {0x87CB,0x87CB,0x003F}, + {0x87CC,0x87CC,0x003F}, + {0x87CD,0x87CD,0x003F}, + {0x87CE,0x87CE,0x003F}, + {0x87CF,0x87CF,0x003F}, + {0x87D0,0x87D0,0x003F}, /* 87D0 */ + {0x87D1,0x87D1,0x003F}, + {0x87D2,0x87D2,0x003F}, + {0x87D3,0x87D3,0x003F}, + {0x87D4,0x87D4,0x003F}, + {0x87D5,0x87D5,0x003F}, + {0x87D6,0x87D6,0x003F}, + {0x87D7,0x87D7,0x003F}, + {0x87D8,0x87D8,0x003F}, + {0x87D9,0x87D9,0x003F}, + {0x87DA,0x87DA,0x003F}, + {0x87DB,0x87DB,0x003F}, + {0x87DC,0x87DC,0x003F}, + {0x87DD,0x87DD,0x003F}, + {0x87DE,0x87DE,0x003F}, + {0x87DF,0x87DF,0x003F}, + {0x87E0,0x87E0,0x003F}, /* 87E0 */ + {0x87E1,0x87E1,0x003F}, + {0x87E2,0x87E2,0x003F}, + {0x87E3,0x87E3,0x003F}, + {0x87E4,0x87E4,0x003F}, + {0x87E5,0x87E5,0x003F}, + {0x87E6,0x87E6,0x003F}, + {0x87E7,0x87E7,0x003F}, + {0x87E8,0x87E8,0x003F}, + {0x87E9,0x87E9,0x003F}, + {0x87EA,0x87EA,0x003F}, + {0x87EB,0x87EB,0x003F}, + {0x87EC,0x87EC,0x003F}, + {0x87ED,0x87ED,0x003F}, + {0x87EE,0x87EE,0x003F}, + {0x87EF,0x87EF,0x003F}, + {0x87F0,0x87F0,0x003F}, /* 87F0 */ + {0x87F1,0x87F1,0x003F}, + {0x87F2,0x87F2,0x003F}, + {0x87F3,0x87F3,0x003F}, + {0x87F4,0x87F4,0x003F}, + {0x87F5,0x87F5,0x003F}, + {0x87F6,0x87F6,0x003F}, + {0x87F7,0x87F7,0x003F}, + {0x87F8,0x87F8,0x003F}, + {0x87F9,0x87F9,0x003F}, + {0x87FA,0x87FA,0x003F}, + {0x87FB,0x87FB,0x003F}, + {0x87FC,0x87FC,0x003F}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO cEE[256]= +{ + /* EE00-EE0F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* EE10-EE1F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* EE20-EE2F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* EE30-EE3F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0xEE40,0xEE40,0x72BE}, /* EE40 */ + {0xEE41,0xEE41,0x7324}, + {0xEE42,0xEE42,0xFA16}, + {0xEE43,0xEE43,0x7377}, + {0xEE44,0xEE44,0x73BD}, + {0xEE45,0xEE45,0x73C9}, + {0xEE46,0xEE46,0x73D6}, + {0xEE47,0xEE47,0x73E3}, + {0xEE48,0xEE48,0x73D2}, + {0xEE49,0xEE49,0x7407}, + {0xEE4A,0xEE4A,0x73F5}, + {0xEE4B,0xEE4B,0x7426}, + {0xEE4C,0xEE4C,0x742A}, + {0xEE4D,0xEE4D,0x7429}, + {0xEE4E,0xEE4E,0x742E}, + {0xEE4F,0xEE4F,0x7462}, + + {0xEE50,0xEE50,0x7489}, /* EE50 */ + {0xEE51,0xEE51,0x749F}, + {0xEE52,0xEE52,0x7501}, + {0xEE53,0xEE53,0x756F}, + {0xEE54,0xEE54,0x7682}, + {0xEE55,0xEE55,0x769C}, + {0xEE56,0xEE56,0x769E}, + {0xEE57,0xEE57,0x769B}, + {0xEE58,0xEE58,0x76A6}, + {0xEE59,0xEE59,0xFA17}, + {0xEE5A,0xEE5A,0x7746}, + {0xEE5B,0xEE5B,0x52AF}, + {0xEE5C,0xEE5C,0x7821}, + {0xEE5D,0xEE5D,0x784E}, + {0xEE5E,0xEE5E,0x7864}, + {0xEE5F,0xEE5F,0x787A}, + {0xEE60,0xEE60,0x7930}, /* EE60 */ + {0xEE61,0xEE61,0xFA18}, + {0xEE62,0xEE62,0xFA19}, + {0xEE63,0xEE63,0xFA1A}, + {0xEE64,0xEE64,0x7994}, + {0xEE65,0xEE65,0xFA1B}, + {0xEE66,0xEE66,0x799B}, + {0xEE67,0xEE67,0x7AD1}, + {0xEE68,0xEE68,0x7AE7}, + {0xEE69,0xEE69,0xFA1C}, + {0xEE6A,0xEE6A,0x7AEB}, + {0xEE6B,0xEE6B,0x7B9E}, + {0xEE6C,0xEE6C,0xFA1D}, + {0xEE6D,0xEE6D,0x7D48}, + {0xEE6E,0xEE6E,0x7D5C}, + {0xEE6F,0xEE6F,0x7DB7}, + {0xEE70,0xEE70,0x7DA0}, /* EE70 */ + {0xEE71,0xEE71,0x7DD6}, + {0xEE72,0xEE72,0x7E52}, + {0xEE73,0xEE73,0x7F47}, + {0xEE74,0xEE74,0x7FA1}, + {0xEE75,0xEE75,0xFA1E}, + {0xEE76,0xEE76,0x8301}, + {0xEE77,0xEE77,0x8362}, + {0xEE78,0xEE78,0x837F}, + {0xEE79,0xEE79,0x83C7}, + {0xEE7A,0xEE7A,0x83F6}, + {0xEE7B,0xEE7B,0x8448}, + {0xEE7C,0xEE7C,0x84B4}, + {0xEE7D,0xEE7D,0x8553}, + {0xEE7E,0xEE7E,0x8559}, + {0,0,0}, + {0xEE80,0xEE80,0x856B}, /* EE80 */ + {0xEE81,0xEE81,0xFA1F}, + {0xEE82,0xEE82,0x85B0}, + {0xEE83,0xEE83,0xFA20}, + {0xEE84,0xEE84,0xFA21}, + {0xEE85,0xEE85,0x8807}, + {0xEE86,0xEE86,0x88F5}, + {0xEE87,0xEE87,0x8A12}, + {0xEE88,0xEE88,0x8A37}, + {0xEE89,0xEE89,0x8A79}, + {0xEE8A,0xEE8A,0x8AA7}, + {0xEE8B,0xEE8B,0x8ABE}, + {0xEE8C,0xEE8C,0x8ADF}, + {0xEE8D,0xEE8D,0xFA22}, + {0xEE8E,0xEE8E,0x8AF6}, + {0xEE8F,0xEE8F,0x8B53}, + {0xEE90,0xEE90,0x8B7F}, /* EE90 */ + {0xEE91,0xEE91,0x8CF0}, + {0xEE92,0xEE92,0x8CF4}, + {0xEE93,0xEE93,0x8D12}, + {0xEE94,0xEE94,0x8D76}, + {0xEE95,0xEE95,0xFA23}, + {0xEE96,0xEE96,0x8ECF}, + {0xEE97,0xEE97,0xFA24}, + {0xEE98,0xEE98,0xFA25}, + {0xEE99,0xEE99,0x9067}, + {0xEE9A,0xEE9A,0x90DE}, + {0xEE9B,0xEE9B,0xFA26}, + {0xEE9C,0xEE9C,0x9115}, + {0xEE9D,0xEE9D,0x9127}, + {0xEE9E,0xEE9E,0x91DA}, + {0xEE9F,0xEE9F,0x91D7}, + {0xEEA0,0xEEA0,0x91DE}, /* EEA0 */ + {0xEEA1,0xEEA1,0x91ED}, + {0xEEA2,0xEEA2,0x91EE}, + {0xEEA3,0xEEA3,0x91E4}, + {0xEEA4,0xEEA4,0x91E5}, + {0xEEA5,0xEEA5,0x9206}, + {0xEEA6,0xEEA6,0x9210}, + {0xEEA7,0xEEA7,0x920A}, + {0xEEA8,0xEEA8,0x923A}, + {0xEEA9,0xEEA9,0x9240}, + {0xEEAA,0xEEAA,0x923C}, + {0xEEAB,0xEEAB,0x924E}, + {0xEEAC,0xEEAC,0x9259}, + {0xEEAD,0xEEAD,0x9251}, + {0xEEAE,0xEEAE,0x9239}, + {0xEEAF,0xEEAF,0x9267}, + {0xEEB0,0xEEB0,0x92A7}, /* EEB0 */ + {0xEEB1,0xEEB1,0x9277}, + {0xEEB2,0xEEB2,0x9278}, + {0xEEB3,0xEEB3,0x92E7}, + {0xEEB4,0xEEB4,0x92D7}, + {0xEEB5,0xEEB5,0x92D9}, + {0xEEB6,0xEEB6,0x92D0}, + {0xEEB7,0xEEB7,0xFA27}, + {0xEEB8,0xEEB8,0x92D5}, + {0xEEB9,0xEEB9,0x92E0}, + {0xEEBA,0xEEBA,0x92D3}, + {0xEEBB,0xEEBB,0x9325}, + {0xEEBC,0xEEBC,0x9321}, + {0xEEBD,0xEEBD,0x92FB}, + {0xEEBE,0xEEBE,0xFA28}, + {0xEEBF,0xEEBF,0x931E}, + {0xEEC0,0xEEC0,0x92FF}, /* EEC0 */ + {0xEEC1,0xEEC1,0x931D}, + {0xEEC2,0xEEC2,0x9302}, + {0xEEC3,0xEEC3,0x9370}, + {0xEEC4,0xEEC4,0x9357}, + {0xEEC5,0xEEC5,0x93A4}, + {0xEEC6,0xEEC6,0x93C6}, + {0xEEC7,0xEEC7,0x93DE}, + {0xEEC8,0xEEC8,0x93F8}, + {0xEEC9,0xEEC9,0x9431}, + {0xEECA,0xEECA,0x9445}, + {0xEECB,0xEECB,0x9448}, + {0xEECC,0xEECC,0x9592}, + {0xEECD,0xEECD,0xF9DC}, + {0xEECE,0xEECE,0xFA29}, + {0xEECF,0xEECF,0x969D}, + {0xEED0,0xEED0,0x96AF}, /* EED0 */ + {0xEED1,0xEED1,0x9733}, + {0xEED2,0xEED2,0x973B}, + {0xEED3,0xEED3,0x9743}, + {0xEED4,0xEED4,0x974D}, + {0xEED5,0xEED5,0x974F}, + {0xEED6,0xEED6,0x9751}, + {0xEED7,0xEED7,0x9755}, + {0xEED8,0xEED8,0x9857}, + {0xEED9,0xEED9,0x9865}, + {0xEEDA,0xEEDA,0xFA2A}, + {0xEEDB,0xEEDB,0xFA2B}, + {0xEEDC,0xEEDC,0x9927}, + {0xEEDD,0xEEDD,0xFA2C}, + {0xEEDE,0xEEDE,0x999E}, + {0xEEDF,0xEEDF,0x9A4E}, + {0xEEE0,0xEEE0,0x9AD9}, /* EEE0 */ + {0xEEE1,0xEEE1,0x9ADC}, + {0xEEE2,0xEEE2,0x9B75}, + {0xEEE3,0xEEE3,0x9B72}, + {0xEEE4,0xEEE4,0x9B8F}, + {0xEEE5,0xEEE5,0x9BB1}, + {0xEEE6,0xEEE6,0x9BBB}, + {0xEEE7,0xEEE7,0x9C00}, + {0xEEE8,0xEEE8,0x9D70}, + {0xEEE9,0xEEE9,0x9D6B}, + {0xEEEA,0xEEEA,0xFA2D}, + {0xEEEB,0xEEEB,0x9E19}, + {0xEEEC,0xEEEC,0x9ED1}, + {0xEEED,0xEEED,0x003F}, + {0xEEEE,0xEEEE,0x003F}, + {0x8754,0xEEEF,0x2170}, + {0x8755,0xEEF0,0x2171}, /* EEF0 */ + {0x8756,0xEEF1,0x2172}, + {0x8757,0xEEF2,0x2173}, + {0x8758,0xEEF3,0x2174}, + {0x8759,0xEEF4,0x2175}, + {0x875A,0xEEF5,0x2176}, + {0x875B,0xEEF6,0x2177}, + {0x875C,0xEEF7,0x2178}, + {0x875D,0xEEF8,0x2179}, + {0xEEF9,0xEEF9,0xFFE2}, + {0xEEFA,0xEEFA,0xFFE4}, + {0xEEFB,0xEEFB,0xFF07}, + {0xEEFC,0xEEFC,0xFF02}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO cFA[256]= +{ + /* FA00-FA0F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* FA10-FA1F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* FA20-FA2F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* FA30-FA3F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0xFA4A,0xFA40,0x2170}, /* FA40 */ + {0xFA4B,0xFA41,0x2171}, + {0xFA4C,0xFA42,0x2172}, + {0xFA4D,0xFA43,0x2173}, + {0xFA4E,0xFA44,0x2174}, + {0xFA4F,0xFA45,0x2175}, + {0xFA50,0xFA46,0x2176}, + {0xFA51,0xFA47,0x2177}, + {0xFA52,0xFA48,0x2178}, + {0xFA53,0xFA49,0x2179}, + {0xFA4A,0xFA40,0x2160}, + {0xFA4B,0xFA41,0x2161}, + {0xFA4C,0xFA42,0x2162}, + {0xFA4D,0xFA43,0x2163}, + {0xFA4E,0xFA44,0x2164}, + {0xFA4F,0xFA45,0x2165}, + {0xFA50,0xFA46,0x2166}, /* FA50 */ + {0xFA51,0xFA47,0x2167}, + {0xFA52,0xFA48,0x2168}, + {0xFA53,0xFA49,0x2169}, + {0xFA54,0xFA54,0xFFE2}, + {0xFA55,0xFA55,0xFFE4}, + {0xFA56,0xFA56,0xFF07}, + {0xFA57,0xFA57,0xFF02}, + {0xFA58,0xFA58,0x3231}, + {0xFA59,0xFA59,0x2116}, + {0xFA5A,0xFA5A,0x2121}, + {0xFA5B,0xFA5B,0x2235}, + {0xFA5C,0xFA5C,0x7E8A}, + {0xFA5D,0xFA5D,0x891C}, + {0xFA5E,0xFA5E,0x9348}, + {0xFA5F,0xFA5F,0x9288}, + {0xFA60,0xFA60,0x84DC}, /* FA60 */ + {0xFA61,0xFA61,0x4FC9}, + {0xFA62,0xFA62,0x70BB}, + {0xFA63,0xFA63,0x6631}, + {0xFA64,0xFA64,0x68C8}, + {0xFA65,0xFA65,0x92F9}, + {0xFA66,0xFA66,0x66FB}, + {0xFA67,0xFA67,0x5F45}, + {0xFA68,0xFA68,0x4E28}, + {0xFA69,0xFA69,0x4EE1}, + {0xFA6A,0xFA6A,0x4EFC}, + {0xFA6B,0xFA6B,0x4F00}, + {0xFA6C,0xFA6C,0x4F03}, + {0xFA6D,0xFA6D,0x4F39}, + {0xFA6E,0xFA6E,0x4F56}, + {0xFA6F,0xFA6F,0x4F92}, + {0xFA70,0xFA70,0x4F8A}, /* FA70 */ + {0xFA71,0xFA71,0x4F9A}, + {0xFA72,0xFA72,0x4F94}, + {0xFA73,0xFA73,0x4FCD}, + {0xFA74,0xFA74,0x5040}, + {0xFA75,0xFA75,0x5022}, + {0xFA76,0xFA76,0x4FFF}, + {0xFA77,0xFA77,0x501E}, + {0xFA78,0xFA78,0x5046}, + {0xFA79,0xFA79,0x5070}, + {0xFA7A,0xFA7A,0x5042}, + {0xFA7B,0xFA7B,0x5094}, + {0xFA7C,0xFA7C,0x50F4}, + {0xFA7D,0xFA7D,0x50D8}, + {0xFA7E,0xFA7E,0x514A}, + {0,0,0}, + {0xFA80,0xFA80,0x5164}, /* FA80 */ + {0xFA81,0xFA81,0x519D}, + {0xFA82,0xFA82,0x51BE}, + {0xFA83,0xFA83,0x51EC}, + {0xFA84,0xFA84,0x5215}, + {0xFA85,0xFA85,0x529C}, + {0xFA86,0xFA86,0x52A6}, + {0xFA87,0xFA87,0x52C0}, + {0xFA88,0xFA88,0x52DB}, + {0xFA89,0xFA89,0x5300}, + {0xFA8A,0xFA8A,0x5307}, + {0xFA8B,0xFA8B,0x5324}, + {0xFA8C,0xFA8C,0x5372}, + {0xFA8D,0xFA8D,0x5393}, + {0xFA8E,0xFA8E,0x53B2}, + {0xFA8F,0xFA8F,0x53DD}, + {0xFA90,0xFA90,0xFA0E}, /* FA90 */ + {0xFA91,0xFA91,0x549C}, + {0xFA92,0xFA92,0x548A}, + {0xFA93,0xFA93,0x54A9}, + {0xFA94,0xFA94,0x54FF}, + {0xFA95,0xFA95,0x5586}, + {0xFA96,0xFA96,0x5759}, + {0xFA97,0xFA97,0x5765}, + {0xFA98,0xFA98,0x57AC}, + {0xFA99,0xFA99,0x57C8}, + {0xFA9A,0xFA9A,0x57C7}, + {0xFA9B,0xFA9B,0xFA0F}, + {0xFA9C,0xFA9C,0xFA10}, + {0xFA9D,0xFA9D,0x589E}, + {0xFA9E,0xFA9E,0x58B2}, + {0xFA9F,0xFA9F,0x590B}, + {0xFAA0,0xFAA0,0x5953}, /* FAA0 */ + {0xFAA1,0xFAA1,0x595B}, + {0xFAA2,0xFAA2,0x595D}, + {0xFAA3,0xFAA3,0x5963}, + {0xFAA4,0xFAA4,0x59A4}, + {0xFAA5,0xFAA5,0x59BA}, + {0xFAA6,0xFAA6,0x5B56}, + {0xFAA7,0xFAA7,0x5BC0}, + {0xFAA8,0xFAA8,0x752F}, + {0xFAA9,0xFAA9,0x5BD8}, + {0xFAAA,0xFAAA,0x5BEC}, + {0xFAAB,0xFAAB,0x5C1E}, + {0xFAAC,0xFAAC,0x5CA6}, + {0xFAAD,0xFAAD,0x5CBA}, + {0xFAAE,0xFAAE,0x5CF5}, + {0xFAAF,0xFAAF,0x5D27}, + {0xFAB0,0xFAB0,0x5D53}, /* FAB0 */ + {0xFAB1,0xFAB1,0xFA11}, + {0xFAB2,0xFAB2,0x5D42}, + {0xFAB3,0xFAB3,0x5D6D}, + {0xFAB4,0xFAB4,0x5DB8}, + {0xFAB5,0xFAB5,0x5DB9}, + {0xFAB6,0xFAB6,0x5DD0}, + {0xFAB7,0xFAB7,0x5F21}, + {0xFAB8,0xFAB8,0x5F34}, + {0xFAB9,0xFAB9,0x5F67}, + {0xFABA,0xFABA,0x5FB7}, + {0xFABB,0xFABB,0x5FDE}, + {0xFABC,0xFABC,0x605D}, + {0xFABD,0xFABD,0x6085}, + {0xFABE,0xFABE,0x608A}, + {0xFABF,0xFABF,0x60DE}, + {0xFAC0,0xFAC0,0x60D5}, /* FAC0 */ + {0xFAC1,0xFAC1,0x6120}, + {0xFAC2,0xFAC2,0x60F2}, + {0xFAC3,0xFAC3,0x6111}, + {0xFAC4,0xFAC4,0x6137}, + {0xFAC5,0xFAC5,0x6130}, + {0xFAC6,0xFAC6,0x6198}, + {0xFAC7,0xFAC7,0x6213}, + {0xFAC8,0xFAC8,0x62A6}, + {0xFAC9,0xFAC9,0x63F5}, + {0xFACA,0xFACA,0x6460}, + {0xFACB,0xFACB,0x649D}, + {0xFACC,0xFACC,0x64CE}, + {0xFACD,0xFACD,0x654E}, + {0xFACE,0xFACE,0x6600}, + {0xFACF,0xFACF,0x6615}, + {0xFAD0,0xFAD0,0x663B}, /* FAD0 */ + {0xFAD1,0xFAD1,0x6609}, + {0xFAD2,0xFAD2,0x662E}, + {0xFAD3,0xFAD3,0x661E}, + {0xFAD4,0xFAD4,0x6624}, + {0xFAD5,0xFAD5,0x6665}, + {0xFAD6,0xFAD6,0x6657}, + {0xFAD7,0xFAD7,0x6659}, + {0xFAD8,0xFAD8,0xFA12}, + {0xFAD9,0xFAD9,0x6673}, + {0xFADA,0xFADA,0x6699}, + {0xFADB,0xFADB,0x66A0}, + {0xFADC,0xFADC,0x66B2}, + {0xFADD,0xFADD,0x66BF}, + {0xFADE,0xFADE,0x66FA}, + {0xFADF,0xFADF,0x670E}, + {0xFAE0,0xFAE0,0xF929}, /* FAE0 */ + {0xFAE1,0xFAE1,0x6766}, + {0xFAE2,0xFAE2,0x67BB}, + {0xFAE3,0xFAE3,0x6852}, + {0xFAE4,0xFAE4,0x67C0}, + {0xFAE5,0xFAE5,0x6801}, + {0xFAE6,0xFAE6,0x6844}, + {0xFAE7,0xFAE7,0x68CF}, + {0xFAE8,0xFAE8,0xFA13}, + {0xFAE9,0xFAE9,0x6968}, + {0xFAEA,0xFAEA,0xFA14}, + {0xFAEB,0xFAEB,0x6998}, + {0xFAEC,0xFAEC,0x69E2}, + {0xFAED,0xFAED,0x6A30}, + {0xFAEE,0xFAEE,0x6A6B}, + {0xFAEF,0xFAEF,0x6A46}, + {0xFAF0,0xFAF0,0x6A73}, /* FAF0 */ + {0xFAF1,0xFAF1,0x6A7E}, + {0xFAF2,0xFAF2,0x6AE2}, + {0xFAF3,0xFAF3,0x6AE4}, + {0xFAF4,0xFAF4,0x6BD6}, + {0xFAF5,0xFAF5,0x6C3F}, + {0xFAF6,0xFAF6,0x6C5C}, + {0xFAF7,0xFAF7,0x6C86}, + {0xFAF8,0xFAF8,0x6C6F}, + {0xFAF9,0xFAF9,0x6CDA}, + {0xFAFA,0xFAFA,0x6D04}, + {0xFAFB,0xFAFB,0x6D87}, + {0xFAFC,0xFAFC,0x6D6F}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO *my_caseinfo_cp932[256]= +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, c81, c82, c83, c84, NULL, NULL, c87, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* A */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, cEE, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, cFA, NULL, NULL, NULL, NULL, NULL +}; + + static int my_strnncoll_cp932_internal(CHARSET_INFO *cs, const uchar **a_res, size_t a_length, const uchar **b_res, size_t b_length) @@ -5524,7 +7030,7 @@ CHARSET_INFO my_charset_cp932_japanese_ci= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_cp932, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ @@ -5556,7 +7062,7 @@ CHARSET_INFO my_charset_cp932_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_cp932, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c index fc0af7e35d5..154d49ed085 100644 --- a/strings/ctype-euc_kr.c +++ b/strings/ctype-euc_kr.c @@ -216,6 +216,1273 @@ static uint mbcharlen_euc_kr(CHARSET_INFO *cs __attribute__((unused)),uint c) } +static MY_UNICASE_INFO cA3[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA340,0xA340,0x003F}, /* A340 */ + {0xA341,0xA341,0xC971}, + {0xA342,0xA342,0xC972}, + {0xA343,0xA343,0xC973}, + {0xA344,0xA344,0xC975}, + {0xA345,0xA345,0xC976}, + {0xA346,0xA346,0xC977}, + {0xA347,0xA347,0xC978}, + {0xA348,0xA348,0xC979}, + {0xA349,0xA349,0xC97A}, + {0xA34A,0xA34A,0xC97B}, + {0xA34B,0xA34B,0xC97D}, + {0xA34C,0xA34C,0xC97E}, + {0xA34D,0xA34D,0xC97F}, + {0xA34E,0xA34E,0xC980}, + {0xA34F,0xA34F,0xC981}, + {0xA350,0xA350,0xC982}, /* A350 */ + {0xA351,0xA351,0xC983}, + {0xA352,0xA352,0xC984}, + {0xA353,0xA353,0xC985}, + {0xA354,0xA354,0xC986}, + {0xA355,0xA355,0xC987}, + {0xA356,0xA356,0xC98A}, + {0xA357,0xA357,0xC98B}, + {0xA358,0xA358,0xC98D}, + {0xA359,0xA359,0xC98E}, + {0xA35A,0xA35A,0xC98F}, + {0xA35B,0xA35B,0x003F}, + {0xA35C,0xA35C,0x003F}, + {0xA35D,0xA35D,0x003F}, + {0xA35E,0xA35E,0x003F}, + {0xA35F,0xA35F,0x003F}, + {0xA360,0xA360,0x003F}, /* A360 */ + {0xA361,0xA361,0xC991}, + {0xA362,0xA362,0xC992}, + {0xA363,0xA363,0xC993}, + {0xA364,0xA364,0xC994}, + {0xA365,0xA365,0xC995}, + {0xA366,0xA366,0xC996}, + {0xA367,0xA367,0xC997}, + {0xA368,0xA368,0xC99A}, + {0xA369,0xA369,0xC99C}, + {0xA36A,0xA36A,0xC99E}, + {0xA36B,0xA36B,0xC99F}, + {0xA36C,0xA36C,0xC9A0}, + {0xA36D,0xA36D,0xC9A1}, + {0xA36E,0xA36E,0xC9A2}, + {0xA36F,0xA36F,0xC9A3}, + {0xA370,0xA370,0xC9A4}, /* A370 */ + {0xA371,0xA371,0xC9A5}, + {0xA372,0xA372,0xC9A6}, + {0xA373,0xA373,0xC9A7}, + {0xA374,0xA374,0xC9A8}, + {0xA375,0xA375,0xC9A9}, + {0xA376,0xA376,0xC9AA}, + {0xA377,0xA377,0xC9AB}, + {0xA378,0xA378,0xC9AC}, + {0xA379,0xA379,0xC9AD}, + {0xA37A,0xA37A,0xC9AE}, + {0xA37B,0xA37B,0x003F}, + {0xA37C,0xA37C,0x003F}, + {0xA37D,0xA37D,0x003F}, + {0xA37E,0xA37E,0x003F}, + {0xA37F,0xA37F,0x003F}, + {0xA380,0xA380,0x003F}, /* A380 */ + {0xA381,0xA381,0xC9AF}, + {0xA382,0xA382,0xC9B0}, + {0xA383,0xA383,0xC9B1}, + {0xA384,0xA384,0xC9B2}, + {0xA385,0xA385,0xC9B3}, + {0xA386,0xA386,0xC9B4}, + {0xA387,0xA387,0xC9B5}, + {0xA388,0xA388,0xC9B6}, + {0xA389,0xA389,0xC9B7}, + {0xA38A,0xA38A,0xC9B8}, + {0xA38B,0xA38B,0xC9B9}, + {0xA38C,0xA38C,0xC9BA}, + {0xA38D,0xA38D,0xC9BB}, + {0xA38E,0xA38E,0xC9BC}, + {0xA38F,0xA38F,0xC9BD}, + {0xA390,0xA390,0xC9BE}, /* A390 */ + {0xA391,0xA391,0xC9BF}, + {0xA392,0xA392,0xC9C2}, + {0xA393,0xA393,0xC9C3}, + {0xA394,0xA394,0xC9C5}, + {0xA395,0xA395,0xC9C6}, + {0xA396,0xA396,0xC9C9}, + {0xA397,0xA397,0xC9CB}, + {0xA398,0xA398,0xC9CC}, + {0xA399,0xA399,0xC9CD}, + {0xA39A,0xA39A,0xC9CE}, + {0xA39B,0xA39B,0xC9CF}, + {0xA39C,0xA39C,0xC9D2}, + {0xA39D,0xA39D,0xC9D4}, + {0xA39E,0xA39E,0xC9D7}, + {0xA39F,0xA39F,0xC9D8}, + {0xA3A0,0xA3A0,0xC9DB}, /* A3A0 */ + {0xA3A1,0xA3A1,0xFF01}, + {0xA3A2,0xA3A2,0xFF02}, + {0xA3A3,0xA3A3,0xFF03}, + {0xA3A4,0xA3A4,0xFF04}, + {0xA3A5,0xA3A5,0xFF05}, + {0xA3A6,0xA3A6,0xFF06}, + {0xA3A7,0xA3A7,0xFF07}, + {0xA3A8,0xA3A8,0xFF08}, + {0xA3A9,0xA3A9,0xFF09}, + {0xA3AA,0xA3AA,0xFF0A}, + {0xA3AB,0xA3AB,0xFF0B}, + {0xA3AC,0xA3AC,0xFF0C}, + {0xA3AD,0xA3AD,0xFF0D}, + {0xA3AE,0xA3AE,0xFF0E}, + {0xA3AF,0xA3AF,0xFF0F}, + {0xA3B0,0xA3B0,0xFF10}, /* A3B0 */ + {0xA3B1,0xA3B1,0xFF11}, + {0xA3B2,0xA3B2,0xFF12}, + {0xA3B3,0xA3B3,0xFF13}, + {0xA3B4,0xA3B4,0xFF14}, + {0xA3B5,0xA3B5,0xFF15}, + {0xA3B6,0xA3B6,0xFF16}, + {0xA3B7,0xA3B7,0xFF17}, + {0xA3B8,0xA3B8,0xFF18}, + {0xA3B9,0xA3B9,0xFF19}, + {0xA3BA,0xA3BA,0xFF1A}, + {0xA3BB,0xA3BB,0xFF1B}, + {0xA3BC,0xA3BC,0xFF1C}, + {0xA3BD,0xA3BD,0xFF1D}, + {0xA3BE,0xA3BE,0xFF1E}, + {0xA3BF,0xA3BF,0xFF1F}, + {0xA3C0,0xA3C0,0xFF20}, /* A3C0 */ + {0xA3C1,0xA3E1,0xFF21}, + {0xA3C2,0xA3E2,0xFF22}, + {0xA3C3,0xA3E3,0xFF23}, + {0xA3C4,0xA3E4,0xFF24}, + {0xA3C5,0xA3E5,0xFF25}, + {0xA3C6,0xA3E6,0xFF26}, + {0xA3C7,0xA3E7,0xFF27}, + {0xA3C8,0xA3E8,0xFF28}, + {0xA3C9,0xA3E9,0xFF29}, + {0xA3CA,0xA3EA,0xFF2A}, + {0xA3CB,0xA3EB,0xFF2B}, + {0xA3CC,0xA3EC,0xFF2C}, + {0xA3CD,0xA3ED,0xFF2D}, + {0xA3CE,0xA3EE,0xFF2E}, + {0xA3CF,0xA3EF,0xFF2F}, + {0xA3D0,0xA3F0,0xFF30}, /* A3D0 */ + {0xA3D1,0xA3F1,0xFF31}, + {0xA3D2,0xA3F2,0xFF32}, + {0xA3D3,0xA3F3,0xFF33}, + {0xA3D4,0xA3F4,0xFF34}, + {0xA3D5,0xA3F5,0xFF35}, + {0xA3D6,0xA3F6,0xFF36}, + {0xA3D7,0xA3F7,0xFF37}, + {0xA3D8,0xA3F8,0xFF38}, + {0xA3D9,0xA3F9,0xFF39}, + {0xA3DA,0xA3FA,0xFF3A}, + {0xA3DB,0xA3DB,0xFF3B}, + {0xA3DC,0xA3DC,0xFFE6}, + {0xA3DD,0xA3DD,0xFF3D}, + {0xA3DE,0xA3DE,0xFF3E}, + {0xA3DF,0xA3DF,0xFF3F}, + {0xA3E0,0xA3E0,0xFF40}, /* A3E0 */ + {0xA3C1,0xA3E1,0xFF41}, + {0xA3C2,0xA3E2,0xFF42}, + {0xA3C3,0xA3E3,0xFF43}, + {0xA3C4,0xA3E4,0xFF44}, + {0xA3C5,0xA3E5,0xFF45}, + {0xA3C6,0xA3E6,0xFF46}, + {0xA3C7,0xA3E7,0xFF47}, + {0xA3C8,0xA3E8,0xFF48}, + {0xA3C9,0xA3E9,0xFF49}, + {0xA3CA,0xA3EA,0xFF4A}, + {0xA3CB,0xA3EB,0xFF4B}, + {0xA3CC,0xA3EC,0xFF4C}, + {0xA3CD,0xA3ED,0xFF4D}, + {0xA3CE,0xA3EE,0xFF4E}, + {0xA3CF,0xA3EF,0xFF4F}, + {0xA3D0,0xA3F0,0xFF50}, /* A3F0 */ + {0xA3D1,0xA3F1,0xFF51}, + {0xA3D2,0xA3F2,0xFF52}, + {0xA3D3,0xA3F3,0xFF53}, + {0xA3D4,0xA3F4,0xFF54}, + {0xA3D5,0xA3F5,0xFF55}, + {0xA3D6,0xA3F6,0xFF56}, + {0xA3D7,0xA3F7,0xFF57}, + {0xA3D8,0xA3F8,0xFF58}, + {0xA3D9,0xA3F9,0xFF59}, + {0xA3DA,0xA3FA,0xFF5A}, + {0xA3FB,0xA3FB,0xFF5B}, + {0xA3FC,0xA3FC,0xFF5C}, + {0xA3FD,0xA3FD,0xFF5D}, + {0xA3FE,0xA3FE,0xFFE3}, + {0xA3FF,0xA3FF,0x003F} +}; + + +static MY_UNICASE_INFO cA5[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA540,0xA540,0x003F}, /* A540 */ + {0xA541,0xA541,0xCA47}, + {0xA542,0xA542,0xCA48}, + {0xA543,0xA543,0xCA49}, + {0xA544,0xA544,0xCA4A}, + {0xA545,0xA545,0xCA4B}, + {0xA546,0xA546,0xCA4E}, + {0xA547,0xA547,0xCA4F}, + {0xA548,0xA548,0xCA51}, + {0xA549,0xA549,0xCA52}, + {0xA54A,0xA54A,0xCA53}, + {0xA54B,0xA54B,0xCA55}, + {0xA54C,0xA54C,0xCA56}, + {0xA54D,0xA54D,0xCA57}, + {0xA54E,0xA54E,0xCA58}, + {0xA54F,0xA54F,0xCA59}, + {0xA550,0xA550,0xCA5A}, /* A550 */ + {0xA551,0xA551,0xCA5B}, + {0xA552,0xA552,0xCA5E}, + {0xA553,0xA553,0xCA62}, + {0xA554,0xA554,0xCA63}, + {0xA555,0xA555,0xCA64}, + {0xA556,0xA556,0xCA65}, + {0xA557,0xA557,0xCA66}, + {0xA558,0xA558,0xCA67}, + {0xA559,0xA559,0xCA69}, + {0xA55A,0xA55A,0xCA6A}, + {0xA55B,0xA55B,0x003F}, + {0xA55C,0xA55C,0x003F}, + {0xA55D,0xA55D,0x003F}, + {0xA55E,0xA55E,0x003F}, + {0xA55F,0xA55F,0x003F}, + {0xA560,0xA560,0x003F}, /* A560 */ + {0xA561,0xA561,0xCA6B}, + {0xA562,0xA562,0xCA6C}, + {0xA563,0xA563,0xCA6D}, + {0xA564,0xA564,0xCA6E}, + {0xA565,0xA565,0xCA6F}, + {0xA566,0xA566,0xCA70}, + {0xA567,0xA567,0xCA71}, + {0xA568,0xA568,0xCA72}, + {0xA569,0xA569,0xCA73}, + {0xA56A,0xA56A,0xCA74}, + {0xA56B,0xA56B,0xCA75}, + {0xA56C,0xA56C,0xCA76}, + {0xA56D,0xA56D,0xCA77}, + {0xA56E,0xA56E,0xCA78}, + {0xA56F,0xA56F,0xCA79}, + {0xA570,0xA570,0xCA7A}, /* A570 */ + {0xA571,0xA571,0xCA7B}, + {0xA572,0xA572,0xCA7C}, + {0xA573,0xA573,0xCA7E}, + {0xA574,0xA574,0xCA7F}, + {0xA575,0xA575,0xCA80}, + {0xA576,0xA576,0xCA81}, + {0xA577,0xA577,0xCA82}, + {0xA578,0xA578,0xCA83}, + {0xA579,0xA579,0xCA85}, + {0xA57A,0xA57A,0xCA86}, + {0xA57B,0xA57B,0x003F}, + {0xA57C,0xA57C,0x003F}, + {0xA57D,0xA57D,0x003F}, + {0xA57E,0xA57E,0x003F}, + {0xA57F,0xA57F,0x003F}, + {0xA580,0xA580,0x003F}, /* A580 */ + {0xA581,0xA581,0xCA87}, + {0xA582,0xA582,0xCA88}, + {0xA583,0xA583,0xCA89}, + {0xA584,0xA584,0xCA8A}, + {0xA585,0xA585,0xCA8B}, + {0xA586,0xA586,0xCA8C}, + {0xA587,0xA587,0xCA8D}, + {0xA588,0xA588,0xCA8E}, + {0xA589,0xA589,0xCA8F}, + {0xA58A,0xA58A,0xCA90}, + {0xA58B,0xA58B,0xCA91}, + {0xA58C,0xA58C,0xCA92}, + {0xA58D,0xA58D,0xCA93}, + {0xA58E,0xA58E,0xCA94}, + {0xA58F,0xA58F,0xCA95}, + {0xA590,0xA590,0xCA96}, /* A590 */ + {0xA591,0xA591,0xCA97}, + {0xA592,0xA592,0xCA99}, + {0xA593,0xA593,0xCA9A}, + {0xA594,0xA594,0xCA9B}, + {0xA595,0xA595,0xCA9C}, + {0xA596,0xA596,0xCA9D}, + {0xA597,0xA597,0xCA9E}, + {0xA598,0xA598,0xCA9F}, + {0xA599,0xA599,0xCAA0}, + {0xA59A,0xA59A,0xCAA1}, + {0xA59B,0xA59B,0xCAA2}, + {0xA59C,0xA59C,0xCAA3}, + {0xA59D,0xA59D,0xCAA4}, + {0xA59E,0xA59E,0xCAA5}, + {0xA59F,0xA59F,0xCAA6}, + {0xA5A0,0xA5A0,0xCAA7}, /* A5A0 */ + {0xA5B0,0xA5A1,0x2170}, + {0xA5B1,0xA5A2,0x2171}, + {0xA5B2,0xA5A3,0x2172}, + {0xA5B3,0xA5A4,0x2173}, + {0xA5B4,0xA5A5,0x2174}, + {0xA5B5,0xA5A6,0x2175}, + {0xA5B6,0xA5A7,0x2176}, + {0xA5B7,0xA5A8,0x2177}, + {0xA5B8,0xA5A9,0x2178}, + {0xA5B9,0xA5AA,0x2179}, + {0xA5AB,0xA5AB,0x003F}, + {0xA5AC,0xA5AC,0x003F}, + {0xA5AD,0xA5AD,0x003F}, + {0xA5AE,0xA5AE,0x003F}, + {0xA5AF,0xA5AF,0x003F}, + {0xA5B0,0xA5A1,0x2160}, /* A5B0 */ + {0xA5B1,0xA5A2,0x2161}, + {0xA5B2,0xA5A3,0x2162}, + {0xA5B3,0xA5A4,0x2163}, + {0xA5B4,0xA5A5,0x2164}, + {0xA5B5,0xA5A6,0x2165}, + {0xA5B6,0xA5A7,0x2166}, + {0xA5B7,0xA5A8,0x2167}, + {0xA5B8,0xA5A9,0x2168}, + {0xA5B9,0xA5AA,0x2169}, + {0xA5BA,0xA5BA,0x003F}, + {0xA5BB,0xA5BB,0x003F}, + {0xA5BC,0xA5BC,0x003F}, + {0xA5BD,0xA5BD,0x003F}, + {0xA5BE,0xA5BE,0x003F}, + {0xA5BF,0xA5BF,0x003F}, + {0xA5C0,0xA5C0,0x003F}, /* A5C0 */ + {0xA5C1,0xA5E1,0x0391}, + {0xA5C2,0xA5E2,0x0392}, + {0xA5C3,0xA5E3,0x0393}, + {0xA5C4,0xA5E4,0x0394}, + {0xA5C5,0xA5E5,0x0395}, + {0xA5C6,0xA5E6,0x0396}, + {0xA5C7,0xA5E7,0x0397}, + {0xA5C8,0xA5E8,0x0398}, + {0xA5C9,0xA5E9,0x0399}, + {0xA5CA,0xA5EA,0x039A}, + {0xA5CB,0xA5EB,0x039B}, + {0xA5CC,0xA5EC,0x039C}, + {0xA5CD,0xA5ED,0x039D}, + {0xA5CE,0xA5EE,0x039E}, + {0xA5CF,0xA5EF,0x039F}, + {0xA5D0,0xA5F0,0x03A0}, /* A5D0 */ + {0xA5D1,0xA5F1,0x03A1}, + {0xA5D2,0xA5F2,0x03A3}, + {0xA5D3,0xA5F3,0x03A4}, + {0xA5D4,0xA5F4,0x03A5}, + {0xA5D5,0xA5F5,0x03A6}, + {0xA5D6,0xA5F6,0x03A7}, + {0xA5D7,0xA5F7,0x03A8}, + {0xA5D8,0xA5F8,0x03A9}, + {0xA5D9,0xA5D9,0x003F}, + {0xA5DA,0xA5DA,0x003F}, + {0xA5DB,0xA5DB,0x003F}, + {0xA5DC,0xA5DC,0x003F}, + {0xA5DD,0xA5DD,0x003F}, + {0xA5DE,0xA5DE,0x003F}, + {0xA5DF,0xA5DF,0x003F}, + {0xA5E0,0xA5E0,0x003F}, /* A5E0 */ + {0xA5C1,0xA5E1,0x03B1}, + {0xA5C2,0xA5E2,0x03B2}, + {0xA5C3,0xA5E3,0x03B3}, + {0xA5C4,0xA5E4,0x03B4}, + {0xA5C5,0xA5E5,0x03B5}, + {0xA5C6,0xA5E6,0x03B6}, + {0xA5C7,0xA5E7,0x03B7}, + {0xA5C8,0xA5E8,0x03B8}, + {0xA5C9,0xA5E9,0x03B9}, + {0xA5CA,0xA5EA,0x03BA}, + {0xA5CB,0xA5EB,0x03BB}, + {0xA5CC,0xA5EC,0x03BC}, + {0xA5CD,0xA5ED,0x03BD}, + {0xA5CE,0xA5EE,0x03BE}, + {0xA5CF,0xA5EF,0x03BF}, + {0xA5D0,0xA5F0,0x03C0}, /* A5F0 */ + {0xA5D1,0xA5F1,0x03C1}, + {0xA5D2,0xA5F2,0x03C3}, + {0xA5D3,0xA5F3,0x03C4}, + {0xA5D4,0xA5F4,0x03C5}, + {0xA5D5,0xA5F5,0x03C6}, + {0xA5D6,0xA5F6,0x03C7}, + {0xA5D7,0xA5F7,0x03C8}, + {0xA5D8,0xA5F8,0x03C9}, + {0xA5F9,0xA5F9,0x003F}, + {0xA5FA,0xA5FA,0x003F}, + {0xA5FB,0xA5FB,0x003F}, + {0xA5FC,0xA5FC,0x003F}, + {0xA5FD,0xA5FD,0x003F}, + {0xA5FE,0xA5FE,0x003F}, + {0xA5FF,0xA5FF,0x003F} +}; + + +static MY_UNICASE_INFO cA7[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA740,0xA740,0x003F}, /* A740 */ + {0xA741,0xA741,0xCB0B}, + {0xA742,0xA742,0xCB0C}, + {0xA743,0xA743,0xCB0D}, + {0xA744,0xA744,0xCB0E}, + {0xA745,0xA745,0xCB0F}, + {0xA746,0xA746,0xCB11}, + {0xA747,0xA747,0xCB12}, + {0xA748,0xA748,0xCB13}, + {0xA749,0xA749,0xCB15}, + {0xA74A,0xA74A,0xCB16}, + {0xA74B,0xA74B,0xCB17}, + {0xA74C,0xA74C,0xCB19}, + {0xA74D,0xA74D,0xCB1A}, + {0xA74E,0xA74E,0xCB1B}, + {0xA74F,0xA74F,0xCB1C}, + {0xA750,0xA750,0xCB1D}, /* A750 */ + {0xA751,0xA751,0xCB1E}, + {0xA752,0xA752,0xCB1F}, + {0xA753,0xA753,0xCB22}, + {0xA754,0xA754,0xCB23}, + {0xA755,0xA755,0xCB24}, + {0xA756,0xA756,0xCB25}, + {0xA757,0xA757,0xCB26}, + {0xA758,0xA758,0xCB27}, + {0xA759,0xA759,0xCB28}, + {0xA75A,0xA75A,0xCB29}, + {0xA75B,0xA75B,0x003F}, + {0xA75C,0xA75C,0x003F}, + {0xA75D,0xA75D,0x003F}, + {0xA75E,0xA75E,0x003F}, + {0xA75F,0xA75F,0x003F}, + {0xA760,0xA760,0x003F}, /* A760 */ + {0xA761,0xA761,0xCB2A}, + {0xA762,0xA762,0xCB2B}, + {0xA763,0xA763,0xCB2C}, + {0xA764,0xA764,0xCB2D}, + {0xA765,0xA765,0xCB2E}, + {0xA766,0xA766,0xCB2F}, + {0xA767,0xA767,0xCB30}, + {0xA768,0xA768,0xCB31}, + {0xA769,0xA769,0xCB32}, + {0xA76A,0xA76A,0xCB33}, + {0xA76B,0xA76B,0xCB34}, + {0xA76C,0xA76C,0xCB35}, + {0xA76D,0xA76D,0xCB36}, + {0xA76E,0xA76E,0xCB37}, + {0xA76F,0xA76F,0xCB38}, + {0xA770,0xA770,0xCB39}, /* A770 */ + {0xA771,0xA771,0xCB3A}, + {0xA772,0xA772,0xCB3B}, + {0xA773,0xA773,0xCB3C}, + {0xA774,0xA774,0xCB3D}, + {0xA775,0xA775,0xCB3E}, + {0xA776,0xA776,0xCB3F}, + {0xA777,0xA777,0xCB40}, + {0xA778,0xA778,0xCB42}, + {0xA779,0xA779,0xCB43}, + {0xA77A,0xA77A,0xCB44}, + {0xA77B,0xA77B,0x003F}, + {0xA77C,0xA77C,0x003F}, + {0xA77D,0xA77D,0x003F}, + {0xA77E,0xA77E,0x003F}, + {0xA77F,0xA77F,0x003F}, + {0xA780,0xA780,0x003F}, /* A780 */ + {0xA781,0xA781,0xCB45}, + {0xA782,0xA782,0xCB46}, + {0xA783,0xA783,0xCB47}, + {0xA784,0xA784,0xCB4A}, + {0xA785,0xA785,0xCB4B}, + {0xA786,0xA786,0xCB4D}, + {0xA787,0xA787,0xCB4E}, + {0xA788,0xA788,0xCB4F}, + {0xA789,0xA789,0xCB51}, + {0xA78A,0xA78A,0xCB52}, + {0xA78B,0xA78B,0xCB53}, + {0xA78C,0xA78C,0xCB54}, + {0xA78D,0xA78D,0xCB55}, + {0xA78E,0xA78E,0xCB56}, + {0xA78F,0xA78F,0xCB57}, + {0xA790,0xA790,0xCB5A}, /* A790 */ + {0xA791,0xA791,0xCB5B}, + {0xA792,0xA792,0xCB5C}, + {0xA793,0xA793,0xCB5E}, + {0xA794,0xA794,0xCB5F}, + {0xA795,0xA795,0xCB60}, + {0xA796,0xA796,0xCB61}, + {0xA797,0xA797,0xCB62}, + {0xA798,0xA798,0xCB63}, + {0xA799,0xA799,0xCB65}, + {0xA79A,0xA79A,0xCB66}, + {0xA79B,0xA79B,0xCB67}, + {0xA79C,0xA79C,0xCB68}, + {0xA79D,0xA79D,0xCB69}, + {0xA79E,0xA79E,0xCB6A}, + {0xA79F,0xA79F,0xCB6B}, + {0xA7A0,0xA7A0,0xCB6C}, /* A7A0 */ + {0xA7A1,0xA7A1,0x3395}, + {0xA7A2,0xA7A2,0x3396}, + {0xA7A3,0xA7A3,0x3397}, + {0xA7A4,0xA7A4,0x2113}, + {0xA7A5,0xA7A5,0x3398}, + {0xA7A6,0xA7A6,0x33C4}, + {0xA7A7,0xA7A7,0x33A3}, + {0xA7A8,0xA7A8,0x33A4}, + {0xA7A9,0xA7A9,0x33A5}, + {0xA7AA,0xA7AA,0x33A6}, + {0xA7AB,0xA7AB,0x3399}, + {0xA7AC,0xA7AC,0x339A}, + {0xA7AD,0xA7AD,0x339B}, + {0xA7AE,0xA7AE,0x339C}, + {0xA7AF,0xA7AF,0x339D}, + {0xA7B0,0xA7B0,0x339E}, /* A7B0 */ + {0xA7B1,0xA7B1,0x339F}, + {0xA7B2,0xA7B2,0x33A0}, + {0xA7B3,0xA7B3,0x33A1}, + {0xA7B4,0xA7B4,0x33A2}, + {0xA7B5,0xA7B5,0x33CA}, + {0xA7B6,0xA7B6,0x338D}, + {0xA7B7,0xA7B7,0x338E}, + {0xA7B8,0xA7B8,0x338F}, + {0xA7B9,0xA7B9,0x33CF}, + {0xA7BA,0xA7BA,0x3388}, + {0xA7BB,0xA7BB,0x3389}, + {0xA7BC,0xA7BC,0x33C8}, + {0xA7BD,0xA7BD,0x33A7}, + {0xA7BE,0xA7BE,0x33A8}, + {0xA7BF,0xA7BF,0x33B0}, + {0xA7C0,0xA7C0,0x33B1}, /* A7C0 */ + {0xA7C1,0xA7C1,0x33B2}, + {0xA7C2,0xA7C2,0x33B3}, + {0xA7C3,0xA7C3,0x33B4}, + {0xA7C4,0xA7C4,0x33B5}, + {0xA7C5,0xA7C5,0x33B6}, + {0xA7C6,0xA7C6,0x33B7}, + {0xA7C7,0xA7C7,0x33B8}, + {0xA7C8,0xA7C8,0x33B9}, + {0xA7C9,0xA7C9,0x3380}, + {0xA7CA,0xA7CA,0x3381}, + {0xA7CB,0xA7CB,0x3382}, + {0xA7CC,0xA7CC,0x3383}, + {0xA7CD,0xA7CD,0x3384}, + {0xA7CE,0xA7CE,0x33BA}, + {0xA7CF,0xA7CF,0x33BB}, + {0xA7D0,0xA7D0,0x33BC}, /* A7D0 */ + {0xA7D1,0xA7D1,0x33BD}, + {0xA7D2,0xA7D2,0x33BE}, + {0xA7D3,0xA7D3,0x33BF}, + {0xA7D4,0xA7D4,0x3390}, + {0xA7D5,0xA7D5,0x3391}, + {0xA7D6,0xA7D6,0x3392}, + {0xA7D7,0xA7D7,0x3393}, + {0xA7D8,0xA7D8,0x3394}, + {0xA7D9,0xA5F8,0x2126}, + {0xA7DA,0xA7DA,0x33C0}, + {0xA7DB,0xA7DB,0x33C1}, + {0xA7DC,0xA7DC,0x338A}, + {0xA7DD,0xA7DD,0x338B}, + {0xA7DE,0xA7DE,0x338C}, + {0xA7DF,0xA7DF,0x33D6}, + {0xA7E0,0xA7E0,0x33C5}, /* A7E0 */ + {0xA7E1,0xA7E1,0x33AD}, + {0xA7E2,0xA7E2,0x33AE}, + {0xA7E3,0xA7E3,0x33AF}, + {0xA7E4,0xA7E4,0x33DB}, + {0xA7E5,0xA7E5,0x33A9}, + {0xA7E6,0xA7E6,0x33AA}, + {0xA7E7,0xA7E7,0x33AB}, + {0xA7E8,0xA7E8,0x33AC}, + {0xA7E9,0xA7E9,0x33DD}, + {0xA7EA,0xA7EA,0x33D0}, + {0xA7EB,0xA7EB,0x33D3}, + {0xA7EC,0xA7EC,0x33C3}, + {0xA7ED,0xA7ED,0x33C9}, + {0xA7EE,0xA7EE,0x33DC}, + {0xA7EF,0xA7EF,0x33C6}, + {0xA7F0,0xA7F0,0x003F}, /* A7F0 */ + {0xA7F1,0xA7F1,0x003F}, + {0xA7F2,0xA7F2,0x003F}, + {0xA7F3,0xA7F3,0x003F}, + {0xA7F4,0xA7F4,0x003F}, + {0xA7F5,0xA7F5,0x003F}, + {0xA7F6,0xA7F6,0x003F}, + {0xA7F7,0xA7F7,0x003F}, + {0xA7F8,0xA7F8,0x003F}, + {0xA7F9,0xA7F9,0x003F}, + {0xA7FA,0xA7FA,0x003F}, + {0xA7FB,0xA7FB,0x003F}, + {0xA7FC,0xA7FC,0x003F}, + {0xA7FD,0xA7FD,0x003F}, + {0xA7FE,0xA7FE,0x003F}, + {0xA7FF,0xA7FF,0x003F} +}; + + +static MY_UNICASE_INFO cA8[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA840,0xA840,0x003F}, /* A840 */ + {0xA841,0xA841,0xCB6D}, + {0xA842,0xA842,0xCB6E}, + {0xA843,0xA843,0xCB6F}, + {0xA844,0xA844,0xCB70}, + {0xA845,0xA845,0xCB71}, + {0xA846,0xA846,0xCB72}, + {0xA847,0xA847,0xCB73}, + {0xA848,0xA848,0xCB74}, + {0xA849,0xA849,0xCB75}, + {0xA84A,0xA84A,0xCB76}, + {0xA84B,0xA84B,0xCB77}, + {0xA84C,0xA84C,0xCB7A}, + {0xA84D,0xA84D,0xCB7B}, + {0xA84E,0xA84E,0xCB7C}, + {0xA84F,0xA84F,0xCB7D}, + {0xA850,0xA850,0xCB7E}, /* A850 */ + {0xA851,0xA851,0xCB7F}, + {0xA852,0xA852,0xCB80}, + {0xA853,0xA853,0xCB81}, + {0xA854,0xA854,0xCB82}, + {0xA855,0xA855,0xCB83}, + {0xA856,0xA856,0xCB84}, + {0xA857,0xA857,0xCB85}, + {0xA858,0xA858,0xCB86}, + {0xA859,0xA859,0xCB87}, + {0xA85A,0xA85A,0xCB88}, + {0xA85B,0xA85B,0x003F}, + {0xA85C,0xA85C,0x003F}, + {0xA85D,0xA85D,0x003F}, + {0xA85E,0xA85E,0x003F}, + {0xA85F,0xA85F,0x003F}, + {0xA860,0xA860,0x003F}, /* A860 */ + {0xA861,0xA861,0xCB89}, + {0xA862,0xA862,0xCB8A}, + {0xA863,0xA863,0xCB8B}, + {0xA864,0xA864,0xCB8C}, + {0xA865,0xA865,0xCB8D}, + {0xA866,0xA866,0xCB8E}, + {0xA867,0xA867,0xCB8F}, + {0xA868,0xA868,0xCB90}, + {0xA869,0xA869,0xCB91}, + {0xA86A,0xA86A,0xCB92}, + {0xA86B,0xA86B,0xCB93}, + {0xA86C,0xA86C,0xCB94}, + {0xA86D,0xA86D,0xCB95}, + {0xA86E,0xA86E,0xCB96}, + {0xA86F,0xA86F,0xCB97}, + {0xA870,0xA870,0xCB98}, /* A870 */ + {0xA871,0xA871,0xCB99}, + {0xA872,0xA872,0xCB9A}, + {0xA873,0xA873,0xCB9B}, + {0xA874,0xA874,0xCB9D}, + {0xA875,0xA875,0xCB9E}, + {0xA876,0xA876,0xCB9F}, + {0xA877,0xA877,0xCBA0}, + {0xA878,0xA878,0xCBA1}, + {0xA879,0xA879,0xCBA2}, + {0xA87A,0xA87A,0xCBA3}, + {0xA87B,0xA87B,0x003F}, + {0xA87C,0xA87C,0x003F}, + {0xA87D,0xA87D,0x003F}, + {0xA87E,0xA87E,0x003F}, + {0xA87F,0xA87F,0x003F}, + {0xA880,0xA880,0x003F}, /* A880 */ + {0xA881,0xA881,0xCBA4}, + {0xA882,0xA882,0xCBA5}, + {0xA883,0xA883,0xCBA6}, + {0xA884,0xA884,0xCBA7}, + {0xA885,0xA885,0xCBA8}, + {0xA886,0xA886,0xCBA9}, + {0xA887,0xA887,0xCBAA}, + {0xA888,0xA888,0xCBAB}, + {0xA889,0xA889,0xCBAC}, + {0xA88A,0xA88A,0xCBAD}, + {0xA88B,0xA88B,0xCBAE}, + {0xA88C,0xA88C,0xCBAF}, + {0xA88D,0xA88D,0xCBB0}, + {0xA88E,0xA88E,0xCBB1}, + {0xA88F,0xA88F,0xCBB2}, + {0xA890,0xA890,0xCBB3}, /* A890 */ + {0xA891,0xA891,0xCBB4}, + {0xA892,0xA892,0xCBB5}, + {0xA893,0xA893,0xCBB6}, + {0xA894,0xA894,0xCBB7}, + {0xA895,0xA895,0xCBB9}, + {0xA896,0xA896,0xCBBA}, + {0xA897,0xA897,0xCBBB}, + {0xA898,0xA898,0xCBBC}, + {0xA899,0xA899,0xCBBD}, + {0xA89A,0xA89A,0xCBBE}, + {0xA89B,0xA89B,0xCBBF}, + {0xA89C,0xA89C,0xCBC0}, + {0xA89D,0xA89D,0xCBC1}, + {0xA89E,0xA89E,0xCBC2}, + {0xA89F,0xA89F,0xCBC3}, + {0xA8A0,0xA8A0,0xCBC4}, /* A8A0 */ + {0xA8A1,0xA9A1,0x00C6}, + {0xA8A2,0xA9A3,0x00D0}, + {0xA8A3,0xA8A3,0x00AA}, + {0xA8A4,0xA9A4,0x0126}, + {0xA8A5,0xA8A5,0x003F}, + {0xA8A6,0xA9A6,0x0132}, + {0xA8A7,0xA8A7,0x003F}, + {0xA8A8,0xA9A8,0x013F}, + {0xA8A9,0xA9A9,0x0141}, + {0xA8AA,0xA9AA,0x00D8}, + {0xA8AB,0xA9AB,0x0152}, + {0xA8AC,0xA8AC,0x00BA}, + {0xA8AD,0xA9AD,0x00DE}, + {0xA8AE,0xA9AE,0x0166}, + {0xA8AF,0xA9AF,0x014A}, + {0xA8B0,0xA8B0,0x003F}, /* A8B0 */ + {0xA8B1,0xA8B1,0x3260}, + {0xA8B2,0xA8B2,0x3261}, + {0xA8B3,0xA8B3,0x3262}, + {0xA8B4,0xA8B4,0x3263}, + {0xA8B5,0xA8B5,0x3264}, + {0xA8B6,0xA8B6,0x3265}, + {0xA8B7,0xA8B7,0x3266}, + {0xA8B8,0xA8B8,0x3267}, + {0xA8B9,0xA8B9,0x3268}, + {0xA8BA,0xA8BA,0x3269}, + {0xA8BB,0xA8BB,0x326A}, + {0xA8BC,0xA8BC,0x326B}, + {0xA8BD,0xA8BD,0x326C}, + {0xA8BE,0xA8BE,0x326D}, + {0xA8BF,0xA8BF,0x326E}, + {0xA8C0,0xA8C0,0x326F}, /* A8C0 */ + {0xA8C1,0xA8C1,0x3270}, + {0xA8C2,0xA8C2,0x3271}, + {0xA8C3,0xA8C3,0x3272}, + {0xA8C4,0xA8C4,0x3273}, + {0xA8C5,0xA8C5,0x3274}, + {0xA8C6,0xA8C6,0x3275}, + {0xA8C7,0xA8C7,0x3276}, + {0xA8C8,0xA8C8,0x3277}, + {0xA8C9,0xA8C9,0x3278}, + {0xA8CA,0xA8CA,0x3279}, + {0xA8CB,0xA8CB,0x327A}, + {0xA8CC,0xA8CC,0x327B}, + {0xA8CD,0xA8CD,0x24D0}, + {0xA8CE,0xA8CE,0x24D1}, + {0xA8CF,0xA8CF,0x24D2}, + {0xA8D0,0xA8D0,0x24D3}, /* A8D0 */ + {0xA8D1,0xA8D1,0x24D4}, + {0xA8D2,0xA8D2,0x24D5}, + {0xA8D3,0xA8D3,0x24D6}, + {0xA8D4,0xA8D4,0x24D7}, + {0xA8D5,0xA8D5,0x24D8}, + {0xA8D6,0xA8D6,0x24D9}, + {0xA8D7,0xA8D7,0x24DA}, + {0xA8D8,0xA8D8,0x24DB}, + {0xA8D9,0xA8D9,0x24DC}, + {0xA8DA,0xA8DA,0x24DD}, + {0xA8DB,0xA8DB,0x24DE}, + {0xA8DC,0xA8DC,0x24DF}, + {0xA8DD,0xA8DD,0x24E0}, + {0xA8DE,0xA8DE,0x24E1}, + {0xA8DF,0xA8DF,0x24E2}, + {0xA8E0,0xA8E0,0x24E3}, /* A8E0 */ + {0xA8E1,0xA8E1,0x24E4}, + {0xA8E2,0xA8E2,0x24E5}, + {0xA8E3,0xA8E3,0x24E6}, + {0xA8E4,0xA8E4,0x24E7}, + {0xA8E5,0xA8E5,0x24E8}, + {0xA8E6,0xA8E6,0x24E9}, + {0xA8E7,0xA8E7,0x2460}, + {0xA8E8,0xA8E8,0x2461}, + {0xA8E9,0xA8E9,0x2462}, + {0xA8EA,0xA8EA,0x2463}, + {0xA8EB,0xA8EB,0x2464}, + {0xA8EC,0xA8EC,0x2465}, + {0xA8ED,0xA8ED,0x2466}, + {0xA8EE,0xA8EE,0x2467}, + {0xA8EF,0xA8EF,0x2468}, + {0xA8F0,0xA8F0,0x2469}, /* A8F0 */ + {0xA8F1,0xA8F1,0x246A}, + {0xA8F2,0xA8F2,0x246B}, + {0xA8F3,0xA8F3,0x246C}, + {0xA8F4,0xA8F4,0x246D}, + {0xA8F5,0xA8F5,0x246E}, + {0xA8F6,0xA8F6,0x00BD}, + {0xA8F7,0xA8F7,0x2153}, + {0xA8F8,0xA8F8,0x2154}, + {0xA8F9,0xA8F9,0x00BC}, + {0xA8FA,0xA8FA,0x00BE}, + {0xA8FB,0xA8FB,0x215B}, + {0xA8FC,0xA8FC,0x215C}, + {0xA8FD,0xA8FD,0x215D}, + {0xA8FE,0xA8FE,0x215E}, + {0xA8FF,0xA8FF,0x003F} +}; + + +static MY_UNICASE_INFO cA9[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA940,0xA940,0x003F}, /* A940 */ + {0xA941,0xA941,0xCBC5}, + {0xA942,0xA942,0xCBC6}, + {0xA943,0xA943,0xCBC7}, + {0xA944,0xA944,0xCBC8}, + {0xA945,0xA945,0xCBC9}, + {0xA946,0xA946,0xCBCA}, + {0xA947,0xA947,0xCBCB}, + {0xA948,0xA948,0xCBCC}, + {0xA949,0xA949,0xCBCD}, + {0xA94A,0xA94A,0xCBCE}, + {0xA94B,0xA94B,0xCBCF}, + {0xA94C,0xA94C,0xCBD0}, + {0xA94D,0xA94D,0xCBD1}, + {0xA94E,0xA94E,0xCBD2}, + {0xA94F,0xA94F,0xCBD3}, + {0xA950,0xA950,0xCBD5}, /* A950 */ + {0xA951,0xA951,0xCBD6}, + {0xA952,0xA952,0xCBD7}, + {0xA953,0xA953,0xCBD8}, + {0xA954,0xA954,0xCBD9}, + {0xA955,0xA955,0xCBDA}, + {0xA956,0xA956,0xCBDB}, + {0xA957,0xA957,0xCBDC}, + {0xA958,0xA958,0xCBDD}, + {0xA959,0xA959,0xCBDE}, + {0xA95A,0xA95A,0xCBDF}, + {0xA95B,0xA95B,0x003F}, + {0xA95C,0xA95C,0x003F}, + {0xA95D,0xA95D,0x003F}, + {0xA95E,0xA95E,0x003F}, + {0xA95F,0xA95F,0x003F}, + {0xA960,0xA960,0x003F}, /* A960 */ + {0xA961,0xA961,0xCBE0}, + {0xA962,0xA962,0xCBE1}, + {0xA963,0xA963,0xCBE2}, + {0xA964,0xA964,0xCBE3}, + {0xA965,0xA965,0xCBE5}, + {0xA966,0xA966,0xCBE6}, + {0xA967,0xA967,0xCBE8}, + {0xA968,0xA968,0xCBEA}, + {0xA969,0xA969,0xCBEB}, + {0xA96A,0xA96A,0xCBEC}, + {0xA96B,0xA96B,0xCBED}, + {0xA96C,0xA96C,0xCBEE}, + {0xA96D,0xA96D,0xCBEF}, + {0xA96E,0xA96E,0xCBF0}, + {0xA96F,0xA96F,0xCBF1}, + {0xA970,0xA970,0xCBF2}, /* A970 */ + {0xA971,0xA971,0xCBF3}, + {0xA972,0xA972,0xCBF4}, + {0xA973,0xA973,0xCBF5}, + {0xA974,0xA974,0xCBF6}, + {0xA975,0xA975,0xCBF7}, + {0xA976,0xA976,0xCBF8}, + {0xA977,0xA977,0xCBF9}, + {0xA978,0xA978,0xCBFA}, + {0xA979,0xA979,0xCBFB}, + {0xA97A,0xA97A,0xCBFC}, + {0xA97B,0xA97B,0x003F}, + {0xA97C,0xA97C,0x003F}, + {0xA97D,0xA97D,0x003F}, + {0xA97E,0xA97E,0x003F}, + {0xA97F,0xA97F,0x003F}, + {0xA980,0xA980,0x003F}, /* A980 */ + {0xA981,0xA981,0xCBFD}, + {0xA982,0xA982,0xCBFE}, + {0xA983,0xA983,0xCBFF}, + {0xA984,0xA984,0xCC00}, + {0xA985,0xA985,0xCC01}, + {0xA986,0xA986,0xCC02}, + {0xA987,0xA987,0xCC03}, + {0xA988,0xA988,0xCC04}, + {0xA989,0xA989,0xCC05}, + {0xA98A,0xA98A,0xCC06}, + {0xA98B,0xA98B,0xCC07}, + {0xA98C,0xA98C,0xCC08}, + {0xA98D,0xA98D,0xCC09}, + {0xA98E,0xA98E,0xCC0A}, + {0xA98F,0xA98F,0xCC0B}, + {0xA990,0xA990,0xCC0E}, /* A990 */ + {0xA991,0xA991,0xCC0F}, + {0xA992,0xA992,0xCC11}, + {0xA993,0xA993,0xCC12}, + {0xA994,0xA994,0xCC13}, + {0xA995,0xA995,0xCC15}, + {0xA996,0xA996,0xCC16}, + {0xA997,0xA997,0xCC17}, + {0xA998,0xA998,0xCC18}, + {0xA999,0xA999,0xCC19}, + {0xA99A,0xA99A,0xCC1A}, + {0xA99B,0xA99B,0xCC1B}, + {0xA99C,0xA99C,0xCC1E}, + {0xA99D,0xA99D,0xCC1F}, + {0xA99E,0xA99E,0xCC20}, + {0xA99F,0xA99F,0xCC23}, + {0xA9A0,0xA9A0,0xCC24}, /* A9A0 */ + {0xA8A1,0xA9A1,0x00E6}, + {0xA9A2,0xA9A2,0x0111}, + {0xA8A2,0xA9A3,0x00F0}, + {0xA8A4,0xA9A4,0x0127}, + { 0x49,0xA9A5,0x0131}, /* Turkish i */ + {0xA8A6,0xA9A6,0x0133}, + {0xA9A7,0xA9A7,0x0138}, + {0xA8A8,0xA9A8,0x0140}, + {0xA8A9,0xA9A9,0x0142}, + {0xA8AA,0xA9AA,0x00F8}, + {0xA8AB,0xA9AB,0x0153}, + {0xA9AC,0xA9AC,0x00DF}, + {0xA8AD,0xA9AD,0x00FE}, + {0xA8AE,0xA9AE,0x0167}, + {0xA8AF,0xA9AF,0x014B}, + {0xA9B0,0xA9B0,0x0149}, /* A9B0 */ + {0xA9B1,0xA9B1,0x3200}, + {0xA9B2,0xA9B2,0x3201}, + {0xA9B3,0xA9B3,0x3202}, + {0xA9B4,0xA9B4,0x3203}, + {0xA9B5,0xA9B5,0x3204}, + {0xA9B6,0xA9B6,0x3205}, + {0xA9B7,0xA9B7,0x3206}, + {0xA9B8,0xA9B8,0x3207}, + {0xA9B9,0xA9B9,0x3208}, + {0xA9BA,0xA9BA,0x3209}, + {0xA9BB,0xA9BB,0x320A}, + {0xA9BC,0xA9BC,0x320B}, + {0xA9BD,0xA9BD,0x320C}, + {0xA9BE,0xA9BE,0x320D}, + {0xA9BF,0xA9BF,0x320E}, + {0xA9C0,0xA9C0,0x320F}, /* A9C0 */ + {0xA9C1,0xA9C1,0x3210}, + {0xA9C2,0xA9C2,0x3211}, + {0xA9C3,0xA9C3,0x3212}, + {0xA9C4,0xA9C4,0x3213}, + {0xA9C5,0xA9C5,0x3214}, + {0xA9C6,0xA9C6,0x3215}, + {0xA9C7,0xA9C7,0x3216}, + {0xA9C8,0xA9C8,0x3217}, + {0xA9C9,0xA9C9,0x3218}, + {0xA9CA,0xA9CA,0x3219}, + {0xA9CB,0xA9CB,0x321A}, + {0xA9CC,0xA9CC,0x321B}, + {0xA9CD,0xA9CD,0x249C}, + {0xA9CE,0xA9CE,0x249D}, + {0xA9CF,0xA9CF,0x249E}, + {0xA9D0,0xA9D0,0x249F}, /* A9D0 */ + {0xA9D1,0xA9D1,0x24A0}, + {0xA9D2,0xA9D2,0x24A1}, + {0xA9D3,0xA9D3,0x24A2}, + {0xA9D4,0xA9D4,0x24A3}, + {0xA9D5,0xA9D5,0x24A4}, + {0xA9D6,0xA9D6,0x24A5}, + {0xA9D7,0xA9D7,0x24A6}, + {0xA9D8,0xA9D8,0x24A7}, + {0xA9D9,0xA9D9,0x24A8}, + {0xA9DA,0xA9DA,0x24A9}, + {0xA9DB,0xA9DB,0x24AA}, + {0xA9DC,0xA9DC,0x24AB}, + {0xA9DD,0xA9DD,0x24AC}, + {0xA9DE,0xA9DE,0x24AD}, + {0xA9DF,0xA9DF,0x24AE}, + {0xA9E0,0xA9E0,0x24AF}, /* A9E0 */ + {0xA9E1,0xA9E1,0x24B0}, + {0xA9E2,0xA9E2,0x24B1}, + {0xA9E3,0xA9E3,0x24B2}, + {0xA9E4,0xA9E4,0x24B3}, + {0xA9E5,0xA9E5,0x24B4}, + {0xA9E6,0xA9E6,0x24B5}, + {0xA9E7,0xA9E7,0x2474}, + {0xA9E8,0xA9E8,0x2475}, + {0xA9E9,0xA9E9,0x2476}, + {0xA9EA,0xA9EA,0x2477}, + {0xA9EB,0xA9EB,0x2478}, + {0xA9EC,0xA9EC,0x2479}, + {0xA9ED,0xA9ED,0x247A}, + {0xA9EE,0xA9EE,0x247B}, + {0xA9EF,0xA9EF,0x247C}, + {0xA9F0,0xA9F0,0x247D}, /* A9F0 */ + {0xA9F1,0xA9F1,0x247E}, + {0xA9F2,0xA9F2,0x247F}, + {0xA9F3,0xA9F3,0x2480}, + {0xA9F4,0xA9F4,0x2481}, + {0xA9F5,0xA9F5,0x2482}, + {0xA9F6,0xA9F6,0x00B9}, + {0xA9F7,0xA9F7,0x00B2}, + {0xA9F8,0xA9F8,0x00B3}, + {0xA9F9,0xA9F9,0x2074}, + {0xA9FA,0xA9FA,0x207F}, + {0xA9FB,0xA9FB,0x2081}, + {0xA9FC,0xA9FC,0x2082}, + {0xA9FD,0xA9FD,0x2083}, + {0xA9FE,0xA9FE,0x2084}, + {0xA9FF,0xA9FF,0x003F} +}; + + +static MY_UNICASE_INFO cAC[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xAC40,0xAC40,0x003F}, /* AC40 */ + {0xAC41,0xAC41,0xCCFE}, + {0xAC42,0xAC42,0xCCFF}, + {0xAC43,0xAC43,0xCD00}, + {0xAC44,0xAC44,0xCD02}, + {0xAC45,0xAC45,0xCD03}, + {0xAC46,0xAC46,0xCD04}, + {0xAC47,0xAC47,0xCD05}, + {0xAC48,0xAC48,0xCD06}, + {0xAC49,0xAC49,0xCD07}, + {0xAC4A,0xAC4A,0xCD0A}, + {0xAC4B,0xAC4B,0xCD0B}, + {0xAC4C,0xAC4C,0xCD0D}, + {0xAC4D,0xAC4D,0xCD0E}, + {0xAC4E,0xAC4E,0xCD0F}, + {0xAC4F,0xAC4F,0xCD11}, + {0xAC50,0xAC50,0xCD12}, /* AC50 */ + {0xAC51,0xAC51,0xCD13}, + {0xAC52,0xAC52,0xCD14}, + {0xAC53,0xAC53,0xCD15}, + {0xAC54,0xAC54,0xCD16}, + {0xAC55,0xAC55,0xCD17}, + {0xAC56,0xAC56,0xCD1A}, + {0xAC57,0xAC57,0xCD1C}, + {0xAC58,0xAC58,0xCD1E}, + {0xAC59,0xAC59,0xCD1F}, + {0xAC5A,0xAC5A,0xCD20}, + {0xAC5B,0xAC5B,0x003F}, + {0xAC5C,0xAC5C,0x003F}, + {0xAC5D,0xAC5D,0x003F}, + {0xAC5E,0xAC5E,0x003F}, + {0xAC5F,0xAC5F,0x003F}, + {0xAC60,0xAC60,0x003F}, /* AC60 */ + {0xAC61,0xAC61,0xCD21}, + {0xAC62,0xAC62,0xCD22}, + {0xAC63,0xAC63,0xCD23}, + {0xAC64,0xAC64,0xCD25}, + {0xAC65,0xAC65,0xCD26}, + {0xAC66,0xAC66,0xCD27}, + {0xAC67,0xAC67,0xCD29}, + {0xAC68,0xAC68,0xCD2A}, + {0xAC69,0xAC69,0xCD2B}, + {0xAC6A,0xAC6A,0xCD2D}, + {0xAC6B,0xAC6B,0xCD2E}, + {0xAC6C,0xAC6C,0xCD2F}, + {0xAC6D,0xAC6D,0xCD30}, + {0xAC6E,0xAC6E,0xCD31}, + {0xAC6F,0xAC6F,0xCD32}, + {0xAC70,0xAC70,0xCD33}, /* AC70 */ + {0xAC71,0xAC71,0xCD34}, + {0xAC72,0xAC72,0xCD35}, + {0xAC73,0xAC73,0xCD36}, + {0xAC74,0xAC74,0xCD37}, + {0xAC75,0xAC75,0xCD38}, + {0xAC76,0xAC76,0xCD3A}, + {0xAC77,0xAC77,0xCD3B}, + {0xAC78,0xAC78,0xCD3C}, + {0xAC79,0xAC79,0xCD3D}, + {0xAC7A,0xAC7A,0xCD3E}, + {0xAC7B,0xAC7B,0x003F}, + {0xAC7C,0xAC7C,0x003F}, + {0xAC7D,0xAC7D,0x003F}, + {0xAC7E,0xAC7E,0x003F}, + {0xAC7F,0xAC7F,0x003F}, + {0xAC80,0xAC80,0x003F}, /* AC80 */ + {0xAC81,0xAC81,0xCD3F}, + {0xAC82,0xAC82,0xCD40}, + {0xAC83,0xAC83,0xCD41}, + {0xAC84,0xAC84,0xCD42}, + {0xAC85,0xAC85,0xCD43}, + {0xAC86,0xAC86,0xCD44}, + {0xAC87,0xAC87,0xCD45}, + {0xAC88,0xAC88,0xCD46}, + {0xAC89,0xAC89,0xCD47}, + {0xAC8A,0xAC8A,0xCD48}, + {0xAC8B,0xAC8B,0xCD49}, + {0xAC8C,0xAC8C,0xCD4A}, + {0xAC8D,0xAC8D,0xCD4B}, + {0xAC8E,0xAC8E,0xCD4C}, + {0xAC8F,0xAC8F,0xCD4D}, + {0xAC90,0xAC90,0xCD4E}, /* AC90 */ + {0xAC91,0xAC91,0xCD4F}, + {0xAC92,0xAC92,0xCD50}, + {0xAC93,0xAC93,0xCD51}, + {0xAC94,0xAC94,0xCD52}, + {0xAC95,0xAC95,0xCD53}, + {0xAC96,0xAC96,0xCD54}, + {0xAC97,0xAC97,0xCD55}, + {0xAC98,0xAC98,0xCD56}, + {0xAC99,0xAC99,0xCD57}, + {0xAC9A,0xAC9A,0xCD58}, + {0xAC9B,0xAC9B,0xCD59}, + {0xAC9C,0xAC9C,0xCD5A}, + {0xAC9D,0xAC9D,0xCD5B}, + {0xAC9E,0xAC9E,0xCD5D}, + {0xAC9F,0xAC9F,0xCD5E}, + {0xACA0,0xACA0,0xCD5F}, /* ACA0 */ + {0xACA1,0xACD1,0x0410}, + {0xACA2,0xACD2,0x0411}, + {0xACA3,0xACD3,0x0412}, + {0xACA4,0xACD4,0x0413}, + {0xACA5,0xACD5,0x0414}, + {0xACA6,0xACD6,0x0415}, + {0xACA7,0xACD7,0x0401}, + {0xACA8,0xACD8,0x0416}, + {0xACA9,0xACD9,0x0417}, + {0xACAA,0xACDA,0x0418}, + {0xACAB,0xACDB,0x0419}, + {0xACAC,0xACDC,0x041A}, + {0xACAD,0xACDD,0x041B}, + {0xACAE,0xACDE,0x041C}, + {0xACAF,0xACDF,0x041D}, + {0xACB0,0xACE0,0x041E}, /* ACB0 */ + {0xACB1,0xACE1,0x041F}, + {0xACB2,0xACE2,0x0420}, + {0xACB3,0xACE3,0x0421}, + {0xACB4,0xACE4,0x0422}, + {0xACB5,0xACE5,0x0423}, + {0xACB6,0xACE6,0x0424}, + {0xACB7,0xACE7,0x0425}, + {0xACB8,0xACE8,0x0426}, + {0xACB9,0xACE9,0x0427}, + {0xACBA,0xACEA,0x0428}, + {0xACBB,0xACEB,0x0429}, + {0xACBC,0xACEC,0x042A}, + {0xACBD,0xACED,0x042B}, + {0xACBE,0xACEE,0x042C}, + {0xACBF,0xACEF,0x042D}, + {0xACC0,0xACF0,0x042E}, /* ACC0 */ + {0xACC1,0xACF1,0x042F}, + {0xACC2,0xACC2,0x003F}, + {0xACC3,0xACC3,0x003F}, + {0xACC4,0xACC4,0x003F}, + {0xACC5,0xACC5,0x003F}, + {0xACC6,0xACC6,0x003F}, + {0xACC7,0xACC7,0x003F}, + {0xACC8,0xACC8,0x003F}, + {0xACC9,0xACC9,0x003F}, + {0xACCA,0xACCA,0x003F}, + {0xACCB,0xACCB,0x003F}, + {0xACCC,0xACCC,0x003F}, + {0xACCD,0xACCD,0x003F}, + {0xACCE,0xACCE,0x003F}, + {0xACCF,0xACCF,0x003F}, + {0xACD0,0xACD0,0x003F}, /* ACD0 */ + {0xACA1,0xACD1,0x0430}, + {0xACA2,0xACD2,0x0431}, + {0xACA3,0xACD3,0x0432}, + {0xACA4,0xACD4,0x0433}, + {0xACA5,0xACD5,0x0434}, + {0xACA6,0xACD6,0x0435}, + {0xACA7,0xACD7,0x0451}, + {0xACA8,0xACD8,0x0436}, + {0xACA9,0xACD9,0x0437}, + {0xACAA,0xACDA,0x0438}, + {0xACAB,0xACDB,0x0439}, + {0xACAC,0xACDC,0x043A}, + {0xACAD,0xACDD,0x043B}, + {0xACAE,0xACDE,0x043C}, + {0xACAF,0xACDF,0x043D}, + {0xACB0,0xACE0,0x043E}, /* ACE0 */ + {0xACB1,0xACE1,0x043F}, + {0xACB2,0xACE2,0x0440}, + {0xACB3,0xACE3,0x0441}, + {0xACB4,0xACE4,0x0442}, + {0xACB5,0xACE5,0x0443}, + {0xACB6,0xACE6,0x0444}, + {0xACB7,0xACE7,0x0445}, + {0xACB8,0xACE8,0x0446}, + {0xACB9,0xACE9,0x0447}, + {0xACBA,0xACEA,0x0448}, + {0xACBB,0xACEB,0x0449}, + {0xACBC,0xACEC,0x044A}, + {0xACBD,0xACED,0x044B}, + {0xACBE,0xACEE,0x044C}, + {0xACBF,0xACEF,0x044D}, + {0xACC0,0xACF0,0x044E}, /* ACF0 */ + {0xACC1,0xACF1,0x044F}, + {0xACF2,0xACF2,0x003F}, + {0xACF3,0xACF3,0x003F}, + {0xACF4,0xACF4,0x003F}, + {0xACF5,0xACF5,0x003F}, + {0xACF6,0xACF6,0x003F}, + {0xACF7,0xACF7,0x003F}, + {0xACF8,0xACF8,0x003F}, + {0xACF9,0xACF9,0x003F}, + {0xACFA,0xACFA,0x003F}, + {0xACFB,0xACFB,0x003F}, + {0xACFC,0xACFC,0x003F}, + {0xACFD,0xACFD,0x003F}, + {0xACFE,0xACFE,0x003F}, + {0xACFF,0xACFF,0x003F} +}; + + +static MY_UNICASE_INFO *my_caseinfo_euckr[256]= +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, cA3, NULL, cA5, NULL, cA7, /* A */ + cA8, cA9, NULL, NULL, cAC, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + + /* page 0 0x8141-0xC8FE */ static uint16 tab_ksc5601_uni0[]={ 0xAC02,0xAC03,0xAC05,0xAC06,0xAC0B,0xAC0C,0xAC0D,0xAC0E, @@ -8720,8 +9987,8 @@ static MY_CHARSET_HANDLER my_charset_handler= my_mb_ctype_mb, my_caseup_str_mb, my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, + my_caseup_mb_varlen, /* UPPER() can reduce length: Turkish DOTLESS i -> I */ + my_casedn_mb, /* LOWER() does not change length, use simple version*/ my_snprintf_8bit, my_long10_to_str_8bit, my_longlong10_to_str_8bit, @@ -8753,7 +10020,7 @@ CHARSET_INFO my_charset_euckr_korean_ci= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_euckr, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ @@ -8786,7 +10053,7 @@ CHARSET_INFO my_charset_euckr_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_euckr, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c index b8b04dfca6b..77e6a0f4e0f 100644 --- a/strings/ctype-eucjpms.c +++ b/strings/ctype-eucjpms.c @@ -201,6 +201,1535 @@ static uint mbcharlen_eucjpms(CHARSET_INFO *cs __attribute__((unused)),uint c) } + +/* Case info pages for JIS-X-0208 range */ + +static MY_UNICASE_INFO cA2[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA2A0,0xA2A0,0x003F}, /* A2A0 */ + {0xA2A1,0xA2A1,0x25C6}, + {0xA2A2,0xA2A2,0x25A1}, + {0xA2A3,0xA2A3,0x25A0}, + {0xA2A4,0xA2A4,0x25B3}, + {0xA2A5,0xA2A5,0x25B2}, + {0xA2A6,0xA2A6,0x25BD}, + {0xA2A7,0xA2A7,0x25BC}, + {0xA2A8,0xA2A8,0x203B}, + {0xA2A9,0xA2A9,0x3012}, + {0xA2AA,0xA2AA,0x2192}, + {0xA2AB,0xA2AB,0x2190}, + {0xA2AC,0xA2AC,0x2191}, + {0xA2AD,0xA2AD,0x2193}, + {0xA2AE,0xA2AE,0x3013}, + {0xA2AF,0xA2AF,0x003F}, + {0xA2B0,0xA2B0,0x003F}, /* A2B0 */ + {0xA2B1,0xA2B1,0x003F}, + {0xA2B2,0xA2B2,0x003F}, + {0xA2B3,0xA2B3,0x003F}, + {0xA2B4,0xA2B4,0x003F}, + {0xA2B5,0xA2B5,0x003F}, + {0xA2B6,0xA2B6,0x003F}, + {0xA2B7,0xA2B7,0x003F}, + {0xA2B8,0xA2B8,0x003F}, + {0xA2B9,0xA2B9,0x003F}, + {0xA2BA,0xA2BA,0x2208}, + {0xA2BB,0xA2BB,0x220B}, + {0xA2BC,0xA2BC,0x2286}, + {0xA2BD,0xA2BD,0x2287}, + {0xA2BE,0xA2BE,0x2282}, + {0xA2BF,0xA2BF,0x2283}, + {0xA2C0,0xA2C0,0x222A}, /* A2C0 */ + {0xA2C1,0xA2C1,0x2229}, + {0xA2C2,0xA2C2,0x003F}, + {0xA2C3,0xA2C3,0x003F}, + {0xA2C4,0xA2C4,0x003F}, + {0xA2C5,0xA2C5,0x003F}, + {0xA2C6,0xA2C6,0x003F}, + {0xA2C7,0xA2C7,0x003F}, + {0xA2C8,0xA2C8,0x003F}, + {0xA2C9,0xA2C9,0x003F}, + {0xA2CA,0xA2CA,0x2227}, + {0xA2CB,0xA2CB,0x2228}, + {0xA2CC,0xA2CC,0xFFE2}, + {0xA2CD,0xA2CD,0x21D2}, + {0xA2CE,0xA2CE,0x21D4}, + {0xA2CF,0xA2CF,0x2200}, + {0xA2D0,0xA2D0,0x2203}, /* A2D0 */ + {0xA2D1,0xA2D1,0x003F}, + {0xA2D2,0xA2D2,0x003F}, + {0xA2D3,0xA2D3,0x003F}, + {0xA2D4,0xA2D4,0x003F}, + {0xA2D5,0xA2D5,0x003F}, + {0xA2D6,0xA2D6,0x003F}, + {0xA2D7,0xA2D7,0x003F}, + {0xA2D8,0xA2D8,0x003F}, + {0xA2D9,0xA2D9,0x003F}, + {0xA2DA,0xA2DA,0x003F}, + {0xA2DB,0xA2DB,0x003F}, + {0xA2DC,0xA2DC,0x2220}, + {0xA2DD,0xA2DD,0x22A5}, + {0xA2DE,0xA2DE,0x2312}, + {0xA2DF,0xA2DF,0x2202}, + {0xA2E0,0xA2E0,0x2207}, /* A2E0 */ + {0xA2E1,0xA2E1,0x2261}, + {0xA2E2,0xA2E2,0x2252}, + {0xA2E3,0xA2E3,0x226A}, + {0xA2E4,0xA2E4,0x226B}, + {0xA2E5,0xA2E5,0x221A}, + {0xA2E6,0xA2E6,0x223D}, + {0xA2E7,0xA2E7,0x221D}, + {0xA2E8,0xA2E8,0x2235}, + {0xA2E9,0xA2E9,0x222B}, + {0xA2EA,0xA2EA,0x222C}, + {0xA2EB,0xA2EB,0x003F}, + {0xA2EC,0xA2EC,0x003F}, + {0xA2ED,0xA2ED,0x003F}, + {0xA2EE,0xA2EE,0x003F}, + {0xA2EF,0xA2EF,0x003F}, + {0xA2F0,0xA2F0,0x003F}, /* A2F0 */ + {0xA2F1,0xA2F1,0x003F}, + {0xA2F2,0x8FABA9,0x212B}, + {0xA2F3,0xA2F3,0x2030}, + {0xA2F4,0xA2F4,0x266F}, + {0xA2F5,0xA2F5,0x266D}, + {0xA2F6,0xA2F6,0x266A}, + {0xA2F7,0xA2F7,0x2020}, + {0xA2F8,0xA2F8,0x2021}, + {0xA2F9,0xA2F9,0x00B6}, + {0xA2FA,0xA2FA,0x003F}, + {0xA2FB,0xA2FB,0x003F}, + {0xA2FC,0xA2FC,0x003F}, + {0xA2FD,0xA2FD,0x003F}, + {0xA2FE,0xA2FE,0x25EF}, + {0xA2FF,0xA2FF,0x003F}, +}; + + +static MY_UNICASE_INFO cA3[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA3A0,0xA3A0,0x003F}, /* A3A0 */ + {0xA3A1,0xA3A1,0x003F}, + {0xA3A2,0xA3A2,0x003F}, + {0xA3A3,0xA3A3,0x003F}, + {0xA3A4,0xA3A4,0x003F}, + {0xA3A5,0xA3A5,0x003F}, + {0xA3A6,0xA3A6,0x003F}, + {0xA3A7,0xA3A7,0x003F}, + {0xA3A8,0xA3A8,0x003F}, + {0xA3A9,0xA3A9,0x003F}, + {0xA3AA,0xA3AA,0x003F}, + {0xA3AB,0xA3AB,0x003F}, + {0xA3AC,0xA3AC,0x003F}, + {0xA3AD,0xA3AD,0x003F}, + {0xA3AE,0xA3AE,0x003F}, + {0xA3AF,0xA3AF,0x003F}, + {0xA3B0,0xA3B0,0xFF10}, /* A3B0 */ + {0xA3B1,0xA3B1,0xFF11}, + {0xA3B2,0xA3B2,0xFF12}, + {0xA3B3,0xA3B3,0xFF13}, + {0xA3B4,0xA3B4,0xFF14}, + {0xA3B5,0xA3B5,0xFF15}, + {0xA3B6,0xA3B6,0xFF16}, + {0xA3B7,0xA3B7,0xFF17}, + {0xA3B8,0xA3B8,0xFF18}, + {0xA3B9,0xA3B9,0xFF19}, + {0xA3BA,0xA3BA,0x003F}, + {0xA3BB,0xA3BB,0x003F}, + {0xA3BC,0xA3BC,0x003F}, + {0xA3BD,0xA3BD,0x003F}, + {0xA3BE,0xA3BE,0x003F}, + {0xA3BF,0xA3BF,0x003F}, + {0xA3C0,0xA3C0,0x003F}, /* A3C0 */ + {0xA3C1,0xA3E1,0xFF21}, + {0xA3C2,0xA3E2,0xFF22}, + {0xA3C3,0xA3E3,0xFF23}, + {0xA3C4,0xA3E4,0xFF24}, + {0xA3C5,0xA3E5,0xFF25}, + {0xA3C6,0xA3E6,0xFF26}, + {0xA3C7,0xA3E7,0xFF27}, + {0xA3C8,0xA3E8,0xFF28}, + {0xA3C9,0xA3E9,0xFF29}, + {0xA3CA,0xA3EA,0xFF2A}, + {0xA3CB,0xA3EB,0xFF2B}, + {0xA3CC,0xA3EC,0xFF2C}, + {0xA3CD,0xA3ED,0xFF2D}, + {0xA3CE,0xA3EE,0xFF2E}, + {0xA3CF,0xA3EF,0xFF2F}, + {0xA3D0,0xA3F0,0xFF30}, /* A3D0 */ + {0xA3D1,0xA3F1,0xFF31}, + {0xA3D2,0xA3F2,0xFF32}, + {0xA3D3,0xA3F3,0xFF33}, + {0xA3D4,0xA3F4,0xFF34}, + {0xA3D5,0xA3F5,0xFF35}, + {0xA3D6,0xA3F6,0xFF36}, + {0xA3D7,0xA3F7,0xFF37}, + {0xA3D8,0xA3F8,0xFF38}, + {0xA3D9,0xA3F9,0xFF39}, + {0xA3DA,0xA3FA,0xFF3A}, + {0xA3DB,0xA3DB,0x003F}, + {0xA3DC,0xA3DC,0x003F}, + {0xA3DD,0xA3DD,0x003F}, + {0xA3DE,0xA3DE,0x003F}, + {0xA3DF,0xA3DF,0x003F}, + {0xA3E0,0xA3E0,0x003F}, /* A3E0 */ + {0xA3C1,0xA3E1,0xFF41}, + {0xA3C2,0xA3E2,0xFF42}, + {0xA3C3,0xA3E3,0xFF43}, + {0xA3C4,0xA3E4,0xFF44}, + {0xA3C5,0xA3E5,0xFF45}, + {0xA3C6,0xA3E6,0xFF46}, + {0xA3C7,0xA3E7,0xFF47}, + {0xA3C8,0xA3E8,0xFF48}, + {0xA3C9,0xA3E9,0xFF49}, + {0xA3CA,0xA3EA,0xFF4A}, + {0xA3CB,0xA3EB,0xFF4B}, + {0xA3CC,0xA3EC,0xFF4C}, + {0xA3CD,0xA3ED,0xFF4D}, + {0xA3CE,0xA3EE,0xFF4E}, + {0xA3CF,0xA3EF,0xFF4F}, + {0xA3D0,0xA3F0,0xFF50}, /* A3F0 */ + {0xA3D1,0xA3F1,0xFF51}, + {0xA3D2,0xA3F2,0xFF52}, + {0xA3D3,0xA3F3,0xFF53}, + {0xA3D4,0xA3F4,0xFF54}, + {0xA3D5,0xA3F5,0xFF55}, + {0xA3D6,0xA3F6,0xFF56}, + {0xA3D7,0xA3F7,0xFF57}, + {0xA3D8,0xA3F8,0xFF58}, + {0xA3D9,0xA3F9,0xFF59}, + {0xA3DA,0xA3FA,0xFF5A}, + {0xA3FB,0xA3FB,0x003F}, + {0xA3FC,0xA3FC,0x003F}, + {0xA3FD,0xA3FD,0x003F}, + {0xA3FE,0xA3FE,0x003F}, + {0xA3FF,0xA3FF,0x003F}, +}; + + +static MY_UNICASE_INFO cA6[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA6A0,0xA6A0,0x003F}, /* A6A0 */ + {0xA6A1,0xA6C1,0x0391}, + {0xA6A2,0xA6C2,0x0392}, + {0xA6A3,0xA6C3,0x0393}, + {0xA6A4,0xA6C4,0x0394}, + {0xA6A5,0xA6C5,0x0395}, + {0xA6A6,0xA6C6,0x0396}, + {0xA6A7,0xA6C7,0x0397}, + {0xA6A8,0xA6C8,0x0398}, + {0xA6A9,0xA6C9,0x0399}, + {0xA6AA,0xA6CA,0x039A}, + {0xA6AB,0xA6CB,0x039B}, + {0xA6AC,0xA6CC,0x039C}, + {0xA6AD,0xA6CD,0x039D}, + {0xA6AE,0xA6CE,0x039E}, + {0xA6AF,0xA6CF,0x039F}, + {0xA6B0,0xA6D0,0x03A0}, /* A6B0 */ + {0xA6B1,0xA6D1,0x03A1}, + {0xA6B2,0xA6D2,0x03A3}, + {0xA6B3,0xA6D3,0x03A4}, + {0xA6B4,0xA6D4,0x03A5}, + {0xA6B5,0xA6D5,0x03A6}, + {0xA6B6,0xA6D6,0x03A7}, + {0xA6B7,0xA6D7,0x03A8}, + {0xA6B8,0xA6D8,0x03A9}, + {0xA6B9,0xA6B9,0x003F}, + {0xA6BA,0xA6BA,0x003F}, + {0xA6BB,0xA6BB,0x003F}, + {0xA6BC,0xA6BC,0x003F}, + {0xA6BD,0xA6BD,0x003F}, + {0xA6BE,0xA6BE,0x003F}, + {0xA6BF,0xA6BF,0x003F}, + {0xA6C0,0xA6C0,0x003F}, /* A6C0 */ + {0xA6A1,0xA6C1,0x03B1}, + {0xA6A2,0xA6C2,0x03B2}, + {0xA6A3,0xA6C3,0x03B3}, + {0xA6A4,0xA6C4,0x03B4}, + {0xA6A5,0xA6C5,0x03B5}, + {0xA6A6,0xA6C6,0x03B6}, + {0xA6A7,0xA6C7,0x03B7}, + {0xA6A8,0xA6C8,0x03B8}, + {0xA6A9,0xA6C9,0x03B9}, + {0xA6AA,0xA6CA,0x03BA}, + {0xA6AB,0xA6CB,0x03BB}, + {0xA6AC,0xA6CC,0x03BC}, + {0xA6AD,0xA6CD,0x03BD}, + {0xA6AE,0xA6CE,0x03BE}, + {0xA6AF,0xA6CF,0x03BF}, + {0xA6B0,0xA6D0,0x03C0}, /* A6D0 */ + {0xA6B1,0xA6D1,0x03C1}, + {0xA6B2,0xA6D2,0x03C3}, + {0xA6B3,0xA6D3,0x03C4}, + {0xA6B4,0xA6D4,0x03C5}, + {0xA6B5,0xA6D5,0x03C6}, + {0xA6B6,0xA6D6,0x03C7}, + {0xA6B7,0xA6D7,0x03C8}, + {0xA6B8,0xA6D8,0x03C9}, + {0xA6D9,0xA6D9,0x003F}, + {0xA6DA,0xA6DA,0x003F}, + {0xA6DB,0xA6DB,0x003F}, + {0xA6DC,0xA6DC,0x003F}, + {0xA6DD,0xA6DD,0x003F}, + {0xA6DE,0xA6DE,0x003F}, + {0xA6DF,0xA6DF,0x003F}, + {0xA6E0,0xA6E0,0x003F}, /* A6E0 */ + {0xA6E1,0xA6E1,0x003F}, + {0xA6E2,0xA6E2,0x003F}, + {0xA6E3,0xA6E3,0x003F}, + {0xA6E4,0xA6E4,0x003F}, + {0xA6E5,0xA6E5,0x003F}, + {0xA6E6,0xA6E6,0x003F}, + {0xA6E7,0xA6E7,0x003F}, + {0xA6E8,0xA6E8,0x003F}, + {0xA6E9,0xA6E9,0x003F}, + {0xA6EA,0xA6EA,0x003F}, + {0xA6EB,0xA6EB,0x003F}, + {0xA6EC,0xA6EC,0x003F}, + {0xA6ED,0xA6ED,0x003F}, + {0xA6EE,0xA6EE,0x003F}, + {0xA6EF,0xA6EF,0x003F}, + {0xA6F0,0xA6F0,0x003F}, /* A6F0 */ + {0xA6F1,0xA6F1,0x003F}, + {0xA6F2,0xA6F2,0x003F}, + {0xA6F3,0xA6F3,0x003F}, + {0xA6F4,0xA6F4,0x003F}, + {0xA6F5,0xA6F5,0x003F}, + {0xA6F6,0xA6F6,0x003F}, + {0xA6F7,0xA6F7,0x003F}, + {0xA6F8,0xA6F8,0x003F}, + {0xA6F9,0xA6F9,0x003F}, + {0xA6FA,0xA6FA,0x003F}, + {0xA6FB,0xA6FB,0x003F}, + {0xA6FC,0xA6FC,0x003F}, + {0xA6FD,0xA6FD,0x003F}, + {0xA6FE,0xA6FE,0x003F}, + {0xA6FF,0xA6FF,0x003F}, +}; + + +static MY_UNICASE_INFO cA7[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA7A0,0xA7A0,0x003F}, /* A7A0 */ + {0xA7A1,0xA7D1,0x0410}, + {0xA7A2,0xA7D2,0x0411}, + {0xA7A3,0xA7D3,0x0412}, + {0xA7A4,0xA7D4,0x0413}, + {0xA7A5,0xA7D5,0x0414}, + {0xA7A6,0xA7D6,0x0415}, + {0xA7A7,0xA7D7,0x0401}, + {0xA7A8,0xA7D8,0x0416}, + {0xA7A9,0xA7D9,0x0417}, + {0xA7AA,0xA7DA,0x0418}, + {0xA7AB,0xA7DB,0x0419}, + {0xA7AC,0xA7DC,0x041A}, + {0xA7AD,0xA7DD,0x041B}, + {0xA7AE,0xA7DE,0x041C}, + {0xA7AF,0xA7DF,0x041D}, + {0xA7B0,0xA7E0,0x041E}, /* A7B0 */ + {0xA7B1,0xA7E1,0x041F}, + {0xA7B2,0xA7E2,0x0420}, + {0xA7B3,0xA7E3,0x0421}, + {0xA7B4,0xA7E4,0x0422}, + {0xA7B5,0xA7E5,0x0423}, + {0xA7B6,0xA7E6,0x0424}, + {0xA7B7,0xA7E7,0x0425}, + {0xA7B8,0xA7E8,0x0426}, + {0xA7B9,0xA7E9,0x0427}, + {0xA7BA,0xA7EA,0x0428}, + {0xA7BB,0xA7EB,0x0429}, + {0xA7BC,0xA7EC,0x042A}, + {0xA7BD,0xA7ED,0x042B}, + {0xA7BE,0xA7EE,0x042C}, + {0xA7BF,0xA7EF,0x042D}, + {0xA7C0,0xA7F0,0x042E}, /* A7C0 */ + {0xA7C1,0xA7F1,0x042F}, + {0xA7C2,0xA7C2,0x003F}, + {0xA7C3,0xA7C3,0x003F}, + {0xA7C4,0xA7C4,0x003F}, + {0xA7C5,0xA7C5,0x003F}, + {0xA7C6,0xA7C6,0x003F}, + {0xA7C7,0xA7C7,0x003F}, + {0xA7C8,0xA7C8,0x003F}, + {0xA7C9,0xA7C9,0x003F}, + {0xA7CA,0xA7CA,0x003F}, + {0xA7CB,0xA7CB,0x003F}, + {0xA7CC,0xA7CC,0x003F}, + {0xA7CD,0xA7CD,0x003F}, + {0xA7CE,0xA7CE,0x003F}, + {0xA7CF,0xA7CF,0x003F}, + {0xA7D0,0xA7D0,0x003F}, /* A7D0 */ + {0xA7A1,0xA7D1,0x0430}, + {0xA7A2,0xA7D2,0x0431}, + {0xA7A3,0xA7D3,0x0432}, + {0xA7A4,0xA7D4,0x0433}, + {0xA7A5,0xA7D5,0x0434}, + {0xA7A6,0xA7D6,0x0435}, + {0xA7A7,0xA7D7,0x0451}, + {0xA7A8,0xA7D8,0x0436}, + {0xA7A9,0xA7D9,0x0437}, + {0xA7AA,0xA7DA,0x0438}, + {0xA7AB,0xA7DB,0x0439}, + {0xA7AC,0xA7DC,0x043A}, + {0xA7AD,0xA7DD,0x043B}, + {0xA7AE,0xA7DE,0x043C}, + {0xA7AF,0xA7DF,0x043D}, + {0xA7B0,0xA7E0,0x043E}, /* A7E0 */ + {0xA7B1,0xA7E1,0x043F}, + {0xA7B2,0xA7E2,0x0440}, + {0xA7B3,0xA7E3,0x0441}, + {0xA7B4,0xA7E4,0x0442}, + {0xA7B5,0xA7E5,0x0443}, + {0xA7B6,0xA7E6,0x0444}, + {0xA7B7,0xA7E7,0x0445}, + {0xA7B8,0xA7E8,0x0446}, + {0xA7B9,0xA7E9,0x0447}, + {0xA7BA,0xA7EA,0x0448}, + {0xA7BB,0xA7EB,0x0449}, + {0xA7BC,0xA7EC,0x044A}, + {0xA7BD,0xA7ED,0x044B}, + {0xA7BE,0xA7EE,0x044C}, + {0xA7BF,0xA7EF,0x044D}, + {0xA7C0,0xA7F0,0x044E}, /* A7F0 */ + {0xA7C1,0xA7F1,0x044F}, + {0xA7F2,0xA7F2,0x003F}, + {0xA7F3,0xA7F3,0x003F}, + {0xA7F4,0xA7F4,0x003F}, + {0xA7F5,0xA7F5,0x003F}, + {0xA7F6,0xA7F6,0x003F}, + {0xA7F7,0xA7F7,0x003F}, + {0xA7F8,0xA7F8,0x003F}, + {0xA7F9,0xA7F9,0x003F}, + {0xA7FA,0xA7FA,0x003F}, + {0xA7FB,0xA7FB,0x003F}, + {0xA7FC,0xA7FC,0x003F}, + {0xA7FD,0xA7FD,0x003F}, + {0xA7FE,0xA7FE,0x003F}, + {0xA7FF,0xA7FF,0x003F}, +}; + + +static MY_UNICASE_INFO cAD[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xADA0,0xADA0,0x003F}, /* ADA0 */ + {0xADA1,0xADA1,0x2460}, + {0xADA2,0xADA2,0x2461}, + {0xADA3,0xADA3,0x2462}, + {0xADA4,0xADA4,0x2463}, + {0xADA5,0xADA5,0x2464}, + {0xADA6,0xADA6,0x2465}, + {0xADA7,0xADA7,0x2466}, + {0xADA8,0xADA8,0x2467}, + {0xADA9,0xADA9,0x2468}, + {0xADAA,0xADAA,0x2469}, + {0xADAB,0xADAB,0x246A}, + {0xADAC,0xADAC,0x246B}, + {0xADAD,0xADAD,0x246C}, + {0xADAE,0xADAE,0x246D}, + {0xADAF,0xADAF,0x246E}, + {0xADB0,0xADB0,0x246F}, /* ADB0 */ + {0xADB1,0xADB1,0x2470}, + {0xADB2,0xADB2,0x2471}, + {0xADB3,0xADB3,0x2472}, + {0xADB4,0xADB4,0x2473}, + {0xADB5,0x8FF3F3,0x2160}, + {0xADB6,0x8FF3F4,0x2161}, + {0xADB7,0x8FF3F5,0x2162}, + {0xADB8,0x8FF3F6,0x2163}, + {0xADB9,0x8FF3F7,0x2164}, + {0xADBA,0x8FF3F8,0x2165}, + {0xADBB,0x8FF3F9,0x2166}, + {0xADBC,0x8FF3FA,0x2167}, + {0xADBD,0x8FF3FB,0x2168}, + {0xADBE,0x8FF3FC,0x2169}, + {0xADBF,0xADBF,0x003F}, + {0xADC0,0xADC0,0x3349}, /* ADC0 */ + {0xADC1,0xADC1,0x3314}, + {0xADC2,0xADC2,0x3322}, + {0xADC3,0xADC3,0x334D}, + {0xADC4,0xADC4,0x3318}, + {0xADC5,0xADC5,0x3327}, + {0xADC6,0xADC6,0x3303}, + {0xADC7,0xADC7,0x3336}, + {0xADC8,0xADC8,0x3351}, + {0xADC9,0xADC9,0x3357}, + {0xADCA,0xADCA,0x330D}, + {0xADCB,0xADCB,0x3326}, + {0xADCC,0xADCC,0x3323}, + {0xADCD,0xADCD,0x332B}, + {0xADCE,0xADCE,0x334A}, + {0xADCF,0xADCF,0x333B}, + {0xADD0,0xADD0,0x339C}, /* ADD0 */ + {0xADD1,0xADD1,0x339D}, + {0xADD2,0xADD2,0x339E}, + {0xADD3,0xADD3,0x338E}, + {0xADD4,0xADD4,0x338F}, + {0xADD5,0xADD5,0x33C4}, + {0xADD6,0xADD6,0x33A1}, + {0xADD7,0xADD7,0x003F}, + {0xADD8,0xADD8,0x003F}, + {0xADD9,0xADD9,0x003F}, + {0xADDA,0xADDA,0x003F}, + {0xADDB,0xADDB,0x003F}, + {0xADDC,0xADDC,0x003F}, + {0xADDD,0xADDD,0x003F}, + {0xADDE,0xADDE,0x003F}, + {0xADDF,0xADDF,0x337B}, + {0xADE0,0xADE0,0x301D}, /* ADE0 */ + {0xADE1,0xADE1,0x301F}, + {0xADE2,0xADE2,0x2116}, + {0xADE3,0xADE3,0x33CD}, + {0xADE4,0xADE4,0x2121}, + {0xADE5,0xADE5,0x32A4}, + {0xADE6,0xADE6,0x32A5}, + {0xADE7,0xADE7,0x32A6}, + {0xADE8,0xADE8,0x32A7}, + {0xADE9,0xADE9,0x32A8}, + {0xADEA,0xADEA,0x3231}, + {0xADEB,0xADEB,0x3232}, + {0xADEC,0xADEC,0x3239}, + {0xADED,0xADED,0x337E}, + {0xADEE,0xADEE,0x337D}, + {0xADEF,0xADEF,0x337C}, + {0xADF0,0xADF0,0x2252}, /* ADF0 */ + {0xADF1,0xADF1,0x2261}, + {0xADF2,0xADF2,0x222B}, + {0xADF3,0xADF3,0x222E}, + {0xADF4,0xADF4,0x2211}, + {0xADF5,0xADF5,0x221A}, + {0xADF6,0xADF6,0x22A5}, + {0xADF7,0xADF7,0x2220}, + {0xADF8,0xADF8,0x221F}, + {0xADF9,0xADF9,0x22BF}, + {0xADFA,0xADFA,0x2235}, + {0xADFB,0xADFB,0x2229}, + {0xADFC,0xADFC,0x222A}, + {0xADFD,0xADFD,0x003F}, + {0xADFE,0xADFE,0x003F}, + {0xADFF,0xADFF,0x003F}, +}; + + +/* Case info pages for JIS-X-0212 range */ + +static MY_UNICASE_INFO c8FA6[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FA6A0,0x8FA6A0,0x003F}, /* 8FA6A0 */ + {0x8FA6A1,0x8FA6A1,0x003F}, + {0x8FA6A2,0x8FA6A2,0x003F}, + {0x8FA6A3,0x8FA6A3,0x003F}, + {0x8FA6A4,0x8FA6A4,0x003F}, + {0x8FA6A5,0x8FA6A5,0x003F}, + {0x8FA6A6,0x8FA6A6,0x003F}, + {0x8FA6A7,0x8FA6A7,0x003F}, + {0x8FA6A8,0x8FA6A8,0x003F}, + {0x8FA6A9,0x8FA6A9,0x003F}, + {0x8FA6AA,0x8FA6AA,0x003F}, + {0x8FA6AB,0x8FA6AB,0x003F}, + {0x8FA6AC,0x8FA6AC,0x003F}, + {0x8FA6AD,0x8FA6AD,0x003F}, + {0x8FA6AE,0x8FA6AE,0x003F}, + {0x8FA6AF,0x8FA6AF,0x003F}, + {0x8FA6B0,0x8FA6B0,0x003F}, /* 8FA6B0 */ + {0x8FA6B1,0x8FA6B1,0x003F}, + {0x8FA6B2,0x8FA6B2,0x003F}, + {0x8FA6B3,0x8FA6B3,0x003F}, + {0x8FA6B4,0x8FA6B4,0x003F}, + {0x8FA6B5,0x8FA6B5,0x003F}, + {0x8FA6B6,0x8FA6B6,0x003F}, + {0x8FA6B7,0x8FA6B7,0x003F}, + {0x8FA6B8,0x8FA6B8,0x003F}, + {0x8FA6B9,0x8FA6B9,0x003F}, + {0x8FA6BA,0x8FA6BA,0x003F}, + {0x8FA6BB,0x8FA6BB,0x003F}, + {0x8FA6BC,0x8FA6BC,0x003F}, + {0x8FA6BD,0x8FA6BD,0x003F}, + {0x8FA6BE,0x8FA6BE,0x003F}, + {0x8FA6BF,0x8FA6BF,0x003F}, + {0x8FA6C0,0x8FA6C0,0x003F}, /* 8FA6C0 */ + {0x8FA6C1,0x8FA6C1,0x003F}, + {0x8FA6C2,0x8FA6C2,0x003F}, + {0x8FA6C3,0x8FA6C3,0x003F}, + {0x8FA6C4,0x8FA6C4,0x003F}, + {0x8FA6C5,0x8FA6C5,0x003F}, + {0x8FA6C6,0x8FA6C6,0x003F}, + {0x8FA6C7,0x8FA6C7,0x003F}, + {0x8FA6C8,0x8FA6C8,0x003F}, + {0x8FA6C9,0x8FA6C9,0x003F}, + {0x8FA6CA,0x8FA6CA,0x003F}, + {0x8FA6CB,0x8FA6CB,0x003F}, + {0x8FA6CC,0x8FA6CC,0x003F}, + {0x8FA6CD,0x8FA6CD,0x003F}, + {0x8FA6CE,0x8FA6CE,0x003F}, + {0x8FA6CF,0x8FA6CF,0x003F}, + {0x8FA6D0,0x8FA6D0,0x003F}, /* 8FA6D0 */ + {0x8FA6D1,0x8FA6D1,0x003F}, + {0x8FA6D2,0x8FA6D2,0x003F}, + {0x8FA6D3,0x8FA6D3,0x003F}, + {0x8FA6D4,0x8FA6D4,0x003F}, + {0x8FA6D5,0x8FA6D5,0x003F}, + {0x8FA6D6,0x8FA6D6,0x003F}, + {0x8FA6D7,0x8FA6D7,0x003F}, + {0x8FA6D8,0x8FA6D8,0x003F}, + {0x8FA6D9,0x8FA6D9,0x003F}, + {0x8FA6DA,0x8FA6DA,0x003F}, + {0x8FA6DB,0x8FA6DB,0x003F}, + {0x8FA6DC,0x8FA6DC,0x003F}, + {0x8FA6DD,0x8FA6DD,0x003F}, + {0x8FA6DE,0x8FA6DE,0x003F}, + {0x8FA6DF,0x8FA6DF,0x003F}, + {0x8FA6E0,0x8FA6E0,0x003F}, /* 8FA6E0 */ + {0x8FA6E1,0x8FA6F1,0x0386}, + {0x8FA6E2,0x8FA6F2,0x0388}, + {0x8FA6E3,0x8FA6F3,0x0389}, + {0x8FA6E4,0x8FA6F4,0x038A}, + {0x8FA6E5,0x8FA6F5,0x03AA}, + {0x8FA6E6,0x8FA6E6,0x003F}, + {0x8FA6E7,0x8FA6F7,0x038C}, + {0x8FA6E8,0x8FA6E8,0x003F}, + {0x8FA6E9,0x8FA6F9,0x038E}, + {0x8FA6EA,0x8FA6FA,0x03AB}, + {0x8FA6EB,0x8FA6EB,0x003F}, + {0x8FA6EC,0x8FA6FC,0x038F}, + {0x8FA6ED,0x8FA6ED,0x003F}, + {0x8FA6EE,0x8FA6EE,0x003F}, + {0x8FA6EF,0x8FA6EF,0x003F}, + {0x8FA6F0,0x8FA6F0,0x003F}, /* 8FA6F0 */ + {0x8FA6E1,0x8FA6F1,0x03AC}, + {0x8FA6E2,0x8FA6F2,0x03AD}, + {0x8FA6E3,0x8FA6F3,0x03AE}, + {0x8FA6E4,0x8FA6F4,0x03AF}, + {0x8FA6E5,0x8FA6F5,0x03CA}, + {0x8FA6F6,0x8FA6F6,0x0390}, + {0x8FA6E7,0x8FA6F7,0x03CC}, + {0xA6B2,0x8FA6F8,0x03C2}, + {0x8FA6E9,0x8FA6F9,0x03CD}, + {0x8FA6EA,0x8FA6FA,0x03CB}, + {0x8FA6FB,0x8FA6FB,0x03B0}, + {0x8FA6EC,0x8FA6FC,0x03CE}, + {0x8FA6FD,0x8FA6FD,0x003F}, + {0x8FA6FE,0x8FA6FE,0x003F}, + {0x8FA6FF,0x8FA6FF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FA7[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FA7A0,0x8FA7A0,0x003F}, /* 8FA7A0 */ + {0x8FA7A1,0x8FA7A1,0x003F}, + {0x8FA7A2,0x8FA7A2,0x003F}, + {0x8FA7A3,0x8FA7A3,0x003F}, + {0x8FA7A4,0x8FA7A4,0x003F}, + {0x8FA7A5,0x8FA7A5,0x003F}, + {0x8FA7A6,0x8FA7A6,0x003F}, + {0x8FA7A7,0x8FA7A7,0x003F}, + {0x8FA7A8,0x8FA7A8,0x003F}, + {0x8FA7A9,0x8FA7A9,0x003F}, + {0x8FA7AA,0x8FA7AA,0x003F}, + {0x8FA7AB,0x8FA7AB,0x003F}, + {0x8FA7AC,0x8FA7AC,0x003F}, + {0x8FA7AD,0x8FA7AD,0x003F}, + {0x8FA7AE,0x8FA7AE,0x003F}, + {0x8FA7AF,0x8FA7AF,0x003F}, + {0x8FA7B0,0x8FA7B0,0x003F}, /* 8FA7B0 */ + {0x8FA7B1,0x8FA7B1,0x003F}, + {0x8FA7B2,0x8FA7B2,0x003F}, + {0x8FA7B3,0x8FA7B3,0x003F}, + {0x8FA7B4,0x8FA7B4,0x003F}, + {0x8FA7B5,0x8FA7B5,0x003F}, + {0x8FA7B6,0x8FA7B6,0x003F}, + {0x8FA7B7,0x8FA7B7,0x003F}, + {0x8FA7B8,0x8FA7B8,0x003F}, + {0x8FA7B9,0x8FA7B9,0x003F}, + {0x8FA7BA,0x8FA7BA,0x003F}, + {0x8FA7BB,0x8FA7BB,0x003F}, + {0x8FA7BC,0x8FA7BC,0x003F}, + {0x8FA7BD,0x8FA7BD,0x003F}, + {0x8FA7BE,0x8FA7BE,0x003F}, + {0x8FA7BF,0x8FA7BF,0x003F}, + {0x8FA7C0,0x8FA7C0,0x003F}, /* 8FA7C0 */ + {0x8FA7C1,0x8FA7C1,0x003F}, + {0x8FA7C2,0x8FA7F2,0x0402}, + {0x8FA7C3,0x8FA7F3,0x0403}, + {0x8FA7C4,0x8FA7F4,0x0404}, + {0x8FA7C5,0x8FA7F5,0x0405}, + {0x8FA7C6,0x8FA7F6,0x0406}, + {0x8FA7C7,0x8FA7F7,0x0407}, + {0x8FA7C8,0x8FA7F8,0x0408}, + {0x8FA7C9,0x8FA7F9,0x0409}, + {0x8FA7CA,0x8FA7FA,0x040A}, + {0x8FA7CB,0x8FA7FB,0x040B}, + {0x8FA7CC,0x8FA7FC,0x040C}, + {0x8FA7CD,0x8FA7FD,0x040E}, + {0x8FA7CE,0x8FA7FE,0x040F}, + {0x8FA7CF,0x8FA7CF,0x003F}, + {0x8FA7D0,0x8FA7D0,0x003F}, /* 8FA7D0 */ + {0x8FA7D1,0x8FA7D1,0x003F}, + {0x8FA7D2,0x8FA7D2,0x003F}, + {0x8FA7D3,0x8FA7D3,0x003F}, + {0x8FA7D4,0x8FA7D4,0x003F}, + {0x8FA7D5,0x8FA7D5,0x003F}, + {0x8FA7D6,0x8FA7D6,0x003F}, + {0x8FA7D7,0x8FA7D7,0x003F}, + {0x8FA7D8,0x8FA7D8,0x003F}, + {0x8FA7D9,0x8FA7D9,0x003F}, + {0x8FA7DA,0x8FA7DA,0x003F}, + {0x8FA7DB,0x8FA7DB,0x003F}, + {0x8FA7DC,0x8FA7DC,0x003F}, + {0x8FA7DD,0x8FA7DD,0x003F}, + {0x8FA7DE,0x8FA7DE,0x003F}, + {0x8FA7DF,0x8FA7DF,0x003F}, + {0x8FA7E0,0x8FA7E0,0x003F}, /* 8FA7E0 */ + {0x8FA7E1,0x8FA7E1,0x003F}, + {0x8FA7E2,0x8FA7E2,0x003F}, + {0x8FA7E3,0x8FA7E3,0x003F}, + {0x8FA7E4,0x8FA7E4,0x003F}, + {0x8FA7E5,0x8FA7E5,0x003F}, + {0x8FA7E6,0x8FA7E6,0x003F}, + {0x8FA7E7,0x8FA7E7,0x003F}, + {0x8FA7E8,0x8FA7E8,0x003F}, + {0x8FA7E9,0x8FA7E9,0x003F}, + {0x8FA7EA,0x8FA7EA,0x003F}, + {0x8FA7EB,0x8FA7EB,0x003F}, + {0x8FA7EC,0x8FA7EC,0x003F}, + {0x8FA7ED,0x8FA7ED,0x003F}, + {0x8FA7EE,0x8FA7EE,0x003F}, + {0x8FA7EF,0x8FA7EF,0x003F}, + {0x8FA7F0,0x8FA7F0,0x003F}, /* 8FA7F0 */ + {0x8FA7F1,0x8FA7F1,0x003F}, + {0x8FA7C2,0x8FA7F2,0x0452}, + {0x8FA7C3,0x8FA7F3,0x0453}, + {0x8FA7C4,0x8FA7F4,0x0454}, + {0x8FA7C5,0x8FA7F5,0x0455}, + {0x8FA7C6,0x8FA7F6,0x0456}, + {0x8FA7C7,0x8FA7F7,0x0457}, + {0x8FA7C8,0x8FA7F8,0x0458}, + {0x8FA7C9,0x8FA7F9,0x0459}, + {0x8FA7CA,0x8FA7FA,0x045A}, + {0x8FA7CB,0x8FA7FB,0x045B}, + {0x8FA7CC,0x8FA7FC,0x045C}, + {0x8FA7CD,0x8FA7FD,0x045E}, + {0x8FA7CE,0x8FA7FE,0x045F}, + {0x8FA7FF,0x8FA7FF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FA9[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FA9A0,0x8FA9A0,0x003F}, /* 8FA9A0 */ + {0x8FA9A1,0x8FA9C1,0x00C6}, + {0x8FA9A2,0x8FA9C2,0x0110}, + {0x8FA9A3,0x8FA9A3,0x003F}, + {0x8FA9A4,0x8FA9C4,0x0126}, + {0x8FA9A5,0x8FA9A5,0x003F}, + {0x8FA9A6,0x8FA9C6,0x0132}, + {0x8FA9A7,0x8FA9A7,0x003F}, + {0x8FA9A8,0x8FA9C8,0x0141}, + {0x8FA9A9,0x8FA9C9,0x013F}, + {0x8FA9AA,0x8FA9AA,0x003F}, + {0x8FA9AB,0x8FA9CB,0x014A}, + {0x8FA9AC,0x8FA9CC,0x00D8}, + {0x8FA9AD,0x8FA9CD,0x0152}, + {0x8FA9AE,0x8FA9AE,0x003F}, + {0x8FA9AF,0x8FA9CF,0x0166}, + {0x8FA9B0,0x8FA9D0,0x00DE}, /* 8FA9B0 */ + {0x8FA9B1,0x8FA9B1,0x003F}, + {0x8FA9B2,0x8FA9B2,0x003F}, + {0x8FA9B3,0x8FA9B3,0x003F}, + {0x8FA9B4,0x8FA9B4,0x003F}, + {0x8FA9B5,0x8FA9B5,0x003F}, + {0x8FA9B6,0x8FA9B6,0x003F}, + {0x8FA9B7,0x8FA9B7,0x003F}, + {0x8FA9B8,0x8FA9B8,0x003F}, + {0x8FA9B9,0x8FA9B9,0x003F}, + {0x8FA9BA,0x8FA9BA,0x003F}, + {0x8FA9BB,0x8FA9BB,0x003F}, + {0x8FA9BC,0x8FA9BC,0x003F}, + {0x8FA9BD,0x8FA9BD,0x003F}, + {0x8FA9BE,0x8FA9BE,0x003F}, + {0x8FA9BF,0x8FA9BF,0x003F}, + {0x8FA9C0,0x8FA9C0,0x003F}, /* 8FA9C0 */ + {0x8FA9A1,0x8FA9C1,0x00E6}, + {0x8FA9A2,0x8FA9C2,0x0111}, + {0x8FA9C3,0x8FA9C3,0x00F0}, + {0x8FA9A4,0x8FA9C4,0x0127}, + {0x49,0x8FA9C5,0x0131}, + {0x8FA9A6,0x8FA9C6,0x0133}, + {0x8FA9C7,0x8FA9C7,0x0138}, + {0x8FA9A8,0x8FA9C8,0x0142}, + {0x8FA9A9,0x8FA9C9,0x0140}, + {0x8FA9CA,0x8FA9CA,0x0149}, + {0x8FA9AB,0x8FA9CB,0x014B}, + {0x8FA9AC,0x8FA9CC,0x00F8}, + {0x8FA9AD,0x8FA9CD,0x0153}, + {0x8FA9CE,0x8FA9CE,0x00DF}, + {0x8FA9AF,0x8FA9CF,0x0167}, + {0x8FA9B0,0x8FA9D0,0x00FE}, /* 8FA9D0 */ + {0x8FA9D1,0x8FA9D1,0x003F}, + {0x8FA9D2,0x8FA9D2,0x003F}, + {0x8FA9D3,0x8FA9D3,0x003F}, + {0x8FA9D4,0x8FA9D4,0x003F}, + {0x8FA9D5,0x8FA9D5,0x003F}, + {0x8FA9D6,0x8FA9D6,0x003F}, + {0x8FA9D7,0x8FA9D7,0x003F}, + {0x8FA9D8,0x8FA9D8,0x003F}, + {0x8FA9D9,0x8FA9D9,0x003F}, + {0x8FA9DA,0x8FA9DA,0x003F}, + {0x8FA9DB,0x8FA9DB,0x003F}, + {0x8FA9DC,0x8FA9DC,0x003F}, + {0x8FA9DD,0x8FA9DD,0x003F}, + {0x8FA9DE,0x8FA9DE,0x003F}, + {0x8FA9DF,0x8FA9DF,0x003F}, + {0x8FA9E0,0x8FA9E0,0x003F}, /* 8FA9E0 */ + {0x8FA9E1,0x8FA9E1,0x003F}, + {0x8FA9E2,0x8FA9E2,0x003F}, + {0x8FA9E3,0x8FA9E3,0x003F}, + {0x8FA9E4,0x8FA9E4,0x003F}, + {0x8FA9E5,0x8FA9E5,0x003F}, + {0x8FA9E6,0x8FA9E6,0x003F}, + {0x8FA9E7,0x8FA9E7,0x003F}, + {0x8FA9E8,0x8FA9E8,0x003F}, + {0x8FA9E9,0x8FA9E9,0x003F}, + {0x8FA9EA,0x8FA9EA,0x003F}, + {0x8FA9EB,0x8FA9EB,0x003F}, + {0x8FA9EC,0x8FA9EC,0x003F}, + {0x8FA9ED,0x8FA9ED,0x003F}, + {0x8FA9EE,0x8FA9EE,0x003F}, + {0x8FA9EF,0x8FA9EF,0x003F}, + {0x8FA9F0,0x8FA9F0,0x003F}, /* 8FA9F0 */ + {0x8FA9F1,0x8FA9F1,0x003F}, + {0x8FA9F2,0x8FA9F2,0x003F}, + {0x8FA9F3,0x8FA9F3,0x003F}, + {0x8FA9F4,0x8FA9F4,0x003F}, + {0x8FA9F5,0x8FA9F5,0x003F}, + {0x8FA9F6,0x8FA9F6,0x003F}, + {0x8FA9F7,0x8FA9F7,0x003F}, + {0x8FA9F8,0x8FA9F8,0x003F}, + {0x8FA9F9,0x8FA9F9,0x003F}, + {0x8FA9FA,0x8FA9FA,0x003F}, + {0x8FA9FB,0x8FA9FB,0x003F}, + {0x8FA9FC,0x8FA9FC,0x003F}, + {0x8FA9FD,0x8FA9FD,0x003F}, + {0x8FA9FE,0x8FA9FE,0x003F}, + {0x8FA9FF,0x8FA9FF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FAA[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FAAA0,0x8FAAA0,0x003F}, /* 8FAAA0 */ + {0x8FAAA1,0x8FABA1,0x00C1}, + {0x8FAAA2,0x8FABA2,0x00C0}, + {0x8FAAA3,0x8FABA3,0x00C4}, + {0x8FAAA4,0x8FABA4,0x00C2}, + {0x8FAAA5,0x8FABA5,0x0102}, + {0x8FAAA6,0x8FABA6,0x01CD}, + {0x8FAAA7,0x8FABA7,0x0100}, + {0x8FAAA8,0x8FABA8,0x0104}, + {0x8FAAA9,0x8FABA9,0x00C5}, + {0x8FAAAA,0x8FABAA,0x00C3}, + {0x8FAAAB,0x8FABAB,0x0106}, + {0x8FAAAC,0x8FABAC,0x0108}, + {0x8FAAAD,0x8FABAD,0x010C}, + {0x8FAAAE,0x8FABAE,0x00C7}, + {0x8FAAAF,0x8FABAF,0x010A}, + {0x8FAAB0,0x8FABB0,0x010E}, /* 8FAAB0 */ + {0x8FAAB1,0x8FABB1,0x00C9}, + {0x8FAAB2,0x8FABB2,0x00C8}, + {0x8FAAB3,0x8FABB3,0x00CB}, + {0x8FAAB4,0x8FABB4,0x00CA}, + {0x8FAAB5,0x8FABB5,0x011A}, + {0x8FAAB6,0x8FABB6,0x0116}, + {0x8FAAB7,0x8FABB7,0x0112}, + {0x8FAAB8,0x8FABB8,0x0118}, + {0x8FAAB9,0x8FAAB9,0x003F}, + {0x8FAABA,0x8FABBA,0x011C}, + {0x8FAABB,0x8FABBB,0x011E}, + {0x8FAABC,0x8FAABC,0x0122}, + {0x8FAABD,0x8FABBD,0x0120}, + {0x8FAABE,0x8FABBE,0x0124}, + {0x8FAABF,0x8FABBF,0x00CD}, + {0x8FAAC0,0x8FABC0,0x00CC}, /* 8FAAC0 */ + {0x8FAAC1,0x8FABC1,0x00CF}, + {0x8FAAC2,0x8FABC2,0x00CE}, + {0x8FAAC3,0x8FABC3,0x01CF}, + {0x8FAAC4,0x69,0x0130}, + {0x8FAAC5,0x8FABC5,0x012A}, + {0x8FAAC6,0x8FABC6,0x012E}, + {0x8FAAC7,0x8FABC7,0x0128}, + {0x8FAAC8,0x8FABC8,0x0134}, + {0x8FAAC9,0x8FABC9,0x0136}, + {0x8FAACA,0x8FABCA,0x0139}, + {0x8FAACB,0x8FABCB,0x013D}, + {0x8FAACC,0x8FABCC,0x013B}, + {0x8FAACD,0x8FABCD,0x0143}, + {0x8FAACE,0x8FABCE,0x0147}, + {0x8FAACF,0x8FABCF,0x0145}, + {0x8FAAD0,0x8FABD0,0x00D1}, /* 8FAAD0 */ + {0x8FAAD1,0x8FABD1,0x00D3}, + {0x8FAAD2,0x8FABD2,0x00D2}, + {0x8FAAD3,0x8FABD3,0x00D6}, + {0x8FAAD4,0x8FABD4,0x00D4}, + {0x8FAAD5,0x8FABD5,0x01D1}, + {0x8FAAD6,0x8FABD6,0x0150}, + {0x8FAAD7,0x8FABD7,0x014C}, + {0x8FAAD8,0x8FABD8,0x00D5}, + {0x8FAAD9,0x8FABD9,0x0154}, + {0x8FAADA,0x8FABDA,0x0158}, + {0x8FAADB,0x8FABDB,0x0156}, + {0x8FAADC,0x8FABDC,0x015A}, + {0x8FAADD,0x8FABDD,0x015C}, + {0x8FAADE,0x8FABDE,0x0160}, + {0x8FAADF,0x8FABDF,0x015E}, + {0x8FAAE0,0x8FABE0,0x0164}, /* 8FAAE0 */ + {0x8FAAE1,0x8FABE1,0x0162}, + {0x8FAAE2,0x8FABE2,0x00DA}, + {0x8FAAE3,0x8FABE3,0x00D9}, + {0x8FAAE4,0x8FABE4,0x00DC}, + {0x8FAAE5,0x8FABE5,0x00DB}, + {0x8FAAE6,0x8FABE6,0x016C}, + {0x8FAAE7,0x8FABE7,0x01D3}, + {0x8FAAE8,0x8FABE8,0x0170}, + {0x8FAAE9,0x8FABE9,0x016A}, + {0x8FAAEA,0x8FABEA,0x0172}, + {0x8FAAEB,0x8FABEB,0x016E}, + {0x8FAAEC,0x8FABEC,0x0168}, + {0x8FAAED,0x8FABED,0x01D7}, + {0x8FAAEE,0x8FABEE,0x01DB}, + {0x8FAAEF,0x8FABEF,0x01D9}, + {0x8FAAF0,0x8FABF0,0x01D5}, /* 8FAAF0 */ + {0x8FAAF1,0x8FABF1,0x0174}, + {0x8FAAF2,0x8FABF2,0x00DD}, + {0x8FAAF3,0x8FABF3,0x0178}, + {0x8FAAF4,0x8FABF4,0x0176}, + {0x8FAAF5,0x8FABF5,0x0179}, + {0x8FAAF6,0x8FABF6,0x017D}, + {0x8FAAF7,0x8FABF7,0x017B}, + {0x8FAAF8,0x8FAAF8,0x003F}, + {0x8FAAF9,0x8FAAF9,0x003F}, + {0x8FAAFA,0x8FAAFA,0x003F}, + {0x8FAAFB,0x8FAAFB,0x003F}, + {0x8FAAFC,0x8FAAFC,0x003F}, + {0x8FAAFD,0x8FAAFD,0x003F}, + {0x8FAAFE,0x8FAAFE,0x003F}, + {0x8FAAFF,0x8FAAFF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FAB[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FABA0,0x8FABA0,0x003F}, /* 8FABA0 */ + {0x8FAAA1,0x8FABA1,0x00E1}, + {0x8FAAA2,0x8FABA2,0x00E0}, + {0x8FAAA3,0x8FABA3,0x00E4}, + {0x8FAAA4,0x8FABA4,0x00E2}, + {0x8FAAA5,0x8FABA5,0x0103}, + {0x8FAAA6,0x8FABA6,0x01CE}, + {0x8FAAA7,0x8FABA7,0x0101}, + {0x8FAAA8,0x8FABA8,0x0105}, + {0x8FAAA9,0x8FABA9,0x00E5}, + {0x8FAAAA,0x8FABAA,0x00E3}, + {0x8FAAAB,0x8FABAB,0x0107}, + {0x8FAAAC,0x8FABAC,0x0109}, + {0x8FAAAD,0x8FABAD,0x010D}, + {0x8FAAAE,0x8FABAE,0x00E7}, + {0x8FAAAF,0x8FABAF,0x010B}, + {0x8FAAB0,0x8FABB0,0x010F}, /* 8FABB0 */ + {0x8FAAB1,0x8FABB1,0x00E9}, + {0x8FAAB2,0x8FABB2,0x00E8}, + {0x8FAAB3,0x8FABB3,0x00EB}, + {0x8FAAB4,0x8FABB4,0x00EA}, + {0x8FAAB5,0x8FABB5,0x011B}, + {0x8FAAB6,0x8FABB6,0x0117}, + {0x8FAAB7,0x8FABB7,0x0113}, + {0x8FAAB8,0x8FABB8,0x0119}, + {0x8FABB9,0x8FABB9,0x01F5}, + {0x8FAABA,0x8FABBA,0x011D}, + {0x8FAABB,0x8FABBB,0x011F}, + {0x8FABBC,0x8FABBC,0x003F}, + {0x8FAABD,0x8FABBD,0x0121}, + {0x8FAABE,0x8FABBE,0x0125}, + {0x8FAABF,0x8FABBF,0x00ED}, + {0x8FAAC0,0x8FABC0,0x00EC}, /* 8FABC0 */ + {0x8FAAC1,0x8FABC1,0x00EF}, + {0x8FAAC2,0x8FABC2,0x00EE}, + {0x8FAAC3,0x8FABC3,0x01D0}, + {0x8FABC4,0x8FABC4,0x003F}, + {0x8FAAC5,0x8FABC5,0x012B}, + {0x8FAAC6,0x8FABC6,0x012F}, + {0x8FAAC7,0x8FABC7,0x0129}, + {0x8FAAC8,0x8FABC8,0x0135}, + {0x8FAAC9,0x8FABC9,0x0137}, + {0x8FAACA,0x8FABCA,0x013A}, + {0x8FAACB,0x8FABCB,0x013E}, + {0x8FAACC,0x8FABCC,0x013C}, + {0x8FAACD,0x8FABCD,0x0144}, + {0x8FAACE,0x8FABCE,0x0148}, + {0x8FAACF,0x8FABCF,0x0146}, + {0x8FAAD0,0x8FABD0,0x00F1}, /* 8FABD0 */ + {0x8FAAD1,0x8FABD1,0x00F3}, + {0x8FAAD2,0x8FABD2,0x00F2}, + {0x8FAAD3,0x8FABD3,0x00F6}, + {0x8FAAD4,0x8FABD4,0x00F4}, + {0x8FAAD5,0x8FABD5,0x01D2}, + {0x8FAAD6,0x8FABD6,0x0151}, + {0x8FAAD7,0x8FABD7,0x014D}, + {0x8FAAD8,0x8FABD8,0x00F5}, + {0x8FAAD9,0x8FABD9,0x0155}, + {0x8FAADA,0x8FABDA,0x0159}, + {0x8FAADB,0x8FABDB,0x0157}, + {0x8FAADC,0x8FABDC,0x015B}, + {0x8FAADD,0x8FABDD,0x015D}, + {0x8FAADE,0x8FABDE,0x0161}, + {0x8FAADF,0x8FABDF,0x015F}, + {0x8FAAE0,0x8FABE0,0x0165}, /* 8FABE0 */ + {0x8FAAE1,0x8FABE1,0x0163}, + {0x8FAAE2,0x8FABE2,0x00FA}, + {0x8FAAE3,0x8FABE3,0x00F9}, + {0x8FAAE4,0x8FABE4,0x00FC}, + {0x8FAAE5,0x8FABE5,0x00FB}, + {0x8FAAE6,0x8FABE6,0x016D}, + {0x8FAAE7,0x8FABE7,0x01D4}, + {0x8FAAE8,0x8FABE8,0x0171}, + {0x8FAAE9,0x8FABE9,0x016B}, + {0x8FAAEA,0x8FABEA,0x0173}, + {0x8FAAEB,0x8FABEB,0x016F}, + {0x8FAAEC,0x8FABEC,0x0169}, + {0x8FAAED,0x8FABED,0x01D8}, + {0x8FAAEE,0x8FABEE,0x01DC}, + {0x8FAAEF,0x8FABEF,0x01DA}, + {0x8FAAF0,0x8FABF0,0x01D6}, /* 8FABF0 */ + {0x8FAAF1,0x8FABF1,0x0175}, + {0x8FAAF2,0x8FABF2,0x00FD}, + {0x8FAAF3,0x8FABF3,0x00FF}, + {0x8FAAF4,0x8FABF4,0x0177}, + {0x8FAAF5,0x8FABF5,0x017A}, + {0x8FAAF6,0x8FABF6,0x017E}, + {0x8FAAF7,0x8FABF7,0x017C}, + {0x8FABF8,0x8FABF8,0x003F}, + {0x8FABF9,0x8FABF9,0x003F}, + {0x8FABFA,0x8FABFA,0x003F}, + {0x8FABFB,0x8FABFB,0x003F}, + {0x8FABFC,0x8FABFC,0x003F}, + {0x8FABFD,0x8FABFD,0x003F}, + {0x8FABFE,0x8FABFE,0x003F}, + {0x8FABFF,0x8FABFF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FF3[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FF3A0,0x8FF3A0,0x003F}, /* 8FF3F0 */ + {0x8FF3A1,0x8FF3A1,0x003F}, + {0x8FF3A2,0x8FF3A2,0x003F}, + {0x8FF3A3,0x8FF3A3,0x003F}, + {0x8FF3A4,0x8FF3A4,0x003F}, + {0x8FF3A5,0x8FF3A5,0x003F}, + {0x8FF3A6,0x8FF3A6,0x003F}, + {0x8FF3A7,0x8FF3A7,0x003F}, + {0x8FF3A8,0x8FF3A8,0x003F}, + {0x8FF3A9,0x8FF3A9,0x003F}, + {0x8FF3AA,0x8FF3AA,0x003F}, + {0x8FF3AB,0x8FF3AB,0x003F}, + {0x8FF3AC,0x8FF3AC,0x003F}, + {0x8FF3AD,0x8FF3AD,0x003F}, + {0x8FF3AE,0x8FF3AE,0x003F}, + {0x8FF3AF,0x8FF3AF,0x003F}, + {0x8FF3B0,0x8FF3B0,0x003F}, /* 8FF3B0 */ + {0x8FF3B1,0x8FF3B1,0x003F}, + {0x8FF3B2,0x8FF3B2,0x003F}, + {0x8FF3B3,0x8FF3B3,0x003F}, + {0x8FF3B4,0x8FF3B4,0x003F}, + {0x8FF3B5,0x8FF3B5,0x003F}, + {0x8FF3B6,0x8FF3B6,0x003F}, + {0x8FF3B7,0x8FF3B7,0x003F}, + {0x8FF3B8,0x8FF3B8,0x003F}, + {0x8FF3B9,0x8FF3B9,0x003F}, + {0x8FF3BA,0x8FF3BA,0x003F}, + {0x8FF3BB,0x8FF3BB,0x003F}, + {0x8FF3BC,0x8FF3BC,0x003F}, + {0x8FF3BD,0x8FF3BD,0x003F}, + {0x8FF3BE,0x8FF3BE,0x003F}, + {0x8FF3BF,0x8FF3BF,0x003F}, + {0x8FF3C0,0x8FF3C0,0x003F}, /* 8FF3C0 */ + {0x8FF3C1,0x8FF3C1,0x003F}, + {0x8FF3C2,0x8FF3C2,0x003F}, + {0x8FF3C3,0x8FF3C3,0x003F}, + {0x8FF3C4,0x8FF3C4,0x003F}, + {0x8FF3C5,0x8FF3C5,0x003F}, + {0x8FF3C6,0x8FF3C6,0x003F}, + {0x8FF3C7,0x8FF3C7,0x003F}, + {0x8FF3C8,0x8FF3C8,0x003F}, + {0x8FF3C9,0x8FF3C9,0x003F}, + {0x8FF3CA,0x8FF3CA,0x003F}, + {0x8FF3CB,0x8FF3CB,0x003F}, + {0x8FF3CC,0x8FF3CC,0x003F}, + {0x8FF3CD,0x8FF3CD,0x003F}, + {0x8FF3CE,0x8FF3CE,0x003F}, + {0x8FF3CF,0x8FF3CF,0x003F}, + {0x8FF3D0,0x8FF3D0,0x003F}, /* 8FF3D0 */ + {0x8FF3D1,0x8FF3D1,0x003F}, + {0x8FF3D2,0x8FF3D2,0x003F}, + {0x8FF3D3,0x8FF3D3,0x003F}, + {0x8FF3D4,0x8FF3D4,0x003F}, + {0x8FF3D5,0x8FF3D5,0x003F}, + {0x8FF3D6,0x8FF3D6,0x003F}, + {0x8FF3D7,0x8FF3D7,0x003F}, + {0x8FF3D8,0x8FF3D8,0x003F}, + {0x8FF3D9,0x8FF3D9,0x003F}, + {0x8FF3DA,0x8FF3DA,0x003F}, + {0x8FF3DB,0x8FF3DB,0x003F}, + {0x8FF3DC,0x8FF3DC,0x003F}, + {0x8FF3DD,0x8FF3DD,0x003F}, + {0x8FF3DE,0x8FF3DE,0x003F}, + {0x8FF3DF,0x8FF3DF,0x003F}, + {0x8FF3E0,0x8FF3E0,0x003F}, /* 8FF3E0 */ + {0x8FF3E1,0x8FF3E1,0x003F}, + {0x8FF3E2,0x8FF3E2,0x003F}, + {0x8FF3E3,0x8FF3E3,0x003F}, + {0x8FF3E4,0x8FF3E4,0x003F}, + {0x8FF3E5,0x8FF3E5,0x003F}, + {0x8FF3E6,0x8FF3E6,0x003F}, + {0x8FF3E7,0x8FF3E7,0x003F}, + {0x8FF3E8,0x8FF3E8,0x003F}, + {0x8FF3E9,0x8FF3E9,0x003F}, + {0x8FF3EA,0x8FF3EA,0x003F}, + {0x8FF3EB,0x8FF3EB,0x003F}, + {0x8FF3EC,0x8FF3EC,0x003F}, + {0x8FF3ED,0x8FF3ED,0x003F}, + {0x8FF3EE,0x8FF3EE,0x003F}, + {0x8FF3EF,0x8FF3EF,0x003F}, + {0x8FF3F0,0x8FF3F0,0x003F}, /* 8FF3F0 */ + {0x8FF3F1,0x8FF3F1,0x003F}, + {0x8FF3F2,0x8FF3F2,0x003F}, + {0x8FF3FD,0x8FF3F3,0x2170}, + {0x8FF3FE,0x8FF3F4,0x2171}, + {0x8FF4A1,0x8FF3F5,0x2172}, + {0x8FF4A2,0x8FF3F6,0x2173}, + {0x8FF4A3,0x8FF3F7,0x2174}, + {0x8FF4A4,0x8FF3F8,0x2175}, + {0x8FF4A5,0x8FF3F9,0x2176}, + {0x8FF4A6,0x8FF3FA,0x2177}, + {0x8FF4A7,0x8FF3FB,0x2178}, + {0x8FF4A8,0x8FF3FC,0x2179}, + {0x8FF3FD,0x8FF3F3,0x2160}, + {0x8FF3FE,0x8FF3F4,0x2161}, + {0x8FF3FF,0x8FF3FF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FF4[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FF4A0,0x8FF4A0,0x003F}, /* 8FF4A0 */ + {0x8FF4A1,0x8FF3F5,0x2162}, + {0x8FF4A2,0x8FF3F6,0x2163}, + {0x8FF4A3,0x8FF3F7,0x2164}, + {0x8FF4A4,0x8FF3F8,0x2165}, + {0x8FF4A5,0x8FF3F9,0x2166}, + {0x8FF4A6,0x8FF3FA,0x2167}, + {0x8FF4A7,0x8FF3FB,0x2168}, + {0x8FF4A8,0x8FF3FC,0x2169}, + {0x8FF4A9,0x8FF4A9,0xFF07}, + {0x8FF4AA,0x8FF4AA,0xFF02}, + {0x8FF4AB,0x8FF4AB,0x3231}, + {0x8FF4AC,0x8FF4AC,0x2116}, + {0x8FF4AD,0x8FF4AD,0x2121}, + {0x8FF4AE,0x8FF4AE,0x70BB}, + {0x8FF4AF,0x8FF4AF,0x4EFC}, + {0x8FF4B0,0x8FF4B0,0x50F4}, /* 8FF4B0 */ + {0x8FF4B1,0x8FF4B1,0x51EC}, + {0x8FF4B2,0x8FF4B2,0x5307}, + {0x8FF4B3,0x8FF4B3,0x5324}, + {0x8FF4B4,0x8FF4B4,0xFA0E}, + {0x8FF4B5,0x8FF4B5,0x548A}, + {0x8FF4B6,0x8FF4B6,0x5759}, + {0x8FF4B7,0x8FF4B7,0xFA0F}, + {0x8FF4B8,0x8FF4B8,0xFA10}, + {0x8FF4B9,0x8FF4B9,0x589E}, + {0x8FF4BA,0x8FF4BA,0x5BEC}, + {0x8FF4BB,0x8FF4BB,0x5CF5}, + {0x8FF4BC,0x8FF4BC,0x5D53}, + {0x8FF4BD,0x8FF4BD,0xFA11}, + {0x8FF4BE,0x8FF4BE,0x5FB7}, + {0x8FF4BF,0x8FF4BF,0x6085}, + {0x8FF4C0,0x8FF4C0,0x6120}, /* 8FF4C0 */ + {0x8FF4C1,0x8FF4C1,0x654E}, + {0x8FF4C2,0x8FF4C2,0x663B}, + {0x8FF4C3,0x8FF4C3,0x6665}, + {0x8FF4C4,0x8FF4C4,0xFA12}, + {0x8FF4C5,0x8FF4C5,0xF929}, + {0x8FF4C6,0x8FF4C6,0x6801}, + {0x8FF4C7,0x8FF4C7,0xFA13}, + {0x8FF4C8,0x8FF4C8,0xFA14}, + {0x8FF4C9,0x8FF4C9,0x6A6B}, + {0x8FF4CA,0x8FF4CA,0x6AE2}, + {0x8FF4CB,0x8FF4CB,0x6DF8}, + {0x8FF4CC,0x8FF4CC,0x6DF2}, + {0x8FF4CD,0x8FF4CD,0x7028}, + {0x8FF4CE,0x8FF4CE,0xFA15}, + {0x8FF4CF,0x8FF4CF,0xFA16}, + {0x8FF4D0,0x8FF4D0,0x7501}, /* 8FF4D0 */ + {0x8FF4D1,0x8FF4D1,0x7682}, + {0x8FF4D2,0x8FF4D2,0x769E}, + {0x8FF4D3,0x8FF4D3,0xFA17}, + {0x8FF4D4,0x8FF4D4,0x7930}, + {0x8FF4D5,0x8FF4D5,0xFA18}, + {0x8FF4D6,0x8FF4D6,0xFA19}, + {0x8FF4D7,0x8FF4D7,0xFA1A}, + {0x8FF4D8,0x8FF4D8,0xFA1B}, + {0x8FF4D9,0x8FF4D9,0x7AE7}, + {0x8FF4DA,0x8FF4DA,0xFA1C}, + {0x8FF4DB,0x8FF4DB,0xFA1D}, + {0x8FF4DC,0x8FF4DC,0x7DA0}, + {0x8FF4DD,0x8FF4DD,0x7DD6}, + {0x8FF4DE,0x8FF4DE,0xFA1E}, + {0x8FF4DF,0x8FF4DF,0x8362}, + {0x8FF4E0,0x8FF4E0,0xFA1F}, /* 8FF4E0 */ + {0x8FF4E1,0x8FF4E1,0x85B0}, + {0x8FF4E2,0x8FF4E2,0xFA20}, + {0x8FF4E3,0x8FF4E3,0xFA21}, + {0x8FF4E4,0x8FF4E4,0x8807}, + {0x8FF4E5,0x8FF4E5,0xFA22}, + {0x8FF4E6,0x8FF4E6,0x8B7F}, + {0x8FF4E7,0x8FF4E7,0x8CF4}, + {0x8FF4E8,0x8FF4E8,0x8D76}, + {0x8FF4E9,0x8FF4E9,0xFA23}, + {0x8FF4EA,0x8FF4EA,0xFA24}, + {0x8FF4EB,0x8FF4EB,0xFA25}, + {0x8FF4EC,0x8FF4EC,0x90DE}, + {0x8FF4ED,0x8FF4ED,0xFA26}, + {0x8FF4EE,0x8FF4EE,0x9115}, + {0x8FF4EF,0x8FF4EF,0xFA27}, + {0x8FF4F0,0x8FF4F0,0xFA28}, /* 8FF4F0 */ + {0x8FF4F1,0x8FF4F1,0x9592}, + {0x8FF4F2,0x8FF4F2,0xF9DC}, + {0x8FF4F3,0x8FF4F3,0xFA29}, + {0x8FF4F4,0x8FF4F4,0x973B}, + {0x8FF4F5,0x8FF4F5,0x974D}, + {0x8FF4F6,0x8FF4F6,0x9751}, + {0x8FF4F7,0x8FF4F7,0xFA2A}, + {0x8FF4F8,0x8FF4F8,0xFA2B}, + {0x8FF4F9,0x8FF4F9,0xFA2C}, + {0x8FF4FA,0x8FF4FA,0x999E}, + {0x8FF4FB,0x8FF4FB,0x9AD9}, + {0x8FF4FC,0x8FF4FC,0x9B72}, + {0x8FF4FD,0x8FF4FD,0xFA2D}, + {0x8FF4FE,0x8FF4FE,0x9ED1}, + {0x8FF4FF,0x8FF4FF,0x003F}, +}; + + +static MY_UNICASE_INFO *my_caseinfo_eucjpms[512]= +{ + /* JIS-X-0208 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, cA2, cA3, NULL, NULL, cA6, cA7, /* A */ + NULL, NULL, NULL, NULL, NULL, cAD, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + + /* JIS-X-0212 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL,c8FA6,c8FA7, /* A */ + NULL, c8FA9,c8FAA,c8FAB,NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL,c8FF3,c8FF4, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + + static uint16 tab_jisx0201_uni[256]={ 0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, @@ -8667,8 +10196,8 @@ static MY_CHARSET_HANDLER my_charset_handler= my_mb_ctype_mb, my_caseup_str_mb, my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, + my_caseup_ujis, + my_casedn_ujis, my_snprintf_8bit, my_long10_to_str_8bit, my_longlong10_to_str_8bit, @@ -8701,12 +10230,12 @@ CHARSET_INFO my_charset_eucjpms_japanese_ci= NULL, /* contractions */ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_eucjpms,/* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ 1, /* caseup_multiply */ - 1, /* casedn_multiply */ + 2, /* casedn_multiply */ 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ @@ -8734,12 +10263,12 @@ CHARSET_INFO my_charset_eucjpms_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_eucjpms,/* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ 1, /* caseup_multiply */ - 1, /* casedn_multiply */ + 2, /* casedn_multiply */ 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c index 0267f35ff5c..c3a52047977 100644 --- a/strings/ctype-gb2312.c +++ b/strings/ctype-gb2312.c @@ -177,6 +177,648 @@ static uint mbcharlen_gb2312(CHARSET_INFO *cs __attribute__((unused)),uint c) } +static MY_UNICASE_INFO cA2[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA2A0,0xA2A0,0xA2A0}, /* A2A0 */ + {0xA2A1,0xA2A1,0x003F}, + {0xA2A2,0xA2A2,0x003F}, + {0xA2A3,0xA2A3,0x003F}, + {0xA2A4,0xA2A4,0x003F}, + {0xA2A5,0xA2A5,0x003F}, + {0xA2A6,0xA2A6,0x003F}, + {0xA2A7,0xA2A7,0x003F}, + {0xA2A8,0xA2A8,0x003F}, + {0xA2A9,0xA2A9,0x003F}, + {0xA2AA,0xA2AA,0x003F}, + {0xA2AB,0xA2AB,0x003F}, + {0xA2AC,0xA2AC,0x003F}, + {0xA2AD,0xA2AD,0x003F}, + {0xA2AE,0xA2AE,0x003F}, + {0xA2AF,0xA2AF,0x003F}, + {0xA2B0,0xA2B0,0x003F}, /* A2B0 */ + {0xA2B1,0xA2B1,0x2488}, + {0xA2B2,0xA2B2,0x2489}, + {0xA2B3,0xA2B3,0x248A}, + {0xA2B4,0xA2B4,0x248B}, + {0xA2B5,0xA2B5,0x248C}, + {0xA2B6,0xA2B6,0x248D}, + {0xA2B7,0xA2B7,0x248E}, + {0xA2B8,0xA2B8,0x248F}, + {0xA2B9,0xA2B9,0x2490}, + {0xA2BA,0xA2BA,0x2491}, + {0xA2BB,0xA2BB,0x2492}, + {0xA2BC,0xA2BC,0x2493}, + {0xA2BD,0xA2BD,0x2494}, + {0xA2BE,0xA2BE,0x2495}, + {0xA2BF,0xA2BF,0x2496}, + {0xA2C0,0xA2C0,0x2497}, /* A2C0 */ + {0xA2C1,0xA2C1,0x2498}, + {0xA2C2,0xA2C2,0x2499}, + {0xA2C3,0xA2C3,0x249A}, + {0xA2C4,0xA2C4,0x249B}, + {0xA2C5,0xA2C5,0x2474}, + {0xA2C6,0xA2C6,0x2475}, + {0xA2C7,0xA2C7,0x2476}, + {0xA2C8,0xA2C8,0x2477}, + {0xA2C9,0xA2C9,0x2478}, + {0xA2CA,0xA2CA,0x2479}, + {0xA2CB,0xA2CB,0x247A}, + {0xA2CC,0xA2CC,0x247B}, + {0xA2CD,0xA2CD,0x247C}, + {0xA2CE,0xA2CE,0x247D}, + {0xA2CF,0xA2CF,0x247E}, + {0xA2D0,0xA2D0,0x247F}, /* A2D0 */ + {0xA2D1,0xA2D1,0x2480}, + {0xA2D2,0xA2D2,0x2481}, + {0xA2D3,0xA2D3,0x2482}, + {0xA2D4,0xA2D4,0x2483}, + {0xA2D5,0xA2D5,0x2484}, + {0xA2D6,0xA2D6,0x2485}, + {0xA2D7,0xA2D7,0x2486}, + {0xA2D8,0xA2D8,0x2487}, + {0xA2D9,0xA2D9,0x2460}, + {0xA2DA,0xA2DA,0x2461}, + {0xA2DB,0xA2DB,0x2462}, + {0xA2DC,0xA2DC,0x2463}, + {0xA2DD,0xA2DD,0x2464}, + {0xA2DE,0xA2DE,0x2465}, + {0xA2DF,0xA2DF,0x2466}, + {0xA2E0,0xA2E0,0x2467}, /* A2E0 */ + {0xA2E1,0xA2E1,0x2468}, + {0xA2E2,0xA2E2,0x2469}, + {0xA2E3,0xA2E3,0x003F}, + {0xA2E4,0xA2E4,0x003F}, + {0xA2E5,0xA2E5,0x3220}, + {0xA2E6,0xA2E6,0x3221}, + {0xA2E7,0xA2E7,0x3222}, + {0xA2E8,0xA2E8,0x3223}, + {0xA2E9,0xA2E9,0x3224}, + {0xA2EA,0xA2EA,0x3225}, + {0xA2EB,0xA2EB,0x3226}, + {0xA2EC,0xA2EC,0x3227}, + {0xA2ED,0xA2ED,0x3228}, + {0xA2EE,0xA2EE,0x3229}, + {0xA2EF,0xA2EF,0x003F}, + {0xA2F0,0xA2F0,0x003F}, /* A2F0 */ + {0xA2F1,0xA2F1,0x2160}, + {0xA2F2,0xA2F2,0x2161}, + {0xA2F3,0xA2F3,0x2162}, + {0xA2F4,0xA2F4,0x2163}, + {0xA2F5,0xA2F5,0x2164}, + {0xA2F6,0xA2F6,0x2165}, + {0xA2F7,0xA2F7,0x2166}, + {0xA2F8,0xA2F8,0x2167}, + {0xA2F9,0xA2F9,0x2168}, + {0xA2FA,0xA2FA,0x2169}, + {0xA2FB,0xA2FB,0x216A}, + {0xA2FC,0xA2FC,0x216B}, + {0xA2FD,0xA2FD,0x003F}, + {0xA2FE,0xA2FE,0x003F}, + {0xA2FF,0xA2FF,0xA2FF} +}; + + +static MY_UNICASE_INFO cA3[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA3A0,0xA3A0,0xA3A0}, /* A3A0 */ + {0xA3A1,0xA3A1,0xFF01}, + {0xA3A2,0xA3A2,0xFF02}, + {0xA3A3,0xA3A3,0xFF03}, + {0xA3A4,0xA3A4,0xFFE5}, + {0xA3A5,0xA3A5,0xFF05}, + {0xA3A6,0xA3A6,0xFF06}, + {0xA3A7,0xA3A7,0xFF07}, + {0xA3A8,0xA3A8,0xFF08}, + {0xA3A9,0xA3A9,0xFF09}, + {0xA3AA,0xA3AA,0xFF0A}, + {0xA3AB,0xA3AB,0xFF0B}, + {0xA3AC,0xA3AC,0xFF0C}, + {0xA3AD,0xA3AD,0xFF0D}, + {0xA3AE,0xA3AE,0xFF0E}, + {0xA3AF,0xA3AF,0xFF0F}, + {0xA3B0,0xA3B0,0xFF10}, /* A3B0 */ + {0xA3B1,0xA3B1,0xFF11}, + {0xA3B2,0xA3B2,0xFF12}, + {0xA3B3,0xA3B3,0xFF13}, + {0xA3B4,0xA3B4,0xFF14}, + {0xA3B5,0xA3B5,0xFF15}, + {0xA3B6,0xA3B6,0xFF16}, + {0xA3B7,0xA3B7,0xFF17}, + {0xA3B8,0xA3B8,0xFF18}, + {0xA3B9,0xA3B9,0xFF19}, + {0xA3BA,0xA3BA,0xFF1A}, + {0xA3BB,0xA3BB,0xFF1B}, + {0xA3BC,0xA3BC,0xFF1C}, + {0xA3BD,0xA3BD,0xFF1D}, + {0xA3BE,0xA3BE,0xFF1E}, + {0xA3BF,0xA3BF,0xFF1F}, + {0xA3C0,0xA3C0,0xFF20}, /* A3C0 */ + {0xA3C1,0xA3E1,0xFF21}, + {0xA3C2,0xA3E2,0xFF22}, + {0xA3C3,0xA3E3,0xFF23}, + {0xA3C4,0xA3E4,0xFF24}, + {0xA3C5,0xA3E5,0xFF25}, + {0xA3C6,0xA3E6,0xFF26}, + {0xA3C7,0xA3E7,0xFF27}, + {0xA3C8,0xA3E8,0xFF28}, + {0xA3C9,0xA3E9,0xFF29}, + {0xA3CA,0xA3EA,0xFF2A}, + {0xA3CB,0xA3EB,0xFF2B}, + {0xA3CC,0xA3EC,0xFF2C}, + {0xA3CD,0xA3ED,0xFF2D}, + {0xA3CE,0xA3EE,0xFF2E}, + {0xA3CF,0xA3EF,0xFF2F}, + {0xA3D0,0xA3F0,0xFF30}, /* A3D0 */ + {0xA3D1,0xA3F1,0xFF31}, + {0xA3D2,0xA3F2,0xFF32}, + {0xA3D3,0xA3F3,0xFF33}, + {0xA3D4,0xA3F4,0xFF34}, + {0xA3D5,0xA3F5,0xFF35}, + {0xA3D6,0xA3F6,0xFF36}, + {0xA3D7,0xA3F7,0xFF37}, + {0xA3D8,0xA3F8,0xFF38}, + {0xA3D9,0xA3F9,0xFF39}, + {0xA3DA,0xA3FA,0xFF3A}, + {0xA3DB,0xA3DB,0xFF3B}, + {0xA3DC,0xA3DC,0xFF3C}, + {0xA3DD,0xA3DD,0xFF3D}, + {0xA3DE,0xA3DE,0xFF3E}, + {0xA3DF,0xA3DF,0xFF3F}, + {0xA3E0,0xA3E0,0xFF40}, /* A3E0 */ + {0xA3C1,0xA3E1,0xFF41}, + {0xA3C2,0xA3E2,0xFF42}, + {0xA3C3,0xA3E3,0xFF43}, + {0xA3C4,0xA3E4,0xFF44}, + {0xA3C5,0xA3E5,0xFF45}, + {0xA3C6,0xA3E6,0xFF46}, + {0xA3C7,0xA3E7,0xFF47}, + {0xA3C8,0xA3E8,0xFF48}, + {0xA3C9,0xA3E9,0xFF49}, + {0xA3CA,0xA3EA,0xFF4A}, + {0xA3CB,0xA3EB,0xFF4B}, + {0xA3CC,0xA3EC,0xFF4C}, + {0xA3CD,0xA3ED,0xFF4D}, + {0xA3CE,0xA3EE,0xFF4E}, + {0xA3CF,0xA3EF,0xFF4F}, + {0xA3D0,0xA3F0,0xFF50}, /* A3F0 */ + {0xA3D1,0xA3F1,0xFF51}, + {0xA3D2,0xA3F2,0xFF52}, + {0xA3D3,0xA3F3,0xFF53}, + {0xA3D4,0xA3F4,0xFF54}, + {0xA3D5,0xA3F5,0xFF55}, + {0xA3D6,0xA3F6,0xFF56}, + {0xA3D7,0xA3F7,0xFF57}, + {0xA3D8,0xA3F8,0xFF58}, + {0xA3D9,0xA3F9,0xFF59}, + {0xA3DA,0xA3FA,0xFF5A}, + {0xA3FB,0xA3FB,0xFF5B}, + {0xA3FC,0xA3FC,0xFF5C}, + {0xA3FD,0xA3FD,0xFF5D}, + {0xA3FE,0xA3FE,0xFFE3}, + {0xA3FF,0xA3FF,0xA3FF} +}; + + +static MY_UNICASE_INFO cA6[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA6A0,0xA6A0,0xA6A0}, /* A6A0 */ + {0xA6A1,0xA6C1,0x0391}, + {0xA6A2,0xA6C2,0x0392}, + {0xA6A3,0xA6C3,0x0393}, + {0xA6A4,0xA6C4,0x0394}, + {0xA6A5,0xA6C5,0x0395}, + {0xA6A6,0xA6C6,0x0396}, + {0xA6A7,0xA6C7,0x0397}, + {0xA6A8,0xA6C8,0x0398}, + {0xA6A9,0xA6C9,0x0399}, + {0xA6AA,0xA6CA,0x039A}, + {0xA6AB,0xA6CB,0x039B}, + {0xA6AC,0xA6CC,0x039C}, + {0xA6AD,0xA6CD,0x039D}, + {0xA6AE,0xA6CE,0x039E}, + {0xA6AF,0xA6CF,0x039F}, + {0xA6B0,0xA6D0,0x03A0}, /* A6B0 */ + {0xA6B1,0xA6D1,0x03A1}, + {0xA6B2,0xA6D2,0x03A3}, + {0xA6B3,0xA6D3,0x03A4}, + {0xA6B4,0xA6D4,0x03A5}, + {0xA6B5,0xA6D5,0x03A6}, + {0xA6B6,0xA6D6,0x03A7}, + {0xA6B7,0xA6D7,0x03A8}, + {0xA6B8,0xA6D8,0x03A9}, + {0xA6B9,0xA6B9,0x003F}, + {0xA6BA,0xA6BA,0x003F}, + {0xA6BB,0xA6BB,0x003F}, + {0xA6BC,0xA6BC,0x003F}, + {0xA6BD,0xA6BD,0x003F}, + {0xA6BE,0xA6BE,0x003F}, + {0xA6BF,0xA6BF,0x003F}, + {0xA6C0,0xA6C0,0x003F}, /* A6C0 */ + {0xA6A1,0xA6C1,0x03B1}, + {0xA6A2,0xA6C2,0x03B2}, + {0xA6A3,0xA6C3,0x03B3}, + {0xA6A4,0xA6C4,0x03B4}, + {0xA6A5,0xA6C5,0x03B5}, + {0xA6A6,0xA6C6,0x03B6}, + {0xA6A7,0xA6C7,0x03B7}, + {0xA6A8,0xA6C8,0x03B8}, + {0xA6A9,0xA6C9,0x03B9}, + {0xA6AA,0xA6CA,0x03BA}, + {0xA6AB,0xA6CB,0x03BB}, + {0xA6AC,0xA6CC,0x03BC}, + {0xA6AD,0xA6CD,0x03BD}, + {0xA6AE,0xA6CE,0x03BE}, + {0xA6AF,0xA6CF,0x03BF}, + {0xA6B0,0xA6D0,0x03C0}, /* A6D0 */ + {0xA6B1,0xA6D1,0x03C1}, + {0xA6B2,0xA6D2,0x03C3}, + {0xA6B3,0xA6D3,0x03C4}, + {0xA6B4,0xA6D4,0x03C5}, + {0xA6B5,0xA6D5,0x03C6}, + {0xA6B6,0xA6D6,0x03C7}, + {0xA6B7,0xA6D7,0x03C8}, + {0xA6B8,0xA6D8,0x03C9}, + {0xA6D9,0xA6D9,0x003F}, + {0xA6DA,0xA6DA,0x003F}, + {0xA6DB,0xA6DB,0x003F}, + {0xA6DC,0xA6DC,0x003F}, + {0xA6DD,0xA6DD,0x003F}, + {0xA6DE,0xA6DE,0x003F}, + {0xA6DF,0xA6DF,0x003F}, + {0xA6E0,0xA6E0,0x003F}, /* A6E0 */ + {0xA6E1,0xA6E1,0x003F}, + {0xA6E2,0xA6E2,0x003F}, + {0xA6E3,0xA6E3,0x003F}, + {0xA6E4,0xA6E4,0x003F}, + {0xA6E5,0xA6E5,0x003F}, + {0xA6E6,0xA6E6,0x003F}, + {0xA6E7,0xA6E7,0x003F}, + {0xA6E8,0xA6E8,0x003F}, + {0xA6E9,0xA6E9,0x003F}, + {0xA6EA,0xA6EA,0x003F}, + {0xA6EB,0xA6EB,0x003F}, + {0xA6EC,0xA6EC,0x003F}, + {0xA6ED,0xA6ED,0x003F}, + {0xA6EE,0xA6EE,0x003F}, + {0xA6EF,0xA6EF,0x003F}, + {0xA6F0,0xA6F0,0x003F}, /* A6F0 */ + {0xA6F1,0xA6F1,0x003F}, + {0xA6F2,0xA6F2,0x003F}, + {0xA6F3,0xA6F3,0x003F}, + {0xA6F4,0xA6F4,0x003F}, + {0xA6F5,0xA6F5,0x003F}, + {0xA6F6,0xA6F6,0x003F}, + {0xA6F7,0xA6F7,0x003F}, + {0xA6F8,0xA6F8,0x003F}, + {0xA6F9,0xA6F9,0x003F}, + {0xA6FA,0xA6FA,0x003F}, + {0xA6FB,0xA6FB,0x003F}, + {0xA6FC,0xA6FC,0x003F}, + {0xA6FD,0xA6FD,0x003F}, + {0xA6FE,0xA6FE,0x003F}, + {0xA6FF,0xA6FF,0xA6FF} +}; + + +static MY_UNICASE_INFO cA7[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA7A0,0xA7A0,0xA7A0}, /* A7A0 */ + {0xA7A1,0xA7D1,0x0410}, + {0xA7A2,0xA7D2,0x0411}, + {0xA7A3,0xA7D3,0x0412}, + {0xA7A4,0xA7D4,0x0413}, + {0xA7A5,0xA7D5,0x0414}, + {0xA7A6,0xA7D6,0x0415}, + {0xA7A7,0xA7D7,0x0401}, + {0xA7A8,0xA7D8,0x0416}, + {0xA7A9,0xA7D9,0x0417}, + {0xA7AA,0xA7DA,0x0418}, + {0xA7AB,0xA7DB,0x0419}, + {0xA7AC,0xA7DC,0x041A}, + {0xA7AD,0xA7DD,0x041B}, + {0xA7AE,0xA7DE,0x041C}, + {0xA7AF,0xA7DF,0x041D}, + {0xA7B0,0xA7E0,0x041E}, /* A7B0 */ + {0xA7B1,0xA7E1,0x041F}, + {0xA7B2,0xA7E2,0x0420}, + {0xA7B3,0xA7E3,0x0421}, + {0xA7B4,0xA7E4,0x0422}, + {0xA7B5,0xA7E5,0x0423}, + {0xA7B6,0xA7E6,0x0424}, + {0xA7B7,0xA7E7,0x0425}, + {0xA7B8,0xA7E8,0x0426}, + {0xA7B9,0xA7E9,0x0427}, + {0xA7BA,0xA7EA,0x0428}, + {0xA7BB,0xA7EB,0x0429}, + {0xA7BC,0xA7EC,0x042A}, + {0xA7BD,0xA7ED,0x042B}, + {0xA7BE,0xA7EE,0x042C}, + {0xA7BF,0xA7EF,0x042D}, + {0xA7C0,0xA7F0,0x042E}, /* A7C0 */ + {0xA7C1,0xA7F1,0x042F}, + {0xA7C2,0xA7C2,0x003F}, + {0xA7C3,0xA7C3,0x003F}, + {0xA7C4,0xA7C4,0x003F}, + {0xA7C5,0xA7C5,0x003F}, + {0xA7C6,0xA7C6,0x003F}, + {0xA7C7,0xA7C7,0x003F}, + {0xA7C8,0xA7C8,0x003F}, + {0xA7C9,0xA7C9,0x003F}, + {0xA7CA,0xA7CA,0x003F}, + {0xA7CB,0xA7CB,0x003F}, + {0xA7CC,0xA7CC,0x003F}, + {0xA7CD,0xA7CD,0x003F}, + {0xA7CE,0xA7CE,0x003F}, + {0xA7CF,0xA7CF,0x003F}, + {0xA7D0,0xA7D0,0x003F}, /* A7D0 */ + {0xA7A1,0xA7D1,0x0430}, + {0xA7A2,0xA7D2,0x0431}, + {0xA7A3,0xA7D3,0x0432}, + {0xA7A4,0xA7D4,0x0433}, + {0xA7A5,0xA7D5,0x0434}, + {0xA7A6,0xA7D6,0x0435}, + {0xA7A7,0xA7D7,0x0451}, + {0xA7A8,0xA7D8,0x0436}, + {0xA7A9,0xA7D9,0x0437}, + {0xA7AA,0xA7DA,0x0438}, + {0xA7AB,0xA7DB,0x0439}, + {0xA7AC,0xA7DC,0x043A}, + {0xA7AD,0xA7DD,0x043B}, + {0xA7AE,0xA7DE,0x043C}, + {0xA7AF,0xA7DF,0x043D}, + {0xA7B0,0xA7E0,0x043E}, /* A7E0 */ + {0xA7B1,0xA7E1,0x043F}, + {0xA7B2,0xA7E2,0x0440}, + {0xA7B3,0xA7E3,0x0441}, + {0xA7B4,0xA7E4,0x0442}, + {0xA7B5,0xA7E5,0x0443}, + {0xA7B6,0xA7E6,0x0444}, + {0xA7B7,0xA7E7,0x0445}, + {0xA7B8,0xA7E8,0x0446}, + {0xA7B9,0xA7E9,0x0447}, + {0xA7BA,0xA7EA,0x0448}, + {0xA7BB,0xA7EB,0x0449}, + {0xA7BC,0xA7EC,0x044A}, + {0xA7BD,0xA7ED,0x044B}, + {0xA7BE,0xA7EE,0x044C}, + {0xA7BF,0xA7EF,0x044D}, + {0xA7C0,0xA7F0,0x044E}, /* A7F0 */ + {0xA7C1,0xA7F1,0x044F}, + {0xA7F2,0xA7F2,0x003F}, + {0xA7F3,0xA7F3,0x003F}, + {0xA7F4,0xA7F4,0x003F}, + {0xA7F5,0xA7F5,0x003F}, + {0xA7F6,0xA7F6,0x003F}, + {0xA7F7,0xA7F7,0x003F}, + {0xA7F8,0xA7F8,0x003F}, + {0xA7F9,0xA7F9,0x003F}, + {0xA7FA,0xA7FA,0x003F}, + {0xA7FB,0xA7FB,0x003F}, + {0xA7FC,0xA7FC,0x003F}, + {0xA7FD,0xA7FD,0x003F}, + {0xA7FE,0xA7FE,0x003F}, + {0xA7FF,0xA7FF,0xA7FF} +}; + + +static MY_UNICASE_INFO cA8[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA8A0,0xA8A0,0xA8A0}, /* A8A0 */ + {0xA8A1,0xA8A1,0x0101}, + {0xA8A2,0xA8A2,0x00E1}, + {0xA8A3,0xA8A3,0x01CE}, + {0xA8A4,0xA8A4,0x00E0}, + {0xA8A5,0xA8A5,0x0113}, + {0xA8A6,0xA8A6,0x00E9}, + {0xA8A7,0xA8A7,0x011B}, + {0xA8A8,0xA8A8,0x00E8}, + {0xA8A9,0xA8A9,0x012B}, + {0xA8AA,0xA8AA,0x00ED}, + {0xA8AB,0xA8AB,0x01D0}, + {0xA8AC,0xA8AC,0x00EC}, + {0xA8AD,0xA8AD,0x014D}, + {0xA8AE,0xA8AE,0x00F3}, + {0xA8AF,0xA8AF,0x01D2}, + {0xA8B0,0xA8B0,0x00F2}, /* A8B0 */ + {0xA8B1,0xA8B1,0x016B}, + {0xA8B2,0xA8B2,0x00FA}, + {0xA8B3,0xA8B3,0x01D4}, + {0xA8B4,0xA8B4,0x00F9}, + {0xA8B5,0xA8B5,0x01D6}, + {0xA8B6,0xA8B6,0x01D8}, + {0xA8B7,0xA8B7,0x01DA}, + {0xA8B8,0xA8B8,0x01DC}, + {0xA8B9,0xA8B9,0x00FC}, + {0xA8BA,0xA8BA,0x00EA}, + {0xA8BB,0xA8BB,0x003F}, + {0xA8BC,0xA8BC,0x003F}, + {0xA8BD,0xA8BD,0x003F}, + {0xA8BE,0xA8BE,0x003F}, + {0xA8BF,0xA8BF,0x003F}, + {0xA8C0,0xA8C0,0x003F}, /* A8C0 */ + {0xA8C1,0xA8C1,0x003F}, + {0xA8C2,0xA8C2,0x003F}, + {0xA8C3,0xA8C3,0x003F}, + {0xA8C4,0xA8C4,0x003F}, + {0xA8C5,0xA8C5,0x3105}, + {0xA8C6,0xA8C6,0x3106}, + {0xA8C7,0xA8C7,0x3107}, + {0xA8C8,0xA8C8,0x3108}, + {0xA8C9,0xA8C9,0x3109}, + {0xA8CA,0xA8CA,0x310A}, + {0xA8CB,0xA8CB,0x310B}, + {0xA8CC,0xA8CC,0x310C}, + {0xA8CD,0xA8CD,0x310D}, + {0xA8CE,0xA8CE,0x310E}, + {0xA8CF,0xA8CF,0x310F}, + {0xA8D0,0xA8D0,0x3110}, /* A8D0 */ + {0xA8D1,0xA8D1,0x3111}, + {0xA8D2,0xA8D2,0x3112}, + {0xA8D3,0xA8D3,0x3113}, + {0xA8D4,0xA8D4,0x3114}, + {0xA8D5,0xA8D5,0x3115}, + {0xA8D6,0xA8D6,0x3116}, + {0xA8D7,0xA8D7,0x3117}, + {0xA8D8,0xA8D8,0x3118}, + {0xA8D9,0xA8D9,0x3119}, + {0xA8DA,0xA8DA,0x311A}, + {0xA8DB,0xA8DB,0x311B}, + {0xA8DC,0xA8DC,0x311C}, + {0xA8DD,0xA8DD,0x311D}, + {0xA8DE,0xA8DE,0x311E}, + {0xA8DF,0xA8DF,0x311F}, + {0xA8E0,0xA8E0,0x3120}, /* A8E0 */ + {0xA8E1,0xA8E1,0x3121}, + {0xA8E2,0xA8E2,0x3122}, + {0xA8E3,0xA8E3,0x3123}, + {0xA8E4,0xA8E4,0x3124}, + {0xA8E5,0xA8E5,0x3125}, + {0xA8E6,0xA8E6,0x3126}, + {0xA8E7,0xA8E7,0x3127}, + {0xA8E8,0xA8E8,0x3128}, + {0xA8E9,0xA8E9,0x3129}, + {0xA8EA,0xA8EA,0x003F}, + {0xA8EB,0xA8EB,0x003F}, + {0xA8EC,0xA8EC,0x003F}, + {0xA8ED,0xA8ED,0x003F}, + {0xA8EE,0xA8EE,0x003F}, + {0xA8EF,0xA8EF,0x003F}, + {0xA8F0,0xA8F0,0x003F}, /* A8F0 */ + {0xA8F1,0xA8F1,0x003F}, + {0xA8F2,0xA8F2,0x003F}, + {0xA8F3,0xA8F3,0x003F}, + {0xA8F4,0xA8F4,0x003F}, + {0xA8F5,0xA8F5,0x003F}, + {0xA8F6,0xA8F6,0x003F}, + {0xA8F7,0xA8F7,0x003F}, + {0xA8F8,0xA8F8,0x003F}, + {0xA8F9,0xA8F9,0x003F}, + {0xA8FA,0xA8FA,0x003F}, + {0xA8FB,0xA8FB,0x003F}, + {0xA8FC,0xA8FC,0x003F}, + {0xA8FD,0xA8FD,0x003F}, + {0xA8FE,0xA8FE,0x003F}, + {0xA8FF,0xA8FF,0xA8FF} +}; + + +static MY_UNICASE_INFO *my_caseinfo_gb2312[256]= +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, cA2, cA3, NULL, NULL, cA6, cA7, /* A */ + cA8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + + /* page 0 0x2121-0x2658 */ static uint16 tab_gb2312_uni0[]={ 0x3000,0x3001,0x3002,0x30FB,0x02C9,0x02C7,0x00A8,0x3003, @@ -5781,7 +6423,7 @@ CHARSET_INFO my_charset_gb2312_chinese_ci= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_gb2312, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ @@ -5813,7 +6455,7 @@ CHARSET_INFO my_charset_gb2312_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_gb2312, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index 7b8bb85652b..52a8d994fa4 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -137,6 +137,864 @@ static uchar NEAR to_upper_gbk[]= (uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377', }; + +static MY_UNICASE_INFO cA2[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA240,0xA240,0x003F}, /* A240 */ + {0xA241,0xA241,0x003F}, + {0xA242,0xA242,0x003F}, + {0xA243,0xA243,0x003F}, + {0xA244,0xA244,0x003F}, + {0xA245,0xA245,0x003F}, + {0xA246,0xA246,0x003F}, + {0xA247,0xA247,0x003F}, + {0xA248,0xA248,0x003F}, + {0xA249,0xA249,0x003F}, + {0xA24A,0xA24A,0x003F}, + {0xA24B,0xA24B,0x003F}, + {0xA24C,0xA24C,0x003F}, + {0xA24D,0xA24D,0x003F}, + {0xA24E,0xA24E,0x003F}, + {0xA24F,0xA24F,0x003F}, + {0xA250,0xA250,0x003F}, /* A250 */ + {0xA251,0xA251,0x003F}, + {0xA252,0xA252,0x003F}, + {0xA253,0xA253,0x003F}, + {0xA254,0xA254,0x003F}, + {0xA255,0xA255,0x003F}, + {0xA256,0xA256,0x003F}, + {0xA257,0xA257,0x003F}, + {0xA258,0xA258,0x003F}, + {0xA259,0xA259,0x003F}, + {0xA25A,0xA25A,0x003F}, + {0xA25B,0xA25B,0x003F}, + {0xA25C,0xA25C,0x003F}, + {0xA25D,0xA25D,0x003F}, + {0xA25E,0xA25E,0x003F}, + {0xA25F,0xA25F,0x003F}, + {0xA260,0xA260,0x003F}, /* A260 */ + {0xA261,0xA261,0x003F}, + {0xA262,0xA262,0x003F}, + {0xA263,0xA263,0x003F}, + {0xA264,0xA264,0x003F}, + {0xA265,0xA265,0x003F}, + {0xA266,0xA266,0x003F}, + {0xA267,0xA267,0x003F}, + {0xA268,0xA268,0x003F}, + {0xA269,0xA269,0x003F}, + {0xA26A,0xA26A,0x003F}, + {0xA26B,0xA26B,0x003F}, + {0xA26C,0xA26C,0x003F}, + {0xA26D,0xA26D,0x003F}, + {0xA26E,0xA26E,0x003F}, + {0xA26F,0xA26F,0x003F}, + {0xA270,0xA270,0x003F}, /* A270 */ + {0xA271,0xA271,0x003F}, + {0xA272,0xA272,0x003F}, + {0xA273,0xA273,0x003F}, + {0xA274,0xA274,0x003F}, + {0xA275,0xA275,0x003F}, + {0xA276,0xA276,0x003F}, + {0xA277,0xA277,0x003F}, + {0xA278,0xA278,0x003F}, + {0xA279,0xA279,0x003F}, + {0xA27A,0xA27A,0x003F}, + {0xA27B,0xA27B,0x003F}, + {0xA27C,0xA27C,0x003F}, + {0xA27D,0xA27D,0x003F}, + {0xA27E,0xA27E,0x003F}, + {0xA27F,0xA27F,0xA27F}, + {0xA280,0xA280,0x003F}, /* A280 */ + {0xA281,0xA281,0x003F}, + {0xA282,0xA282,0x003F}, + {0xA283,0xA283,0x003F}, + {0xA284,0xA284,0x003F}, + {0xA285,0xA285,0x003F}, + {0xA286,0xA286,0x003F}, + {0xA287,0xA287,0x003F}, + {0xA288,0xA288,0x003F}, + {0xA289,0xA289,0x003F}, + {0xA28A,0xA28A,0x003F}, + {0xA28B,0xA28B,0x003F}, + {0xA28C,0xA28C,0x003F}, + {0xA28D,0xA28D,0x003F}, + {0xA28E,0xA28E,0x003F}, + {0xA28F,0xA28F,0x003F}, + {0xA290,0xA290,0x003F}, /* A290 */ + {0xA291,0xA291,0x003F}, + {0xA292,0xA292,0x003F}, + {0xA293,0xA293,0x003F}, + {0xA294,0xA294,0x003F}, + {0xA295,0xA295,0x003F}, + {0xA296,0xA296,0x003F}, + {0xA297,0xA297,0x003F}, + {0xA298,0xA298,0x003F}, + {0xA299,0xA299,0x003F}, + {0xA29A,0xA29A,0x003F}, + {0xA29B,0xA29B,0x003F}, + {0xA29C,0xA29C,0x003F}, + {0xA29D,0xA29D,0x003F}, + {0xA29E,0xA29E,0x003F}, + {0xA29F,0xA29F,0x003F}, + {0xA2A0,0xA2A0,0x003F}, /* A2A0 */ + {0xA2F1,0xA2A1,0x2170}, + {0xA2F2,0xA2A2,0x2171}, + {0xA2F3,0xA2A3,0x2172}, + {0xA2F4,0xA2A4,0x2173}, + {0xA2F5,0xA2A5,0x2174}, + {0xA2F6,0xA2A6,0x2175}, + {0xA2F7,0xA2A7,0x2176}, + {0xA2F8,0xA2A8,0x2177}, + {0xA2F9,0xA2A9,0x2178}, + {0xA2FA,0xA2AA,0x2179}, + {0xA2AB,0xA2AB,0x003F}, + {0xA2AC,0xA2AC,0x003F}, + {0xA2AD,0xA2AD,0x003F}, + {0xA2AE,0xA2AE,0x003F}, + {0xA2AF,0xA2AF,0x003F}, + {0xA2B0,0xA2B0,0x003F}, /* A2B0 */ + {0xA2B1,0xA2B1,0x2488}, + {0xA2B2,0xA2B2,0x2489}, + {0xA2B3,0xA2B3,0x248A}, + {0xA2B4,0xA2B4,0x248B}, + {0xA2B5,0xA2B5,0x248C}, + {0xA2B6,0xA2B6,0x248D}, + {0xA2B7,0xA2B7,0x248E}, + {0xA2B8,0xA2B8,0x248F}, + {0xA2B9,0xA2B9,0x2490}, + {0xA2BA,0xA2BA,0x2491}, + {0xA2BB,0xA2BB,0x2492}, + {0xA2BC,0xA2BC,0x2493}, + {0xA2BD,0xA2BD,0x2494}, + {0xA2BE,0xA2BE,0x2495}, + {0xA2BF,0xA2BF,0x2496}, + {0xA2C0,0xA2C0,0x2497}, /* A2C0 */ + {0xA2C1,0xA2C1,0x2498}, + {0xA2C2,0xA2C2,0x2499}, + {0xA2C3,0xA2C3,0x249A}, + {0xA2C4,0xA2C4,0x249B}, + {0xA2C5,0xA2C5,0x2474}, + {0xA2C6,0xA2C6,0x2475}, + {0xA2C7,0xA2C7,0x2476}, + {0xA2C8,0xA2C8,0x2477}, + {0xA2C9,0xA2C9,0x2478}, + {0xA2CA,0xA2CA,0x2479}, + {0xA2CB,0xA2CB,0x247A}, + {0xA2CC,0xA2CC,0x247B}, + {0xA2CD,0xA2CD,0x247C}, + {0xA2CE,0xA2CE,0x247D}, + {0xA2CF,0xA2CF,0x247E}, + {0xA2D0,0xA2D0,0x247F}, /* A2D0 */ + {0xA2D1,0xA2D1,0x2480}, + {0xA2D2,0xA2D2,0x2481}, + {0xA2D3,0xA2D3,0x2482}, + {0xA2D4,0xA2D4,0x2483}, + {0xA2D5,0xA2D5,0x2484}, + {0xA2D6,0xA2D6,0x2485}, + {0xA2D7,0xA2D7,0x2486}, + {0xA2D8,0xA2D8,0x2487}, + {0xA2D9,0xA2D9,0x2460}, + {0xA2DA,0xA2DA,0x2461}, + {0xA2DB,0xA2DB,0x2462}, + {0xA2DC,0xA2DC,0x2463}, + {0xA2DD,0xA2DD,0x2464}, + {0xA2DE,0xA2DE,0x2465}, + {0xA2DF,0xA2DF,0x2466}, + {0xA2E0,0xA2E0,0x2467}, /* A2E0 */ + {0xA2E1,0xA2E1,0x2468}, + {0xA2E2,0xA2E2,0x2469}, + {0xA2E3,0xA2E3,0x003F}, + {0xA2E4,0xA2E4,0x003F}, + {0xA2E5,0xA2E5,0x3220}, + {0xA2E6,0xA2E6,0x3221}, + {0xA2E7,0xA2E7,0x3222}, + {0xA2E8,0xA2E8,0x3223}, + {0xA2E9,0xA2E9,0x3224}, + {0xA2EA,0xA2EA,0x3225}, + {0xA2EB,0xA2EB,0x3226}, + {0xA2EC,0xA2EC,0x3227}, + {0xA2ED,0xA2ED,0x3228}, + {0xA2EE,0xA2EE,0x3229}, + {0xA2EF,0xA2EF,0x003F}, + {0xA2F0,0xA2F0,0x003F}, /* A2F0 */ + {0xA2F1,0xA2A1,0x2160}, + {0xA2F2,0xA2A2,0x2161}, + {0xA2F3,0xA2A3,0x2162}, + {0xA2F4,0xA2A4,0x2163}, + {0xA2F5,0xA2A5,0x2164}, + {0xA2F6,0xA2A6,0x2165}, + {0xA2F7,0xA2A7,0x2166}, + {0xA2F8,0xA2A8,0x2167}, + {0xA2F9,0xA2A9,0x2168}, + {0xA2FA,0xA2AA,0x2169}, + {0xA2FB,0xA2FB,0x216A}, + {0xA2FC,0xA2FC,0x216B}, + {0xA2FD,0xA2FD,0x003F}, + {0xA2FE,0xA2FE,0x003F}, + {0xA2FF,0xA2FF,0xA2FF} +}; + +static MY_UNICASE_INFO cA3[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA340,0xA340,0x003F}, /* A340 */ + {0xA341,0xA341,0x003F}, + {0xA342,0xA342,0x003F}, + {0xA343,0xA343,0x003F}, + {0xA344,0xA344,0x003F}, + {0xA345,0xA345,0x003F}, + {0xA346,0xA346,0x003F}, + {0xA347,0xA347,0x003F}, + {0xA348,0xA348,0x003F}, + {0xA349,0xA349,0x003F}, + {0xA34A,0xA34A,0x003F}, + {0xA34B,0xA34B,0x003F}, + {0xA34C,0xA34C,0x003F}, + {0xA34D,0xA34D,0x003F}, + {0xA34E,0xA34E,0x003F}, + {0xA34F,0xA34F,0x003F}, + {0xA350,0xA350,0x003F}, /* A350 */ + {0xA351,0xA351,0x003F}, + {0xA352,0xA352,0x003F}, + {0xA353,0xA353,0x003F}, + {0xA354,0xA354,0x003F}, + {0xA355,0xA355,0x003F}, + {0xA356,0xA356,0x003F}, + {0xA357,0xA357,0x003F}, + {0xA358,0xA358,0x003F}, + {0xA359,0xA359,0x003F}, + {0xA35A,0xA35A,0x003F}, + {0xA35B,0xA35B,0x003F}, + {0xA35C,0xA35C,0x003F}, + {0xA35D,0xA35D,0x003F}, + {0xA35E,0xA35E,0x003F}, + {0xA35F,0xA35F,0x003F}, + {0xA360,0xA360,0x003F}, /* A360 */ + {0xA361,0xA361,0x003F}, + {0xA362,0xA362,0x003F}, + {0xA363,0xA363,0x003F}, + {0xA364,0xA364,0x003F}, + {0xA365,0xA365,0x003F}, + {0xA366,0xA366,0x003F}, + {0xA367,0xA367,0x003F}, + {0xA368,0xA368,0x003F}, + {0xA369,0xA369,0x003F}, + {0xA36A,0xA36A,0x003F}, + {0xA36B,0xA36B,0x003F}, + {0xA36C,0xA36C,0x003F}, + {0xA36D,0xA36D,0x003F}, + {0xA36E,0xA36E,0x003F}, + {0xA36F,0xA36F,0x003F}, + {0xA370,0xA370,0x003F}, /* A370 */ + {0xA371,0xA371,0x003F}, + {0xA372,0xA372,0x003F}, + {0xA373,0xA373,0x003F}, + {0xA374,0xA374,0x003F}, + {0xA375,0xA375,0x003F}, + {0xA376,0xA376,0x003F}, + {0xA377,0xA377,0x003F}, + {0xA378,0xA378,0x003F}, + {0xA379,0xA379,0x003F}, + {0xA37A,0xA37A,0x003F}, + {0xA37B,0xA37B,0x003F}, + {0xA37C,0xA37C,0x003F}, + {0xA37D,0xA37D,0x003F}, + {0xA37E,0xA37E,0x003F}, + {0xA37F,0xA37F,0xA37F}, + {0xA380,0xA380,0x003F}, /* A380 */ + {0xA381,0xA381,0x003F}, + {0xA382,0xA382,0x003F}, + {0xA383,0xA383,0x003F}, + {0xA384,0xA384,0x003F}, + {0xA385,0xA385,0x003F}, + {0xA386,0xA386,0x003F}, + {0xA387,0xA387,0x003F}, + {0xA388,0xA388,0x003F}, + {0xA389,0xA389,0x003F}, + {0xA38A,0xA38A,0x003F}, + {0xA38B,0xA38B,0x003F}, + {0xA38C,0xA38C,0x003F}, + {0xA38D,0xA38D,0x003F}, + {0xA38E,0xA38E,0x003F}, + {0xA38F,0xA38F,0x003F}, + {0xA390,0xA390,0x003F}, /* A390 */ + {0xA391,0xA391,0x003F}, + {0xA392,0xA392,0x003F}, + {0xA393,0xA393,0x003F}, + {0xA394,0xA394,0x003F}, + {0xA395,0xA395,0x003F}, + {0xA396,0xA396,0x003F}, + {0xA397,0xA397,0x003F}, + {0xA398,0xA398,0x003F}, + {0xA399,0xA399,0x003F}, + {0xA39A,0xA39A,0x003F}, + {0xA39B,0xA39B,0x003F}, + {0xA39C,0xA39C,0x003F}, + {0xA39D,0xA39D,0x003F}, + {0xA39E,0xA39E,0x003F}, + {0xA39F,0xA39F,0x003F}, + {0xA3A0,0xA3A0,0x003F}, /* A3A0 */ + {0xA3A1,0xA3A1,0xFF01}, + {0xA3A2,0xA3A2,0xFF02}, + {0xA3A3,0xA3A3,0xFF03}, + {0xA3A4,0xA3A4,0xFFE5}, + {0xA3A5,0xA3A5,0xFF05}, + {0xA3A6,0xA3A6,0xFF06}, + {0xA3A7,0xA3A7,0xFF07}, + {0xA3A8,0xA3A8,0xFF08}, + {0xA3A9,0xA3A9,0xFF09}, + {0xA3AA,0xA3AA,0xFF0A}, + {0xA3AB,0xA3AB,0xFF0B}, + {0xA3AC,0xA3AC,0xFF0C}, + {0xA3AD,0xA3AD,0xFF0D}, + {0xA3AE,0xA3AE,0xFF0E}, + {0xA3AF,0xA3AF,0xFF0F}, + {0xA3B0,0xA3B0,0xFF10}, /* A3B0 */ + {0xA3B1,0xA3B1,0xFF11}, + {0xA3B2,0xA3B2,0xFF12}, + {0xA3B3,0xA3B3,0xFF13}, + {0xA3B4,0xA3B4,0xFF14}, + {0xA3B5,0xA3B5,0xFF15}, + {0xA3B6,0xA3B6,0xFF16}, + {0xA3B7,0xA3B7,0xFF17}, + {0xA3B8,0xA3B8,0xFF18}, + {0xA3B9,0xA3B9,0xFF19}, + {0xA3BA,0xA3BA,0xFF1A}, + {0xA3BB,0xA3BB,0xFF1B}, + {0xA3BC,0xA3BC,0xFF1C}, + {0xA3BD,0xA3BD,0xFF1D}, + {0xA3BE,0xA3BE,0xFF1E}, + {0xA3BF,0xA3BF,0xFF1F}, + {0xA3C0,0xA3C0,0xFF20}, /* A3C0 */ + {0xA3C1,0xA3E1,0xFF21}, + {0xA3C2,0xA3E2,0xFF22}, + {0xA3C3,0xA3E3,0xFF23}, + {0xA3C4,0xA3E4,0xFF24}, + {0xA3C5,0xA3E5,0xFF25}, + {0xA3C6,0xA3E6,0xFF26}, + {0xA3C7,0xA3E7,0xFF27}, + {0xA3C8,0xA3E8,0xFF28}, + {0xA3C9,0xA3E9,0xFF29}, + {0xA3CA,0xA3EA,0xFF2A}, + {0xA3CB,0xA3EB,0xFF2B}, + {0xA3CC,0xA3EC,0xFF2C}, + {0xA3CD,0xA3ED,0xFF2D}, + {0xA3CE,0xA3EE,0xFF2E}, + {0xA3CF,0xA3EF,0xFF2F}, + {0xA3D0,0xA3F0,0xFF30}, /* A3D0 */ + {0xA3D1,0xA3F1,0xFF31}, + {0xA3D2,0xA3F2,0xFF32}, + {0xA3D3,0xA3F3,0xFF33}, + {0xA3D4,0xA3F4,0xFF34}, + {0xA3D5,0xA3F5,0xFF35}, + {0xA3D6,0xA3F6,0xFF36}, + {0xA3D7,0xA3F7,0xFF37}, + {0xA3D8,0xA3F8,0xFF38}, + {0xA3D9,0xA3F9,0xFF39}, + {0xA3DA,0xA3FA,0xFF3A}, + {0xA3DB,0xA3DB,0xFF3B}, + {0xA3DC,0xA3DC,0xFF3C}, + {0xA3DD,0xA3DD,0xFF3D}, + {0xA3DE,0xA3DE,0xFF3E}, + {0xA3DF,0xA3DF,0xFF3F}, + {0xA3E0,0xA3E0,0xFF40}, /* A3E0 */ + {0xA3C1,0xA3E1,0xFF41}, + {0xA3C2,0xA3E2,0xFF42}, + {0xA3C3,0xA3E3,0xFF43}, + {0xA3C4,0xA3E4,0xFF44}, + {0xA3C5,0xA3E5,0xFF45}, + {0xA3C6,0xA3E6,0xFF46}, + {0xA3C7,0xA3E7,0xFF47}, + {0xA3C8,0xA3E8,0xFF48}, + {0xA3C9,0xA3E9,0xFF49}, + {0xA3CA,0xA3EA,0xFF4A}, + {0xA3CB,0xA3EB,0xFF4B}, + {0xA3CC,0xA3EC,0xFF4C}, + {0xA3CD,0xA3ED,0xFF4D}, + {0xA3CE,0xA3EE,0xFF4E}, + {0xA3CF,0xA3EF,0xFF4F}, + {0xA3D0,0xA3F0,0xFF50}, /* A3F0 */ + {0xA3D1,0xA3F1,0xFF51}, + {0xA3D2,0xA3F2,0xFF52}, + {0xA3D3,0xA3F3,0xFF53}, + {0xA3D4,0xA3F4,0xFF54}, + {0xA3D5,0xA3F5,0xFF55}, + {0xA3D6,0xA3F6,0xFF56}, + {0xA3D7,0xA3F7,0xFF57}, + {0xA3D8,0xA3F8,0xFF58}, + {0xA3D9,0xA3F9,0xFF59}, + {0xA3DA,0xA3FA,0xFF5A}, + {0xA3FB,0xA3FB,0xFF5B}, + {0xA3FC,0xA3FC,0xFF5C}, + {0xA3FD,0xA3FD,0xFF5D}, + {0xA3FE,0xA3FE,0xFFE3}, + {0xA3FF,0xA3FF,0xA3FF} +}; + + +static MY_UNICASE_INFO cA6[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA640,0xA640,0x003F}, /* A640 */ + {0xA641,0xA641,0x003F}, + {0xA642,0xA642,0x003F}, + {0xA643,0xA643,0x003F}, + {0xA644,0xA644,0x003F}, + {0xA645,0xA645,0x003F}, + {0xA646,0xA646,0x003F}, + {0xA647,0xA647,0x003F}, + {0xA648,0xA648,0x003F}, + {0xA649,0xA649,0x003F}, + {0xA64A,0xA64A,0x003F}, + {0xA64B,0xA64B,0x003F}, + {0xA64C,0xA64C,0x003F}, + {0xA64D,0xA64D,0x003F}, + {0xA64E,0xA64E,0x003F}, + {0xA64F,0xA64F,0x003F}, + {0xA650,0xA650,0x003F}, /* A650 */ + {0xA651,0xA651,0x003F}, + {0xA652,0xA652,0x003F}, + {0xA653,0xA653,0x003F}, + {0xA654,0xA654,0x003F}, + {0xA655,0xA655,0x003F}, + {0xA656,0xA656,0x003F}, + {0xA657,0xA657,0x003F}, + {0xA658,0xA658,0x003F}, + {0xA659,0xA659,0x003F}, + {0xA65A,0xA65A,0x003F}, + {0xA65B,0xA65B,0x003F}, + {0xA65C,0xA65C,0x003F}, + {0xA65D,0xA65D,0x003F}, + {0xA65E,0xA65E,0x003F}, + {0xA65F,0xA65F,0x003F}, + {0xA660,0xA660,0x003F}, /* A660 */ + {0xA661,0xA661,0x003F}, + {0xA662,0xA662,0x003F}, + {0xA663,0xA663,0x003F}, + {0xA664,0xA664,0x003F}, + {0xA665,0xA665,0x003F}, + {0xA666,0xA666,0x003F}, + {0xA667,0xA667,0x003F}, + {0xA668,0xA668,0x003F}, + {0xA669,0xA669,0x003F}, + {0xA66A,0xA66A,0x003F}, + {0xA66B,0xA66B,0x003F}, + {0xA66C,0xA66C,0x003F}, + {0xA66D,0xA66D,0x003F}, + {0xA66E,0xA66E,0x003F}, + {0xA66F,0xA66F,0x003F}, + {0xA670,0xA670,0x003F}, /* A670 */ + {0xA671,0xA671,0x003F}, + {0xA672,0xA672,0x003F}, + {0xA673,0xA673,0x003F}, + {0xA674,0xA674,0x003F}, + {0xA675,0xA675,0x003F}, + {0xA676,0xA676,0x003F}, + {0xA677,0xA677,0x003F}, + {0xA678,0xA678,0x003F}, + {0xA679,0xA679,0x003F}, + {0xA67A,0xA67A,0x003F}, + {0xA67B,0xA67B,0x003F}, + {0xA67C,0xA67C,0x003F}, + {0xA67D,0xA67D,0x003F}, + {0xA67E,0xA67E,0x003F}, + {0xA67F,0xA67F,0xA67F}, + {0xA680,0xA680,0x003F}, /* A680 */ + {0xA681,0xA681,0x003F}, + {0xA682,0xA682,0x003F}, + {0xA683,0xA683,0x003F}, + {0xA684,0xA684,0x003F}, + {0xA685,0xA685,0x003F}, + {0xA686,0xA686,0x003F}, + {0xA687,0xA687,0x003F}, + {0xA688,0xA688,0x003F}, + {0xA689,0xA689,0x003F}, + {0xA68A,0xA68A,0x003F}, + {0xA68B,0xA68B,0x003F}, + {0xA68C,0xA68C,0x003F}, + {0xA68D,0xA68D,0x003F}, + {0xA68E,0xA68E,0x003F}, + {0xA68F,0xA68F,0x003F}, + {0xA690,0xA690,0x003F}, /* A690 */ + {0xA691,0xA691,0x003F}, + {0xA692,0xA692,0x003F}, + {0xA693,0xA693,0x003F}, + {0xA694,0xA694,0x003F}, + {0xA695,0xA695,0x003F}, + {0xA696,0xA696,0x003F}, + {0xA697,0xA697,0x003F}, + {0xA698,0xA698,0x003F}, + {0xA699,0xA699,0x003F}, + {0xA69A,0xA69A,0x003F}, + {0xA69B,0xA69B,0x003F}, + {0xA69C,0xA69C,0x003F}, + {0xA69D,0xA69D,0x003F}, + {0xA69E,0xA69E,0x003F}, + {0xA69F,0xA69F,0x003F}, + {0xA6A0,0xA6A0,0x003F}, /* A6A0 */ + {0xA6A1,0xA6C1,0x0391}, + {0xA6A2,0xA6C2,0x0392}, + {0xA6A3,0xA6C3,0x0393}, + {0xA6A4,0xA6C4,0x0394}, + {0xA6A5,0xA6C5,0x0395}, + {0xA6A6,0xA6C6,0x0396}, + {0xA6A7,0xA6C7,0x0397}, + {0xA6A8,0xA6C8,0x0398}, + {0xA6A9,0xA6C9,0x0399}, + {0xA6AA,0xA6CA,0x039A}, + {0xA6AB,0xA6CB,0x039B}, + {0xA6AC,0xA6CC,0x039C}, + {0xA6AD,0xA6CD,0x039D}, + {0xA6AE,0xA6CE,0x039E}, + {0xA6AF,0xA6CF,0x039F}, + {0xA6B0,0xA6D0,0x03A0}, /* A6B0 */ + {0xA6B1,0xA6D1,0x03A1}, + {0xA6B2,0xA6D2,0x03A3}, + {0xA6B3,0xA6D3,0x03A4}, + {0xA6B4,0xA6D4,0x03A5}, + {0xA6B5,0xA6D5,0x03A6}, + {0xA6B6,0xA6D6,0x03A7}, + {0xA6B7,0xA6D7,0x03A8}, + {0xA6B8,0xA6D8,0x03A9}, + {0xA6B9,0xA6B9,0x003F}, + {0xA6BA,0xA6BA,0x003F}, + {0xA6BB,0xA6BB,0x003F}, + {0xA6BC,0xA6BC,0x003F}, + {0xA6BD,0xA6BD,0x003F}, + {0xA6BE,0xA6BE,0x003F}, + {0xA6BF,0xA6BF,0x003F}, + {0xA6C0,0xA6C0,0x003F}, /* A6C0 */ + {0xA6A1,0xA6C1,0x03B1}, + {0xA6A2,0xA6C2,0x03B2}, + {0xA6A3,0xA6C3,0x03B3}, + {0xA6A4,0xA6C4,0x03B4}, + {0xA6A5,0xA6C5,0x03B5}, + {0xA6A6,0xA6C6,0x03B6}, + {0xA6A7,0xA6C7,0x03B7}, + {0xA6A8,0xA6C8,0x03B8}, + {0xA6A9,0xA6C9,0x03B9}, + {0xA6AA,0xA6CA,0x03BA}, + {0xA6AB,0xA6CB,0x03BB}, + {0xA6AC,0xA6CC,0x03BC}, + {0xA6AD,0xA6CD,0x03BD}, + {0xA6AE,0xA6CE,0x03BE}, + {0xA6AF,0xA6CF,0x03BF}, + {0xA6B0,0xA6D0,0x03C0}, /* A6D0 */ + {0xA6B1,0xA6D1,0x03C1}, + {0xA6B2,0xA6D2,0x03C3}, + {0xA6B3,0xA6D3,0x03C4}, + {0xA6B4,0xA6D4,0x03C5}, + {0xA6B5,0xA6D5,0x03C6}, + {0xA6B6,0xA6D6,0x03C7}, + {0xA6B7,0xA6D7,0x03C8}, + {0xA6B8,0xA6D8,0x03C9}, + {0xA6D9,0xA6D9,0x003F}, + {0xA6DA,0xA6DA,0x003F}, + {0xA6DB,0xA6DB,0x003F}, + {0xA6DC,0xA6DC,0x003F}, + {0xA6DD,0xA6DD,0x003F}, + {0xA6DE,0xA6DE,0x003F}, + {0xA6DF,0xA6DF,0x003F}, + {0xA6E0,0xA6E0,0xFE35}, /* A6E0 */ + {0xA6E1,0xA6E1,0xFE36}, + {0xA6E2,0xA6E2,0xFE39}, + {0xA6E3,0xA6E3,0xFE3A}, + {0xA6E4,0xA6E4,0xFE3F}, + {0xA6E5,0xA6E5,0xFE40}, + {0xA6E6,0xA6E6,0xFE3D}, + {0xA6E7,0xA6E7,0xFE3E}, + {0xA6E8,0xA6E8,0xFE41}, + {0xA6E9,0xA6E9,0xFE42}, + {0xA6EA,0xA6EA,0xFE43}, + {0xA6EB,0xA6EB,0xFE44}, + {0xA6EC,0xA6EC,0x003F}, + {0xA6ED,0xA6ED,0x003F}, + {0xA6EE,0xA6EE,0xFE3B}, + {0xA6EF,0xA6EF,0xFE3C}, + {0xA6F0,0xA6F0,0xFE37}, /* A6F0 */ + {0xA6F1,0xA6F1,0xFE38}, + {0xA6F2,0xA6F2,0xFE31}, + {0xA6F3,0xA6F3,0x003F}, + {0xA6F4,0xA6F4,0xFE33}, + {0xA6F5,0xA6F5,0xFE34}, + {0xA6F6,0xA6F6,0x003F}, + {0xA6F7,0xA6F7,0x003F}, + {0xA6F8,0xA6F8,0x003F}, + {0xA6F9,0xA6F9,0x003F}, + {0xA6FA,0xA6FA,0x003F}, + {0xA6FB,0xA6FB,0x003F}, + {0xA6FC,0xA6FC,0x003F}, + {0xA6FD,0xA6FD,0x003F}, + {0xA6FE,0xA6FE,0x003F}, + {0xA6FF,0xA6FF,0xA6FF} +}; + + +static MY_UNICASE_INFO cA7[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA740,0xA740,0x003F}, /* A740 */ + {0xA741,0xA741,0x003F}, + {0xA742,0xA742,0x003F}, + {0xA743,0xA743,0x003F}, + {0xA744,0xA744,0x003F}, + {0xA745,0xA745,0x003F}, + {0xA746,0xA746,0x003F}, + {0xA747,0xA747,0x003F}, + {0xA748,0xA748,0x003F}, + {0xA749,0xA749,0x003F}, + {0xA74A,0xA74A,0x003F}, + {0xA74B,0xA74B,0x003F}, + {0xA74C,0xA74C,0x003F}, + {0xA74D,0xA74D,0x003F}, + {0xA74E,0xA74E,0x003F}, + {0xA74F,0xA74F,0x003F}, + {0xA750,0xA750,0x003F}, /* A750 */ + {0xA751,0xA751,0x003F}, + {0xA752,0xA752,0x003F}, + {0xA753,0xA753,0x003F}, + {0xA754,0xA754,0x003F}, + {0xA755,0xA755,0x003F}, + {0xA756,0xA756,0x003F}, + {0xA757,0xA757,0x003F}, + {0xA758,0xA758,0x003F}, + {0xA759,0xA759,0x003F}, + {0xA75A,0xA75A,0x003F}, + {0xA75B,0xA75B,0x003F}, + {0xA75C,0xA75C,0x003F}, + {0xA75D,0xA75D,0x003F}, + {0xA75E,0xA75E,0x003F}, + {0xA75F,0xA75F,0x003F}, + {0xA760,0xA760,0x003F}, /* A760 */ + {0xA761,0xA761,0x003F}, + {0xA762,0xA762,0x003F}, + {0xA763,0xA763,0x003F}, + {0xA764,0xA764,0x003F}, + {0xA765,0xA765,0x003F}, + {0xA766,0xA766,0x003F}, + {0xA767,0xA767,0x003F}, + {0xA768,0xA768,0x003F}, + {0xA769,0xA769,0x003F}, + {0xA76A,0xA76A,0x003F}, + {0xA76B,0xA76B,0x003F}, + {0xA76C,0xA76C,0x003F}, + {0xA76D,0xA76D,0x003F}, + {0xA76E,0xA76E,0x003F}, + {0xA76F,0xA76F,0x003F}, + {0xA770,0xA770,0x003F}, /* A770 */ + {0xA771,0xA771,0x003F}, + {0xA772,0xA772,0x003F}, + {0xA773,0xA773,0x003F}, + {0xA774,0xA774,0x003F}, + {0xA775,0xA775,0x003F}, + {0xA776,0xA776,0x003F}, + {0xA777,0xA777,0x003F}, + {0xA778,0xA778,0x003F}, + {0xA779,0xA779,0x003F}, + {0xA77A,0xA77A,0x003F}, + {0xA77B,0xA77B,0x003F}, + {0xA77C,0xA77C,0x003F}, + {0xA77D,0xA77D,0x003F}, + {0xA77E,0xA77E,0x003F}, + {0xA77F,0xA77F,0xA77F}, + {0xA780,0xA780,0x003F}, /* A780 */ + {0xA781,0xA781,0x003F}, + {0xA782,0xA782,0x003F}, + {0xA783,0xA783,0x003F}, + {0xA784,0xA784,0x003F}, + {0xA785,0xA785,0x003F}, + {0xA786,0xA786,0x003F}, + {0xA787,0xA787,0x003F}, + {0xA788,0xA788,0x003F}, + {0xA789,0xA789,0x003F}, + {0xA78A,0xA78A,0x003F}, + {0xA78B,0xA78B,0x003F}, + {0xA78C,0xA78C,0x003F}, + {0xA78D,0xA78D,0x003F}, + {0xA78E,0xA78E,0x003F}, + {0xA78F,0xA78F,0x003F}, + {0xA790,0xA790,0x003F}, /* A790 */ + {0xA791,0xA791,0x003F}, + {0xA792,0xA792,0x003F}, + {0xA793,0xA793,0x003F}, + {0xA794,0xA794,0x003F}, + {0xA795,0xA795,0x003F}, + {0xA796,0xA796,0x003F}, + {0xA797,0xA797,0x003F}, + {0xA798,0xA798,0x003F}, + {0xA799,0xA799,0x003F}, + {0xA79A,0xA79A,0x003F}, + {0xA79B,0xA79B,0x003F}, + {0xA79C,0xA79C,0x003F}, + {0xA79D,0xA79D,0x003F}, + {0xA79E,0xA79E,0x003F}, + {0xA79F,0xA79F,0x003F}, + {0xA7A0,0xA7A0,0x003F}, /* A7A0 */ + {0xA7A1,0xA7D1,0x0410}, + {0xA7A2,0xA7D2,0x0411}, + {0xA7A3,0xA7D3,0x0412}, + {0xA7A4,0xA7D4,0x0413}, + {0xA7A5,0xA7D5,0x0414}, + {0xA7A6,0xA7D6,0x0415}, + {0xA7A7,0xA7D7,0x0401}, + {0xA7A8,0xA7D8,0x0416}, + {0xA7A9,0xA7D9,0x0417}, + {0xA7AA,0xA7DA,0x0418}, + {0xA7AB,0xA7DB,0x0419}, + {0xA7AC,0xA7DC,0x041A}, + {0xA7AD,0xA7DD,0x041B}, + {0xA7AE,0xA7DE,0x041C}, + {0xA7AF,0xA7DF,0x041D}, + {0xA7B0,0xA7E0,0x041E}, /* A7B0 */ + {0xA7B1,0xA7E1,0x041F}, + {0xA7B2,0xA7E2,0x0420}, + {0xA7B3,0xA7E3,0x0421}, + {0xA7B4,0xA7E4,0x0422}, + {0xA7B5,0xA7E5,0x0423}, + {0xA7B6,0xA7E6,0x0424}, + {0xA7B7,0xA7E7,0x0425}, + {0xA7B8,0xA7E8,0x0426}, + {0xA7B9,0xA7E9,0x0427}, + {0xA7BA,0xA7EA,0x0428}, + {0xA7BB,0xA7EB,0x0429}, + {0xA7BC,0xA7EC,0x042A}, + {0xA7BD,0xA7ED,0x042B}, + {0xA7BE,0xA7EE,0x042C}, + {0xA7BF,0xA7EF,0x042D}, + {0xA7C0,0xA7F0,0x042E}, /* A7C0 */ + {0xA7C1,0xA7F1,0x042F}, + {0xA7C2,0xA7C2,0x003F}, + {0xA7C3,0xA7C3,0x003F}, + {0xA7C4,0xA7C4,0x003F}, + {0xA7C5,0xA7C5,0x003F}, + {0xA7C6,0xA7C6,0x003F}, + {0xA7C7,0xA7C7,0x003F}, + {0xA7C8,0xA7C8,0x003F}, + {0xA7C9,0xA7C9,0x003F}, + {0xA7CA,0xA7CA,0x003F}, + {0xA7CB,0xA7CB,0x003F}, + {0xA7CC,0xA7CC,0x003F}, + {0xA7CD,0xA7CD,0x003F}, + {0xA7CE,0xA7CE,0x003F}, + {0xA7CF,0xA7CF,0x003F}, + {0xA7D0,0xA7D0,0x003F}, /* A7D0 */ + {0xA7A1,0xA7D1,0x0430}, + {0xA7A2,0xA7D2,0x0431}, + {0xA7A3,0xA7D3,0x0432}, + {0xA7A4,0xA7D4,0x0433}, + {0xA7A5,0xA7D5,0x0434}, + {0xA7A6,0xA7D6,0x0435}, + {0xA7A7,0xA7D7,0x0451}, + {0xA7A8,0xA7D8,0x0436}, + {0xA7A9,0xA7D9,0x0437}, + {0xA7AA,0xA7DA,0x0438}, + {0xA7AB,0xA7DB,0x0439}, + {0xA7AC,0xA7DC,0x043A}, + {0xA7AD,0xA7DD,0x043B}, + {0xA7AE,0xA7DE,0x043C}, + {0xA7AF,0xA7DF,0x043D}, + {0xA7B0,0xA7E0,0x043E}, /* A7E0 */ + {0xA7B1,0xA7E1,0x043F}, + {0xA7B2,0xA7E2,0x0440}, + {0xA7B3,0xA7E3,0x0441}, + {0xA7B4,0xA7E4,0x0442}, + {0xA7B5,0xA7E5,0x0443}, + {0xA7B6,0xA7E6,0x0444}, + {0xA7B7,0xA7E7,0x0445}, + {0xA7B8,0xA7E8,0x0446}, + {0xA7B9,0xA7E9,0x0447}, + {0xA7BA,0xA7EA,0x0448}, + {0xA7BB,0xA7EB,0x0449}, + {0xA7BC,0xA7EC,0x044A}, + {0xA7BD,0xA7ED,0x044B}, + {0xA7BE,0xA7EE,0x044C}, + {0xA7BF,0xA7EF,0x044D}, + {0xA7C0,0xA7F0,0x044E}, /* A7F0 */ + {0xA7C1,0xA7F1,0x044F}, + {0xA7F2,0xA7F2,0x003F}, + {0xA7F3,0xA7F3,0x003F}, + {0xA7F4,0xA7F4,0x003F}, + {0xA7F5,0xA7F5,0x003F}, + {0xA7F6,0xA7F6,0x003F}, + {0xA7F7,0xA7F7,0x003F}, + {0xA7F8,0xA7F8,0x003F}, + {0xA7F9,0xA7F9,0x003F}, + {0xA7FA,0xA7FA,0x003F}, + {0xA7FB,0xA7FB,0x003F}, + {0xA7FC,0xA7FC,0x003F}, + {0xA7FD,0xA7FD,0x003F}, + {0xA7FE,0xA7FE,0x003F}, + {0xA7FF,0xA7FF,0xA7FF} +}; + + +static MY_UNICASE_INFO *my_caseinfo_gbk[256]= +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, cA2, cA3, NULL, NULL, cA6, cA7, /* A */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + + + static uchar NEAR sort_order_gbk[]= { '\000','\001','\002','\003','\004','\005','\006','\007', @@ -10039,7 +10897,7 @@ CHARSET_INFO my_charset_gbk_chinese_ci= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_gbk, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ @@ -10071,7 +10929,7 @@ CHARSET_INFO my_charset_gbk_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_gbk, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index b0f7c297260..252c5a08b8c 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -62,6 +62,17 @@ size_t my_casedn_str_mb(CHARSET_INFO * cs, char *str) } +static inline MY_UNICASE_INFO* +get_case_info_for_ch(CHARSET_INFO *cs, uint page, uint offs) +{ + MY_UNICASE_INFO *p; + return cs->caseinfo ? ((p= cs->caseinfo[page]) ? &p[offs] : NULL) : NULL; +} + + +/* + For character sets which don't change octet length in case conversion. +*/ size_t my_caseup_mb(CHARSET_INFO * cs, char *src, size_t srclen, char *dst __attribute__((unused)), size_t dstlen __attribute__((unused))) @@ -70,11 +81,23 @@ size_t my_caseup_mb(CHARSET_INFO * cs, char *src, size_t srclen, register char *srcend= src + srclen; register uchar *map= cs->to_upper; + DBUG_ASSERT(cs->caseup_multiply == 1); DBUG_ASSERT(src == dst && srclen == dstlen); + DBUG_ASSERT(cs->mbmaxlen == 2); + while (src < srcend) { if ((l=my_ismbchar(cs, src, srcend))) - src+= l; + { + MY_UNICASE_INFO *ch; + if ((ch= get_case_info_for_ch(cs, (uchar) src[0], (uchar) src[1]))) + { + *src++= ch->toupper >> 8; + *src++= ch->toupper & 0xFF; + } + else + src+= l; + } else { *src=(char) map[(uchar) *src]; @@ -93,11 +116,23 @@ size_t my_casedn_mb(CHARSET_INFO * cs, char *src, size_t srclen, register char *srcend= src + srclen; register uchar *map=cs->to_lower; + DBUG_ASSERT(cs->casedn_multiply == 1); DBUG_ASSERT(src == dst && srclen == dstlen); + DBUG_ASSERT(cs->mbmaxlen == 2); + while (src < srcend) { if ((l= my_ismbchar(cs, src, srcend))) - src+= l; + { + MY_UNICASE_INFO *ch; + if ((ch= get_case_info_for_ch(cs, (uchar) src[0], (uchar) src[1]))) + { + *src++= ch->tolower >> 8; + *src++= ch->tolower & 0xFF; + } + else + src+= l; + } else { *src= (char) map[(uchar)*src]; @@ -108,6 +143,75 @@ size_t my_casedn_mb(CHARSET_INFO * cs, char *src, size_t srclen, } +/* + Case folding functions for character set + where case conversion can change string octet length. + For example, in EUCKR, + _euckr 0xA9A5 == "LATIN LETTER DOTLESS I" (Turkish letter) + is upper-cased to to + _euckr 0x49 "LATIN CAPITAL LETTER I" ('usual' letter I) + Length is reduced in this example from two bytes to one byte. +*/ +static size_t +my_casefold_mb_varlen(CHARSET_INFO *cs, + char *src, size_t srclen, + char *dst, size_t dstlen __attribute__((unused)), + uchar *map, + size_t is_upper) +{ + char *srcend= src + srclen, *dst0= dst; + + DBUG_ASSERT(cs->mbmaxlen == 2); + + while (src < srcend) + { + size_t mblen= my_ismbchar(cs, src, srcend); + if (mblen) + { + MY_UNICASE_INFO *ch; + if ((ch= get_case_info_for_ch(cs, (uchar) src[0], (uchar) src[1]))) + { + int code= is_upper ? ch->toupper : ch->tolower; + src+= 2; + if (code > 0xFF) + *dst++= code >> 8; + *dst++= code & 0xFF; + } + else + { + *dst++= *src++; + *dst++= *src++; + } + } + else + { + *dst++= (char) map[(uchar) *src++]; + } + } + return (size_t) (dst - dst0); +} + + +size_t +my_casedn_mb_varlen(CHARSET_INFO * cs, char *src, size_t srclen, + char *dst, size_t dstlen) +{ + DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply); + DBUG_ASSERT(src != dst || cs->casedn_multiply == 1); + return my_casefold_mb_varlen(cs, src, srclen, dst, dstlen, cs->to_lower, 0); +} + + +size_t +my_caseup_mb_varlen(CHARSET_INFO * cs, char *src, size_t srclen, + char *dst, size_t dstlen) +{ + DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply); + DBUG_ASSERT(src != dst || cs->caseup_multiply == 1); + return my_casefold_mb_varlen(cs, src, srclen, dst, dstlen, cs->to_upper, 1); +} + + /* my_strcasecmp_mb() returns 0 if strings are equal, non-zero otherwise. */ diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c index 60280efe087..cdf5e75f16f 100644 --- a/strings/ctype-sjis.c +++ b/strings/ctype-sjis.c @@ -197,6 +197,881 @@ static uint mbcharlen_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c) #define sjiscode(c,d) ((((uint) (uchar)(c)) << 8) | (uint) (uchar) (d)) +static MY_UNICASE_INFO c81[256]= +{ + /* 8100-810F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8110-811F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8120-812F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8130-813F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8140,0x8140,0x3000}, /* 8140-814F */ + {0x8141,0x8141,0x3001}, + {0x8142,0x8142,0x3002}, + {0x8143,0x8143,0xFF0C}, + {0x8144,0x8144,0xFF0E}, + {0x8145,0x8145,0x30FB}, + {0x8146,0x8146,0xFF1A}, + {0x8147,0x8147,0xFF1B}, + {0x8148,0x8148,0xFF1F}, + {0x8149,0x8149,0xFF01}, + {0x814A,0x814A,0x309B}, + {0x814B,0x814B,0x309C}, + {0x814C,0x814C,0x00B4}, + {0x814D,0x814D,0xFF40}, + {0x814E,0x814E,0x00A8}, + {0x814F,0x814F,0xFF3E}, + {0x8150,0x8150,0xFFE3}, /* 8150-815F */ + {0x8151,0x8151,0xFF3F}, + {0x8152,0x8152,0x30FD}, + {0x8153,0x8153,0x30FE}, + {0x8154,0x8154,0x309D}, + {0x8155,0x8155,0x309E}, + {0x8156,0x8156,0x3003}, + {0x8157,0x8157,0x4EDD}, + {0x8158,0x8158,0x3005}, + {0x8159,0x8159,0x3006}, + {0x815A,0x815A,0x3007}, + {0x815B,0x815B,0x30FC}, + {0x815C,0x815C,0x2015}, + {0x815D,0x815D,0x2010}, + {0x815E,0x815E,0xFF0F}, + {0x815F,0x815F,0xFF3C}, + {0x8160,0x8160,0xFF5E}, /* 8160-816F */ + {0x8161,0x8161,0x2225}, + {0x8162,0x8162,0xFF5C}, + {0x8163,0x8163,0x2026}, + {0x8164,0x8164,0x2025}, + {0x8165,0x8165,0x2018}, + {0x8166,0x8166,0x2019}, + {0x8167,0x8167,0x201C}, + {0x8168,0x8168,0x201D}, + {0x8169,0x8169,0xFF08}, + {0x816A,0x816A,0xFF09}, + {0x816B,0x816B,0x3014}, + {0x816C,0x816C,0x3015}, + {0x816D,0x816D,0xFF3B}, + {0x816E,0x816E,0xFF3D}, + {0x816F,0x816F,0xFF5B}, + {0x8170,0x8170,0xFF5D}, /* 8170-817F */ + {0x8171,0x8171,0x3008}, + {0x8172,0x8172,0x3009}, + {0x8173,0x8173,0x300A}, + {0x8174,0x8174,0x300B}, + {0x8175,0x8175,0x300C}, + {0x8176,0x8176,0x300D}, + {0x8177,0x8177,0x300E}, + {0x8178,0x8178,0x300F}, + {0x8179,0x8179,0x3010}, + {0x817A,0x817A,0x3011}, + {0x817B,0x817B,0xFF0B}, + {0x817C,0x817C,0xFF0D}, + {0x817D,0x817D,0x00B1}, + {0x817E,0x817E,0x00D7}, + {0,0,0}, + {0x8180,0x8180,0x00F7}, /* 8180-818F */ + {0x8181,0x8181,0xFF1D}, + {0x8182,0x8182,0x2260}, + {0x8183,0x8183,0xFF1C}, + {0x8184,0x8184,0xFF1E}, + {0x8185,0x8185,0x2266}, + {0x8186,0x8186,0x2267}, + {0x8187,0x8187,0x221E}, + {0x8188,0x8188,0x2234}, + {0x8189,0x8189,0x2642}, + {0x818A,0x818A,0x2640}, + {0x818B,0x818B,0x00B0}, + {0x818C,0x818C,0x2032}, + {0x818D,0x818D,0x2033}, + {0x818E,0x818E,0x2103}, + {0x818F,0x818F,0xFFE5}, + {0x8190,0x8190,0xFF04}, /* 8190-819F*/ + {0x8191,0x8191,0xFFE0}, + {0x8192,0x8192,0xFFE1}, + {0x8193,0x8193,0xFF05}, + {0x8194,0x8194,0xFF03}, + {0x8195,0x8195,0xFF06}, + {0x8196,0x8196,0xFF0A}, + {0x8197,0x8197,0xFF20}, + {0x8198,0x8198,0x00A7}, + {0x8199,0x8199,0x2606}, + {0x819A,0x819A,0x2605}, + {0x819B,0x819B,0x25CB}, + {0x819C,0x819C,0x25CF}, + {0x819D,0x819D,0x25CE}, + {0x819E,0x819E,0x25C7}, + {0x819F,0x819F,0x25C6}, + {0x81A0,0x81A0,0x25A1}, /* 81A0-81AF */ + {0x81A1,0x81A1,0x25A0}, + {0x81A2,0x81A2,0x25B3}, + {0x81A3,0x81A3,0x25B2}, + {0x81A4,0x81A4,0x25BD}, + {0x81A5,0x81A5,0x25BC}, + {0x81A6,0x81A6,0x203B}, + {0x81A7,0x81A7,0x3012}, + {0x81A8,0x81A8,0x2192}, + {0x81A9,0x81A9,0x2190}, + {0x81AA,0x81AA,0x2191}, + {0x81AB,0x81AB,0x2193}, + {0x81AC,0x81AC,0x3013}, + {0x81AD,0x81AD,0x003F}, + {0x81AE,0x81AE,0x003F}, + {0x81AF,0x81AF,0x003F}, + {0x81B0,0x81B0,0x003F}, /* 81B0-81BF */ + {0x81B1,0x81B1,0x003F}, + {0x81B2,0x81B2,0x003F}, + {0x81B3,0x81B3,0x003F}, + {0x81B4,0x81B4,0x003F}, + {0x81B5,0x81B5,0x003F}, + {0x81B6,0x81B6,0x003F}, + {0x81B7,0x81B7,0x003F}, + {0x81B8,0x81B8,0x2208}, + {0x81B9,0x81B9,0x220B}, + {0x81BA,0x81BA,0x2286}, + {0x81BB,0x81BB,0x2287}, + {0x81BC,0x81BC,0x2282}, + {0x81BD,0x81BD,0x2283}, + {0x81BE,0x81BE,0x222A}, + {0x81BF,0x81BF,0x2229}, + {0x81C0,0x81C0,0x003F}, /* 81C0-81CF */ + {0x81C1,0x81C1,0x003F}, + {0x81C2,0x81C2,0x003F}, + {0x81C3,0x81C3,0x003F}, + {0x81C4,0x81C4,0x003F}, + {0x81C5,0x81C5,0x003F}, + {0x81C6,0x81C6,0x003F}, + {0x81C7,0x81C7,0x003F}, + {0x81C8,0x81C8,0x2227}, + {0x81C9,0x81C9,0x2228}, + {0x81CA,0x81CA,0xFFE2}, + {0x81CB,0x81CB,0x21D2}, + {0x81CC,0x81CC,0x21D4}, + {0x81CD,0x81CD,0x2200}, + {0x81CE,0x81CE,0x2203}, + {0x81CF,0x81CF,0x003F}, + {0x81D0,0x81D0,0x003F}, /* 81D0-81DF */ + {0x81D1,0x81D1,0x003F}, + {0x81D2,0x81D2,0x003F}, + {0x81D3,0x81D3,0x003F}, + {0x81D4,0x81D4,0x003F}, + {0x81D5,0x81D5,0x003F}, + {0x81D6,0x81D6,0x003F}, + {0x81D7,0x81D7,0x003F}, + {0x81D8,0x81D8,0x003F}, + {0x81D9,0x81D9,0x003F}, + {0x81DA,0x81DA,0x2220}, + {0x81DB,0x81DB,0x22A5}, + {0x81DC,0x81DC,0x2312}, + {0x81DD,0x81DD,0x2202}, + {0x81DE,0x81DE,0x2207}, + {0x81DF,0x81DF,0x2261}, + {0x81E0,0x81E0,0x2252}, /* 81E0-81EF */ + {0x81E1,0x81E1,0x226A}, + {0x81E2,0x81E2,0x226B}, + {0x81E3,0x81E3,0x221A}, + {0x81E4,0x81E4,0x223D}, + {0x81E5,0x81E5,0x221D}, + {0x81E6,0x81E6,0x2235}, + {0x81E7,0x81E7,0x222B}, + {0x81E8,0x81E8,0x222C}, + {0x81E9,0x81E9,0x003F}, + {0x81EA,0x81EA,0x003F}, + {0x81EB,0x81EB,0x003F}, + {0x81EC,0x81EC,0x003F}, + {0x81ED,0x81ED,0x003F}, + {0x81EE,0x81EE,0x003F}, + {0x81EF,0x81EF,0x003F}, + {0x81F0,0x81F0,0x212B}, /* 81F0-81FF */ + {0x81F1,0x81F1,0x2030}, + {0x81F2,0x81F2,0x266F}, + {0x81F3,0x81F3,0x266D}, + {0x81F4,0x81F4,0x266A}, + {0x81F5,0x81F5,0x2020}, + {0x81F6,0x81F6,0x2021}, + {0x81F7,0x81F7,0x00B6}, + {0x81F8,0x81F8,0x003F}, + {0x81F9,0x81F9,0x003F}, + {0x81FA,0x81FA,0x003F}, + {0x81FB,0x81FB,0x003F}, + {0x81FC,0x81FC,0x25EF}, + {0,0,0}, + {0,0,0}, + {0,0,0}, +}; + + +static MY_UNICASE_INFO c82[256]= +{ + /* 8200-820F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8210-821F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8220-822F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8230-823F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8240,0x8240,0x003F}, /* 8240-824F */ + {0x8241,0x8241,0x003F}, + {0x8242,0x8242,0x003F}, + {0x8243,0x8243,0x003F}, + {0x8244,0x8244,0x003F}, + {0x8245,0x8245,0x003F}, + {0x8246,0x8246,0x003F}, + {0x8247,0x8247,0x003F}, + {0x8248,0x8248,0x003F}, + {0x8249,0x8249,0x003F}, + {0x824A,0x824A,0x003F}, + {0x824B,0x824B,0x003F}, + {0x824C,0x824C,0x003F}, + {0x824D,0x824D,0x003F}, + {0x824E,0x824E,0x003F}, + {0x824F,0x824F,0xFF10}, + {0x8250,0x8250,0xFF11}, /* 8250-825F */ + {0x8251,0x8251,0xFF12}, + {0x8252,0x8252,0xFF13}, + {0x8253,0x8253,0xFF14}, + {0x8254,0x8254,0xFF15}, + {0x8255,0x8255,0xFF16}, + {0x8256,0x8256,0xFF17}, + {0x8257,0x8257,0xFF18}, + {0x8258,0x8258,0xFF19}, + {0x8259,0x8259,0x003F}, + {0x825A,0x825A,0x003F}, + {0x825B,0x825B,0x003F}, + {0x825C,0x825C,0x003F}, + {0x825D,0x825D,0x003F}, + {0x825E,0x825E,0x003F}, + {0x825F,0x825F,0x003F}, + {0x8260,0x8281,0xFF21}, /* 8260-826F */ + {0x8261,0x8282,0xFF22}, + {0x8262,0x8283,0xFF23}, + {0x8263,0x8284,0xFF24}, + {0x8264,0x8285,0xFF25}, + {0x8265,0x8286,0xFF26}, + {0x8266,0x8287,0xFF27}, + {0x8267,0x8288,0xFF28}, + {0x8268,0x8289,0xFF29}, + {0x8269,0x828A,0xFF2A}, + {0x826A,0x828B,0xFF2B}, + {0x826B,0x828C,0xFF2C}, + {0x826C,0x828D,0xFF2D}, + {0x826D,0x828E,0xFF2E}, + {0x826E,0x828F,0xFF2F}, + {0x826F,0x8290,0xFF30}, + {0x8270,0x8291,0xFF31}, /* 8270-827F */ + {0x8271,0x8292,0xFF32}, + {0x8272,0x8293,0xFF33}, + {0x8273,0x8294,0xFF34}, + {0x8274,0x8295,0xFF35}, + {0x8275,0x8296,0xFF36}, + {0x8276,0x8297,0xFF37}, + {0x8277,0x8298,0xFF38}, + {0x8278,0x8299,0xFF39}, + {0x8279,0x829A,0xFF3A}, + {0x827A,0x827A,0x003F}, + {0x827B,0x827B,0x003F}, + {0x827C,0x827C,0x003F}, + {0x827D,0x827D,0x003F}, + {0x827E,0x827E,0x003F}, + {0,0,0}, + {0x8280,0x8280,0x003F}, /* 8280-828F */ + {0x8260,0x8281,0xFF41}, + {0x8261,0x8282,0xFF42}, + {0x8262,0x8283,0xFF43}, + {0x8263,0x8284,0xFF44}, + {0x8264,0x8285,0xFF45}, + {0x8265,0x8286,0xFF46}, + {0x8266,0x8287,0xFF47}, + {0x8267,0x8288,0xFF48}, + {0x8268,0x8289,0xFF49}, + {0x8269,0x828A,0xFF4A}, + {0x826A,0x828B,0xFF4B}, + {0x826B,0x828C,0xFF4C}, + {0x826C,0x828D,0xFF4D}, + {0x826D,0x828E,0xFF4E}, + {0x826E,0x828F,0xFF4F}, + {0x826F,0x8290,0xFF50}, /* 8290-829F */ + {0x8270,0x8291,0xFF51}, + {0x8271,0x8292,0xFF52}, + {0x8272,0x8293,0xFF53}, + {0x8273,0x8294,0xFF54}, + {0x8274,0x8295,0xFF55}, + {0x8275,0x8296,0xFF56}, + {0x8276,0x8297,0xFF57}, + {0x8277,0x8298,0xFF58}, + {0x8278,0x8299,0xFF59}, + {0x8279,0x829A,0xFF5A}, + {0x829B,0x829B,0x003F}, + {0x829C,0x829C,0x003F}, + {0x829D,0x829D,0x003F}, + {0x829E,0x829E,0x003F}, + {0x829F,0x829F,0x3041}, + {0x82A0,0x82A0,0x3042}, /* 82A0-82AF */ + {0x82A1,0x82A1,0x3043}, + {0x82A2,0x82A2,0x3044}, + {0x82A3,0x82A3,0x3045}, + {0x82A4,0x82A4,0x3046}, + {0x82A5,0x82A5,0x3047}, + {0x82A6,0x82A6,0x3048}, + {0x82A7,0x82A7,0x3049}, + {0x82A8,0x82A8,0x304A}, + {0x82A9,0x82A9,0x304B}, + {0x82AA,0x82AA,0x304C}, + {0x82AB,0x82AB,0x304D}, + {0x82AC,0x82AC,0x304E}, + {0x82AD,0x82AD,0x304F}, + {0x82AE,0x82AE,0x3050}, + {0x82AF,0x82AF,0x3051}, + {0x82B0,0x82B0,0x3052}, /* 82B0-82BF */ + {0x82B1,0x82B1,0x3053}, + {0x82B2,0x82B2,0x3054}, + {0x82B3,0x82B3,0x3055}, + {0x82B4,0x82B4,0x3056}, + {0x82B5,0x82B5,0x3057}, + {0x82B6,0x82B6,0x3058}, + {0x82B7,0x82B7,0x3059}, + {0x82B8,0x82B8,0x305A}, + {0x82B9,0x82B9,0x305B}, + {0x82BA,0x82BA,0x305C}, + {0x82BB,0x82BB,0x305D}, + {0x82BC,0x82BC,0x305E}, + {0x82BD,0x82BD,0x305F}, + {0x82BE,0x82BE,0x3060}, + {0x82BF,0x82BF,0x3061}, + {0x82C0,0x82C0,0x3062}, /* 82C0-82CF */ + {0x82C1,0x82C1,0x3063}, + {0x82C2,0x82C2,0x3064}, + {0x82C3,0x82C3,0x3065}, + {0x82C4,0x82C4,0x3066}, + {0x82C5,0x82C5,0x3067}, + {0x82C6,0x82C6,0x3068}, + {0x82C7,0x82C7,0x3069}, + {0x82C8,0x82C8,0x306A}, + {0x82C9,0x82C9,0x306B}, + {0x82CA,0x82CA,0x306C}, + {0x82CB,0x82CB,0x306D}, + {0x82CC,0x82CC,0x306E}, + {0x82CD,0x82CD,0x306F}, + {0x82CE,0x82CE,0x3070}, + {0x82CF,0x82CF,0x3071}, + {0x82D0,0x82D0,0x3072}, /* 82D0-82DF */ + {0x82D1,0x82D1,0x3073}, + {0x82D2,0x82D2,0x3074}, + {0x82D3,0x82D3,0x3075}, + {0x82D4,0x82D4,0x3076}, + {0x82D5,0x82D5,0x3077}, + {0x82D6,0x82D6,0x3078}, + {0x82D7,0x82D7,0x3079}, + {0x82D8,0x82D8,0x307A}, + {0x82D9,0x82D9,0x307B}, + {0x82DA,0x82DA,0x307C}, + {0x82DB,0x82DB,0x307D}, + {0x82DC,0x82DC,0x307E}, + {0x82DD,0x82DD,0x307F}, + {0x82DE,0x82DE,0x3080}, + {0x82DF,0x82DF,0x3081}, + {0x82E0,0x82E0,0x3082}, /* 82E0-82EF */ + {0x82E1,0x82E1,0x3083}, + {0x82E2,0x82E2,0x3084}, + {0x82E3,0x82E3,0x3085}, + {0x82E4,0x82E4,0x3086}, + {0x82E5,0x82E5,0x3087}, + {0x82E6,0x82E6,0x3088}, + {0x82E7,0x82E7,0x3089}, + {0x82E8,0x82E8,0x308A}, + {0x82E9,0x82E9,0x308B}, + {0x82EA,0x82EA,0x308C}, + {0x82EB,0x82EB,0x308D}, + {0x82EC,0x82EC,0x308E}, + {0x82ED,0x82ED,0x308F}, + {0x82EE,0x82EE,0x3090}, + {0x82EF,0x82EF,0x3091}, + {0x82F0,0x82F0,0x3092}, /* 82F0-82FF */ + {0x82F1,0x82F1,0x3093}, + {0x82F2,0x82F2,0x003F}, + {0x82F3,0x82F3,0x003F}, + {0x82F4,0x82F4,0x003F}, + {0x82F5,0x82F5,0x003F}, + {0x82F6,0x82F6,0x003F}, + {0x82F7,0x82F7,0x003F}, + {0x82F8,0x82F8,0x003F}, + {0x82F9,0x82F9,0x003F}, + {0x82FA,0x82FA,0x003F}, + {0x82FB,0x82FB,0x003F}, + {0x82FC,0x82FC,0x003F}, + {0,0,0} +}; + + +static MY_UNICASE_INFO c83[256]= +{ + /* 8300-830F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8310-831F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8320-832F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8330-833F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8340,0x8340,0x30A1}, /* 8340 */ + {0x8341,0x8341,0x30A2}, + {0x8342,0x8342,0x30A3}, + {0x8343,0x8343,0x30A4}, + {0x8344,0x8344,0x30A5}, + {0x8345,0x8345,0x30A6}, + {0x8346,0x8346,0x30A7}, + {0x8347,0x8347,0x30A8}, + {0x8348,0x8348,0x30A9}, + {0x8349,0x8349,0x30AA}, + {0x834A,0x834A,0x30AB}, + {0x834B,0x834B,0x30AC}, + {0x834C,0x834C,0x30AD}, + {0x834D,0x834D,0x30AE}, + {0x834E,0x834E,0x30AF}, + {0x834F,0x834F,0x30B0}, + {0x8350,0x8350,0x30B1}, /* 8350 */ + {0x8351,0x8351,0x30B2}, + {0x8352,0x8352,0x30B3}, + {0x8353,0x8353,0x30B4}, + {0x8354,0x8354,0x30B5}, + {0x8355,0x8355,0x30B6}, + {0x8356,0x8356,0x30B7}, + {0x8357,0x8357,0x30B8}, + {0x8358,0x8358,0x30B9}, + {0x8359,0x8359,0x30BA}, + {0x835A,0x835A,0x30BB}, + {0x835B,0x835B,0x30BC}, + {0x835C,0x835C,0x30BD}, + {0x835D,0x835D,0x30BE}, + {0x835E,0x835E,0x30BF}, + {0x835F,0x835F,0x30C0}, + {0x8360,0x8360,0x30C1}, /* 8360 */ + {0x8361,0x8361,0x30C2}, + {0x8362,0x8362,0x30C3}, + {0x8363,0x8363,0x30C4}, + {0x8364,0x8364,0x30C5}, + {0x8365,0x8365,0x30C6}, + {0x8366,0x8366,0x30C7}, + {0x8367,0x8367,0x30C8}, + {0x8368,0x8368,0x30C9}, + {0x8369,0x8369,0x30CA}, + {0x836A,0x836A,0x30CB}, + {0x836B,0x836B,0x30CC}, + {0x836C,0x836C,0x30CD}, + {0x836D,0x836D,0x30CE}, + {0x836E,0x836E,0x30CF}, + {0x836F,0x836F,0x30D0}, + {0x8370,0x8370,0x30D1}, /* 8370 */ + {0x8371,0x8371,0x30D2}, + {0x8372,0x8372,0x30D3}, + {0x8373,0x8373,0x30D4}, + {0x8374,0x8374,0x30D5}, + {0x8375,0x8375,0x30D6}, + {0x8376,0x8376,0x30D7}, + {0x8377,0x8377,0x30D8}, + {0x8378,0x8378,0x30D9}, + {0x8379,0x8379,0x30DA}, + {0x837A,0x837A,0x30DB}, + {0x837B,0x837B,0x30DC}, + {0x837C,0x837C,0x30DD}, + {0x837D,0x837D,0x30DE}, + {0x837E,0x837E,0x30DF}, + {0,0,0}, + {0x8380,0x8380,0x30E0}, /* 8380 */ + {0x8381,0x8381,0x30E1}, + {0x8382,0x8382,0x30E2}, + {0x8383,0x8383,0x30E3}, + {0x8384,0x8384,0x30E4}, + {0x8385,0x8385,0x30E5}, + {0x8386,0x8386,0x30E6}, + {0x8387,0x8387,0x30E7}, + {0x8388,0x8388,0x30E8}, + {0x8389,0x8389,0x30E9}, + {0x838A,0x838A,0x30EA}, + {0x838B,0x838B,0x30EB}, + {0x838C,0x838C,0x30EC}, + {0x838D,0x838D,0x30ED}, + {0x838E,0x838E,0x30EE}, + {0x838F,0x838F,0x30EF}, + {0x8390,0x8390,0x30F0}, /* 8390 */ + {0x8391,0x8391,0x30F1}, + {0x8392,0x8392,0x30F2}, + {0x8393,0x8393,0x30F3}, + {0x8394,0x8394,0x30F4}, + {0x8395,0x8395,0x30F5}, + {0x8396,0x8396,0x30F6}, + {0x8397,0x8397,0x003F}, + {0x8398,0x8398,0x003F}, + {0x8399,0x8399,0x003F}, + {0x839A,0x839A,0x003F}, + {0x839B,0x839B,0x003F}, + {0x839C,0x839C,0x003F}, + {0x839D,0x839D,0x003F}, + {0x839E,0x839E,0x003F}, + {0x839F,0x83BF,0x0391}, + {0x83A0,0x83C0,0x0392}, /* 83A0 */ + {0x83A1,0x83C1,0x0393}, + {0x83A2,0x83C2,0x0394}, + {0x83A3,0x83C3,0x0395}, + {0x83A4,0x83C4,0x0396}, + {0x83A5,0x83C5,0x0397}, + {0x83A6,0x83C6,0x0398}, + {0x83A7,0x83C7,0x0399}, + {0x83A8,0x83C8,0x039A}, + {0x83A9,0x83C9,0x039B}, + {0x83AA,0x83CA,0x039C}, + {0x83AB,0x83CB,0x039D}, + {0x83AC,0x83CC,0x039E}, + {0x83AD,0x83CD,0x039F}, + {0x83AE,0x83CE,0x03A0}, + {0x83AF,0x83CF,0x03A1}, + {0x83B0,0x83D0,0x03A3}, /* 83B0 */ + {0x83B1,0x83D1,0x03A4}, + {0x83B2,0x83D2,0x03A5}, + {0x83B3,0x83D3,0x03A6}, + {0x83B4,0x83D4,0x03A7}, + {0x83B5,0x83D5,0x03A8}, + {0x83B6,0x83D6,0x03A9}, + {0x83B7,0x83B7,0x003F}, + {0x83B8,0x83B8,0x003F}, + {0x83B9,0x83B9,0x003F}, + {0x83BA,0x83BA,0x003F}, + {0x83BB,0x83BB,0x003F}, + {0x83BC,0x83BC,0x003F}, + {0x83BD,0x83BD,0x003F}, + {0x83BE,0x83BE,0x003F}, + {0x839F,0x83BF,0x03B1}, + {0x83A0,0x83C0,0x03B2}, /* 83C0 */ + {0x83A1,0x83C1,0x03B3}, + {0x83A2,0x83C2,0x03B4}, + {0x83A3,0x83C3,0x03B5}, + {0x83A4,0x83C4,0x03B6}, + {0x83A5,0x83C5,0x03B7}, + {0x83A6,0x83C6,0x03B8}, + {0x83A7,0x83C7,0x03B9}, + {0x83A8,0x83C8,0x03BA}, + {0x83A9,0x83C9,0x03BB}, + {0x83AA,0x83CA,0x03BC}, + {0x83AB,0x83CB,0x03BD}, + {0x83AC,0x83CC,0x03BE}, + {0x83AD,0x83CD,0x03BF}, + {0x83AE,0x83CE,0x03C0}, + {0x83AF,0x83CF,0x03C1}, + {0x83B0,0x83D0,0x03C3}, /* 83D0 */ + {0x83B1,0x83D1,0x03C4}, + {0x83B2,0x83D2,0x03C5}, + {0x83B3,0x83D3,0x03C6}, + {0x83B4,0x83D4,0x03C7}, + {0x83B5,0x83D5,0x03C8}, + {0x83B6,0x83D6,0x03C9}, + {0x83D7,0x83D7,0x003F}, + {0x83D8,0x83D8,0x003F}, + {0x83D9,0x83D9,0x003F}, + {0x83DA,0x83DA,0x003F}, + {0x83DB,0x83DB,0x003F}, + {0x83DC,0x83DC,0x003F}, + {0x83DD,0x83DD,0x003F}, + {0x83DE,0x83DE,0x003F}, + {0x83DF,0x83DF,0x003F}, + {0x83E0,0x83E0,0x003F}, /* 83E0 */ + {0x83E1,0x83E1,0x003F}, + {0x83E2,0x83E2,0x003F}, + {0x83E3,0x83E3,0x003F}, + {0x83E4,0x83E4,0x003F}, + {0x83E5,0x83E5,0x003F}, + {0x83E6,0x83E6,0x003F}, + {0x83E7,0x83E7,0x003F}, + {0x83E8,0x83E8,0x003F}, + {0x83E9,0x83E9,0x003F}, + {0x83EA,0x83EA,0x003F}, + {0x83EB,0x83EB,0x003F}, + {0x83EC,0x83EC,0x003F}, + {0x83ED,0x83ED,0x003F}, + {0x83EE,0x83EE,0x003F}, + {0x83EF,0x83EF,0x003F}, + {0x83F0,0x83F0,0x003F}, /* 83F0 */ + {0x83F1,0x83F1,0x003F}, + {0x83F2,0x83F2,0x003F}, + {0x83F3,0x83F3,0x003F}, + {0x83F4,0x83F4,0x003F}, + {0x83F5,0x83F5,0x003F}, + {0x83F6,0x83F6,0x003F}, + {0x83F7,0x83F7,0x003F}, + {0x83F8,0x83F8,0x003F}, + {0x83F9,0x83F9,0x003F}, + {0x83FA,0x83FA,0x003F}, + {0x83FB,0x83FB,0x003F}, + {0x83FC,0x83FC,0x003F}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO c84[256]= +{ + /* 8400-840F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8410-841F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8420-842F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + /* 8430-843F */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + + {0x8440,0x8470,0x0410}, /* 8440 */ + {0x8441,0x8471,0x0411}, + {0x8442,0x8472,0x0412}, + {0x8443,0x8473,0x0413}, + {0x8444,0x8474,0x0414}, + {0x8445,0x8475,0x0415}, + {0x8446,0x8476,0x0401}, + {0x8447,0x8477,0x0416}, + {0x8448,0x8478,0x0417}, + {0x8449,0x8479,0x0418}, + {0x844A,0x847A,0x0419}, + {0x844B,0x847B,0x041A}, + {0x844C,0x847C,0x041B}, + {0x844D,0x847D,0x041C}, + {0x844E,0x847E,0x041D}, + {0x844F,0x8480,0x041E}, + {0x8450,0x8481,0x041F}, /* 8450 */ + {0x8451,0x8482,0x0420}, + {0x8452,0x8483,0x0421}, + {0x8453,0x8484,0x0422}, + {0x8454,0x8485,0x0423}, + {0x8455,0x8486,0x0424}, + {0x8456,0x8487,0x0425}, + {0x8457,0x8488,0x0426}, + {0x8458,0x8489,0x0427}, + {0x8459,0x848A,0x0428}, + {0x845A,0x848B,0x0429}, + {0x845B,0x848C,0x042A}, + {0x845C,0x848D,0x042B}, + {0x845D,0x848E,0x042C}, + {0x845E,0x848F,0x042D}, + {0x845F,0x8490,0x042E}, + {0x8460,0x8491,0x042F}, /* 8460 */ + {0x8461,0x8461,0x003F}, + {0x8462,0x8462,0x003F}, + {0x8463,0x8463,0x003F}, + {0x8464,0x8464,0x003F}, + {0x8465,0x8465,0x003F}, + {0x8466,0x8466,0x003F}, + {0x8467,0x8467,0x003F}, + {0x8468,0x8468,0x003F}, + {0x8469,0x8469,0x003F}, + {0x846A,0x846A,0x003F}, + {0x846B,0x846B,0x003F}, + {0x846C,0x846C,0x003F}, + {0x846D,0x846D,0x003F}, + {0x846E,0x846E,0x003F}, + {0x846F,0x846F,0x003F}, + {0x8440,0x8470,0x0430}, /* 8470 */ + {0x8441,0x8471,0x0431}, + {0x8442,0x8472,0x0432}, + {0x8443,0x8473,0x0433}, + {0x8444,0x8474,0x0434}, + {0x8445,0x8475,0x0435}, + {0x8446,0x8476,0x0451}, + {0x8447,0x8477,0x0436}, + {0x8448,0x8478,0x0437}, + {0x8449,0x8479,0x0438}, + {0x844A,0x847A,0x0439}, + {0x844B,0x847B,0x043A}, + {0x844C,0x847C,0x043B}, + {0x844D,0x847D,0x043C}, + {0x844E,0x847E,0x043D}, + {0,0,0}, + {0x844F,0x8480,0x043E}, /* 8480 */ + {0x8450,0x8481,0x043F}, + {0x8451,0x8482,0x0440}, + {0x8452,0x8483,0x0441}, + {0x8453,0x8484,0x0442}, + {0x8454,0x8485,0x0443}, + {0x8455,0x8486,0x0444}, + {0x8456,0x8487,0x0445}, + {0x8457,0x8488,0x0446}, + {0x8458,0x8489,0x0447}, + {0x8459,0x848A,0x0448}, + {0x845A,0x848B,0x0449}, + {0x845B,0x848C,0x044A}, + {0x845C,0x848D,0x044B}, + {0x845D,0x848E,0x044C}, + {0x845E,0x848F,0x044D}, + {0x845F,0x8490,0x044E}, /* 8490 */ + {0x8460,0x8491,0x044F}, + {0x8492,0x8492,0x003F}, + {0x8493,0x8493,0x003F}, + {0x8494,0x8494,0x003F}, + {0x8495,0x8495,0x003F}, + {0x8496,0x8496,0x003F}, + {0x8497,0x8497,0x003F}, + {0x8498,0x8498,0x003F}, + {0x8499,0x8499,0x003F}, + {0x849A,0x849A,0x003F}, + {0x849B,0x849B,0x003F}, + {0x849C,0x849C,0x003F}, + {0x849D,0x849D,0x003F}, + {0x849E,0x849E,0x003F}, + {0x849F,0x849F,0x2500}, + {0x84A0,0x84A0,0x2502}, /* 84A0 */ + {0x84A1,0x84A1,0x250C}, + {0x84A2,0x84A2,0x2510}, + {0x84A3,0x84A3,0x2518}, + {0x84A4,0x84A4,0x2514}, + {0x84A5,0x84A5,0x251C}, + {0x84A6,0x84A6,0x252C}, + {0x84A7,0x84A7,0x2524}, + {0x84A8,0x84A8,0x2534}, + {0x84A9,0x84A9,0x253C}, + {0x84AA,0x84AA,0x2501}, + {0x84AB,0x84AB,0x2503}, + {0x84AC,0x84AC,0x250F}, + {0x84AD,0x84AD,0x2513}, + {0x84AE,0x84AE,0x251B}, + {0x84AF,0x84AF,0x2517}, + {0x84B0,0x84B0,0x2523}, /* 84B0 */ + {0x84B1,0x84B1,0x2533}, + {0x84B2,0x84B2,0x252B}, + {0x84B3,0x84B3,0x253B}, + {0x84B4,0x84B4,0x254B}, + {0x84B5,0x84B5,0x2520}, + {0x84B6,0x84B6,0x252F}, + {0x84B7,0x84B7,0x2528}, + {0x84B8,0x84B8,0x2537}, + {0x84B9,0x84B9,0x253F}, + {0x84BA,0x84BA,0x251D}, + {0x84BB,0x84BB,0x2530}, + {0x84BC,0x84BC,0x2525}, + {0x84BD,0x84BD,0x2538}, + {0x84BE,0x84BE,0x2542}, + {0x84BF,0x84BF,0x003F}, + {0x84C0,0x84C0,0x003F}, /* 84C0 */ + {0x84C1,0x84C1,0x003F}, + {0x84C2,0x84C2,0x003F}, + {0x84C3,0x84C3,0x003F}, + {0x84C4,0x84C4,0x003F}, + {0x84C5,0x84C5,0x003F}, + {0x84C6,0x84C6,0x003F}, + {0x84C7,0x84C7,0x003F}, + {0x84C8,0x84C8,0x003F}, + {0x84C9,0x84C9,0x003F}, + {0x84CA,0x84CA,0x003F}, + {0x84CB,0x84CB,0x003F}, + {0x84CC,0x84CC,0x003F}, + {0x84CD,0x84CD,0x003F}, + {0x84CE,0x84CE,0x003F}, + {0x84CF,0x84CF,0x003F}, + {0x84D0,0x84D0,0x003F}, /* 84D0 */ + {0x84D1,0x84D1,0x003F}, + {0x84D2,0x84D2,0x003F}, + {0x84D3,0x84D3,0x003F}, + {0x84D4,0x84D4,0x003F}, + {0x84D5,0x84D5,0x003F}, + {0x84D6,0x84D6,0x003F}, + {0x84D7,0x84D7,0x003F}, + {0x84D8,0x84D8,0x003F}, + {0x84D9,0x84D9,0x003F}, + {0x84DA,0x84DA,0x003F}, + {0x84DB,0x84DB,0x003F}, + {0x84DC,0x84DC,0x003F}, + {0x84DD,0x84DD,0x003F}, + {0x84DE,0x84DE,0x003F}, + {0x84DF,0x84DF,0x003F}, + {0x84E0,0x84E0,0x003F}, /* 84E0 */ + {0x84E1,0x84E1,0x003F}, + {0x84E2,0x84E2,0x003F}, + {0x84E3,0x84E3,0x003F}, + {0x84E4,0x84E4,0x003F}, + {0x84E5,0x84E5,0x003F}, + {0x84E6,0x84E6,0x003F}, + {0x84E7,0x84E7,0x003F}, + {0x84E8,0x84E8,0x003F}, + {0x84E9,0x84E9,0x003F}, + {0x84EA,0x84EA,0x003F}, + {0x84EB,0x84EB,0x003F}, + {0x84EC,0x84EC,0x003F}, + {0x84ED,0x84ED,0x003F}, + {0x84EE,0x84EE,0x003F}, + {0x84EF,0x84EF,0x003F}, + {0x84F0,0x84F0,0x003F}, /* 84F0 */ + {0x84F1,0x84F1,0x003F}, + {0x84F2,0x84F2,0x003F}, + {0x84F3,0x84F3,0x003F}, + {0x84F4,0x84F4,0x003F}, + {0x84F5,0x84F5,0x003F}, + {0x84F6,0x84F6,0x003F}, + {0x84F7,0x84F7,0x003F}, + {0x84F8,0x84F8,0x003F}, + {0x84F9,0x84F9,0x003F}, + {0x84FA,0x84FA,0x003F}, + {0x84FB,0x84FB,0x003F}, + {0x84FC,0x84FC,0x003F}, + {0,0,0}, + {0,0,0}, + {0,0,0} +}; + + +static MY_UNICASE_INFO *my_caseinfo_sjis[256]= +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, c81, c82, c83, c84, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* A */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + + static int my_strnncoll_sjis_internal(CHARSET_INFO *cs, const uchar **a_res, size_t a_length, const uchar **b_res, size_t b_length) @@ -4685,7 +5560,7 @@ CHARSET_INFO my_charset_sjis_japanese_ci= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_sjis, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ @@ -4717,7 +5592,7 @@ CHARSET_INFO my_charset_sjis_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_sjis, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c index 1a872a92595..bec566c7782 100644 --- a/strings/ctype-ujis.c +++ b/strings/ctype-ujis.c @@ -8494,6 +8494,1263 @@ my_wc_mb_euc_jp(CHARSET_INFO *c,my_wc_t wc, uchar *s, uchar *e) } +/* Case info pages for JIS-X-0208 range */ +static MY_UNICASE_INFO cA2[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA2A0,0xA2A0,0x003F}, /* A2A0 */ + {0xA2A1,0xA2A1,0x25C6}, + {0xA2A2,0xA2A2,0x25A1}, + {0xA2A3,0xA2A3,0x25A0}, + {0xA2A4,0xA2A4,0x25B3}, + {0xA2A5,0xA2A5,0x25B2}, + {0xA2A6,0xA2A6,0x25BD}, + {0xA2A7,0xA2A7,0x25BC}, + {0xA2A8,0xA2A8,0x203B}, + {0xA2A9,0xA2A9,0x3012}, + {0xA2AA,0xA2AA,0x2192}, + {0xA2AB,0xA2AB,0x2190}, + {0xA2AC,0xA2AC,0x2191}, + {0xA2AD,0xA2AD,0x2193}, + {0xA2AE,0xA2AE,0x3013}, + {0xA2AF,0xA2AF,0x003F}, + {0xA2B0,0xA2B0,0x003F}, /* A2B0 */ + {0xA2B1,0xA2B1,0x003F}, + {0xA2B2,0xA2B2,0x003F}, + {0xA2B3,0xA2B3,0x003F}, + {0xA2B4,0xA2B4,0x003F}, + {0xA2B5,0xA2B5,0x003F}, + {0xA2B6,0xA2B6,0x003F}, + {0xA2B7,0xA2B7,0x003F}, + {0xA2B8,0xA2B8,0x003F}, + {0xA2B9,0xA2B9,0x003F}, + {0xA2BA,0xA2BA,0x2208}, + {0xA2BB,0xA2BB,0x220B}, + {0xA2BC,0xA2BC,0x2286}, + {0xA2BD,0xA2BD,0x2287}, + {0xA2BE,0xA2BE,0x2282}, + {0xA2BF,0xA2BF,0x2283}, + {0xA2C0,0xA2C0,0x222A}, /* A2C0 */ + {0xA2C1,0xA2C1,0x2229}, + {0xA2C2,0xA2C2,0x003F}, + {0xA2C3,0xA2C3,0x003F}, + {0xA2C4,0xA2C4,0x003F}, + {0xA2C5,0xA2C5,0x003F}, + {0xA2C6,0xA2C6,0x003F}, + {0xA2C7,0xA2C7,0x003F}, + {0xA2C8,0xA2C8,0x003F}, + {0xA2C9,0xA2C9,0x003F}, + {0xA2CA,0xA2CA,0x2227}, + {0xA2CB,0xA2CB,0x2228}, + {0xA2CC,0xA2CC,0x00AC}, + {0xA2CD,0xA2CD,0x21D2}, + {0xA2CE,0xA2CE,0x21D4}, + {0xA2CF,0xA2CF,0x2200}, + {0xA2D0,0xA2D0,0x2203}, /* A2D0 */ + {0xA2D1,0xA2D1,0x003F}, + {0xA2D2,0xA2D2,0x003F}, + {0xA2D3,0xA2D3,0x003F}, + {0xA2D4,0xA2D4,0x003F}, + {0xA2D5,0xA2D5,0x003F}, + {0xA2D6,0xA2D6,0x003F}, + {0xA2D7,0xA2D7,0x003F}, + {0xA2D8,0xA2D8,0x003F}, + {0xA2D9,0xA2D9,0x003F}, + {0xA2DA,0xA2DA,0x003F}, + {0xA2DB,0xA2DB,0x003F}, + {0xA2DC,0xA2DC,0x2220}, + {0xA2DD,0xA2DD,0x22A5}, + {0xA2DE,0xA2DE,0x2312}, + {0xA2DF,0xA2DF,0x2202}, + {0xA2E0,0xA2E0,0x2207}, /* A2E0 */ + {0xA2E1,0xA2E1,0x2261}, + {0xA2E2,0xA2E2,0x2252}, + {0xA2E3,0xA2E3,0x226A}, + {0xA2E4,0xA2E4,0x226B}, + {0xA2E5,0xA2E5,0x221A}, + {0xA2E6,0xA2E6,0x223D}, + {0xA2E7,0xA2E7,0x221D}, + {0xA2E8,0xA2E8,0x2235}, + {0xA2E9,0xA2E9,0x222B}, + {0xA2EA,0xA2EA,0x222C}, + {0xA2EB,0xA2EB,0x003F}, + {0xA2EC,0xA2EC,0x003F}, + {0xA2ED,0xA2ED,0x003F}, + {0xA2EE,0xA2EE,0x003F}, + {0xA2EF,0xA2EF,0x003F}, + {0xA2F0,0xA2F0,0x003F}, /* A2F0 */ + {0xA2F1,0xA2F1,0x003F}, + {0xA2F2,0x8FABA9,0x212B}, + {0xA2F3,0xA2F3,0x2030}, + {0xA2F4,0xA2F4,0x266F}, + {0xA2F5,0xA2F5,0x266D}, + {0xA2F6,0xA2F6,0x266A}, + {0xA2F7,0xA2F7,0x2020}, + {0xA2F8,0xA2F8,0x2021}, + {0xA2F9,0xA2F9,0x00B6}, + {0xA2FA,0xA2FA,0x003F}, + {0xA2FB,0xA2FB,0x003F}, + {0xA2FC,0xA2FC,0x003F}, + {0xA2FD,0xA2FD,0x003F}, + {0xA2FE,0xA2FE,0x25EF}, + {0xA2FF,0xA2FF,0x003F} +}; + + +static MY_UNICASE_INFO cA3[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA3A0,0xA3A0,0x003F}, /* A3A0 */ + {0xA3A1,0xA3A1,0x003F}, + {0xA3A2,0xA3A2,0x003F}, + {0xA3A3,0xA3A3,0x003F}, + {0xA3A4,0xA3A4,0x003F}, + {0xA3A5,0xA3A5,0x003F}, + {0xA3A6,0xA3A6,0x003F}, + {0xA3A7,0xA3A7,0x003F}, + {0xA3A8,0xA3A8,0x003F}, + {0xA3A9,0xA3A9,0x003F}, + {0xA3AA,0xA3AA,0x003F}, + {0xA3AB,0xA3AB,0x003F}, + {0xA3AC,0xA3AC,0x003F}, + {0xA3AD,0xA3AD,0x003F}, + {0xA3AE,0xA3AE,0x003F}, + {0xA3AF,0xA3AF,0x003F}, + {0xA3B0,0xA3B0,0xFF10}, /* A3B0 */ + {0xA3B1,0xA3B1,0xFF11}, + {0xA3B2,0xA3B2,0xFF12}, + {0xA3B3,0xA3B3,0xFF13}, + {0xA3B4,0xA3B4,0xFF14}, + {0xA3B5,0xA3B5,0xFF15}, + {0xA3B6,0xA3B6,0xFF16}, + {0xA3B7,0xA3B7,0xFF17}, + {0xA3B8,0xA3B8,0xFF18}, + {0xA3B9,0xA3B9,0xFF19}, + {0xA3BA,0xA3BA,0x003F}, + {0xA3BB,0xA3BB,0x003F}, + {0xA3BC,0xA3BC,0x003F}, + {0xA3BD,0xA3BD,0x003F}, + {0xA3BE,0xA3BE,0x003F}, + {0xA3BF,0xA3BF,0x003F}, + {0xA3C0,0xA3C0,0x003F}, /* A3C0 */ + {0xA3C1,0xA3E1,0xFF21}, + {0xA3C2,0xA3E2,0xFF22}, + {0xA3C3,0xA3E3,0xFF23}, + {0xA3C4,0xA3E4,0xFF24}, + {0xA3C5,0xA3E5,0xFF25}, + {0xA3C6,0xA3E6,0xFF26}, + {0xA3C7,0xA3E7,0xFF27}, + {0xA3C8,0xA3E8,0xFF28}, + {0xA3C9,0xA3E9,0xFF29}, + {0xA3CA,0xA3EA,0xFF2A}, + {0xA3CB,0xA3EB,0xFF2B}, + {0xA3CC,0xA3EC,0xFF2C}, + {0xA3CD,0xA3ED,0xFF2D}, + {0xA3CE,0xA3EE,0xFF2E}, + {0xA3CF,0xA3EF,0xFF2F}, + {0xA3D0,0xA3F0,0xFF30}, /* A3D0 */ + {0xA3D1,0xA3F1,0xFF31}, + {0xA3D2,0xA3F2,0xFF32}, + {0xA3D3,0xA3F3,0xFF33}, + {0xA3D4,0xA3F4,0xFF34}, + {0xA3D5,0xA3F5,0xFF35}, + {0xA3D6,0xA3F6,0xFF36}, + {0xA3D7,0xA3F7,0xFF37}, + {0xA3D8,0xA3F8,0xFF38}, + {0xA3D9,0xA3F9,0xFF39}, + {0xA3DA,0xA3FA,0xFF3A}, + {0xA3DB,0xA3DB,0x003F}, + {0xA3DC,0xA3DC,0x003F}, + {0xA3DD,0xA3DD,0x003F}, + {0xA3DE,0xA3DE,0x003F}, + {0xA3DF,0xA3DF,0x003F}, + {0xA3E0,0xA3E0,0x003F}, /* A3E0 */ + {0xA3C1,0xA3E1,0xFF41}, + {0xA3C2,0xA3E2,0xFF42}, + {0xA3C3,0xA3E3,0xFF43}, + {0xA3C4,0xA3E4,0xFF44}, + {0xA3C5,0xA3E5,0xFF45}, + {0xA3C6,0xA3E6,0xFF46}, + {0xA3C7,0xA3E7,0xFF47}, + {0xA3C8,0xA3E8,0xFF48}, + {0xA3C9,0xA3E9,0xFF49}, + {0xA3CA,0xA3EA,0xFF4A}, + {0xA3CB,0xA3EB,0xFF4B}, + {0xA3CC,0xA3EC,0xFF4C}, + {0xA3CD,0xA3ED,0xFF4D}, + {0xA3CE,0xA3EE,0xFF4E}, + {0xA3CF,0xA3EF,0xFF4F}, + {0xA3D0,0xA3F0,0xFF50}, /* A3F0 */ + {0xA3D1,0xA3F1,0xFF51}, + {0xA3D2,0xA3F2,0xFF52}, + {0xA3D3,0xA3F3,0xFF53}, + {0xA3D4,0xA3F4,0xFF54}, + {0xA3D5,0xA3F5,0xFF55}, + {0xA3D6,0xA3F6,0xFF56}, + {0xA3D7,0xA3F7,0xFF57}, + {0xA3D8,0xA3F8,0xFF58}, + {0xA3D9,0xA3F9,0xFF59}, + {0xA3DA,0xA3FA,0xFF5A}, + {0xA3FB,0xA3FB,0x003F}, + {0xA3FC,0xA3FC,0x003F}, + {0xA3FD,0xA3FD,0x003F}, + {0xA3FE,0xA3FE,0x003F}, + {0xA3FF,0xA3FF,0x003F} +}; + + +static MY_UNICASE_INFO cA6[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA6A0,0xA6A0,0x003F}, /* A6A0 */ + {0xA6A1,0xA6C1,0x0391}, + {0xA6A2,0xA6C2,0x0392}, + {0xA6A3,0xA6C3,0x0393}, + {0xA6A4,0xA6C4,0x0394}, + {0xA6A5,0xA6C5,0x0395}, + {0xA6A6,0xA6C6,0x0396}, + {0xA6A7,0xA6C7,0x0397}, + {0xA6A8,0xA6C8,0x0398}, + {0xA6A9,0xA6C9,0x0399}, + {0xA6AA,0xA6CA,0x039A}, + {0xA6AB,0xA6CB,0x039B}, + {0xA6AC,0xA6CC,0x039C}, + {0xA6AD,0xA6CD,0x039D}, + {0xA6AE,0xA6CE,0x039E}, + {0xA6AF,0xA6CF,0x039F}, + {0xA6B0,0xA6D0,0x03A0}, /* A6B0 */ + {0xA6B1,0xA6D1,0x03A1}, + {0xA6B2,0xA6D2,0x03A3}, + {0xA6B3,0xA6D3,0x03A4}, + {0xA6B4,0xA6D4,0x03A5}, + {0xA6B5,0xA6D5,0x03A6}, + {0xA6B6,0xA6D6,0x03A7}, + {0xA6B7,0xA6D7,0x03A8}, + {0xA6B8,0xA6D8,0x03A9}, + {0xA6B9,0xA6B9,0x003F}, + {0xA6BA,0xA6BA,0x003F}, + {0xA6BB,0xA6BB,0x003F}, + {0xA6BC,0xA6BC,0x003F}, + {0xA6BD,0xA6BD,0x003F}, + {0xA6BE,0xA6BE,0x003F}, + {0xA6BF,0xA6BF,0x003F}, + {0xA6C0,0xA6C0,0x003F}, /* A6C0 */ + {0xA6A1,0xA6C1,0x03B1}, + {0xA6A2,0xA6C2,0x03B2}, + {0xA6A3,0xA6C3,0x03B3}, + {0xA6A4,0xA6C4,0x03B4}, + {0xA6A5,0xA6C5,0x03B5}, + {0xA6A6,0xA6C6,0x03B6}, + {0xA6A7,0xA6C7,0x03B7}, + {0xA6A8,0xA6C8,0x03B8}, + {0xA6A9,0xA6C9,0x03B9}, + {0xA6AA,0xA6CA,0x03BA}, + {0xA6AB,0xA6CB,0x03BB}, + {0xA6AC,0xA6CC,0x03BC}, + {0xA6AD,0xA6CD,0x03BD}, + {0xA6AE,0xA6CE,0x03BE}, + {0xA6AF,0xA6CF,0x03BF}, + {0xA6B0,0xA6D0,0x03C0}, /* A6D0 */ + {0xA6B1,0xA6D1,0x03C1}, + {0xA6B2,0xA6D2,0x03C3}, + {0xA6B3,0xA6D3,0x03C4}, + {0xA6B4,0xA6D4,0x03C5}, + {0xA6B5,0xA6D5,0x03C6}, + {0xA6B6,0xA6D6,0x03C7}, + {0xA6B7,0xA6D7,0x03C8}, + {0xA6B8,0xA6D8,0x03C9}, + {0xA6D9,0xA6D9,0x003F}, + {0xA6DA,0xA6DA,0x003F}, + {0xA6DB,0xA6DB,0x003F}, + {0xA6DC,0xA6DC,0x003F}, + {0xA6DD,0xA6DD,0x003F}, + {0xA6DE,0xA6DE,0x003F}, + {0xA6DF,0xA6DF,0x003F}, + {0xA6E0,0xA6E0,0x003F}, /* A6E0 */ + {0xA6E1,0xA6E1,0x003F}, + {0xA6E2,0xA6E2,0x003F}, + {0xA6E3,0xA6E3,0x003F}, + {0xA6E4,0xA6E4,0x003F}, + {0xA6E5,0xA6E5,0x003F}, + {0xA6E6,0xA6E6,0x003F}, + {0xA6E7,0xA6E7,0x003F}, + {0xA6E8,0xA6E8,0x003F}, + {0xA6E9,0xA6E9,0x003F}, + {0xA6EA,0xA6EA,0x003F}, + {0xA6EB,0xA6EB,0x003F}, + {0xA6EC,0xA6EC,0x003F}, + {0xA6ED,0xA6ED,0x003F}, + {0xA6EE,0xA6EE,0x003F}, + {0xA6EF,0xA6EF,0x003F}, + {0xA6F0,0xA6F0,0x003F}, /* A6F0 */ + {0xA6F1,0xA6F1,0x003F}, + {0xA6F2,0xA6F2,0x003F}, + {0xA6F3,0xA6F3,0x003F}, + {0xA6F4,0xA6F4,0x003F}, + {0xA6F5,0xA6F5,0x003F}, + {0xA6F6,0xA6F6,0x003F}, + {0xA6F7,0xA6F7,0x003F}, + {0xA6F8,0xA6F8,0x003F}, + {0xA6F9,0xA6F9,0x003F}, + {0xA6FA,0xA6FA,0x003F}, + {0xA6FB,0xA6FB,0x003F}, + {0xA6FC,0xA6FC,0x003F}, + {0xA6FD,0xA6FD,0x003F}, + {0xA6FE,0xA6FE,0x003F}, + {0xA6FF,0xA6FF,0x003F} +}; + + +static MY_UNICASE_INFO cA7[256]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0xA7A0,0xA7A0,0x003F}, + {0xA7A1,0xA7D1,0x0410}, + {0xA7A2,0xA7D2,0x0411}, + {0xA7A3,0xA7D3,0x0412}, + {0xA7A4,0xA7D4,0x0413}, + {0xA7A5,0xA7D5,0x0414}, + {0xA7A6,0xA7D6,0x0415}, + {0xA7A7,0xA7D7,0x0401}, + {0xA7A8,0xA7D8,0x0416}, + {0xA7A9,0xA7D9,0x0417}, + {0xA7AA,0xA7DA,0x0418}, + {0xA7AB,0xA7DB,0x0419}, + {0xA7AC,0xA7DC,0x041A}, + {0xA7AD,0xA7DD,0x041B}, + {0xA7AE,0xA7DE,0x041C}, + {0xA7AF,0xA7DF,0x041D}, + {0xA7B0,0xA7E0,0x041E}, /* A7B0 */ + {0xA7B1,0xA7E1,0x041F}, + {0xA7B2,0xA7E2,0x0420}, + {0xA7B3,0xA7E3,0x0421}, + {0xA7B4,0xA7E4,0x0422}, + {0xA7B5,0xA7E5,0x0423}, + {0xA7B6,0xA7E6,0x0424}, + {0xA7B7,0xA7E7,0x0425}, + {0xA7B8,0xA7E8,0x0426}, + {0xA7B9,0xA7E9,0x0427}, + {0xA7BA,0xA7EA,0x0428}, + {0xA7BB,0xA7EB,0x0429}, + {0xA7BC,0xA7EC,0x042A}, + {0xA7BD,0xA7ED,0x042B}, + {0xA7BE,0xA7EE,0x042C}, + {0xA7BF,0xA7EF,0x042D}, + {0xA7C0,0xA7F0,0x042E}, /* A7C0 */ + {0xA7C1,0xA7F1,0x042F}, + {0xA7C2,0xA7C2,0x003F}, + {0xA7C3,0xA7C3,0x003F}, + {0xA7C4,0xA7C4,0x003F}, + {0xA7C5,0xA7C5,0x003F}, + {0xA7C6,0xA7C6,0x003F}, + {0xA7C7,0xA7C7,0x003F}, + {0xA7C8,0xA7C8,0x003F}, + {0xA7C9,0xA7C9,0x003F}, + {0xA7CA,0xA7CA,0x003F}, + {0xA7CB,0xA7CB,0x003F}, + {0xA7CC,0xA7CC,0x003F}, + {0xA7CD,0xA7CD,0x003F}, + {0xA7CE,0xA7CE,0x003F}, + {0xA7CF,0xA7CF,0x003F}, + {0xA7D0,0xA7D0,0x003F}, /* A7D0 */ + {0xA7A1,0xA7D1,0x0430}, + {0xA7A2,0xA7D2,0x0431}, + {0xA7A3,0xA7D3,0x0432}, + {0xA7A4,0xA7D4,0x0433}, + {0xA7A5,0xA7D5,0x0434}, + {0xA7A6,0xA7D6,0x0435}, + {0xA7A7,0xA7D7,0x0451}, + {0xA7A8,0xA7D8,0x0436}, + {0xA7A9,0xA7D9,0x0437}, + {0xA7AA,0xA7DA,0x0438}, + {0xA7AB,0xA7DB,0x0439}, + {0xA7AC,0xA7DC,0x043A}, + {0xA7AD,0xA7DD,0x043B}, + {0xA7AE,0xA7DE,0x043C}, + {0xA7AF,0xA7DF,0x043D}, + {0xA7B0,0xA7E0,0x043E}, /* A7E0 */ + {0xA7B1,0xA7E1,0x043F}, + {0xA7B2,0xA7E2,0x0440}, + {0xA7B3,0xA7E3,0x0441}, + {0xA7B4,0xA7E4,0x0442}, + {0xA7B5,0xA7E5,0x0443}, + {0xA7B6,0xA7E6,0x0444}, + {0xA7B7,0xA7E7,0x0445}, + {0xA7B8,0xA7E8,0x0446}, + {0xA7B9,0xA7E9,0x0447}, + {0xA7BA,0xA7EA,0x0448}, + {0xA7BB,0xA7EB,0x0449}, + {0xA7BC,0xA7EC,0x044A}, + {0xA7BD,0xA7ED,0x044B}, + {0xA7BE,0xA7EE,0x044C}, + {0xA7BF,0xA7EF,0x044D}, + {0xA7C0,0xA7F0,0x044E}, /* A7F0 */ + {0xA7C1,0xA7F1,0x044F}, + {0xA7F2,0xA7F2,0x003F}, + {0xA7F3,0xA7F3,0x003F}, + {0xA7F4,0xA7F4,0x003F}, + {0xA7F5,0xA7F5,0x003F}, + {0xA7F6,0xA7F6,0x003F}, + {0xA7F7,0xA7F7,0x003F}, + {0xA7F8,0xA7F8,0x003F}, + {0xA7F9,0xA7F9,0x003F}, + {0xA7FA,0xA7FA,0x003F}, + {0xA7FB,0xA7FB,0x003F}, + {0xA7FC,0xA7FC,0x003F}, + {0xA7FD,0xA7FD,0x003F}, + {0xA7FE,0xA7FE,0x003F}, + {0xA7FF,0xA7FF,0x003F}, +}; + + +/* Case info pages for JIS-X-0212 range */ +static MY_UNICASE_INFO c8FA6[]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FA6A0,0x8FA6A0,0x003F}, /* 8FA6A0 */ + {0x8FA6A1,0x8FA6A1,0x003F}, + {0x8FA6A2,0x8FA6A2,0x003F}, + {0x8FA6A3,0x8FA6A3,0x003F}, + {0x8FA6A4,0x8FA6A4,0x003F}, + {0x8FA6A5,0x8FA6A5,0x003F}, + {0x8FA6A6,0x8FA6A6,0x003F}, + {0x8FA6A7,0x8FA6A7,0x003F}, + {0x8FA6A8,0x8FA6A8,0x003F}, + {0x8FA6A9,0x8FA6A9,0x003F}, + {0x8FA6AA,0x8FA6AA,0x003F}, + {0x8FA6AB,0x8FA6AB,0x003F}, + {0x8FA6AC,0x8FA6AC,0x003F}, + {0x8FA6AD,0x8FA6AD,0x003F}, + {0x8FA6AE,0x8FA6AE,0x003F}, + {0x8FA6AF,0x8FA6AF,0x003F}, + {0x8FA6B0,0x8FA6B0,0x003F}, /* 8FA6B0 */ + {0x8FA6B1,0x8FA6B1,0x003F}, + {0x8FA6B2,0x8FA6B2,0x003F}, + {0x8FA6B3,0x8FA6B3,0x003F}, + {0x8FA6B4,0x8FA6B4,0x003F}, + {0x8FA6B5,0x8FA6B5,0x003F}, + {0x8FA6B6,0x8FA6B6,0x003F}, + {0x8FA6B7,0x8FA6B7,0x003F}, + {0x8FA6B8,0x8FA6B8,0x003F}, + {0x8FA6B9,0x8FA6B9,0x003F}, + {0x8FA6BA,0x8FA6BA,0x003F}, + {0x8FA6BB,0x8FA6BB,0x003F}, + {0x8FA6BC,0x8FA6BC,0x003F}, + {0x8FA6BD,0x8FA6BD,0x003F}, + {0x8FA6BE,0x8FA6BE,0x003F}, + {0x8FA6BF,0x8FA6BF,0x003F}, + {0x8FA6C0,0x8FA6C0,0x003F}, /* 8FA6C0 */ + {0x8FA6C1,0x8FA6C1,0x003F}, + {0x8FA6C2,0x8FA6C2,0x003F}, + {0x8FA6C3,0x8FA6C3,0x003F}, + {0x8FA6C4,0x8FA6C4,0x003F}, + {0x8FA6C5,0x8FA6C5,0x003F}, + {0x8FA6C6,0x8FA6C6,0x003F}, + {0x8FA6C7,0x8FA6C7,0x003F}, + {0x8FA6C8,0x8FA6C8,0x003F}, + {0x8FA6C9,0x8FA6C9,0x003F}, + {0x8FA6CA,0x8FA6CA,0x003F}, + {0x8FA6CB,0x8FA6CB,0x003F}, + {0x8FA6CC,0x8FA6CC,0x003F}, + {0x8FA6CD,0x8FA6CD,0x003F}, + {0x8FA6CE,0x8FA6CE,0x003F}, + {0x8FA6CF,0x8FA6CF,0x003F}, + {0x8FA6D0,0x8FA6D0,0x003F}, /* 8FA6D0 */ + {0x8FA6D1,0x8FA6D1,0x003F}, + {0x8FA6D2,0x8FA6D2,0x003F}, + {0x8FA6D3,0x8FA6D3,0x003F}, + {0x8FA6D4,0x8FA6D4,0x003F}, + {0x8FA6D5,0x8FA6D5,0x003F}, + {0x8FA6D6,0x8FA6D6,0x003F}, + {0x8FA6D7,0x8FA6D7,0x003F}, + {0x8FA6D8,0x8FA6D8,0x003F}, + {0x8FA6D9,0x8FA6D9,0x003F}, + {0x8FA6DA,0x8FA6DA,0x003F}, + {0x8FA6DB,0x8FA6DB,0x003F}, + {0x8FA6DC,0x8FA6DC,0x003F}, + {0x8FA6DD,0x8FA6DD,0x003F}, + {0x8FA6DE,0x8FA6DE,0x003F}, + {0x8FA6DF,0x8FA6DF,0x003F}, + {0x8FA6E0,0x8FA6E0,0x003F}, /* 8FA6E0 */ + {0x8FA6E1,0x8FA6F1,0x0386}, + {0x8FA6E2,0x8FA6F2,0x0388}, + {0x8FA6E3,0x8FA6F3,0x0389}, + {0x8FA6E4,0x8FA6F4,0x038A}, + {0x8FA6E5,0x8FA6F5,0x03AA}, + {0x8FA6E6,0x8FA6E6,0x003F}, + {0x8FA6E7,0x8FA6F7,0x038C}, + {0x8FA6E8,0x8FA6E8,0x003F}, + {0x8FA6E9,0x8FA6F9,0x038E}, + {0x8FA6EA,0x8FA6FA,0x03AB}, + {0x8FA6EB,0x8FA6EB,0x003F}, + {0x8FA6EC,0x8FA6FC,0x038F}, + {0x8FA6ED,0x8FA6ED,0x003F}, + {0x8FA6EE,0x8FA6EE,0x003F}, + {0x8FA6EF,0x8FA6EF,0x003F}, + {0x8FA6F0,0x8FA6F0,0x003F}, /* 8FA6F0 */ + {0x8FA6E1,0x8FA6F1,0x03AC}, + {0x8FA6E2,0x8FA6F2,0x03AD}, + {0x8FA6E3,0x8FA6F3,0x03AE}, + {0x8FA6E4,0x8FA6F4,0x03AF}, + {0x8FA6E5,0x8FA6F5,0x03CA}, + {0x8FA6F6,0x8FA6F6,0x0390}, + {0x8FA6E7,0x8FA6F7,0x03CC}, + { 0xA6B2,0x8FA6F8,0x03C2}, + {0x8FA6E9,0x8FA6F9,0x03CD}, + {0x8FA6EA,0x8FA6FA,0x03CB}, + {0x8FA6FB,0x8FA6FB,0x03B0}, + {0x8FA6EC,0x8FA6FC,0x03CE}, + {0x8FA6FD,0x8FA6FD,0x003F}, + {0x8FA6FE,0x8FA6FE,0x003F}, + {0x8FA6FF,0x8FA6FF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FA7[]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FA7A0,0x8FA7A0,0x003F}, /* 8FA7A0 */ + {0x8FA7A1,0x8FA7A1,0x003F}, + {0x8FA7A2,0x8FA7A2,0x003F}, + {0x8FA7A3,0x8FA7A3,0x003F}, + {0x8FA7A4,0x8FA7A4,0x003F}, + {0x8FA7A5,0x8FA7A5,0x003F}, + {0x8FA7A6,0x8FA7A6,0x003F}, + {0x8FA7A7,0x8FA7A7,0x003F}, + {0x8FA7A8,0x8FA7A8,0x003F}, + {0x8FA7A9,0x8FA7A9,0x003F}, + {0x8FA7AA,0x8FA7AA,0x003F}, + {0x8FA7AB,0x8FA7AB,0x003F}, + {0x8FA7AC,0x8FA7AC,0x003F}, + {0x8FA7AD,0x8FA7AD,0x003F}, + {0x8FA7AE,0x8FA7AE,0x003F}, + {0x8FA7AF,0x8FA7AF,0x003F}, + {0x8FA7B0,0x8FA7B0,0x003F}, /* 8FA7B0 */ + {0x8FA7B1,0x8FA7B1,0x003F}, + {0x8FA7B2,0x8FA7B2,0x003F}, + {0x8FA7B3,0x8FA7B3,0x003F}, + {0x8FA7B4,0x8FA7B4,0x003F}, + {0x8FA7B5,0x8FA7B5,0x003F}, + {0x8FA7B6,0x8FA7B6,0x003F}, + {0x8FA7B7,0x8FA7B7,0x003F}, + {0x8FA7B8,0x8FA7B8,0x003F}, + {0x8FA7B9,0x8FA7B9,0x003F}, + {0x8FA7BA,0x8FA7BA,0x003F}, + {0x8FA7BB,0x8FA7BB,0x003F}, + {0x8FA7BC,0x8FA7BC,0x003F}, + {0x8FA7BD,0x8FA7BD,0x003F}, + {0x8FA7BE,0x8FA7BE,0x003F}, + {0x8FA7BF,0x8FA7BF,0x003F}, + {0x8FA7C0,0x8FA7C0,0x003F}, /* 8FA7C0 */ + {0x8FA7C1,0x8FA7C1,0x003F}, + {0x8FA7C2,0x8FA7F2,0x0402}, + {0x8FA7C3,0x8FA7F3,0x0403}, + {0x8FA7C4,0x8FA7F4,0x0404}, + {0x8FA7C5,0x8FA7F5,0x0405}, + {0x8FA7C6,0x8FA7F6,0x0406}, + {0x8FA7C7,0x8FA7F7,0x0407}, + {0x8FA7C8,0x8FA7F8,0x0408}, + {0x8FA7C9,0x8FA7F9,0x0409}, + {0x8FA7CA,0x8FA7FA,0x040A}, + {0x8FA7CB,0x8FA7FB,0x040B}, + {0x8FA7CC,0x8FA7FC,0x040C}, + {0x8FA7CD,0x8FA7FD,0x040E}, + {0x8FA7CE,0x8FA7FE,0x040F}, + {0x8FA7CF,0x8FA7CF,0x003F}, + {0x8FA7D0,0x8FA7D0,0x003F}, /* 8FA7D0 */ + {0x8FA7D1,0x8FA7D1,0x003F}, + {0x8FA7D2,0x8FA7D2,0x003F}, + {0x8FA7D3,0x8FA7D3,0x003F}, + {0x8FA7D4,0x8FA7D4,0x003F}, + {0x8FA7D5,0x8FA7D5,0x003F}, + {0x8FA7D6,0x8FA7D6,0x003F}, + {0x8FA7D7,0x8FA7D7,0x003F}, + {0x8FA7D8,0x8FA7D8,0x003F}, + {0x8FA7D9,0x8FA7D9,0x003F}, + {0x8FA7DA,0x8FA7DA,0x003F}, + {0x8FA7DB,0x8FA7DB,0x003F}, + {0x8FA7DC,0x8FA7DC,0x003F}, + {0x8FA7DD,0x8FA7DD,0x003F}, + {0x8FA7DE,0x8FA7DE,0x003F}, + {0x8FA7DF,0x8FA7DF,0x003F}, + {0x8FA7E0,0x8FA7E0,0x003F}, /* 8FA7E0 */ + {0x8FA7E1,0x8FA7E1,0x003F}, + {0x8FA7E2,0x8FA7E2,0x003F}, + {0x8FA7E3,0x8FA7E3,0x003F}, + {0x8FA7E4,0x8FA7E4,0x003F}, + {0x8FA7E5,0x8FA7E5,0x003F}, + {0x8FA7E6,0x8FA7E6,0x003F}, + {0x8FA7E7,0x8FA7E7,0x003F}, + {0x8FA7E8,0x8FA7E8,0x003F}, + {0x8FA7E9,0x8FA7E9,0x003F}, + {0x8FA7EA,0x8FA7EA,0x003F}, + {0x8FA7EB,0x8FA7EB,0x003F}, + {0x8FA7EC,0x8FA7EC,0x003F}, + {0x8FA7ED,0x8FA7ED,0x003F}, + {0x8FA7EE,0x8FA7EE,0x003F}, + {0x8FA7EF,0x8FA7EF,0x003F}, + {0x8FA7F0,0x8FA7F0,0x003F}, /* 8FA7F0 */ + {0x8FA7F1,0x8FA7F1,0x003F}, + {0x8FA7C2,0x8FA7F2,0x0452}, + {0x8FA7C3,0x8FA7F3,0x0453}, + {0x8FA7C4,0x8FA7F4,0x0454}, + {0x8FA7C5,0x8FA7F5,0x0455}, + {0x8FA7C6,0x8FA7F6,0x0456}, + {0x8FA7C7,0x8FA7F7,0x0457}, + {0x8FA7C8,0x8FA7F8,0x0458}, + {0x8FA7C9,0x8FA7F9,0x0459}, + {0x8FA7CA,0x8FA7FA,0x045A}, + {0x8FA7CB,0x8FA7FB,0x045B}, + {0x8FA7CC,0x8FA7FC,0x045C}, + {0x8FA7CD,0x8FA7FD,0x045E}, + {0x8FA7CE,0x8FA7FE,0x045F}, + {0x8FA7FF,0x8FA7FF,0x003F} +}; + + +static MY_UNICASE_INFO c8FA9[]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FA9A0,0x8FA9A0,0x003F}, /* 8FA9A0 */ + {0x8FA9A1,0x8FA9C1,0x00C6}, + {0x8FA9A2,0x8FA9C2,0x0110}, + {0x8FA9A3,0x8FA9A3,0x003F}, + {0x8FA9A4,0x8FA9C4,0x0126}, + {0x8FA9A5,0x8FA9A5,0x003F}, + {0x8FA9A6,0x8FA9C6,0x0132}, + {0x8FA9A7,0x8FA9A7,0x003F}, + {0x8FA9A8,0x8FA9C8,0x0141}, + {0x8FA9A9,0x8FA9C9,0x013F}, + {0x8FA9AA,0x8FA9AA,0x003F}, + {0x8FA9AB,0x8FA9CB,0x014A}, + {0x8FA9AC,0x8FA9CC,0x00D8}, + {0x8FA9AD,0x8FA9CD,0x0152}, + {0x8FA9AE,0x8FA9AE,0x003F}, + {0x8FA9AF,0x8FA9CF,0x0166}, + {0x8FA9B0,0x8FA9D0,0x00DE}, /* 8FA9B0 */ + {0x8FA9B1,0x8FA9B1,0x003F}, + {0x8FA9B2,0x8FA9B2,0x003F}, + {0x8FA9B3,0x8FA9B3,0x003F}, + {0x8FA9B4,0x8FA9B4,0x003F}, + {0x8FA9B5,0x8FA9B5,0x003F}, + {0x8FA9B6,0x8FA9B6,0x003F}, + {0x8FA9B7,0x8FA9B7,0x003F}, + {0x8FA9B8,0x8FA9B8,0x003F}, + {0x8FA9B9,0x8FA9B9,0x003F}, + {0x8FA9BA,0x8FA9BA,0x003F}, + {0x8FA9BB,0x8FA9BB,0x003F}, + {0x8FA9BC,0x8FA9BC,0x003F}, + {0x8FA9BD,0x8FA9BD,0x003F}, + {0x8FA9BE,0x8FA9BE,0x003F}, + {0x8FA9BF,0x8FA9BF,0x003F}, + {0x8FA9C0,0x8FA9C0,0x003F}, /* 8FA9C0 */ + {0x8FA9A1,0x8FA9C1,0x00E6}, + {0x8FA9A2,0x8FA9C2,0x0111}, + {0x8FA9C3,0x8FA9C3,0x00F0}, + {0x8FA9A4,0x8FA9C4,0x0127}, + { 0x49,0x8FA9C5,0x0131}, + {0x8FA9A6,0x8FA9C6,0x0133}, + {0x8FA9C7,0x8FA9C7,0x0138}, + {0x8FA9A8,0x8FA9C8,0x0142}, + {0x8FA9A9,0x8FA9C9,0x0140}, + {0x8FA9CA,0x8FA9CA,0x0149}, + {0x8FA9AB,0x8FA9CB,0x014B}, + {0x8FA9AC,0x8FA9CC,0x00F8}, + {0x8FA9AD,0x8FA9CD,0x0153}, + {0x8FA9CE,0x8FA9CE,0x00DF}, + {0x8FA9AF,0x8FA9CF,0x0167}, + {0x8FA9B0,0x8FA9D0,0x00FE}, /* 8FA9D0 */ + {0x8FA9D1,0x8FA9D1,0x003F}, + {0x8FA9D2,0x8FA9D2,0x003F}, + {0x8FA9D3,0x8FA9D3,0x003F}, + {0x8FA9D4,0x8FA9D4,0x003F}, + {0x8FA9D5,0x8FA9D5,0x003F}, + {0x8FA9D6,0x8FA9D6,0x003F}, + {0x8FA9D7,0x8FA9D7,0x003F}, + {0x8FA9D8,0x8FA9D8,0x003F}, + {0x8FA9D9,0x8FA9D9,0x003F}, + {0x8FA9DA,0x8FA9DA,0x003F}, + {0x8FA9DB,0x8FA9DB,0x003F}, + {0x8FA9DC,0x8FA9DC,0x003F}, + {0x8FA9DD,0x8FA9DD,0x003F}, + {0x8FA9DE,0x8FA9DE,0x003F}, + {0x8FA9DF,0x8FA9DF,0x003F}, + {0x8FA9E0,0x8FA9E0,0x003F}, /* 8FA9E0 */ + {0x8FA9E1,0x8FA9E1,0x003F}, + {0x8FA9E2,0x8FA9E2,0x003F}, + {0x8FA9E3,0x8FA9E3,0x003F}, + {0x8FA9E4,0x8FA9E4,0x003F}, + {0x8FA9E5,0x8FA9E5,0x003F}, + {0x8FA9E6,0x8FA9E6,0x003F}, + {0x8FA9E7,0x8FA9E7,0x003F}, + {0x8FA9E8,0x8FA9E8,0x003F}, + {0x8FA9E9,0x8FA9E9,0x003F}, + {0x8FA9EA,0x8FA9EA,0x003F}, + {0x8FA9EB,0x8FA9EB,0x003F}, + {0x8FA9EC,0x8FA9EC,0x003F}, + {0x8FA9ED,0x8FA9ED,0x003F}, + {0x8FA9EE,0x8FA9EE,0x003F}, + {0x8FA9EF,0x8FA9EF,0x003F}, + {0x8FA9F0,0x8FA9F0,0x003F}, /* 8FA9F0 */ + {0x8FA9F1,0x8FA9F1,0x003F}, + {0x8FA9F2,0x8FA9F2,0x003F}, + {0x8FA9F3,0x8FA9F3,0x003F}, + {0x8FA9F4,0x8FA9F4,0x003F}, + {0x8FA9F5,0x8FA9F5,0x003F}, + {0x8FA9F6,0x8FA9F6,0x003F}, + {0x8FA9F7,0x8FA9F7,0x003F}, + {0x8FA9F8,0x8FA9F8,0x003F}, + {0x8FA9F9,0x8FA9F9,0x003F}, + {0x8FA9FA,0x8FA9FA,0x003F}, + {0x8FA9FB,0x8FA9FB,0x003F}, + {0x8FA9FC,0x8FA9FC,0x003F}, + {0x8FA9FD,0x8FA9FD,0x003F}, + {0x8FA9FE,0x8FA9FE,0x003F}, + {0x8FA9FF,0x8FA9FF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FAA[]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FAAA0,0x8FAAA0,0x003F}, /* 8FAAA0 */ + {0x8FAAA1,0x8FABA1,0x00C1}, + {0x8FAAA2,0x8FABA2,0x00C0}, + {0x8FAAA3,0x8FABA3,0x00C4}, + {0x8FAAA4,0x8FABA4,0x00C2}, + {0x8FAAA5,0x8FABA5,0x0102}, + {0x8FAAA6,0x8FABA6,0x01CD}, + {0x8FAAA7,0x8FABA7,0x0100}, + {0x8FAAA8,0x8FABA8,0x0104}, + {0x8FAAA9,0x8FABA9,0x00C5}, + {0x8FAAAA,0x8FABAA,0x00C3}, + {0x8FAAAB,0x8FABAB,0x0106}, + {0x8FAAAC,0x8FABAC,0x0108}, + {0x8FAAAD,0x8FABAD,0x010C}, + {0x8FAAAE,0x8FABAE,0x00C7}, + {0x8FAAAF,0x8FABAF,0x010A}, + {0x8FAAB0,0x8FABB0,0x010E}, /* 8FAAB0 */ + {0x8FAAB1,0x8FABB1,0x00C9}, + {0x8FAAB2,0x8FABB2,0x00C8}, + {0x8FAAB3,0x8FABB3,0x00CB}, + {0x8FAAB4,0x8FABB4,0x00CA}, + {0x8FAAB5,0x8FABB5,0x011A}, + {0x8FAAB6,0x8FABB6,0x0116}, + {0x8FAAB7,0x8FABB7,0x0112}, + {0x8FAAB8,0x8FABB8,0x0118}, + {0x8FAAB9,0x8FAAB9,0x003F}, + {0x8FAABA,0x8FABBA,0x011C}, + {0x8FAABB,0x8FABBB,0x011E}, + {0x8FAABC,0x8FAABC,0x0122}, + {0x8FAABD,0x8FABBD,0x0120}, + {0x8FAABE,0x8FABBE,0x0124}, + {0x8FAABF,0x8FABBF,0x00CD}, + {0x8FAAC0,0x8FABC0,0x00CC}, /* 8FAAC0 */ + {0x8FAAC1,0x8FABC1,0x00CF}, + {0x8FAAC2,0x8FABC2,0x00CE}, + {0x8FAAC3,0x8FABC3,0x01CF}, + {0x8FAAC4, 0x69,0x0130}, + {0x8FAAC5,0x8FABC5,0x012A}, + {0x8FAAC6,0x8FABC6,0x012E}, + {0x8FAAC7,0x8FABC7,0x0128}, + {0x8FAAC8,0x8FABC8,0x0134}, + {0x8FAAC9,0x8FABC9,0x0136}, + {0x8FAACA,0x8FABCA,0x0139}, + {0x8FAACB,0x8FABCB,0x013D}, + {0x8FAACC,0x8FABCC,0x013B}, + {0x8FAACD,0x8FABCD,0x0143}, + {0x8FAACE,0x8FABCE,0x0147}, + {0x8FAACF,0x8FABCF,0x0145}, + {0x8FAAD0,0x8FABD0,0x00D1}, /* 8FAAD0 */ + {0x8FAAD1,0x8FABD1,0x00D3}, + {0x8FAAD2,0x8FABD2,0x00D2}, + {0x8FAAD3,0x8FABD3,0x00D6}, + {0x8FAAD4,0x8FABD4,0x00D4}, + {0x8FAAD5,0x8FABD5,0x01D1}, + {0x8FAAD6,0x8FABD6,0x0150}, + {0x8FAAD7,0x8FABD7,0x014C}, + {0x8FAAD8,0x8FABD8,0x00D5}, + {0x8FAAD9,0x8FABD9,0x0154}, + {0x8FAADA,0x8FABDA,0x0158}, + {0x8FAADB,0x8FABDB,0x0156}, + {0x8FAADC,0x8FABDC,0x015A}, + {0x8FAADD,0x8FABDD,0x015C}, + {0x8FAADE,0x8FABDE,0x0160}, + {0x8FAADF,0x8FABDF,0x015E}, + {0x8FAAE0,0x8FABE0,0x0164}, /* 8FAAE0 */ + {0x8FAAE1,0x8FABE1,0x0162}, + {0x8FAAE2,0x8FABE2,0x00DA}, + {0x8FAAE3,0x8FABE3,0x00D9}, + {0x8FAAE4,0x8FABE4,0x00DC}, + {0x8FAAE5,0x8FABE5,0x00DB}, + {0x8FAAE6,0x8FABE6,0x016C}, + {0x8FAAE7,0x8FABE7,0x01D3}, + {0x8FAAE8,0x8FABE8,0x0170}, + {0x8FAAE9,0x8FABE9,0x016A}, + {0x8FAAEA,0x8FABEA,0x0172}, + {0x8FAAEB,0x8FABEB,0x016E}, + {0x8FAAEC,0x8FABEC,0x0168}, + {0x8FAAED,0x8FABED,0x01D7}, + {0x8FAAEE,0x8FABEE,0x01DB}, + {0x8FAAEF,0x8FABEF,0x01D9}, + {0x8FAAF0,0x8FABF0,0x01D5}, /* 8FAAF0 */ + {0x8FAAF1,0x8FABF1,0x0174}, + {0x8FAAF2,0x8FABF2,0x00DD}, + {0x8FAAF3,0x8FABF3,0x0178}, + {0x8FAAF4,0x8FABF4,0x0176}, + {0x8FAAF5,0x8FABF5,0x0179}, + {0x8FAAF6,0x8FABF6,0x017D}, + {0x8FAAF7,0x8FABF7,0x017B}, + {0x8FAAF8,0x8FAAF8,0x003F}, + {0x8FAAF9,0x8FAAF9,0x003F}, + {0x8FAAFA,0x8FAAFA,0x003F}, + {0x8FAAFB,0x8FAAFB,0x003F}, + {0x8FAAFC,0x8FAAFC,0x003F}, + {0x8FAAFD,0x8FAAFD,0x003F}, + {0x8FAAFE,0x8FAAFE,0x003F}, + {0x8FAAFF,0x8FAAFF,0x003F}, +}; + + +static MY_UNICASE_INFO c8FAB[]= +{ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx00 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx10 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx20 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx30 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx40 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx50 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx60 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx70 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx80 */ + {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},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, /* xx90 */ + {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, + {0x8FABA0,0x8FABA0,0x003F}, /* 8FABA0 */ + {0x8FAAA1,0x8FABA1,0x00E1}, + {0x8FAAA2,0x8FABA2,0x00E0}, + {0x8FAAA3,0x8FABA3,0x00E4}, + {0x8FAAA4,0x8FABA4,0x00E2}, + {0x8FAAA5,0x8FABA5,0x0103}, + {0x8FAAA6,0x8FABA6,0x01CE}, + {0x8FAAA7,0x8FABA7,0x0101}, + {0x8FAAA8,0x8FABA8,0x0105}, + {0x8FAAA9,0x8FABA9,0x00E5}, + {0x8FAAAA,0x8FABAA,0x00E3}, + {0x8FAAAB,0x8FABAB,0x0107}, + {0x8FAAAC,0x8FABAC,0x0109}, + {0x8FAAAD,0x8FABAD,0x010D}, + {0x8FAAAE,0x8FABAE,0x00E7}, + {0x8FAAAF,0x8FABAF,0x010B}, + {0x8FAAB0,0x8FABB0,0x010F}, /* 8FABB0 */ + {0x8FAAB1,0x8FABB1,0x00E9}, + {0x8FAAB2,0x8FABB2,0x00E8}, + {0x8FAAB3,0x8FABB3,0x00EB}, + {0x8FAAB4,0x8FABB4,0x00EA}, + {0x8FAAB5,0x8FABB5,0x011B}, + {0x8FAAB6,0x8FABB6,0x0117}, + {0x8FAAB7,0x8FABB7,0x0113}, + {0x8FAAB8,0x8FABB8,0x0119}, + {0x8FABB9,0x8FABB9,0x01F5}, + {0x8FAABA,0x8FABBA,0x011D}, + {0x8FAABB,0x8FABBB,0x011F}, + {0x8FABBC,0x8FABBC,0x003F}, + {0x8FAABD,0x8FABBD,0x0121}, + {0x8FAABE,0x8FABBE,0x0125}, + {0x8FAABF,0x8FABBF,0x00ED}, + {0x8FAAC0,0x8FABC0,0x00EC}, /* 8FABC0 */ + {0x8FAAC1,0x8FABC1,0x00EF}, + {0x8FAAC2,0x8FABC2,0x00EE}, + {0x8FAAC3,0x8FABC3,0x01D0}, + {0x8FABC4,0x8FABC4,0x003F}, + {0x8FAAC5,0x8FABC5,0x012B}, + {0x8FAAC6,0x8FABC6,0x012F}, + {0x8FAAC7,0x8FABC7,0x0129}, + {0x8FAAC8,0x8FABC8,0x0135}, + {0x8FAAC9,0x8FABC9,0x0137}, + {0x8FAACA,0x8FABCA,0x013A}, + {0x8FAACB,0x8FABCB,0x013E}, + {0x8FAACC,0x8FABCC,0x013C}, + {0x8FAACD,0x8FABCD,0x0144}, + {0x8FAACE,0x8FABCE,0x0148}, + {0x8FAACF,0x8FABCF,0x0146}, + {0x8FAAD0,0x8FABD0,0x00F1}, /* 8FABD0 */ + {0x8FAAD1,0x8FABD1,0x00F3}, + {0x8FAAD2,0x8FABD2,0x00F2}, + {0x8FAAD3,0x8FABD3,0x00F6}, + {0x8FAAD4,0x8FABD4,0x00F4}, + {0x8FAAD5,0x8FABD5,0x01D2}, + {0x8FAAD6,0x8FABD6,0x0151}, + {0x8FAAD7,0x8FABD7,0x014D}, + {0x8FAAD8,0x8FABD8,0x00F5}, + {0x8FAAD9,0x8FABD9,0x0155}, + {0x8FAADA,0x8FABDA,0x0159}, + {0x8FAADB,0x8FABDB,0x0157}, + {0x8FAADC,0x8FABDC,0x015B}, + {0x8FAADD,0x8FABDD,0x015D}, + {0x8FAADE,0x8FABDE,0x0161}, + {0x8FAADF,0x8FABDF,0x015F}, + {0x8FAAE0,0x8FABE0,0x0165}, /* 8FABE0 */ + {0x8FAAE1,0x8FABE1,0x0163}, + {0x8FAAE2,0x8FABE2,0x00FA}, + {0x8FAAE3,0x8FABE3,0x00F9}, + {0x8FAAE4,0x8FABE4,0x00FC}, + {0x8FAAE5,0x8FABE5,0x00FB}, + {0x8FAAE6,0x8FABE6,0x016D}, + {0x8FAAE7,0x8FABE7,0x01D4}, + {0x8FAAE8,0x8FABE8,0x0171}, + {0x8FAAE9,0x8FABE9,0x016B}, + {0x8FAAEA,0x8FABEA,0x0173}, + {0x8FAAEB,0x8FABEB,0x016F}, + {0x8FAAEC,0x8FABEC,0x0169}, + {0x8FAAED,0x8FABED,0x01D8}, + {0x8FAAEE,0x8FABEE,0x01DC}, + {0x8FAAEF,0x8FABEF,0x01DA}, + {0x8FAAF0,0x8FABF0,0x01D6}, /* 8FABF0 */ + {0x8FAAF1,0x8FABF1,0x0175}, + {0x8FAAF2,0x8FABF2,0x00FD}, + {0x8FAAF3,0x8FABF3,0x00FF}, + {0x8FAAF4,0x8FABF4,0x0177}, + {0x8FAAF5,0x8FABF5,0x017A}, + {0x8FAAF6,0x8FABF6,0x017E}, + {0x8FAAF7,0x8FABF7,0x017C}, + {0x8FABF8,0x8FABF8,0x003F}, + {0x8FABF9,0x8FABF9,0x003F}, + {0x8FABFA,0x8FABFA,0x003F}, + {0x8FABFB,0x8FABFB,0x003F}, + {0x8FABFC,0x8FABFC,0x003F}, + {0x8FABFD,0x8FABFD,0x003F}, + {0x8FABFE,0x8FABFE,0x003F}, + {0x8FABFF,0x8FABFF,0x003F} +}; + + +static MY_UNICASE_INFO *my_caseinfo_ujis[512]= +{ + /* JIS-X-0208 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, cA2, cA3, NULL, NULL, cA6, cA7, /* A */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + + /* JIS-X-0212 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 1 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 2 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 3 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 4 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 5 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 6 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 7 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 9 */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL,c8FA6,c8FA7, /* A */ + NULL, c8FA9,c8FAA,c8FAB,NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* B */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* C */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* D */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* E */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* F */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; +#endif /* HAVE_CHARSET_ujis */ + + + +#if defined(HAVE_CHARSET_ujis) || defined(HAVE_CHARSET_eucjpms) + +/* + UJIS and EUCJPMS share the same UPPER/LOWER functions. +*/ + +static MY_UNICASE_INFO* +get_case_info_for_ch(CHARSET_INFO *cs, uint plane, uint page, uint offs) +{ + MY_UNICASE_INFO *p; + return (p= cs->caseinfo[page + plane * 256]) ? &p[offs & 0xFF] : NULL; +} + + +/* + Generic function to handle UPPER and LOWER translation +*/ +static size_t +my_casefold_ujis(CHARSET_INFO *cs, + char *src, size_t srclen, + char *dst, size_t dstlen __attribute__((unused)), + uchar *map, + size_t is_upper) +{ + char *srcend= src + srclen, *dst0= dst; + + while (src < srcend) + { + size_t mblen= my_ismbchar(cs, src, srcend); + if (mblen) + { + MY_UNICASE_INFO *ch; + ch= (mblen == 2) ? + get_case_info_for_ch(cs, 0, (uchar) src[0], (uchar) src[1]) : + get_case_info_for_ch(cs, 1, (uchar) src[1], (uchar) src[2]); + if (ch) + { + int code= is_upper ? ch->toupper : ch->tolower; + src+= mblen; + if (code > 0xFFFF) + *dst++= (char) (uchar) ((code >> 16) & 0xFF); + if (code > 0xFF) + *dst++= (char) (uchar) ((code >> 8) & 0xFF); + *dst++= (char) (uchar) (code & 0xFF); + } + else + { + if (mblen == 3) + *dst++= *src++; + *dst++= *src++; + *dst++= *src++; + } + } + else + { + *dst++= (char) map[(uchar) *src++]; + } + } + return (size_t) (dst - dst0); +} + + +/* + LOWER() +*/ +size_t +my_casedn_ujis(CHARSET_INFO * cs, char *src, size_t srclen, + char *dst, size_t dstlen) +{ + DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply); + DBUG_ASSERT(src != dst || cs->casedn_multiply == 1); + return my_casefold_ujis(cs, src, srclen, dst, dstlen, cs->to_lower, 0); +} + + +/* + UPPER() +*/ +size_t +my_caseup_ujis(CHARSET_INFO * cs, char *src, size_t srclen, + char *dst, size_t dstlen) +{ + DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply); + DBUG_ASSERT(src != dst || cs->caseup_multiply == 1); + return my_casefold_ujis(cs, src, srclen, dst, dstlen, cs->to_upper, 1); +} +#endif /* defined(HAVE_CHARSET_ujis) || defined(HAVE_CHARSET_eucjpms) */ + + + +#ifdef HAVE_CHARSET_ujis + static MY_COLLATION_HANDLER my_collation_ci_handler = { NULL, /* init */ @@ -8524,8 +9781,8 @@ static MY_CHARSET_HANDLER my_charset_handler= my_mb_ctype_mb, my_caseup_str_mb, my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, + my_caseup_ujis, + my_casedn_ujis, my_snprintf_8bit, my_long10_to_str_8bit, my_longlong10_to_str_8bit, @@ -8558,12 +9815,12 @@ CHARSET_INFO my_charset_ujis_japanese_ci= NULL, /* contractions */ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_ujis, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ 1, /* caseup_multiply */ - 1, /* casedn_multiply */ + 2, /* casedn_multiply */ 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ @@ -8591,12 +9848,12 @@ CHARSET_INFO my_charset_ujis_bin= NULL, /* sort_order_big*/ NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ - my_unicase_default, /* caseinfo */ + my_caseinfo_ujis, /* caseinfo */ NULL, /* state_map */ NULL, /* ident_map */ 1, /* strxfrm_multiply */ 1, /* caseup_multiply */ - 1, /* casedn_multiply */ + 2, /* casedn_multiply */ 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ @@ -8608,4 +9865,4 @@ CHARSET_INFO my_charset_ujis_bin= }; -#endif +#endif /* HAVE_CHARSET_ujis */