diff options
author | Alexander Barkov <bar@mariadb.com> | 2022-04-14 11:50:34 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2022-04-14 11:50:34 +0400 |
commit | 9d734cdd61e4174589031431138bed2f85472a58 (patch) | |
tree | 820e10b38bf67f9be5326d13de60b4e72c87cb35 /sql/sql_yacc.yy | |
parent | f130a5ea3c1cc504acecbad7615fb27c6e28dbfa (diff) | |
parent | 767d8d8335f9d45efb86c77a9efa0b42aff1eb27 (diff) | |
download | mariadb-git-9d734cdd61e4174589031431138bed2f85472a58.tar.gz |
Merge remote-tracking branch 'origin/10.2' into 10.3
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3770488f3f4..9a0a9f3149e 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2035,6 +2035,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %type <charset> opt_collate + collate charset_name charset_or_alias charset_name_or_default @@ -7518,10 +7519,7 @@ charset_or_alias: } ; -collate: COLLATE_SYM collation_name_or_default - { - Lex->charset= $2; - } +collate: COLLATE_SYM collation_name_or_default { $$= $2; } ; opt_binary: @@ -7536,11 +7534,17 @@ binary: | BINARY charset_or_alias { bincmp_collation($2, true); } | charset_or_alias collate { - if (!my_charset_same(Lex->charset, $1)) - my_yyabort_error((ER_COLLATION_CHARSET_MISMATCH, MYF(0), - Lex->charset->name, $1->csname)); + if (!$2) + Lex->charset= $1; // CHARACTER SET cs COLLATE DEFAULT + else + { + if (!my_charset_same($2, $1)) + my_yyabort_error((ER_COLLATION_CHARSET_MISMATCH, MYF(0), + $2->name, $1->csname)); + Lex->charset= $2; + } } - | collate { } + | collate { Lex->charset= $1; } ; opt_bin_mod: |