feat: add append mode to table options (#3624)

* feat: add append mode to table options

* test: add append mode test

* test: rename test tables

* chore: Add delete test for append mode
This commit is contained in:
Yingwen
2024-04-08 13:42:58 +00:00
committed by GitHub
parent 34b1427a82
commit 3e1a125732
4 changed files with 114 additions and 1 deletions
+1 -1
View File
@@ -239,7 +239,7 @@ fn check_op_type(append_mode: bool, request: &WriteRequest) -> Result<()> {
request.op_type == OpType::Put,
InvalidRequestSnafu {
region_id: request.region_id,
reason: "Only put is allowed under append mode",
reason: "DELETE is not allowed under append mode",
}
);
}
+2
View File
@@ -33,6 +33,7 @@ pub fn is_mito_engine_option_key(key: &str) -> bool {
"memtable.partition_tree.index_max_keys_per_shard",
"memtable.partition_tree.data_freeze_threshold",
"memtable.partition_tree.fork_dictionary_bytes",
"append_mode",
]
.contains(&key)
}
@@ -70,6 +71,7 @@ mod tests {
assert!(is_mito_engine_option_key(
"memtable.partition_tree.fork_dictionary_bytes"
));
assert!(is_mito_engine_option_key("append_mode"));
assert!(!is_mito_engine_option_key("foo"));
}
}
@@ -0,0 +1,73 @@
create table if not exists append_mode_on(
host string,
ts timestamp,
cpu double,
TIME INDEX (ts),
PRIMARY KEY(host)
)
engine=mito
with('append_mode'='true');
Affected Rows: 0
INSERT INTO append_mode_on VALUES ('host1',0, 0), ('host2', 1, 1,);
Affected Rows: 2
INSERT INTO append_mode_on VALUES ('host1',0, 0), ('host2', 1, 1,);
Affected Rows: 2
SELECT * from append_mode_on ORDER BY host, ts;
+-------+-------------------------+-----+
| host | ts | cpu |
+-------+-------------------------+-----+
| host1 | 1970-01-01T00:00:00 | 0.0 |
| host1 | 1970-01-01T00:00:00 | 0.0 |
| host2 | 1970-01-01T00:00:00.001 | 1.0 |
| host2 | 1970-01-01T00:00:00.001 | 1.0 |
+-------+-------------------------+-----+
-- SQLNESS REPLACE (region\s\d+\(\d+\,\s\d+\)) region
DELETE FROM append_mode_on WHERE host = 'host1';
Error: 1004(InvalidArguments), Invalid request to region, reason: DELETE is not allowed under append mode
create table if not exists append_mode_off(
host string,
ts timestamp,
cpu double,
TIME INDEX (ts),
PRIMARY KEY(host)
)
engine=mito
with('append_mode'='false');
Affected Rows: 0
INSERT INTO append_mode_off VALUES ('host1',0, 0), ('host2', 1, 1,);
Affected Rows: 2
INSERT INTO append_mode_off VALUES ('host1',0, 10), ('host2', 1, 11,);
Affected Rows: 2
SELECT * from append_mode_off ORDER BY host, ts;
+-------+-------------------------+------+
| host | ts | cpu |
+-------+-------------------------+------+
| host1 | 1970-01-01T00:00:00 | 10.0 |
| host2 | 1970-01-01T00:00:00.001 | 11.0 |
+-------+-------------------------+------+
DROP TABLE append_mode_on;
Affected Rows: 0
DROP TABLE append_mode_off;
Affected Rows: 0
@@ -0,0 +1,38 @@
create table if not exists append_mode_on(
host string,
ts timestamp,
cpu double,
TIME INDEX (ts),
PRIMARY KEY(host)
)
engine=mito
with('append_mode'='true');
INSERT INTO append_mode_on VALUES ('host1',0, 0), ('host2', 1, 1,);
INSERT INTO append_mode_on VALUES ('host1',0, 0), ('host2', 1, 1,);
SELECT * from append_mode_on ORDER BY host, ts;
-- SQLNESS REPLACE (region\s\d+\(\d+\,\s\d+\)) region
DELETE FROM append_mode_on WHERE host = 'host1';
create table if not exists append_mode_off(
host string,
ts timestamp,
cpu double,
TIME INDEX (ts),
PRIMARY KEY(host)
)
engine=mito
with('append_mode'='false');
INSERT INTO append_mode_off VALUES ('host1',0, 0), ('host2', 1, 1,);
INSERT INTO append_mode_off VALUES ('host1',0, 10), ('host2', 1, 11,);
SELECT * from append_mode_off ORDER BY host, ts;
DROP TABLE append_mode_on;
DROP TABLE append_mode_off;