diff options
author | bar@gw.udmsearch.izhnet.ru <> | 2002-05-20 17:10:50 +0500 |
---|---|---|
committer | bar@gw.udmsearch.izhnet.ru <> | 2002-05-20 17:10:50 +0500 |
commit | 2b0a5e1f65885b686ce8af603d135ae69c576087 (patch) | |
tree | 58149f04a4cac86a361589b8541cfd43253c4940 /sql/sql_yacc.yy | |
parent | 196aa19cf6624c17fb3c36c876e3e1a40f18ed23 (diff) | |
download | mariadb-git-2b0a5e1f65885b686ce8af603d135ae69c576087.tar.gz |
Charset related synax changes, now these things work in parser:
CREATE DATABASE name DEFAULT CHARACTER SET charsetname;
CREATE DATABASE name (fieldname CHAR(n) CHARACTER SET charsetname);
Changes affect query parsing ONLY and do not have other effect yet.
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 6ce661440c0..756afbd7a09 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -777,7 +777,7 @@ create: lex->key_list.push_back(new Key($2,$5,$4.str,lex->col_list)); lex->col_list.empty(); } - | CREATE DATABASE opt_if_not_exists ident + | CREATE DATABASE opt_if_not_exists ident default_charset { LEX *lex=Lex; lex->sql_command=SQLCOM_CREATE_DB; @@ -1095,8 +1095,31 @@ attribute: | UNIQUE_SYM KEY_SYM { Lex->type|= UNIQUE_KEY_FLAG; } opt_binary: - /* empty */ {} - | BINARY { Lex->type|=BINARY_FLAG; } + /* empty */ { Lex->charset=default_charset_info; } + | BINARY { Lex->type|=BINARY_FLAG; Lex->charset=default_charset_info; } + | CHAR_SYM SET ident + { + CHARSET_INFO *cs=get_charset_by_name($3.str,MYF(MY_WME)); + if (!cs) + { + net_printf(¤t_thd->net,ER_UNKNOWN_CHARACTER_SET,$3); + YYABORT; + } + Lex->charset=cs; + } + +default_charset: + /* empty */ { Lex->charset-default_charset_info; } + | DEFAULT CHAR_SYM SET ident + { + CHARSET_INFO *cs=get_charset_by_name($4.str,MYF(MY_WME)); + if (!cs) + { + net_printf(¤t_thd->net,ER_UNKNOWN_CHARACTER_SET,$4); + YYABORT; + } + Lex->charset=cs; + } references: REFERENCES table_ident opt_on_delete {} |