1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Fix a problem with using json1 window functions with an EXCLUDE clause.

FossilOrigin-Name: 4a1978814da41608a16f6953bd575c97d587a34bd80b7ac0e619d62bfdc903d2
This commit is contained in:
dan
2019-09-13 20:42:46 +00:00
parent e087a7c35b
commit 51a75aaa76
4 changed files with 99 additions and 20 deletions

View File

@ -80,25 +80,94 @@ foreach {tn win} {
}
#-------------------------------------------------------------------------
reset_db
do_execsql_test 3.0 {
CREATE TABLE testjson(id INTEGER PRIMARY KEY, j TEXT);
INSERT INTO testjson VALUES(1, '{"a":1}');
INSERT INTO testjson VALUES(2, '{"b":2}');
}
ifcapable json1 {
reset_db
do_execsql_test 3.0 {
CREATE TABLE testjson(id INTEGER PRIMARY KEY, j TEXT);
INSERT INTO testjson VALUES(1, '{"a":1}');
INSERT INTO testjson VALUES(2, '{"b":2}');
INSERT INTO testjson VALUES(3, '{"c":3}');
INSERT INTO testjson VALUES(4, '{"d":4}');
}
do_execsql_test 3.1 {
SELECT json_group_array(json(j)) FROM testjson;
} {
{[{"a":1},{"b":2}]}
{[{"a":1},{"b":2},{"c":3},{"d":4}]}
}
do_execsql_test 3.2 {
SELECT json_group_array(json(j)) OVER (ORDER BY id) FROM testjson;
} {
{[{"a":1}]}
{[{"a":1},{"b":2}]}
{[{"a":1},{"b":2},{"c":3}]}
{[{"a":1},{"b":2},{"c":3},{"d":4}]}
}
do_execsql_test 3.3 {
SELECT json_group_array(json(j)) OVER (
ORDER BY id RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE TIES
) FROM testjson;
} {
{[{"a":1}]}
{[{"a":1},{"b":2}]}
{[{"a":1},{"b":2},{"c":3}]}
{[{"a":1},{"b":2},{"c":3},{"d":4}]}
}
do_execsql_test 3.4 {
SELECT json_group_array(json(j)) OVER (
ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
) FROM testjson;
} {
{[{"a":1},{"b":2}]}
{[{"a":1},{"b":2},{"c":3}]}
{[{"b":2},{"c":3},{"d":4}]}
{[{"c":3},{"d":4}]}
}
do_execsql_test 3.5 {
SELECT json_group_array(json(j)) OVER (
ORDER BY id ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING
) FROM testjson;
} {
{[]}
{[{"a":1}]}
{[{"a":1},{"b":2}]}
{[{"b":2},{"c":3}]}
}
if 0 {
do_execsql_test 3.5 {
SELECT json_group_array(json(j)) OVER (
ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING
) FROM testjson;
} {
{[]}
{[{"a":1}]}
{[{"a":1},{"b":2}]}
{[{"b":2},{"c":3}]}
}
explain_i {
SELECT json_group_array(json(j)) FILTER (WHERE id!=2) OVER (
ORDER BY id ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING
) FROM testjson;
}
do_execsql_test 3.7 {
PRAGMA vdbe_trace = 1;
SELECT json_group_array(json(j)) FILTER (WHERE id!=2) OVER (
ORDER BY id ROWS BETWEEN 2 PRECEDING AND 1 PRECEDING
) FROM testjson;
} {
{[]}
{[{"a":1}]}
{[{"a":1}]}
{[{"c":3}]}
}
}
}