This is an automated email from the ASF dual-hosted git repository.

eldenmoon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 2928af2224e [Fix](PreparedStatement) fix incorrect query result with 
prepared statement (#46994)
2928af2224e is described below

commit 2928af2224eab657d9072153fca48477086cddb3
Author: lihangyu <lihan...@selectdb.com>
AuthorDate: Wed Jan 15 12:19:02 2025 +0800

    [Fix](PreparedStatement) fix incorrect query result with prepared statement 
(#46994)
    
    This pull request includes several changes to improve the handling of
    placeholders and prepared statements, as well as some minor code
    adjustments and additions to test cases.
    
    ### Improvements to Placeholder Handling:
    * Added an `equals` method to the `Placeholder` class to allow
    comparison of `Placeholder` objects.Otherwise `between ? and ?` which is
    between predicate, will be rewriten to `= ?` which is equal predicate
    
    ### Enhancements to Prepared Statements:
    * Added multiple test cases to validate the functionality of prepared
    statements with various data types and structures, including arrays,
    maps, and structs.
    
    ### Minor Code Adjustments:
    * Incremented `_field_pos` in `open_dynamic_mode` method of
    `MysqlRowBuffer` class to ensure correct position tracking.
---
 be/src/util/mysql_row_buffer.cpp                   |  1 +
 .../nereids/trees/expressions/Placeholder.java     | 10 ++++
 .../data/point_query_p0/test_point_query.out       | 12 ++---
 .../data/point_query_p0/test_point_query_ck.out    | 13 +++---
 .../data/prepared_stmt_p0/prepared_stmt.out        | 31 ++++++++++++-
 .../suites/prepared_stmt_p0/prepared_stmt.groovy   | 54 ++++++++++++++++++++++
 6 files changed, 107 insertions(+), 14 deletions(-)

diff --git a/be/src/util/mysql_row_buffer.cpp b/be/src/util/mysql_row_buffer.cpp
index 4fd7de13753..f35ed64c035 100644
--- a/be/src/util/mysql_row_buffer.cpp
+++ b/be/src/util/mysql_row_buffer.cpp
@@ -115,6 +115,7 @@ void MysqlRowBuffer<is_binary_format>::open_dynamic_mode() {
         // write length when dynamic mode close
         _len_pos = (_pos - _buf);
         _pos = _pos + 8;
+        _field_pos++;
     }
     _dynamic_mode++;
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java
index 3ce8cdb017f..27769750ad0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Placeholder.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.expressions;
 
+import org.apache.doris.analysis.PlaceHolderExpr;
 import org.apache.doris.catalog.MysqlColType;
 import org.apache.doris.nereids.exceptions.UnboundException;
 import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
@@ -91,4 +92,13 @@ public class Placeholder extends Expression implements 
LeafExpression {
     public MysqlColType getMysqlColType() {
         return mysqlColType.get();
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (!(o instanceof PlaceHolderExpr)) {
+            return false;
+        }
+        Placeholder other = (Placeholder) o;
+        return placeholderId == other.placeholderId;
+    }
 }
diff --git a/regression-test/data/point_query_p0/test_point_query.out 
b/regression-test/data/point_query_p0/test_point_query.out
index 55c79757820..6707291aa38 100644
--- a/regression-test/data/point_query_p0/test_point_query.out
+++ b/regression-test/data/point_query_p0/test_point_query.out
@@ -1,9 +1,9 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
 1237   120939.111300000        a    ddd        laooq   2030-01-02      
2020-01-01T12:36:38     22.822  7022-01-01      false   90696620686827832.374   
[1.100000000, 2.200000000, 3.300000000, 4.400000000, 5.500000000]       []
@@ -15,7 +15,7 @@
 251    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
     laooq   2030-01-02      2020-01-01T12:36:38     251.0   7022-01-01      
true    90696620686827832.374   [11111.000000000]       []
 
 -- !point_select --
-252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   \N      [0.000000000]
+252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   [0.000000000]   \N
 
 -- !point_select --
 298    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      laooq   2030-01-02      2020-01-01T12:36:38     298.0   7022-01-01      
true    90696620686827832.374   []      []
@@ -75,10 +75,10 @@
 0      1       2       3
 
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
 1237   120939.111300000        a    ddd        laooq   2030-01-02      
2020-01-01T12:36:38     22.822  7022-01-01      false   90696620686827832.374   
[1.100000000, 2.200000000, 3.300000000, 4.400000000, 5.500000000]       []
@@ -90,7 +90,7 @@
 251    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
     laooq   2030-01-02      2020-01-01T12:36:38     251.0   7022-01-01      
true    90696620686827832.374   [11111.000000000]       []
 
 -- !point_select --
-252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   \N      [0.000000000]
+252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   [0.000000000]   \N
 
 -- !point_select --
 298    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      laooq   2030-01-02      2020-01-01T12:36:38     298.0   7022-01-01      
true    90696620686827832.374   []      []
diff --git a/regression-test/data/point_query_p0/test_point_query_ck.out 
b/regression-test/data/point_query_p0/test_point_query_ck.out
index 32b6420cf82..ab275f899c3 100644
--- a/regression-test/data/point_query_p0/test_point_query_ck.out
+++ b/regression-test/data/point_query_p0/test_point_query_ck.out
@@ -1,9 +1,9 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
 1237   120939.111300000        a    ddd        laooq   2030-01-02      
2020-01-01T12:36:38     22.822  7022-01-01      false   90696620686827832.374   
[1.100000000, 2.200000000, 3.300000000, 4.400000000, 5.500000000]       []
@@ -15,7 +15,7 @@
 251    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
     laooq   2030-01-02      2020-01-01T12:36:38     251.0   7022-01-01      
true    90696620686827832.374   [11111.000000000]       []
 
 -- !point_select --
-252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   \N      [0.000000000]
+252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   [0.000000000]   \N
 
 -- !point_select --
 298    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      laooq   2030-01-02      2020-01-01T12:36:38     298.0   7022-01-01      
true    90696620686827832.374   []      []
@@ -75,10 +75,10 @@
 0      1       2       3
 
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
-1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   \N      [119181.111100000, 
819019.119100000, null]
+1231   119291.110000000        ddd     laooq   \N      2020-01-01T12:36:38     
\N      1022-01-01      \N      1.111   [119181.111100000, 819019.119100000, 
null]      \N
 
 -- !point_select --
 1237   120939.111300000        a    ddd        laooq   2030-01-02      
2020-01-01T12:36:38     22.822  7022-01-01      false   90696620686827832.374   
[1.100000000, 2.200000000, 3.300000000, 4.400000000, 5.500000000]       []
@@ -90,7 +90,7 @@
 251    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
     laooq   2030-01-02      2020-01-01T12:36:38     251.0   7022-01-01      
true    90696620686827832.374   [11111.000000000]       []
 
 -- !point_select --
-252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   \N      [0.000000000]
+252    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    laooq   2030-01-02      2020-01-01T12:36:38     252.0   7022-01-01      
false   90696620686827832.374   [0.000000000]   \N
 
 -- !point_select --
 298    120939.111300000        
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      laooq   2030-01-02      2020-01-01T12:36:38     298.0   7022-01-01      
true    90696620686827832.374   []      []
@@ -148,3 +148,4 @@
 
 -- !sql --
 0      1       2       3
+
diff --git a/regression-test/data/prepared_stmt_p0/prepared_stmt.out 
b/regression-test/data/prepared_stmt_p0/prepared_stmt.out
index 72912c9a97c..052094cd7d6 100644
--- a/regression-test/data/prepared_stmt_p0/prepared_stmt.out
+++ b/regression-test/data/prepared_stmt_p0/prepared_stmt.out
@@ -105,6 +105,33 @@ a
 1236   100320.111390000        laa    ddd      Will we ignore LIMIT ?,?        
2021-01-01      2020-01-01T12:36:38     2.7692  6022-01-01      [null]
 1237   120939.111300000        a    ddd        Will we ignore LIMIT ?,?        
2021-01-01      2020-01-01T12:36:38     22.822  7022-01-01      ["2025-01-01 
11:30:38"]
 
--- !select16 --
-mytable1       CREATE TABLE `mytable1` (\n  `siteid` INT NULL DEFAULT "10",\n  
`citycode` SMALLINT NULL,\n  `username` VARCHAR(32) NULL DEFAULT "",\n  `pv` 
BIGINT SUM NULL DEFAULT "0"\n) ENGINE=OLAP\nAGGREGATE KEY(`siteid`, `citycode`, 
`username`)\nDISTRIBUTED BY HASH(`siteid`) BUCKETS 10\nPROPERTIES 
(\n"replication_allocation" = "tag.location.default: 
1",\n"min_load_replica_num" = "-1",\n"is_being_synced" = 
"false",\n"storage_medium" = "hdd",\n"storage_format" = 
"V2",\n"inverted_index_storage [...]
+-- !select17 --
+3
+
+-- !select18 --
+1      [1, 2, 3]       \N      ["1"]   \N      \N      [1.111]
+
+-- !select18_1 --
+1      [1, 2, 3]       \N
+
+-- !select18_2 --
+1      [1, null, 3]    \N      [null]  \N      \N      [null, null]
+
+-- !select19 --
+1      {"a":1} \N
+
+-- !select20 --
+1      {"col1":"a", "col2":1, "col3":"doris", "col4":"aaaaa", "col5":1.32}     
\N
+
+-- !select21 --
+1      [[1, 2], [3, 4]]        \N
+
+-- !select22 --
+1      {"a":{"b":2}}   \N
+
+-- !select23 --
+1      {"col1":"name", "col2":"doris", "col3":"values", "col4":[1, 2, 3]}      
\N
+
+-- !select24 --
+1      \N      [{"id":"1", "name":"doris"}, {"id":"2", "name":"apache"}, null] 
\N
 
diff --git a/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy 
b/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy
index d32fbd1532e..7b4bf401bf0 100644
--- a/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy
+++ b/regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy
@@ -89,6 +89,7 @@ suite("test_prepared_stmt", "nonConcurrent") {
         stmt_read2.close()
 
         sql "DROP TABLE IF EXISTS mytable1"
+        sql "DROP TABLE IF EXISTS mytable2"
         sql """
           CREATE TABLE mytable1
           (
@@ -247,5 +248,58 @@ suite("test_prepared_stmt", "nonConcurrent") {
         result = stmt_read.execute()
         logger.info("connection_id: ${result}")
         // qe_select16 stmt_read
+
+        // test prepared with between, test placeholder equal
+        sql """insert into mytable2 values(3,1,'user1',10);"""
+        stmt_read = prepareStatement "SELECT COUNT() from mytable2 WHERE 
siteid between ? and ?"
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        stmt_read.setInt(1, 0)
+        stmt_read.setInt(2, 3)
+        qe_select17 stmt_read
+
+
+        // test array1
+        stmt_read = prepareStatement """SELECT 1, [1, 2, 3], null, ["1"], 
null, null, [1.111]"""
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select18 stmt_read
+
+        // test array2
+        stmt_read = prepareStatement "SELECT 1, [1, 2, 3], null"
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select18_1 stmt_read
+
+        // test array3
+        stmt_read = prepareStatement """SELECT 1, [1, null, 3], null, [null], 
null, null, [null, null]"""
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select18_2 stmt_read
+
+        // test map
+        stmt_read = prepareStatement """SELECT 1, {"a" : 1}, null"""
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select19 stmt_read
+
+        // test struct
+        stmt_read = prepareStatement """SELECT 1, struct('a', 1, 'doris', 
'aaaaa', 1.32), null"""
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select20 stmt_read
+
+        // test nested array
+        stmt_read = prepareStatement("""SELECT 1, [[1, 2], [3, 4]], null""")
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select21 stmt_read
+
+        // test nested map
+        stmt_read = prepareStatement("""SELECT 1, {"a": {"b": 2}}, null""")
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select22 stmt_read
+
+        // test struct with array
+        stmt_read = prepareStatement("""SELECT 1, struct('name', 'doris', 
'values', [1, 2, 3]), null""")
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select23 stmt_read
+
+        stmt_read = prepareStatement("""SELECT 1, null, [{'id': 1, 'name' : 
'doris'}, {'id': 2, 'name': 'apache'}, null], null""")
+        assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, 
stmt_read.class)
+        qe_select24 stmt_read
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to