From bf6443e55eab4fcb1c0ac6fa3011681f12ecfae3 Mon Sep 17 00:00:00 2001 From: meiyi Date: Tue, 23 Jul 2024 19:32:55 +0800 Subject: [PATCH] [fix](group commit) Fix jdbc setNull return too many filtered rows error --- .../src/main/java/org/apache/doris/qe/StmtExecutor.java | 4 ++++ .../insert_p0/insert_group_commit_with_prepare_stmt.groovy | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 5ccc5199262a53..9b757971684a75 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -47,6 +47,7 @@ import org.apache.doris.analysis.NullLiteral; import org.apache.doris.analysis.OutFileClause; import org.apache.doris.analysis.PartitionNames; +import org.apache.doris.analysis.PlaceHolderExpr; import org.apache.doris.analysis.PrepareStmt; import org.apache.doris.analysis.PrepareStmt.PreparedType; import org.apache.doris.analysis.Queriable; @@ -350,6 +351,9 @@ public static InternalService.PDataRow getRowStringValue(List cols, } InternalService.PDataRow.Builder row = InternalService.PDataRow.newBuilder(); for (Expr expr : cols) { + if (expr instanceof PlaceHolderExpr) { + expr = ((PlaceHolderExpr) expr).getLiteral(); + } if (!expr.isLiteralOrCastExpr()) { throw new UserException( "do not support non-literal expr in transactional insert operation: " + expr.toSql()); diff --git a/regression-test/suites/insert_p0/insert_group_commit_with_prepare_stmt.groovy b/regression-test/suites/insert_p0/insert_group_commit_with_prepare_stmt.groovy index e686b752db573b..6e05513a8d648b 100644 --- a/regression-test/suites/insert_p0/insert_group_commit_with_prepare_stmt.groovy +++ b/regression-test/suites/insert_p0/insert_group_commit_with_prepare_stmt.groovy @@ -148,8 +148,6 @@ suite("insert_group_commit_with_prepare_stmt") { ); """ - sql """ set enable_insert_strict = false; """ - // 1. insert into def insert_stmt = prepareStatement """ INSERT INTO ${table} VALUES(?, ?, ?) """ assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, insert_stmt.class) @@ -212,8 +210,6 @@ suite("insert_group_commit_with_prepare_stmt") { ); """ - sql """ set enable_insert_strict = false; """ - // 1. insert into def insert_stmt = prepareStatement """ INSERT INTO ${table} VALUES(?, ?, ?) """ assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, insert_stmt.class)