Skip to content

Commit a4408d2

Browse files
committed
Add document about versioned merge engine #459
1 parent ae76e69 commit a4408d2

File tree

1 file changed

+63
-1
lines changed
  • website/docs/table-design/table-types/pk-table/merge-engines

1 file changed

+63
-1
lines changed

website/docs/table-design/table-types/pk-table/merge-engines/versioned.md

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,66 @@ sidebar_position: 3
55

66
# Versioned Merge Engine
77

8-
TODO: Fill me #459
8+
By specifying `'table.merge-engine' = 'versioned'`, users can update data based on the configured version column. Updates will be carried out when the latest value of the specified field is greater than the stored value. If it is less than or empty, no update will be made.
9+
10+
:::note
11+
When using `versioned` merge engine, there are the following limits:
12+
- `UPDATE` and `DELETE` statements are not supported
13+
- Partial update is not supported
14+
:::
15+
16+
## Versioned Merge Column
17+
18+
:::note
19+
The versioned merge column supports the following data types.
20+
- INT
21+
- BIGINT
22+
- TIMESTAMP
23+
- TIMESTAMP(p)
24+
- TIMESTAMP_LTZ
25+
- TIMESTAMP_LTZ(p)
26+
:::
27+
28+
example:
29+
```sql title="versioned"
30+
31+
create table merge_engine_with_version (
32+
a int not null primary key not enforced,
33+
b string,
34+
ts bigint
35+
) with(
36+
'table.merge-engine' = 'versioned',
37+
'table.merge-engine.versioned.ver-column' = 'ts'
38+
);
39+
insert into merge_engine_with_version ( a,b,ts ) VALUES (1, 'v1', 1000);
40+
41+
-- insert data with ts < 1000, no update will be made
42+
insert into merge_engine_with_version ( a,b,ts ) VALUES (1, 'v2', 999);
43+
select * from merge_engine_with_version;
44+
-- Output
45+
-- +---+-----+------+
46+
-- | a | b | ts |
47+
-- +---+-----+------+
48+
-- | 1 | v1 | 1000 |
49+
-- +---+-----+------+
50+
51+
52+
-- insert data with ts > 1000, update will be made
53+
insert into merge_engine_with_version ( a,b,ts ) VALUES (1, 'v2', 2000);
54+
select * from merge_engine_with_version;
55+
-- Output
56+
-- +---+-----+------+
57+
-- | a | b | ts |
58+
-- +---+-----+------+
59+
-- | 1 | v2 | 2000 |
60+
61+
-- insert data with ts = null, no update will be made
62+
nsert into merge_engine_with_version ( a,b,ts ) VALUES (1, 'v2', null);
63+
select * from merge_engine_with_version;
64+
-- Output
65+
-- +---+-----+------+
66+
-- | a | b | ts |
67+
-- +---+-----+------+
68+
-- | 1 | v2 | 2000 |
69+
70+
```

0 commit comments

Comments
 (0)