Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
eldenmoon committed Feb 17, 2025
1 parent 41f7ab6 commit 0560960
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ public enum ConnectType {
// set for http_stream
protected volatile TUniqueId loadId;
protected volatile long backendId;
protected int preparedStmtId = 0;
// range [Integer.MIN_VALUE, Integer.MAX_VALUE]
protected int preparedStmtId = Integer.MIN_VALUE;
protected volatile LoadTaskInfo streamLoadInfo;

protected volatile TUniqueId queryId = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@ private void executeByNereids(TUniqueId queryId) throws Exception {
}
long stmtId = Config.prepared_stmt_start_id > 0
? Config.prepared_stmt_start_id : context.getPreparedStmtId();
logicalPlan = new PrepareCommand(String.valueOf(stmtId % Integer.MAX_VALUE),
logicalPlan = new PrepareCommand(String.valueOf(stmtId),
logicalPlan, statementContext.getPlaceholders(), originStmt);
}
// when we in transaction mode, we only support insert into command and transaction command
Expand Down
12 changes: 9 additions & 3 deletions regression-test/data/prepared_stmt_p0/prepared_stmt.out
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,6 @@ a
-- !select24 --
1 \N [{"id":"1", "name":"doris"}, {"id":"2", "name":"apache"}, null] \N

-- !overflow_1 --
1

-- !overflow_2 --
2

Expand All @@ -162,3 +159,12 @@ a
-- !overflow_5 --
5

-- !overflow_6 --
6

-- !overflow_6 --
6

-- !overflow_6 --
6

31 changes: 25 additions & 6 deletions regression-test/suites/prepared_stmt_p0/prepared_stmt.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -305,28 +305,47 @@ suite("test_prepared_stmt", "nonConcurrent") {

// test stmtId overflow
def result2 = connect(user, password, url) {
def stmt_read1 = prepareStatement "select 1"
qe_overflow_1 stmt_read1
// def stmt_read1 = prepareStatement "select 1"
// assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, stmt_read1.class)
// qe_overflow_1 stmt_read1
// stmt_read1.close()
// int max
sql """admin set frontend config("prepared_stmt_start_id" = "2147483647");"""
def stmt_read2 = prepareStatement "select 2"
assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, stmt_read2.class)
qe_overflow_2 stmt_read2
qe_overflow_2 stmt_read2
stmt_read2.close()
// int max + 1
sql """admin set frontend config("prepared_stmt_start_id" = "2147483648");"""
def stmt_read3 = prepareStatement "select 3"
// overflow throw NumberFormatExceptio and fallback to ClientPreparedStatement
assertEquals(com.mysql.cj.jdbc.ClientPreparedStatement, stmt_read3.class)
qe_overflow_3 stmt_read3
qe_overflow_3 stmt_read3
// uint max + 1
sql """admin set frontend config("prepared_stmt_start_id" = "4294967296");"""
stmt_read3.close()
// int min
sql """admin set frontend config("prepared_stmt_start_id" = "2147483646");"""
def stmt_read4 = prepareStatement "select 4"
assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, stmt_read4.class)
qe_overflow_4 stmt_read4
qe_overflow_4 stmt_read4
stmt_read4.close()

// set back
sql """admin set frontend config("prepared_stmt_start_id" = "-1");"""
sql """admin set frontend config("prepared_stmt_start_id" = "123");"""
def stmt_read5 = prepareStatement "select 5"
assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, stmt_read5.class)
qe_overflow_5 stmt_read5
qe_overflow_5 stmt_read5
stmt_read5.close()

// set back
sql """admin set frontend config("prepared_stmt_start_id" = "-1");"""
def stmt_read6 = prepareStatement "select 6"
assertEquals(com.mysql.cj.jdbc.ServerPreparedStatement, stmt_read6.class)
qe_overflow_6 stmt_read6
qe_overflow_6 stmt_read6
qe_overflow_6 stmt_read6
stmt_read6.close()
}
}

0 comments on commit 0560960

Please sign in to comment.