diff --git a/tests/Parser/AlterStatementTest.php b/tests/Parser/AlterStatementTest.php index f4f739ca..19071502 100644 --- a/tests/Parser/AlterStatementTest.php +++ b/tests/Parser/AlterStatementTest.php @@ -42,6 +42,8 @@ public static function alterProvider(): array ['parser/parseAlterErr4'], ['parser/parseAlterTableRenameIndex1'], ['parser/parseAlterTableRenameIndex2'], + ['parser/parseAlterTableRenameKey1'], + ['parser/parseAlterTableRenameKey2'], ['parser/parseAlterTablePartitionByRange1'], ['parser/parseAlterTablePartitionByRange2'], ['parser/parseAlterTableCoalescePartition'], diff --git a/tests/data/parser/parseAlterTableRenameKey1.in b/tests/data/parser/parseAlterTableRenameKey1.in new file mode 100644 index 00000000..90e599a5 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey1.in @@ -0,0 +1 @@ +ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx` diff --git a/tests/data/parser/parseAlterTableRenameKey1.out b/tests/data/parser/parseAlterTableRenameKey1.out new file mode 100644 index 00000000..c178bfcf --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey1.out @@ -0,0 +1,249 @@ +{ + "query": "ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "str": "ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`\n", + "len": 119, + "last": 119, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`transactions`", + "value": "transactions", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_transactions_catalog_entries1_idx`", + "value": "fk_transactions_catalog_entries1_idx", + "keyword": null, + "type": 8, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_transactions_catalog_entries2_idx`", + "value": "fk_transactions_catalog_entries2_idx", + "keyword": null, + "type": 8, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "transactions", + "column": null, + "expr": "`transactions`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "ROUTINE_OPTIONS": { + "COMMENT": [ + 1, + "var" + ], + "LANGUAGE SQL": 2, + "CONTAINS SQL": 3, + "NO SQL": 3, + "READS SQL DATA": 3, + "MODIFIES SQL DATA": 3, + "SQL SECURITY": 4, + "DEFINER": 5, + "INVOKER": 5 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "RENAME", + "2": { + "name": "KEY", + "equals": false, + "expr": "`fk_transactions_catalog_entries1_idx`", + "value": "fk_transactions_catalog_entries1_idx" + }, + "3": { + "name": "TO", + "equals": false, + "expr": "`fk_transactions_catalog_entries2_idx`", + "value": "fk_transactions_catalog_entries2_idx" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameKey2.in b/tests/data/parser/parseAlterTableRenameKey2.in new file mode 100644 index 00000000..b59fc642 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey2.in @@ -0,0 +1 @@ +ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE; diff --git a/tests/data/parser/parseAlterTableRenameKey2.out b/tests/data/parser/parseAlterTableRenameKey2.out new file mode 100644 index 00000000..934d3913 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey2.out @@ -0,0 +1,410 @@ +{ + "query": "ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "str": "ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;\n", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index", + "value": "my_index", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index2", + "value": "my_index2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": 1, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INPLACE", + "value": "INPLACE", + "keyword": null, + "type": 0, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NONE", + "value": "NONE", + "keyword": "NONE", + "type": 1, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 28, + "idx": 28 + }, + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "ROUTINE_OPTIONS": { + "COMMENT": [ + 1, + "var" + ], + "LANGUAGE SQL": 2, + "CONTAINS SQL": 3, + "NO SQL": 3, + "READS SQL DATA": 3, + "MODIFIES SQL DATA": 3, + "SQL SECURITY": 4, + "DEFINER": 5, + "INVOKER": 5 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "RENAME", + "2": { + "name": "KEY", + "equals": false, + "expr": "my_index", + "value": "my_index" + }, + "3": { + "name": "TO", + "equals": false, + "expr": "my_index2", + "value": "my_index2" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "ROUTINE_OPTIONS": { + "COMMENT": [ + 1, + "var" + ], + "LANGUAGE SQL": 2, + "CONTAINS SQL": 3, + "NO SQL": 3, + "READS SQL DATA": 3, + "MODIFIES SQL DATA": 3, + "SQL SECURITY": 4, + "DEFINER": 5, + "INVOKER": 5 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "INPLACE", + "value": "INPLACE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "ROUTINE_OPTIONS": { + "COMMENT": [ + 1, + "var" + ], + "LANGUAGE SQL": 2, + "CONTAINS SQL": 3, + "NO SQL": 3, + "READS SQL DATA": 3, + "MODIFIES SQL DATA": 3, + "SQL SECURITY": 4, + "DEFINER": 5, + "INVOKER": 5 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "LOCK", + "equals": true, + "expr": "NONE", + "value": "NONE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file