From 8f3b5c8d179b3a1f7fa4c5f60eb7378668035ddd Mon Sep 17 00:00:00 2001 From: Mathieu Gabelle Date: Thu, 31 Oct 2024 11:40:22 +0100 Subject: [PATCH] refactor(queries): change parser to use JSQLParser --- build.gradle | 3 +++ .../java/io/kestra/plugin/jdbc/AbstractJdbcQueries.java | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index ac6a3888..46440b82 100644 --- a/build.gradle +++ b/build.gradle @@ -70,6 +70,9 @@ subprojects { // Forced dependencies api("org.slf4j:slf4j-api:2.0.16") } + + //SQL parser + implementation 'com.github.jsqlparser:jsqlparser:5.0' } } diff --git a/plugin-jdbc/src/main/java/io/kestra/plugin/jdbc/AbstractJdbcQueries.java b/plugin-jdbc/src/main/java/io/kestra/plugin/jdbc/AbstractJdbcQueries.java index efebdccb..5354076d 100644 --- a/plugin-jdbc/src/main/java/io/kestra/plugin/jdbc/AbstractJdbcQueries.java +++ b/plugin-jdbc/src/main/java/io/kestra/plugin/jdbc/AbstractJdbcQueries.java @@ -7,6 +7,8 @@ import io.kestra.core.serializers.FileSerde; import lombok.*; import lombok.experimental.SuperBuilder; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.statement.Statements; import org.slf4j.Logger; import java.io.BufferedWriter; @@ -54,10 +56,10 @@ public AbstractJdbcQueries.MultiQueryOutput run(RunContext runContext) throws Ex savepoint = initializeSavepoint(conn); String sqlRendered = runContext.render(this.sql, this.additionalVars); - String[] queries = sqlRendered.split(";[^']"); - - for(String query : queries) { + Statements statements = CCJSqlParserUtil.parseStatements(sqlRendered); + for(net.sf.jsqlparser.statement.Statement statement : statements) { //Create statement, execute + String query = statement.toString(); stmt = createPreparedStatementAndPopulateParameters(runContext, conn, query); stmt.setFetchSize(this.getFetchSize()); logger.debug("Starting query: {}", query);