From 9a0780cce0fbfad517c39578907929527c91c641 Mon Sep 17 00:00:00 2001 From: "vva@eagle.mysql.r18.ru" <> Date: Thu, 19 Dec 2002 09:37:33 +0400 Subject: [PATCH 1/3] fix warnings --- libmysql/libmysql.c | 4 ++-- libmysqld/libmysqld.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index c904fcfe28f..87093059d92 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -937,7 +937,7 @@ static TYPELIB option_types={array_elements(default_options)-1, static int add_init_command(struct st_mysql_options *options, const char *cmd) { - char **ptr, *tmp; + char *tmp; if (!options->init_commands) { @@ -947,7 +947,7 @@ static int add_init_command(struct st_mysql_options *options, const char *cmd) } if (!(tmp= my_strdup(cmd,MYF(MY_WME))) || - insert_dynamic(options->init_commands, &tmp)) + insert_dynamic(options->init_commands, (byte*)&tmp)) { my_free(tmp, MYF(MY_ALLOW_ZERO_PTR)); return 1; diff --git a/libmysqld/libmysqld.c b/libmysqld/libmysqld.c index cfbd3157476..114a7ebf921 100644 --- a/libmysqld/libmysqld.c +++ b/libmysqld/libmysqld.c @@ -453,7 +453,7 @@ static TYPELIB option_types={array_elements(default_options)-1, static int add_init_command(struct st_mysql_options *options, const char *cmd) { - char **ptr, *tmp; + char *tmp; if (!options->init_commands) { @@ -463,7 +463,7 @@ static int add_init_command(struct st_mysql_options *options, const char *cmd) } if (!(tmp= my_strdup(cmd,MYF(MY_WME))) || - insert_dynamic(options->init_commands, &tmp)) + insert_dynamic(options->init_commands, (byte*)&tmp)) { my_free(tmp, MYF(MY_ALLOW_ZERO_PTR)); return 1; From f7711e851b350c8c453dc805cd96cda2af3db7c3 Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Thu, 19 Dec 2002 09:38:25 +0400 Subject: [PATCH 2/3] Introducing SAPDB-style "fieldname CHAR(n) UNICODE" as a synonym to "fieldname CHAR(n) CHARACTER SET ucs2" --- mysql-test/r/ctype_many.result | 3 ++- mysql-test/t/ctype_many.test | 3 ++- sql/lex.h | 1 + sql/sql_yacc.yy | 10 ++++++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/ctype_many.result b/mysql-test/r/ctype_many.result index ddc3989282b..0dac6e1318f 100644 --- a/mysql-test/r/ctype_many.result +++ b/mysql-test/r/ctype_many.result @@ -1291,7 +1291,8 @@ CYR CAPIT YA CYR CAPIT YA CYR CAPIT YA CYR SMALL YA CYR SMALL YA CYR CAPIT YA CYR SMALL YA CYR SMALL YA -ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2 NOT NULL; +ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2; +ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL; INSERT INTO t1 (ucs2_f,comment) VALUES (0x0391,'GREEK CAPIT ALPHA'); INSERT INTO t1 (ucs2_f,comment) VALUES (0x0392,'GREEK CAPIT BETA'); INSERT INTO t1 (ucs2_f,comment) VALUES (0x0393,'GREEK CAPIT GAMMA'); diff --git a/mysql-test/t/ctype_many.test b/mysql-test/t/ctype_many.test index 1e89b1419d2..650badfa39c 100644 --- a/mysql-test/t/ctype_many.test +++ b/mysql-test/t/ctype_many.test @@ -156,7 +156,8 @@ FROM t1 t11,t1 t12 WHERE t11.koi8_ru_f=CONVERT(t12.utf8_f USING koi8_ru) ORDER BY t12.utf8_f,t11.comment,t12.comment; -ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2 NOT NULL; +ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2; +ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL; INSERT INTO t1 (ucs2_f,comment) VALUES (0x0391,'GREEK CAPIT ALPHA'); INSERT INTO t1 (ucs2_f,comment) VALUES (0x0392,'GREEK CAPIT BETA'); diff --git a/sql/lex.h b/sql/lex.h index 421ac933f50..1dae62eec4b 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -374,6 +374,7 @@ static SYMBOL symbols[] = { { "TYPE", SYM(TYPE_SYM),0,0}, { "TYPES", SYM(TYPES_SYM),0,0}, { "UNCOMMITTED", SYM(UNCOMMITTED_SYM),0,0}, + { "UNICODE", SYM(UNICODE_SYM),0,0}, { "UNION", SYM(UNION_SYM),0,0}, { "UNIQUE", SYM(UNIQUE_SYM),0,0}, { "UNLOCK", SYM(UNLOCK_SYM),0,0}, diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 8e947ec7587..3c9ec865348 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -361,6 +361,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token UDF_SYM %token UNCOMMITTED_SYM %token UNDERSCORE_CHARSET +%token UNICODE_SYM %token UNION_SYM %token UNIQUE_SYM %token USAGE @@ -1259,6 +1260,14 @@ opt_binary: /* empty */ { Lex->charset=NULL; } | BYTE_SYM { Lex->charset=my_charset_bin; } | BINARY { Lex->charset=my_charset_bin; } + | UNICODE_SYM + { + if (!(Lex->charset=get_charset_by_name("ucs2",MYF(0)))) + { + net_printf(YYTHD,ER_UNKNOWN_CHARACTER_SET,"ucs2"); + YYABORT; + } + } | CHAR_SYM SET charset_name { Lex->charset=$3; } ; @@ -3872,6 +3881,7 @@ keyword: | TYPE_SYM {} | UDF_SYM {} | UNCOMMITTED_SYM {} + | UNICODE_SYM {} | USE_FRM {} | VARIABLES {} | VALUE_SYM {} From 9c94dea185dc60bf660205f3055e0504546fc30b Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Thu, 19 Dec 2002 09:38:26 +0400 Subject: [PATCH 3/3] SAPDB-style syntax CREATE TABLE tname (a CHAR(10) ASCII) as a synonym for CREATE TABLE tname (a CHAR(10) CHARACTER SET latin1) --- mysql-test/r/ctype_many.result | 2 +- mysql-test/t/ctype_many.test | 2 +- sql/lex.h | 2 +- sql/sql_yacc.yy | 5 ++++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/ctype_many.result b/mysql-test/r/ctype_many.result index 0dac6e1318f..45fe91c096d 100644 --- a/mysql-test/r/ctype_many.result +++ b/mysql-test/r/ctype_many.result @@ -1,6 +1,6 @@ DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( -comment CHAR(32) CHARACTER SET latin1 NOT NULL, +comment CHAR(32) ASCII NOT NULL, koi8_ru_f CHAR(32) CHARACTER SET koi8_ru NOT NULL ) CHARSET=latin5; SHOW CREATE TABLE t1; diff --git a/mysql-test/t/ctype_many.test b/mysql-test/t/ctype_many.test index 650badfa39c..7854bc38d6f 100644 --- a/mysql-test/t/ctype_many.test +++ b/mysql-test/t/ctype_many.test @@ -1,7 +1,7 @@ DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( - comment CHAR(32) CHARACTER SET latin1 NOT NULL, + comment CHAR(32) ASCII NOT NULL, koi8_ru_f CHAR(32) CHARACTER SET koi8_ru NOT NULL ) CHARSET=latin5; diff --git a/sql/lex.h b/sql/lex.h index 1dae62eec4b..78255d477fa 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -59,6 +59,7 @@ static SYMBOL symbols[] = { { "ANY", SYM(ANY_SYM),0,0}, { "AS", SYM(AS),0,0}, { "ASC", SYM(ASC),0,0}, + { "ASCII", SYM(ASCII_SYM),0,0}, { "AVG", SYM(AVG_SYM),0,0}, { "AVG_ROW_LENGTH", SYM(AVG_ROW_LENGTH),0,0}, { "AUTO_INCREMENT", SYM(AUTO_INC),0,0}, @@ -413,7 +414,6 @@ static SYMBOL sql_functions[] = { { "AES_ENCRYPT", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_aes_encrypt)}, { "AES_DECRYPT", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_aes_decrypt)}, { "AREA", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_area)}, - { "ASCII", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ascii)}, { "ASIN", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_asin)}, { "ASTEXT", SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_as_text)}, { "ATAN", SYM(ATAN),0,0}, diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3c9ec865348..ea276b9dcd9 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -381,6 +381,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token ERRORS %token WARNINGS +%token ASCII_SYM %token BIGINT %token BLOB_SYM %token CHAR_SYM @@ -1258,6 +1259,7 @@ opt_db_default_character_set: opt_binary: /* empty */ { Lex->charset=NULL; } + | ASCII_SYM { Lex->charset=my_charset_latin1; } | BYTE_SYM { Lex->charset=my_charset_bin; } | BINARY { Lex->charset=my_charset_bin; } | UNICODE_SYM @@ -1270,7 +1272,6 @@ opt_binary: } | CHAR_SYM SET charset_name { Lex->charset=$3; } ; - opt_primary: /* empty */ | PRIMARY_SYM @@ -2023,6 +2024,7 @@ simple_expr: | MATCH ident_list_arg AGAINST '(' expr IN_SYM BOOLEAN_SYM MODE_SYM ')' { Select->add_ftfunc_to_list((Item_func_match *) ($$=new Item_func_match_bool(*$2,$5))); } + | ASCII_SYM '(' expr ')' { $$= new Item_func_ascii($3); } | BINARY expr %prec NEG { $$= new Item_func_set_collation($2,my_charset_bin); } | CAST_SYM '(' expr AS cast_type ')' { $$= create_func_cast($3, $5); } | CASE_SYM opt_expr WHEN_SYM when_list opt_else END @@ -3730,6 +3732,7 @@ keyword: | AGAINST {} | AGGREGATE_SYM {} | ANY_SYM {} + | ASCII_SYM {} | AUTO_INC {} | AVG_ROW_LENGTH {} | AVG_SYM {}