This is an automated email from the ASF dual-hosted git repository.
kxiao 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 8b33b0c4a4c [Fix](row store) cache invalidate key should not include
sequence column (#26771)
8b33b0c4a4c is described below
commit 8b33b0c4a4ce7de6fd4bc59d15059a029022e377
Author: lihangyu <[email protected]>
AuthorDate: Sat Nov 11 15:30:32 2023 +0800
[Fix](row store) cache invalidate key should not include sequence column
(#26771)
---
be/src/common/config.cpp | 2 +-
be/src/common/config.h | 2 +-
be/src/olap/rowset/segment_v2/segment_writer.cpp | 2 +-
.../plugins/plugin_curl_requester.groovy | 5 +
.../suites/point_query_p0/test_point_query.groovy | 442 +++++++++++----------
5 files changed, 236 insertions(+), 217 deletions(-)
diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp
index 759bbf30ddd..d51bac6b188 100644
--- a/be/src/common/config.cpp
+++ b/be/src/common/config.cpp
@@ -319,7 +319,7 @@ DEFINE_Int32(index_page_cache_percentage, "10");
// whether to disable page cache feature in storage
DEFINE_Bool(disable_storage_page_cache, "false");
// whether to disable row cache feature in storage
-DEFINE_Bool(disable_storage_row_cache, "true");
+DEFINE_mBool(disable_storage_row_cache, "true");
// whether to disable pk page cache feature in storage
DEFINE_Bool(disable_pk_storage_page_cache, "false");
diff --git a/be/src/common/config.h b/be/src/common/config.h
index 994ee6376d5..e43370cc34c 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -369,7 +369,7 @@ DECLARE_Int32(index_page_cache_percentage);
// TODO delete it. Divided into Data page, Index page, pk index page
DECLARE_Bool(disable_storage_page_cache);
// whether to disable row cache feature in storage
-DECLARE_Bool(disable_storage_row_cache);
+DECLARE_mBool(disable_storage_row_cache);
// whether to disable pk page cache feature in storage
DECLARE_Bool(disable_pk_storage_page_cache);
diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp
b/be/src/olap/rowset/segment_v2/segment_writer.cpp
index c84b206af75..476130d5412 100644
--- a/be/src/olap/rowset/segment_v2/segment_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp
@@ -696,6 +696,7 @@ Status SegmentWriter::append_block(const vectorized::Block*
block, size_t row_po
std::string last_key;
for (size_t pos = 0; pos < num_rows; pos++) {
std::string key = _full_encode_keys(key_columns, pos);
+ _maybe_invalid_row_cache(key);
if (_tablet_schema->has_sequence_col()) {
_encode_seq_column(seq_column, pos, &key);
}
@@ -703,7 +704,6 @@ Status SegmentWriter::append_block(const vectorized::Block*
block, size_t row_po
<< "found duplicate key or key is not sorted! current
key: " << key
<< ", last key" << last_key;
RETURN_IF_ERROR(_primary_key_index_builder->add_item(key));
- _maybe_invalid_row_cache(key);
last_key = std::move(key);
}
} else {
diff --git a/regression-test/plugins/plugin_curl_requester.groovy
b/regression-test/plugins/plugin_curl_requester.groovy
index d9b9913f4f9..aed5e518efe 100644
--- a/regression-test/plugins/plugin_curl_requester.groovy
+++ b/regression-test/plugins/plugin_curl_requester.groovy
@@ -71,3 +71,8 @@ Suite.metaClass.be_run_full_compaction_by_table_id = { String
ip, String port, S
}
logger.info("Added 'be_run_full_compaction' function to Suite")
+Suite.metaClass.update_be_config = { String ip, String port, String key,
String value /*param */ ->
+ return curl("POST", String.format("http://%s:%s/api/update_config?%s=%s",
ip, port, key, value))
+}
+
+logger.info("Added 'update_be_config' function to Suite")
diff --git a/regression-test/suites/point_query_p0/test_point_query.groovy
b/regression-test/suites/point_query_p0/test_point_query.groovy
index d17391e4308..8c01c8cc208 100644
--- a/regression-test/suites/point_query_p0/test_point_query.groovy
+++ b/regression-test/suites/point_query_p0/test_point_query.groovy
@@ -18,232 +18,246 @@
import java.math.BigDecimal;
suite("test_point_query") {
+ def set_be_config = { key, value ->
+ String backend_id;
+ def backendId_to_backendIP = [:]
+ def backendId_to_backendHttpPort = [:]
+ getBackendIpHttpPort(backendId_to_backendIP,
backendId_to_backendHttpPort);
- // nereids do not support point query now
- sql """set enable_nereids_planner=false"""
-
- def user = context.config.jdbcUser
- def password = context.config.jdbcPassword
- def realDb = "regression_test_serving_p0"
- def tableName = realDb + ".tbl_point_query"
- sql "CREATE DATABASE IF NOT EXISTS ${realDb}"
-
- // Parse url
- String jdbcUrl = context.config.jdbcUrl
- String urlWithoutSchema = jdbcUrl.substring(jdbcUrl.indexOf("://") + 3)
- def sql_ip = urlWithoutSchema.substring(0, urlWithoutSchema.indexOf(":"))
- def sql_port
- if (urlWithoutSchema.indexOf("/") >= 0) {
- // e.g: jdbc:mysql://locahost:8080/?a=b
- sql_port = urlWithoutSchema.substring(urlWithoutSchema.indexOf(":") +
1, urlWithoutSchema.indexOf("/"))
- } else {
- // e.g: jdbc:mysql://locahost:8080
- sql_port = urlWithoutSchema.substring(urlWithoutSchema.indexOf(":") +
1)
+ backend_id = backendId_to_backendIP.keySet()[0]
+ def (code, out, err) =
update_be_config(backendId_to_backendIP.get(backend_id),
backendId_to_backendHttpPort.get(backend_id), key, value)
+ logger.info("update config: code=" + code + ", out=" + out + ", err="
+ err)
}
- // set server side prepared statement url
- def prepare_url = "jdbc:mysql://" + sql_ip + ":" + sql_port + "/" + realDb
+ "?&useServerPrepStmts=true"
+ try {
+ set_be_config.call("disable_storage_row_cache", "false")
+ // nereids do not support point query now
+ sql """set enable_nereids_planner=false"""
- def generateString = {len ->
- def str = ""
- for (int i = 0; i < len; i++) {
- str += "a"
- }
- return str
- }
+ def user = context.config.jdbcUser
+ def password = context.config.jdbcPassword
+ def realDb = "regression_test_serving_p0"
+ def tableName = realDb + ".tbl_point_query"
+ sql "CREATE DATABASE IF NOT EXISTS ${realDb}"
- def nprep_sql = { sql_str ->
- def url_without_prep = "jdbc:mysql://" + sql_ip + ":" + sql_port + "/"
+ realDb
- connect(user = user, password = password, url = url_without_prep) {
- sql sql_str
+ // Parse url
+ String jdbcUrl = context.config.jdbcUrl
+ String urlWithoutSchema = jdbcUrl.substring(jdbcUrl.indexOf("://") + 3)
+ def sql_ip = urlWithoutSchema.substring(0,
urlWithoutSchema.indexOf(":"))
+ def sql_port
+ if (urlWithoutSchema.indexOf("/") >= 0) {
+ // e.g: jdbc:mysql://locahost:8080/?a=b
+ sql_port =
urlWithoutSchema.substring(urlWithoutSchema.indexOf(":") + 1,
urlWithoutSchema.indexOf("/"))
+ } else {
+ // e.g: jdbc:mysql://locahost:8080
+ sql_port =
urlWithoutSchema.substring(urlWithoutSchema.indexOf(":") + 1)
}
- }
+ // set server side prepared statement url
+ def prepare_url = "jdbc:mysql://" + sql_ip + ":" + sql_port + "/" +
realDb + "?&useServerPrepStmts=true"
- sql """DROP TABLE IF EXISTS ${tableName}"""
- test {
- // abnormal case
- sql """
- CREATE TABLE IF NOT EXISTS ${tableName} (
- `k1` int NULL COMMENT ""
- ) ENGINE=OLAP
- UNIQUE KEY(`k1`)
- DISTRIBUTED BY HASH(`k1`) BUCKETS 1
- PROPERTIES (
- "replication_allocation" = "tag.location.default: 1",
- "store_row_column" = "true",
- "light_schema_change" = "false"
- )
- """
- exception "errCode = 2, detailMessage = Row store column rely on light
schema change, enable light schema change first"
- }
+ def generateString = {len ->
+ def str = ""
+ for (int i = 0; i < len; i++) {
+ str += "a"
+ }
+ return str
+ }
- def create_table_sql = { property ->
- return String.format("""
- CREATE TABLE IF NOT EXISTS ${tableName} (
- `k1` int(11) NULL COMMENT "",
- `k2` decimalv3(27, 9) NULL COMMENT "",
- `k3` varchar(300) NULL COMMENT "",
- `k4` varchar(30) NULL COMMENT "",
- `k5` date NULL COMMENT "",
- `k6` datetime NULL COMMENT "",
- `k7` float NULL COMMENT "",
- `k8` datev2 NULL COMMENT "",
- `k9` boolean NULL COMMENT "",
- `k10` decimalv3(20, 3) NULL COMMENT "",
- `k11` array<decimalv3(27, 9)> NULL COMMENT "",
- `k12` array<text> NULL COMMENT ""
- ) ENGINE=OLAP
- UNIQUE KEY(`k1`, `k2`, `k3`)
- DISTRIBUTED BY HASH(`k1`, k2, k3) BUCKETS 1
- PROPERTIES (
- "replication_allocation" = "tag.location.default: 1",
- "store_row_column" = "true",
- "enable_unique_key_merge_on_write" = "true",
- "light_schema_change" = "true",
- %s
- "storage_format" = "V2")
- """, property)
- }
+ def nprep_sql = { sql_str ->
+ def url_without_prep = "jdbc:mysql://" + sql_ip + ":" + sql_port +
"/" + realDb
+ connect(user = user, password = password, url = url_without_prep) {
+ sql sql_str
+ }
+ }
- for (int i = 0; i < 3; i++) {
- tableName = realDb + ".tbl_point_query" + i
sql """DROP TABLE IF EXISTS ${tableName}"""
- if (i == 0) {
- def sql0 = create_table_sql("")
- sql """ ${sql0} """
- } else if (i == 1) {
- def sql1 = create_table_sql("\"function_column.sequence_type\" =
'int',")
- sql """ ${sql1} """
- } else {
- def sql2 = create_table_sql("\"function_column.sequence_col\" =
'k6',")
- sql """ ${sql2} """
+ test {
+ // abnormal case
+ sql """
+ CREATE TABLE IF NOT EXISTS ${tableName} (
+ `k1` int NULL COMMENT ""
+ ) ENGINE=OLAP
+ UNIQUE KEY(`k1`)
+ DISTRIBUTED BY HASH(`k1`) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "store_row_column" = "true",
+ "light_schema_change" = "false"
+ )
+ """
+ exception "errCode = 2, detailMessage = Row store column rely on
light schema change, enable light schema change first"
}
- sql """ INSERT INTO ${tableName} VALUES(1231, 119291.11, "ddd",
"laooq", null, "2020-01-01 12:36:38", null, "1022-01-01 11:30:38", null,
1.111112, [119181.1111, 819019.1191, null], null) """
- sql """ INSERT INTO ${tableName} VALUES(1232, 12222.99121135, "xxx",
"laooq", "2023-01-02", "2020-01-01 12:36:38", 522.762, "2022-01-01 11:30:38",
1, 212.111, null, null) """
- sql """ INSERT INTO ${tableName} VALUES(1233, 1.392932911, "yyy",
"laooq", "2024-01-02", "2020-01-01 12:36:38", 52.862, "3022-01-01 11:30:38", 0,
5973903488739435.668, [119181.1111, null, 819019.1191], ["dijiiixxx"]) """
- sql """ INSERT INTO ${tableName} VALUES(1234, 12919291.129191137,
"xxddd", "laooq", "2025-01-02", "2020-01-01 12:36:38", 552.872, "4022-01-01
11:30:38", 1, 5973903488739435.668, [1888109181.192111, 192129019.1191], ["1",
"2", "3"]) """
- sql """ INSERT INTO ${tableName} VALUES(1235, 991129292901.11138,
"dd", null, "2120-01-02", "2020-01-01 12:36:38", 652.692, "5022-01-01
11:30:38", 0, 90696620686827832.374, [119181.1111], ["${generateString(251)}"])
"""
- sql """ INSERT INTO ${tableName} VALUES(1236, 100320.11139, "laa
ddd", "laooq", "2220-01-02", "2020-01-01 12:36:38", 2.7692, "6022-01-01
11:30:38", 1, 23698.299, [], ["${generateString(251)}"]) """
- sql """ INSERT INTO ${tableName} VALUES(1237, 120939.11130, "a
ddd", "laooq", "2030-01-02", "2020-01-01 12:36:38", 22.822, "7022-01-01
11:30:38", 0, 90696620686827832.374, [1.1, 2.2, 3.3, 4.4, 5.5], []) """
- sql """ INSERT INTO ${tableName} VALUES(251, 120939.11130,
"${generateString(251)}", "laooq", "2030-01-02", "2020-01-01 12:36:38", 251,
"7022-01-01 11:30:38", 1, 90696620686827832.374, [11111], []) """
- sql """ INSERT INTO ${tableName} VALUES(252, 120939.11130,
"${generateString(252)}", "laooq", "2030-01-02", "2020-01-01 12:36:38", 252,
"7022-01-01 11:30:38", 0, 90696620686827832.374, [0], null) """
- sql """ INSERT INTO ${tableName} VALUES(298, 120939.11130,
"${generateString(298)}", "laooq", "2030-01-02", "2020-01-01 12:36:38", 298,
"7022-01-01 11:30:38", 1, 90696620686827832.374, [], []) """
-
- def result1 = connect(user=user, password=password, url=prepare_url) {
- def stmt = prepareStatement "select /*+
SET_VAR(enable_nereids_planner=false) */ * from ${tableName} where k1 = ? and
k2 = ? and k3 = ?"
- assertEquals(stmt.class,
com.mysql.cj.jdbc.ServerPreparedStatement);
- stmt.setInt(1, 1231)
- stmt.setBigDecimal(2, new BigDecimal("119291.11"))
- stmt.setString(3, "ddd")
- qe_point_select stmt
- stmt.setInt(1, 1231)
- stmt.setBigDecimal(2, new BigDecimal("119291.11"))
- stmt.setString(3, "ddd")
- qe_point_select stmt
- stmt.setInt(1, 1237)
- stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
- stmt.setString(3, "a ddd")
- qe_point_select stmt
-
- stmt.setInt(1, 1232)
- stmt.setBigDecimal(2, new BigDecimal("12222.99121135"))
- stmt.setString(3, 'xxx')
- qe_point_select stmt
-
- stmt.setInt(1, 251)
- stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
- stmt.setString(3, generateString(251))
- qe_point_select stmt
-
- stmt.setInt(1, 252)
- stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
- stmt.setString(3, generateString(252))
- qe_point_select stmt
-
- stmt.setInt(1, 298)
- stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
- stmt.setString(3, generateString(298))
- qe_point_select stmt
- stmt.close()
-
- stmt = prepareStatement "select /*+
SET_VAR(enable_nereids_planner=false) */ * from ${tableName} where k1 = 1235
and k2 = ? and k3 = ?"
- assertEquals(stmt.class,
com.mysql.cj.jdbc.ServerPreparedStatement);
- stmt.setBigDecimal(1, new BigDecimal("991129292901.11138"))
- stmt.setString(2, "dd")
- qe_point_select stmt
-
- def stmt_fn = prepareStatement "select /*+
SET_VAR(enable_nereids_planner=false) */ hex(k3), hex(k4) from ${tableName}
where k1 = ? and k2 =? and k3 = ?"
- assertEquals(stmt_fn.class,
com.mysql.cj.jdbc.ServerPreparedStatement);
- stmt_fn.setInt(1, 1231)
- stmt_fn.setBigDecimal(2, new BigDecimal("119291.11"))
- stmt_fn.setString(3, "ddd")
- qe_point_select stmt_fn
- qe_point_select stmt_fn
- qe_point_select stmt_fn
-
- nprep_sql """
- ALTER table ${tableName} ADD COLUMN new_column0 INT default "0";
- """
- sleep(1);
- nprep_sql """ INSERT INTO ${tableName} VALUES(1235, 120939.11130,
"a ddd", "laooq", "2030-01-02", "2020-01-01 12:36:38", 22.822, "7022-01-01
11:30:38", 1, 1.1111299, [119291.19291], ["111", "222", "333"], 1) """
- stmt.setBigDecimal(1, new BigDecimal("120939.11130"))
- stmt.setString(2, "a ddd")
- qe_point_select stmt
- qe_point_select stmt
- // invalidate cache
- nprep_sql """ INSERT INTO ${tableName} VALUES(1235, 120939.11130,
"a ddd", "xxxxxx", "2030-01-02", "2020-01-01 12:36:38", 22.822, "7022-01-01
11:30:38", 0, 1929111.1111,[119291.19291], ["111", "222", "333"], 2) """
- qe_point_select stmt
- qe_point_select stmt
- qe_point_select stmt
- nprep_sql """
- ALTER table ${tableName} ADD COLUMN new_column1 INT default "0";
- """
- qe_point_select stmt
- qe_point_select stmt
- nprep_sql """
- ALTER table ${tableName} DROP COLUMN new_column1;
- """
- qe_point_select stmt
- qe_point_select stmt
- sql """
- ALTER table ${tableName} ADD COLUMN new_column1 INT default "0";
- """
- qe_point_select stmt
+ def create_table_sql = { property ->
+ return String.format("""
+ CREATE TABLE IF NOT EXISTS ${tableName} (
+ `k1` int(11) NULL COMMENT "",
+ `k2` decimalv3(27, 9) NULL COMMENT "",
+ `k3` varchar(300) NULL COMMENT "",
+ `k4` varchar(30) NULL COMMENT "",
+ `k5` date NULL COMMENT "",
+ `k6` datetime NULL COMMENT "",
+ `k7` float NULL COMMENT "",
+ `k8` datev2 NULL COMMENT "",
+ `k9` boolean NULL COMMENT "",
+ `k10` decimalv3(20, 3) NULL COMMENT "",
+ `k11` array<decimalv3(27, 9)> NULL COMMENT "",
+ `k12` array<text> NULL COMMENT ""
+ ) ENGINE=OLAP
+ UNIQUE KEY(`k1`, `k2`, `k3`)
+ DISTRIBUTED BY HASH(`k1`, k2, k3) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "store_row_column" = "true",
+ "enable_unique_key_merge_on_write" = "true",
+ "light_schema_change" = "true",
+ %s
+ "storage_format" = "V2")
+ """, property)
}
- // disable useServerPrepStmts
- def result2 = connect(user=user, password=password,
url=context.config.jdbcUrl) {
- qt_sql """select /*+ SET_VAR(enable_nereids_planner=false) */ *
from ${tableName} where k1 = 1231 and k2 = 119291.11 and k3 = 'ddd'"""
- qt_sql """select /*+ SET_VAR(enable_nereids_planner=false) */ *
from ${tableName} where k1 = 1237 and k2 = 120939.11130 and k3 = 'a ddd'"""
- qt_sql """select /*+ SET_VAR(enable_nereids_planner=false) */
hex(k3), hex(k4), k7 + 10.1 from ${tableName} where k1 = 1237 and k2 =
120939.11130 and k3 = 'a ddd'"""
- // prepared text
- sql """ prepare stmt1 from select * from ${tableName} where k1 =
% and k2 = % and k3 = % """
- qt_sql """execute stmt1 using (1231, 119291.11, 'ddd')"""
- qt_sql """execute stmt1 using (1237, 120939.11130, 'a ddd')"""
-
- sql """prepare stmt2 from select * from ${tableName} where k1 = %
and k2 = % and k3 = %"""
- qt_sql """execute stmt2 using (1231, 119291.11, 'ddd')"""
- qt_sql """execute stmt2 using (1237, 120939.11130, 'a ddd')"""
- tableName = "test_query"
+
+ for (int i = 0; i < 3; i++) {
+ tableName = realDb + ".tbl_point_query" + i
sql """DROP TABLE IF EXISTS ${tableName}"""
- sql """CREATE TABLE ${tableName} (
- `customer_key` bigint(20) NULL,
- `customer_btm_value_0` text NULL,
- `customer_btm_value_1` text NULL,
- `customer_btm_value_2` text NULL
- ) ENGINE=OLAP
- UNIQUE KEY(`customer_key`)
- COMMENT 'OLAP'
- DISTRIBUTED BY HASH(`customer_key`) BUCKETS 16
- PROPERTIES (
- "replication_allocation" = "tag.location.default: 1",
- "storage_format" = "V2",
- "light_schema_change" = "true",
- "store_row_column" = "true",
- "enable_unique_key_merge_on_write" = "true",
- "disable_auto_compaction" = "false"
- );"""
- sql """insert into ${tableName} values (0, "1", "2", "3")"""
- qt_sql "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test_query where customer_key = 0"
+ if (i == 0) {
+ def sql0 = create_table_sql("")
+ sql """ ${sql0} """
+ } else if (i == 1) {
+ def sql1 = create_table_sql("\"function_column.sequence_type\"
= 'int',")
+ sql """ ${sql1} """
+ } else {
+ def sql2 = create_table_sql("\"function_column.sequence_col\"
= 'k6',")
+ sql """ ${sql2} """
+ }
+ sql """ INSERT INTO ${tableName} VALUES(1231, 119291.11, "ddd",
"laooq", null, "2020-01-01 12:36:38", null, "1022-01-01 11:30:38", null,
1.111112, [119181.1111, 819019.1191, null], null) """
+ sql """ INSERT INTO ${tableName} VALUES(1232, 12222.99121135,
"xxx", "laooq", "2023-01-02", "2020-01-01 12:36:38", 522.762, "2022-01-01
11:30:38", 1, 212.111, null, null) """
+ sql """ INSERT INTO ${tableName} VALUES(1233, 1.392932911, "yyy",
"laooq", "2024-01-02", "2020-01-01 12:36:38", 52.862, "3022-01-01 11:30:38", 0,
5973903488739435.668, [119181.1111, null, 819019.1191], ["dijiiixxx"]) """
+ sql """ INSERT INTO ${tableName} VALUES(1234, 12919291.129191137,
"xxddd", "laooq", "2025-01-02", "2020-01-01 12:36:38", 552.872, "4022-01-01
11:30:38", 1, 5973903488739435.668, [1888109181.192111, 192129019.1191], ["1",
"2", "3"]) """
+ sql """ INSERT INTO ${tableName} VALUES(1235, 991129292901.11138,
"dd", null, "2120-01-02", "2020-01-01 12:36:38", 652.692, "5022-01-01
11:30:38", 0, 90696620686827832.374, [119181.1111], ["${generateString(251)}"])
"""
+ sql """ INSERT INTO ${tableName} VALUES(1236, 100320.11139, "laa
ddd", "laooq", "2220-01-02", "2020-01-01 12:36:38", 2.7692, "6022-01-01
11:30:38", 1, 23698.299, [], ["${generateString(251)}"]) """
+ sql """ INSERT INTO ${tableName} VALUES(1237, 120939.11130, "a
ddd", "laooq", "2030-01-02", "2020-01-01 12:36:38", 22.822, "7022-01-01
11:30:38", 0, 90696620686827832.374, [1.1, 2.2, 3.3, 4.4, 5.5], []) """
+ sql """ INSERT INTO ${tableName} VALUES(251, 120939.11130,
"${generateString(251)}", "laooq", "2030-01-02", "2020-01-01 12:36:38", 251,
"7022-01-01 11:30:38", 1, 90696620686827832.374, [11111], []) """
+ sql """ INSERT INTO ${tableName} VALUES(252, 120939.11130,
"${generateString(252)}", "laooq", "2030-01-02", "2020-01-01 12:36:38", 252,
"7022-01-01 11:30:38", 0, 90696620686827832.374, [0], null) """
+ sql """ INSERT INTO ${tableName} VALUES(298, 120939.11130,
"${generateString(298)}", "laooq", "2030-01-02", "2020-01-01 12:36:38", 298,
"7022-01-01 11:30:38", 1, 90696620686827832.374, [], []) """
+
+ def result1 = connect(user=user, password=password,
url=prepare_url) {
+ def stmt = prepareStatement "select /*+
SET_VAR(enable_nereids_planner=false) */ * from ${tableName} where k1 = ? and
k2 = ? and k3 = ?"
+ assertEquals(stmt.class,
com.mysql.cj.jdbc.ServerPreparedStatement);
+ stmt.setInt(1, 1231)
+ stmt.setBigDecimal(2, new BigDecimal("119291.11"))
+ stmt.setString(3, "ddd")
+ qe_point_select stmt
+ stmt.setInt(1, 1231)
+ stmt.setBigDecimal(2, new BigDecimal("119291.11"))
+ stmt.setString(3, "ddd")
+ qe_point_select stmt
+ stmt.setInt(1, 1237)
+ stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
+ stmt.setString(3, "a ddd")
+ qe_point_select stmt
+
+ stmt.setInt(1, 1232)
+ stmt.setBigDecimal(2, new BigDecimal("12222.99121135"))
+ stmt.setString(3, 'xxx')
+ qe_point_select stmt
+
+ stmt.setInt(1, 251)
+ stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
+ stmt.setString(3, generateString(251))
+ qe_point_select stmt
+
+ stmt.setInt(1, 252)
+ stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
+ stmt.setString(3, generateString(252))
+ qe_point_select stmt
+
+ stmt.setInt(1, 298)
+ stmt.setBigDecimal(2, new BigDecimal("120939.11130"))
+ stmt.setString(3, generateString(298))
+ qe_point_select stmt
+ stmt.close()
+
+ stmt = prepareStatement "select /*+
SET_VAR(enable_nereids_planner=false) */ * from ${tableName} where k1 = 1235
and k2 = ? and k3 = ?"
+ assertEquals(stmt.class,
com.mysql.cj.jdbc.ServerPreparedStatement);
+ stmt.setBigDecimal(1, new BigDecimal("991129292901.11138"))
+ stmt.setString(2, "dd")
+ qe_point_select stmt
+
+ def stmt_fn = prepareStatement "select /*+
SET_VAR(enable_nereids_planner=false) */ hex(k3), hex(k4) from ${tableName}
where k1 = ? and k2 =? and k3 = ?"
+ assertEquals(stmt_fn.class,
com.mysql.cj.jdbc.ServerPreparedStatement);
+ stmt_fn.setInt(1, 1231)
+ stmt_fn.setBigDecimal(2, new BigDecimal("119291.11"))
+ stmt_fn.setString(3, "ddd")
+ qe_point_select stmt_fn
+ qe_point_select stmt_fn
+ qe_point_select stmt_fn
+
+ nprep_sql """
+ ALTER table ${tableName} ADD COLUMN new_column0 INT default
"0";
+ """
+ sleep(1);
+ nprep_sql """ INSERT INTO ${tableName} VALUES(1235,
120939.11130, "a ddd", "laooq", "2030-01-02", "2020-01-01 12:36:38", 22.822,
"7022-01-01 11:30:38", 1, 1.1111299, [119291.19291], ["111", "222", "333"], 1)
"""
+ stmt.setBigDecimal(1, new BigDecimal("120939.11130"))
+ stmt.setString(2, "a ddd")
+ qe_point_select stmt
+ qe_point_select stmt
+ // invalidate cache
+ nprep_sql """ INSERT INTO ${tableName} VALUES(1235,
120939.11130, "a ddd", "xxxxxx", "2030-01-02", "2020-01-01 12:36:38",
22.822, "7022-01-01 11:30:38", 0, 1929111.1111,[119291.19291], ["111", "222",
"333"], 2) """
+ qe_point_select stmt
+ qe_point_select stmt
+ qe_point_select stmt
+ nprep_sql """
+ ALTER table ${tableName} ADD COLUMN new_column1 INT default
"0";
+ """
+ qe_point_select stmt
+ qe_point_select stmt
+ nprep_sql """
+ ALTER table ${tableName} DROP COLUMN new_column1;
+ """
+ qe_point_select stmt
+ qe_point_select stmt
+
+ sql """
+ ALTER table ${tableName} ADD COLUMN new_column1 INT default
"0";
+ """
+ qe_point_select stmt
+ }
+ // disable useServerPrepStmts
+ def result2 = connect(user=user, password=password,
url=context.config.jdbcUrl) {
+ qt_sql """select /*+ SET_VAR(enable_nereids_planner=false) */
* from ${tableName} where k1 = 1231 and k2 = 119291.11 and k3 = 'ddd'"""
+ qt_sql """select /*+ SET_VAR(enable_nereids_planner=false) */
* from ${tableName} where k1 = 1237 and k2 = 120939.11130 and k3 = 'a ddd'"""
+ qt_sql """select /*+ SET_VAR(enable_nereids_planner=false) */
hex(k3), hex(k4), k7 + 10.1 from ${tableName} where k1 = 1237 and k2 =
120939.11130 and k3 = 'a ddd'"""
+ // prepared text
+ sql """ prepare stmt1 from select * from ${tableName} where
k1 = % and k2 = % and k3 = % """
+ qt_sql """execute stmt1 using (1231, 119291.11, 'ddd')"""
+ qt_sql """execute stmt1 using (1237, 120939.11130, 'a
ddd')"""
+
+ sql """prepare stmt2 from select * from ${tableName} where k1
= % and k2 = % and k3 = %"""
+ qt_sql """execute stmt2 using (1231, 119291.11, 'ddd')"""
+ qt_sql """execute stmt2 using (1237, 120939.11130, 'a
ddd')"""
+ tableName = "test_query"
+ sql """DROP TABLE IF EXISTS ${tableName}"""
+ sql """CREATE TABLE ${tableName} (
+ `customer_key` bigint(20) NULL,
+ `customer_btm_value_0` text NULL,
+ `customer_btm_value_1` text NULL,
+ `customer_btm_value_2` text NULL
+ ) ENGINE=OLAP
+ UNIQUE KEY(`customer_key`)
+ COMMENT 'OLAP'
+ DISTRIBUTED BY HASH(`customer_key`) BUCKETS 16
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "storage_format" = "V2",
+ "light_schema_change" = "true",
+ "store_row_column" = "true",
+ "enable_unique_key_merge_on_write" = "true",
+ "disable_auto_compaction" = "false"
+ );"""
+ sql """insert into ${tableName} values (0, "1", "2", "3")"""
+ qt_sql "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test_query where customer_key = 0"
+ }
}
+ } finally {
+ set_be_config.call("disable_storage_row_cache", "true")
}
-}
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]