This is an automated email from the ASF dual-hosted git repository. eldenmoon pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push: new 720a4c9f309 [Fix](Branch-2.1) fix fallback to original planer when enable_server_side_prepared_statement = false (#42156) 720a4c9f309 is described below commit 720a4c9f3094c5b54a94964e8878f70f34a53115 Author: lihangyu <15605149...@163.com> AuthorDate: Mon Oct 21 17:46:24 2024 +0800 [Fix](Branch-2.1) fix fallback to original planer when enable_server_side_prepared_statement = false (#42156) --- .../src/main/java/org/apache/doris/analysis/PrepareStmt.java | 12 ++++++------ regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/PrepareStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/PrepareStmt.java index 1c7b5459979..d0637417a8d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PrepareStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PrepareStmt.java @@ -187,12 +187,6 @@ public class PrepareStmt extends StatementBase { // will be reanalyzed selectStmt.reset(); } - // use session var to decide whether to use full prepared or let user client handle to do fail over - if (preparedType != PreparedType.FULL_PREPARED - && !ConnectContext.get().getSessionVariable().enableServeSidePreparedStatement) { - throw new UserException("Failed to prepare statement" - + "try to set enable_server_side_prepared_statement = true"); - } } else if (inner instanceof NativeInsertStmt) { LabelName label = ((NativeInsertStmt) inner).getLoadLabel(); if (label == null || Strings.isNullOrEmpty(label.getLabelName())) { @@ -202,6 +196,12 @@ public class PrepareStmt extends StatementBase { throw new UserException("Only support prepare InsertStmt without label now"); } } + // use session var to decide whether to use full prepared or let user client handle to do fail over + if (preparedType != PreparedType.FULL_PREPARED + && !ConnectContext.get().getSessionVariable().enableServeSidePreparedStatement) { + throw new UserException("Failed to prepare statement" + + " try to set enable_server_side_prepared_statement = true"); + } preparedType = PreparedType.STATEMENT; LOG.debug("using STATEMENT prepared"); } diff --git a/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy b/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy index 7e3732fd69a..5c8c60479a6 100644 --- a/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy +++ b/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy @@ -246,5 +246,9 @@ suite("test_prepared_stmt", "nonConcurrent") { result = stmt_read.execute() logger.info("connection_id: ${result}") // qe_select16 stmt_read + + sql """set enable_server_side_prepared_statement = false""" + def stmt_insert = prepareStatement "insert into mytable1 values(?, ?, ?, ?)" + assertEquals(stmt_insert.class, com.mysql.cj.jdbc.ClientPreparedStatement); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org