From d5f097365449e836396a9e28d5f51a602ba92974 Mon Sep 17 00:00:00 2001 From: Jiri Pechanec Date: Fri, 6 Sep 2024 09:42:28 +0200 Subject: [PATCH] DBZ-8210 Add VECTOR functions to grammar --- .../io/debezium/ddl/parser/mysql/generated/MySqlLexer.g4 | 4 ++++ .../io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 | 6 +++--- .../src/test/resources/mysql/examples/dml_select.sql | 6 +++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlLexer.g4 b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlLexer.g4 index 6fd9a1753..41f805138 100644 --- a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlLexer.g4 +++ b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlLexer.g4 @@ -973,6 +973,7 @@ DES_DECRYPT: 'DES_DECRYPT'; DES_ENCRYPT: 'DES_ENCRYPT'; DIMENSION: 'DIMENSION'; DISJOINT: 'DISJOINT'; +DISTANCE: 'DISTANCE'; ELT: 'ELT'; ENCODE: 'ENCODE'; ENCRYPT: 'ENCRYPT'; @@ -1177,6 +1178,7 @@ ST_UNION: 'ST_UNION'; ST_WITHIN: 'ST_WITHIN'; ST_X: 'ST_X'; ST_Y: 'ST_Y'; +STRING_TO_VECTOR: 'STRING_TO_VECTOR'; SUBDATE: 'SUBDATE'; SUBSTRING_INDEX: 'SUBSTRING_INDEX'; SUBTIME: 'SUBTIME'; @@ -1204,6 +1206,8 @@ UPPER: 'UPPER'; UUID: 'UUID'; UUID_SHORT: 'UUID_SHORT'; VALIDATE_PASSWORD_STRENGTH: 'VALIDATE_PASSWORD_STRENGTH'; +VECTOR_DIM: 'VECTOR_DIM'; +VECTOR_TO_STRING: 'VECTOR_TO_STRING'; VERSION: 'VERSION'; VERSIONING: 'VERSIONING'; WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS: 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'; diff --git a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 index 08c391d24..ebc646692 100644 --- a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 +++ b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 @@ -2878,7 +2878,7 @@ functionNameBase | CREATE_DH_PARAMETERS | CREATE_DIGEST | CROSSES | CUME_DIST | DATABASE | DATE | DATEDIFF | DATE_FORMAT | DAY | DAYNAME | DAYOFMONTH | DAYOFWEEK | DAYOFYEAR | DECODE | DEGREES | DENSE_RANK | DES_DECRYPT - | DES_ENCRYPT | DIMENSION | DISJOINT | ELT | ENCODE + | DES_ENCRYPT | DIMENSION | DISJOINT | DISTANCE | ELT | ENCODE | ENCRYPT | ENDPOINT | ENVELOPE | EQUALS | EXP | EXPORT_SET | EXTERIORRING | EXTRACTVALUE | FIELD | FIND_IN_SET | FIRST_VALUE | FLOOR | FORMAT | FOUND_ROWS | FROM_BASE64 | FROM_DAYS @@ -2934,13 +2934,13 @@ functionNameBase | ST_POLYFROMTEXT | ST_POLYFROMWKB | ST_POLYGONFROMTEXT | ST_POLYGONFROMWKB | ST_SRID | ST_STARTPOINT | ST_SYMDIFFERENCE | ST_TOUCHES | ST_UNION | ST_WITHIN - | ST_X | ST_Y | SUBDATE | SUBSTRING_INDEX | SUBTIME + | ST_X | ST_Y | STRING_TO_VECTOR | SUBDATE | SUBSTRING_INDEX | SUBTIME | SYSTEM_USER | TAN | TIME | TIMEDIFF | TIMESTAMP | TIMESTAMPADD | TIMESTAMPDIFF | TIME_FORMAT | TIME_TO_SEC | TOUCHES | TO_BASE64 | TO_DAYS | TO_SECONDS | UCASE | UNCOMPRESS | UNCOMPRESSED_LENGTH | UNHEX | UNIX_TIMESTAMP | UPDATEXML | UPPER | UUID | UUID_SHORT - | VALIDATE_PASSWORD_STRENGTH | VERSION | VISIBLE + | VALIDATE_PASSWORD_STRENGTH | VERSION | VECTOR_DIM | VECTOR_TO_STRING | VISIBLE | WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS | WEEK | WEEKDAY | WEEKOFYEAR | WEIGHT_STRING | WITHIN | YEAR | YEARWEEK | Y_FUNCTION | X_FUNCTION diff --git a/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql b/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql index 563cf2eb3..c531888f3 100644 --- a/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql +++ b/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql @@ -176,6 +176,10 @@ SELECT JSON_STORAGE_FREE(jcol), JSON_STORAGE_FREE(jcol) FROM jtable; SELECT o_id, JSON_ARRAYAGG(attribute) AS attributes FROM t3 GROUP BY o_id; SELECT o_id, JSON_OBJECTAGG(attribute, value) FROM t3 GROUP BY o_id; #end +#begin +-- VECTOR +SELECT DISTANCE(b1, b2, "COSINE"), STRING_TO_VECTOR('[]'), VECTOR_DIM(b1), VECTOR_TO_STRING(b1) FROM a; +#end SELECT trigger.num FROM test `trigger`; -- Valid when SELECT is in stored procedure SELECT * FROM test LIMIT LIMIT1,LIMIT2; @@ -322,4 +326,4 @@ FROM your_table, (SELECT @sum := 0) AS init ORDER BY - some_order_column; \ No newline at end of file + some_order_column;