summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorbar@gw.udmsearch.izhnet.ru <>2002-05-20 17:10:50 +0500
committerbar@gw.udmsearch.izhnet.ru <>2002-05-20 17:10:50 +0500
commit2b0a5e1f65885b686ce8af603d135ae69c576087 (patch)
tree58149f04a4cac86a361589b8541cfd43253c4940 /sql/sql_yacc.yy
parent196aa19cf6624c17fb3c36c876e3e1a40f18ed23 (diff)
downloadmariadb-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.yy29
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(&current_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(&current_thd->net,ER_UNKNOWN_CHARACTER_SET,$4);
+ YYABORT;
+ }
+ Lex->charset=cs;
+ }
references:
REFERENCES table_ident opt_on_delete {}