Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
Description
ALTER TABLE EXCHANGE PARTITION and PURGE related C++ code blocks have diverged in the two *.yy files.
Under terms of this task we'll synchronize the code.
Let's move the C++ code into new LEX methods:
bool stmt_alter_table_exchange_partition(Table_ident *table); |
void stmt_purge_to(const LEX_CSTRING &to); |
bool stmt_purge_before(Item *item); |
The relevant grammar in the new reduction will look like:
alter_commands:
|
...
|
| EXCHANGE_SYM PARTITION_SYM alt_part_name_item
|
WITH TABLE_SYM table_ident have_partitioning
|
{
|
if (Lex->stmt_alter_table_exchange_partition($6)) |
MYSQL_YYABORT;
|
}
|
;
|
purge:
|
PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys
|
{
|
Lex->stmt_purge_to($5);
|
}
|
| PURGE master_or_binary LOGS_SYM BEFORE_SYM expr_no_subselect
|
{
|
if (Lex->stmt_purge_before($5)) |
MYSQL_YYABORT;
|
}
|
;
|
Attachments
Issue Links
- blocks
-
MDEV-18796 Synchronize PS grammar between sql_yacc.yy and sql_yacc_ora.yy
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue blocks |
Labels | Compatibility |
Description |
{{ALTER TABLE EXCHANGE PARTITION}} and {{PURGE}} related C++ code blocks have diverged in the two {{*.yy}} files.
Under terms of this task we'll synchronize the code. Let's move the C++ code into new {{LEX}} methods: {code:cpp} bool stmt_alter_table_exchange_partition(Table_ident *table); void stmt_purge_to(const LEX_CSTRING &to); bool stmt_purge_before(Item *item); {cpp} The relevant grammar in the new reduction will look like: {code:cpp} alter_commands: ... | EXCHANGE_SYM PARTITION_SYM alt_part_name_item WITH TABLE_SYM table_ident have_partitioning { if (Lex->stmt_alter_table_exchange_partition($6)) MYSQL_YYABORT; } ; {code} {code:cpp} purge: PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys { Lex->stmt_purge_to($5); } | PURGE master_or_binary LOGS_SYM BEFORE_SYM expr_no_subselect { if (Lex->stmt_purge_before($5)) MYSQL_YYABORT; } ; {code} |
{{ALTER TABLE EXCHANGE PARTITION}} and {{PURGE}} related C++ code blocks have diverged in the two {{*.yy}} files.
Under terms of this task we'll synchronize the code. Let's move the C++ code into new {{LEX}} methods: {code:cpp} bool stmt_alter_table_exchange_partition(Table_ident *table); void stmt_purge_to(const LEX_CSTRING &to); bool stmt_purge_before(Item *item); {code} The relevant grammar in the new reduction will look like: {code:cpp} alter_commands: ... | EXCHANGE_SYM PARTITION_SYM alt_part_name_item WITH TABLE_SYM table_ident have_partitioning { if (Lex->stmt_alter_table_exchange_partition($6)) MYSQL_YYABORT; } ; {code} {code:cpp} purge: PURGE master_or_binary LOGS_SYM TO_SYM TEXT_STRING_sys { Lex->stmt_purge_to($5); } | PURGE master_or_binary LOGS_SYM BEFORE_SYM expr_no_subselect { if (Lex->stmt_purge_before($5)) MYSQL_YYABORT; } ; {code} |
issue.field.resolutiondate | 2019-03-04 13:08:14.0 | 2019-03-04 13:08:14.25 |
Fix Version/s | 10.4.4 [ 23310 ] | |
Fix Version/s | 10.4 [ 22408 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | MariaDB v3 [ 92947 ] | MariaDB v4 [ 133882 ] |