summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2022-04-14 11:50:34 +0400
committerAlexander Barkov <bar@mariadb.com>2022-04-14 11:50:34 +0400
commit9d734cdd61e4174589031431138bed2f85472a58 (patch)
tree820e10b38bf67f9be5326d13de60b4e72c87cb35 /sql/sql_yacc.yy
parentf130a5ea3c1cc504acecbad7615fb27c6e28dbfa (diff)
parent767d8d8335f9d45efb86c77a9efa0b42aff1eb27 (diff)
downloadmariadb-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.yy20
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: