mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-08-18 12:08:22 +00:00
test: add json2 variant payload compat case (#8459)
* test: add json2 variant payload compat case Signed-off-by: discord9 <discord9@163.com> * test: refine json2 variant compat case Signed-off-by: discord9 <discord9@163.com> --------- Signed-off-by: discord9 <discord9@163.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
name = "legacy_json2_variant_payload"
|
||||
reason = "Verify current binaries can read JSON2 variant payloads written by old binaries after the JSON2 encoding change."
|
||||
introduced_by = "PR #8435"
|
||||
topologies = ["distributed"]
|
||||
from_range = ["=v1.1.0", "=v1.1.1", "=v1.1.2"]
|
||||
to_range = [">v1.1.1"]
|
||||
features = ["json", "json2", "table", "read"]
|
||||
owner = "query"
|
||||
@@ -0,0 +1,29 @@
|
||||
CREATE TABLE t_legacy_json2_variant_payload (
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
j JSON2
|
||||
) WITH (
|
||||
'append_mode' = 'true'
|
||||
);
|
||||
|
||||
INSERT INTO t_legacy_json2_variant_payload (ts, j) VALUES
|
||||
('2026-07-08 00:00:00+0000', '{"a": {"b": 1}, "c": "s1", "d": [{"e": {"f": 0.1}}]}'),
|
||||
('2026-07-08 00:01:00+0000', '{"a": {"b": -2}, "c": [1], "d": [{"e": {"f": 0.2}}]}'),
|
||||
('2026-07-08 00:02:00+0000', '{"a": {"b": "s3"}, "c": "s3", "d": [{"e": {"g": -0.3}}]}'),
|
||||
('2026-07-08 00:03:00+0000', '{"a": {"b": null}, "c": null}'),
|
||||
('2026-07-08 00:04:00+0000', '{"c": "s5", "d": {"e": true}}'),
|
||||
('2026-07-08 00:05:00+0000', '{"a": {"b": 6}}');
|
||||
|
||||
ADMIN FLUSH_TABLE('t_legacy_json2_variant_payload');
|
||||
|
||||
CREATE TABLE t_legacy_json2_variant_payload_object_d (
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
j JSON2
|
||||
) WITH (
|
||||
'append_mode' = 'true'
|
||||
);
|
||||
|
||||
INSERT INTO t_legacy_json2_variant_payload_object_d (ts, j) VALUES
|
||||
('2026-07-08 01:00:00+0000', '{"d": {"e": true}}'),
|
||||
('2026-07-08 01:01:00+0000', '{"d": {"e": false}}');
|
||||
|
||||
ADMIN FLUSH_TABLE('t_legacy_json2_variant_payload_object_d');
|
||||
@@ -0,0 +1,60 @@
|
||||
SELECT ts, j.a.b AS a_b, j.c AS c
|
||||
FROM t_legacy_json2_variant_payload
|
||||
ORDER BY ts;
|
||||
|
||||
+---------------------+-----+-----+
|
||||
| ts | a_b | c |
|
||||
+---------------------+-----+-----+
|
||||
| 2026-07-08T00:00:00 | 1 | s1 |
|
||||
| 2026-07-08T00:01:00 | -2 | [1] |
|
||||
| 2026-07-08T00:02:00 | s3 | s3 |
|
||||
| 2026-07-08T00:03:00 | | |
|
||||
| 2026-07-08T00:04:00 | | s5 |
|
||||
| 2026-07-08T00:05:00 | 6 | |
|
||||
+---------------------+-----+-----+
|
||||
|
||||
SELECT
|
||||
ts,
|
||||
j.d.e AS d_e
|
||||
FROM t_legacy_json2_variant_payload_object_d
|
||||
ORDER BY ts;
|
||||
|
||||
+---------------------+-------+
|
||||
| ts | d_e |
|
||||
+---------------------+-------+
|
||||
| 2026-07-08T01:00:00 | true |
|
||||
| 2026-07-08T01:01:00 | false |
|
||||
+---------------------+-------+
|
||||
|
||||
-- JSON2 projection rendering is a user-visible compatibility contract.
|
||||
SELECT ts, j.d AS d
|
||||
FROM t_legacy_json2_variant_payload
|
||||
ORDER BY ts;
|
||||
|
||||
+---------------------+--------------------+
|
||||
| ts | d |
|
||||
+---------------------+--------------------+
|
||||
| 2026-07-08T00:00:00 | [{"e":{"f":0.1}}] |
|
||||
| 2026-07-08T00:01:00 | [{"e":{"f":0.2}}] |
|
||||
| 2026-07-08T00:02:00 | [{"e":{"g":-0.3}}] |
|
||||
| 2026-07-08T00:03:00 | |
|
||||
| 2026-07-08T00:04:00 | {"e":true} |
|
||||
| 2026-07-08T00:05:00 | |
|
||||
+---------------------+--------------------+
|
||||
|
||||
SHOW CREATE TABLE t_legacy_json2_variant_payload;
|
||||
|
||||
+--------------------------------+---------------------------------------------------------------+
|
||||
| Table | Create Table |
|
||||
+--------------------------------+---------------------------------------------------------------+
|
||||
| t_legacy_json2_variant_payload | CREATE TABLE IF NOT EXISTS "t_legacy_json2_variant_payload" ( |
|
||||
| | "ts" TIMESTAMP(3) NOT NULL, |
|
||||
| | "j" JSON2 NULL, |
|
||||
| | TIME INDEX ("ts") |
|
||||
| | ) |
|
||||
| | |
|
||||
| | ENGINE=mito |
|
||||
| | WITH( |
|
||||
| | append_mode = 'true' |
|
||||
| | ) |
|
||||
+--------------------------------+---------------------------------------------------------------+
|
||||
@@ -0,0 +1,16 @@
|
||||
SELECT ts, j.a.b AS a_b, j.c AS c
|
||||
FROM t_legacy_json2_variant_payload
|
||||
ORDER BY ts;
|
||||
|
||||
SELECT
|
||||
ts,
|
||||
j.d.e AS d_e
|
||||
FROM t_legacy_json2_variant_payload_object_d
|
||||
ORDER BY ts;
|
||||
|
||||
-- JSON2 projection rendering is a user-visible compatibility contract.
|
||||
SELECT ts, j.d AS d
|
||||
FROM t_legacy_json2_variant_payload
|
||||
ORDER BY ts;
|
||||
|
||||
SHOW CREATE TABLE t_legacy_json2_variant_payload;
|
||||
Reference in New Issue
Block a user