summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/jp/t/jp_ps_ujis.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/jp/t/jp_ps_ujis.test')
-rw-r--r--mysql-test/suite/jp/t/jp_ps_ujis.test347
1 files changed, 347 insertions, 0 deletions
diff --git a/mysql-test/suite/jp/t/jp_ps_ujis.test b/mysql-test/suite/jp/t/jp_ps_ujis.test
new file mode 100644
index 00000000..78b86ad5
--- /dev/null
+++ b/mysql-test/suite/jp/t/jp_ps_ujis.test
@@ -0,0 +1,347 @@
+--source include/have_ujis.inc
+--source include/have_innodb.inc
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t2;
+DROP TABLE IF EXISTS t3;
+DROP TABLE IF EXISTS t4;
+--enable_warnings
+
+#
+# Test Prepares Statement with Japanese character in ujis encoding
+#
+
+SET NAMES ujis;
+SET character_set_database = ujis;
+
+### Test InnoDB ###
+CREATE TABLE t1(c1 char(3)) DEFAULT CHARSET = ujis ENGINE = InnoDB;
+CREATE TABLE t2(c1 char(3)) DEFAULT CHARSET = ujis ENGINE = InnoDB;
+CREATE TABLE t3(
+ `ア` char(1),
+ `あ` char(1),
+ `龔` char(1)
+)DEFAULT CHARSET = ujis ENGINE = InnoDB;
+CREATE TABLE t4(c1 char(1)) DEFAULT CHARSET = ujis ENGINE = InnoDB;
+
+INSERT INTO t1 VALUES ('xxx');
+INSERT INTO t2 VALUES ('アあ龔');
+INSERT INTO t3 VALUES ('x','x','x'),('x','x','x'),('y','y','y'),('y','y','y'),('z','z','z'),('z','z','z');
+INSERT INTO t4 VALUES ('ア'),('あ'),('龔');
+
+# Japanese parameter for column name
+# the parameter for stmt is not interpreted as column name
+PREPARE stmt1 FROM 'SELECT ? FROM t3';
+PREPARE stmt2 FROM 'SELECT * FROM t3 ORDER BY ?';
+PREPARE stmt3 FROM 'SELECT COUNT(*) FROM t3 GROUP BY ?';
+# Japanese parameter for function argument
+PREPARE stmt4 FROM 'SELECT CHAR_LENGTH(?)';
+PREPARE stmt5 FROM 'SELECT CHARSET(?)';
+PREPARE stmt6 FROM 'SELECT INSERT(c1,1,1,?) FROM t1';
+PREPARE stmt7 FROM 'SELECT INSTR(c1,?) FROM t2';
+PREPARE stmt8 FROM 'SELECT LOCATE(?,c1) FROM t2';
+PREPARE stmt9 FROM 'SELECT LPAD(c1,9,?) FROM t1';
+PREPARE stmt10 FROM 'SELECT REPLACE(c1,?,\'x\') FROM t2';
+PREPARE stmt11 FROM 'SELECT REPLACE(c1,\'x\',?) FROM t1';
+PREPARE stmt12 FROM 'SELECT RPAD(c1,9,?) FROM t1';
+# Japanese parameter for UPDATE
+PREPARE stmt13 FROM 'UPDATE t4 SET c1=\'x\' WHERE c1=?';
+PREPARE stmt14 FROM 'UPDATE t4 SET c1=? WHERE c1=\'x\'';
+
+## Test jisx0201 ##
+SET @arg = 'ア';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+## Test jisx0208 ##
+SET @arg = 'あ';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+# Test jisx0212 ##
+SET @arg = '龔';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+DEALLOCATE PREPARE stmt1;
+DEALLOCATE PREPARE stmt2;
+DEALLOCATE PREPARE stmt3;
+DEALLOCATE PREPARE stmt4;
+DEALLOCATE PREPARE stmt5;
+DEALLOCATE PREPARE stmt6;
+DEALLOCATE PREPARE stmt7;
+DEALLOCATE PREPARE stmt8;
+DEALLOCATE PREPARE stmt9;
+DEALLOCATE PREPARE stmt10;
+DEALLOCATE PREPARE stmt11;
+DEALLOCATE PREPARE stmt12;
+DEALLOCATE PREPARE stmt13;
+DEALLOCATE PREPARE stmt14;
+
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;
+
+### Test MyISAM ###
+CREATE TABLE t1(c1 char(3)) DEFAULT CHARSET = ujis ENGINE = MyISAM;
+CREATE TABLE t2(c1 char(3)) DEFAULT CHARSET = ujis ENGINE = MyISAM;
+CREATE TABLE t3(
+ `ア` char(1),
+ `あ` char(1),
+ `龔` char(1)
+)DEFAULT CHARSET = ujis ENGINE = MyISAM;
+CREATE TABLE t4(c1 char(1)) DEFAULT CHARSET = ujis ENGINE = MyISAM;
+
+INSERT INTO t1 VALUES ('xxx');
+INSERT INTO t2 VALUES ('アあ龔');
+INSERT INTO t3 VALUES ('x','x','x'),('x','x','x'),('y','y','y'),('y','y','y'),('z','z','z'),('z','z','z');
+INSERT INTO t4 VALUES ('ア'),('あ'),('龔' );
+
+# Japanese parameter for column name
+PREPARE stmt1 FROM 'SELECT ? FROM t3';
+PREPARE stmt2 FROM 'SELECT * FROM t3 ORDER BY ?';
+PREPARE stmt3 FROM 'SELECT COUNT(*) FROM t3 GROUP BY ?';
+# Japanese parameter for function argument
+PREPARE stmt4 FROM 'SELECT CHAR_LENGTH(?)';
+PREPARE stmt5 FROM 'SELECT CHARSET(?)';
+PREPARE stmt6 FROM 'SELECT INSERT(c1,1,1,?) FROM t1';
+PREPARE stmt7 FROM 'SELECT INSTR(c1,?) FROM t2';
+PREPARE stmt8 FROM 'SELECT LOCATE(?,c1) FROM t2';
+PREPARE stmt9 FROM 'SELECT LPAD(c1,9,?) FROM t1';
+PREPARE stmt10 FROM 'SELECT REPLACE(c1,?,\'x\') FROM t2';
+PREPARE stmt11 FROM 'SELECT REPLACE(c1,\'x\',?) FROM t1';
+PREPARE stmt12 FROM 'SELECT RPAD(c1,9,?) FROM t1';
+# Japanese parameter for UPDATE
+PREPARE stmt13 FROM 'UPDATE t4 SET c1=\'x\' WHERE c1=?';
+PREPARE stmt14 FROM 'UPDATE t4 SET c1=? WHERE c1=\'x\'';
+
+## Test jisx0201 ##
+SET @arg = 'ア';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+## Test jisx0208 ##
+SET @arg = 'あ';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+## Test jisx0212 ##
+SET @arg = '龔';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+DEALLOCATE PREPARE stmt1;
+DEALLOCATE PREPARE stmt2;
+DEALLOCATE PREPARE stmt3;
+DEALLOCATE PREPARE stmt4;
+DEALLOCATE PREPARE stmt5;
+DEALLOCATE PREPARE stmt6;
+DEALLOCATE PREPARE stmt7;
+DEALLOCATE PREPARE stmt8;
+DEALLOCATE PREPARE stmt9;
+DEALLOCATE PREPARE stmt10;
+DEALLOCATE PREPARE stmt11;
+DEALLOCATE PREPARE stmt12;
+DEALLOCATE PREPARE stmt13;
+DEALLOCATE PREPARE stmt14;
+
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;
+
+### Test MEMORY ###
+CREATE TABLE t1(c1 char(3)) DEFAULT CHARSET = ujis ENGINE = MEMORY;
+CREATE TABLE t2(c1 char(3)) DEFAULT CHARSET = ujis ENGINE = MEMORY;
+CREATE TABLE t3(
+ `ア` char(1),
+ `あ` char(1),
+ `龔` char(1)
+)DEFAULT CHARSET = ujis ENGINE = MEMORY;
+CREATE TABLE t4(c1 char(1)) DEFAULT CHARSET = ujis ENGINE =MEMORY;
+
+INSERT INTO t1 VALUES ('xxx');
+INSERT INTO t2 VALUES ('アあ龔');
+INSERT INTO t3 VALUES ('x','x','x'),('x','x','x'),('y','y','y'),('y','y','y'),('z','z','z'),('z','z','z');
+INSERT INTO t4 VALUES ('ア'),('あ'),('龔' );
+
+# Japanese parameter for column name
+PREPARE stmt1 FROM 'SELECT ? FROM t3';
+PREPARE stmt2 FROM 'SELECT * FROM t3 ORDER BY ?';
+PREPARE stmt3 FROM 'SELECT COUNT(*) FROM t3 GROUP BY ?';
+# Japanese parameter for function argument
+PREPARE stmt4 FROM 'SELECT CHAR_LENGTH(?)';
+PREPARE stmt5 FROM 'SELECT CHARSET(?)';
+PREPARE stmt6 FROM 'SELECT INSERT(c1,1,1,?) FROM t1';
+PREPARE stmt7 FROM 'SELECT INSTR(c1,?) FROM t2';
+PREPARE stmt8 FROM 'SELECT LOCATE(?,c1) FROM t2';
+PREPARE stmt9 FROM 'SELECT LPAD(c1,9,?) FROM t1';
+PREPARE stmt10 FROM 'SELECT REPLACE(c1,?,\'x\') FROM t2';
+PREPARE stmt11 FROM 'SELECT REPLACE(c1,\'x\',?) FROM t1';
+PREPARE stmt12 FROM 'SELECT RPAD(c1,9,?) FROM t1';
+# Japanese parameter for UPDATE
+PREPARE stmt13 FROM 'UPDATE t4 SET c1=\'x\' WHERE c1=?';
+PREPARE stmt14 FROM 'UPDATE t4 SET c1=? WHERE c1=\'x\'';
+
+## Test jisx0201 ##
+SET @arg = 'ア';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+## Test jisx0208 ##
+SET @arg = 'あ';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+## Test jisx0212 ##
+SET @arg = '龔';
+EXECUTE stmt1 USING @arg;
+EXECUTE stmt2 USING @arg;
+EXECUTE stmt3 USING @arg;
+EXECUTE stmt4 USING @arg;
+EXECUTE stmt5 USING @arg;
+EXECUTE stmt6 USING @arg;
+EXECUTE stmt7 USING @arg;
+EXECUTE stmt8 USING @arg;
+EXECUTE stmt9 USING @arg;
+EXECUTE stmt10 USING @arg;
+EXECUTE stmt11 USING @arg;
+EXECUTE stmt12 USING @arg;
+EXECUTE stmt13 USING @arg;
+SELECT * FROM t4;
+EXECUTE stmt14 USING @arg;
+SELECT * FROM t4;
+
+DEALLOCATE PREPARE stmt1;
+DEALLOCATE PREPARE stmt2;
+DEALLOCATE PREPARE stmt3;
+DEALLOCATE PREPARE stmt4;
+DEALLOCATE PREPARE stmt5;
+DEALLOCATE PREPARE stmt6;
+DEALLOCATE PREPARE stmt7;
+DEALLOCATE PREPARE stmt8;
+DEALLOCATE PREPARE stmt9;
+DEALLOCATE PREPARE stmt10;
+DEALLOCATE PREPARE stmt11;
+DEALLOCATE PREPARE stmt12;
+DEALLOCATE PREPARE stmt13;
+DEALLOCATE PREPARE stmt14;
+
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;