mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-30 07:26:56 +00:00
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:
@@ -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",
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user