From bf6480ba7c726a48eab443559f14a8014c9e6ec9 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 15 Sep 2003 10:26:48 +0500 Subject: [PATCH] New syntax: CREATE TABLE t1(a NVARCHAR(10)) This is for compatibility with MSSQL, DB2, Informix and some other DBMSs. Note, standard SQL doesn't have "NVARCHAR" syntax. There are only these syntaxes in SQL2003: NATIONAL VARCHAR NCHAR VARCHAR NATIONAL CHARACTER VARYING NCHAR VARYING - Tests were added for all the above syntaxes. sql/lex.h: New syntax: CREATE TABLE t1(a NVARCHAR(10)) This is for compatibility with MSSQL, DB2, Informix and some other DBMSs. Note, standard SQL doesn't have "NVARCHAR" syntax. There are only these syntaxes in SQL2003: NATIONAL VARCHAR NCHAR VARCHAR NATIONAL CHARACTER VARYING NCHAR VARYING sql/sql_yacc.yy: New syntax: CREATE TABLE t1(a NVARCHAR(10)) This is for compatibility with MSSQL, DB2, Informix and some other DBMSs. Note, standard SQL doesn't have "NVARCHAR" syntax. There are only these syntaxes in SQL2003: NATIONAL VARCHAR NCHAR VARCHAR NATIONAL CHARACTER VARYING NCHAR VARYING --- mysql-test/r/type_nchar.result | 0 mysql-test/t/type_nchar.test | 35 ++++++++++++++++++++++++++++++++++ sql/lex.h | 1 + sql/sql_yacc.yy | 3 +++ 4 files changed, 39 insertions(+) create mode 100644 mysql-test/r/type_nchar.result create mode 100644 mysql-test/t/type_nchar.test diff --git a/mysql-test/r/type_nchar.result b/mysql-test/r/type_nchar.result new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mysql-test/t/type_nchar.test b/mysql-test/t/type_nchar.test new file mode 100644 index 00000000000..e85609e3f0c --- /dev/null +++ b/mysql-test/t/type_nchar.test @@ -0,0 +1,35 @@ +# +# Test nchar/nvarchar +# +--disable_warnings +drop table if exists t1; +--enable_warnings + +create table t1 (c nchar(10)); +show create table t1; +drop table t1; + +create table t1 (c national char(10)); +show create table t1; +drop table t1; + +create table t1 (c national varchar(10)); +show create table t1; +drop table t1; + +create table t1 (c nvarchar(10)); +show create table t1; +drop table t1; + +create table t1 (c nchar varchar(10)); +show create table t1; +drop table t1; + +create table t1 (c national character varying(10)); +show create table t1; +drop table t1; + +create table t1 (c nchar varying(10)); +show create table t1; +drop table t1; + diff --git a/sql/lex.h b/sql/lex.h index fb3c018de42..e11b50ed16d 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -293,6 +293,7 @@ static SYMBOL symbols[] = { { "NOT", SYM(NOT),0,0}, { "NULL", SYM(NULL_SYM),0,0}, { "NUMERIC", SYM(NUMERIC_SYM),0,0}, + { "NVARCHAR", SYM(NVARCHAR_SYM),0,0}, { "OFFSET", SYM(OFFSET_SYM),0,0}, { "OLD_PASSWORD", SYM(OLD_PASSWORD),0,0}, { "ON", SYM(ON),0,0}, diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 54d708fef04..2a35c03f3b4 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -302,6 +302,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token NEW_SYM %token NCHAR_SYM %token NCHAR_STRING +%token NVARCHAR_SYM %token NOT %token NO_SYM %token NULL_SYM @@ -1339,6 +1340,7 @@ varchar: nvarchar: NATIONAL_SYM VARCHAR {} + | NVARCHAR_SYM {} | NCHAR_SYM VARCHAR {} | NATIONAL_SYM CHAR_SYM VARYING {} | NCHAR_SYM VARYING {} @@ -4568,6 +4570,7 @@ keyword: | NEW_SYM {} | NO_SYM {} | NONE_SYM {} + | NVARCHAR_SYM {} | OFFSET_SYM {} | OLD_PASSWORD {} | OPEN_SYM {}