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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]