mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-17 02:53:51 +08:00
Fix assertion failure in constify_now
The code added to support VIEWs did not account for the fact that varno could be from a different nesting level and therefore not be present in the current range table.
This commit is contained in:
parent
85d0e16a98
commit
ffd9dfb7eb
@ -83,6 +83,8 @@ is_valid_now_expr(OpExpr *op, List *rtable)
|
|||||||
if (!IsA(tle->expr, Var))
|
if (!IsA(tle->expr, Var))
|
||||||
return false;
|
return false;
|
||||||
var = castNode(Var, tle->expr);
|
var = castNode(Var, tle->expr);
|
||||||
|
if (var->varlevelsup != 0)
|
||||||
|
return false;
|
||||||
rte = list_nth(rte->subquery->rtable, var->varno - 1);
|
rte = list_nth(rte->subquery->rtable, var->varno - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,3 +491,14 @@ QUERY PLAN
|
|||||||
|
|
||||||
DROP TABLE now_view_test CASCADE;
|
DROP TABLE now_view_test CASCADE;
|
||||||
NOTICE: drop cascades to view now_view
|
NOTICE: drop cascades to view now_view
|
||||||
|
-- #4709
|
||||||
|
-- test queries with constraints involving columns from different nesting levels
|
||||||
|
SELECT * FROM
|
||||||
|
(SELECT * FROM metrics m1 LIMIT 1) m1
|
||||||
|
INNER JOIN (SELECT * FROM metrics m2 LIMIT 1) m2 ON true,
|
||||||
|
LATERAL (SELECT m2.time FROM devices LIMIT 1) as subq_1
|
||||||
|
WHERE subq_1.time > m1.time;
|
||||||
|
time | device_id | v0 | v1 | v2 | v3 | time | device_id | v0 | v1 | v2 | v3 | time
|
||||||
|
------+-----------+----+----+----+----+------+-----------+----+----+----+----+------
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
@ -491,3 +491,14 @@ QUERY PLAN
|
|||||||
|
|
||||||
DROP TABLE now_view_test CASCADE;
|
DROP TABLE now_view_test CASCADE;
|
||||||
NOTICE: drop cascades to view now_view
|
NOTICE: drop cascades to view now_view
|
||||||
|
-- #4709
|
||||||
|
-- test queries with constraints involving columns from different nesting levels
|
||||||
|
SELECT * FROM
|
||||||
|
(SELECT * FROM metrics m1 LIMIT 1) m1
|
||||||
|
INNER JOIN (SELECT * FROM metrics m2 LIMIT 1) m2 ON true,
|
||||||
|
LATERAL (SELECT m2.time FROM devices LIMIT 1) as subq_1
|
||||||
|
WHERE subq_1.time > m1.time;
|
||||||
|
time | device_id | v0 | v1 | v2 | v3 | time | device_id | v0 | v1 | v2 | v3 | time
|
||||||
|
------+-----------+----+----+----+----+------+-----------+----+----+----+----+------
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
@ -488,3 +488,14 @@ QUERY PLAN
|
|||||||
|
|
||||||
DROP TABLE now_view_test CASCADE;
|
DROP TABLE now_view_test CASCADE;
|
||||||
NOTICE: drop cascades to view now_view
|
NOTICE: drop cascades to view now_view
|
||||||
|
-- #4709
|
||||||
|
-- test queries with constraints involving columns from different nesting levels
|
||||||
|
SELECT * FROM
|
||||||
|
(SELECT * FROM metrics m1 LIMIT 1) m1
|
||||||
|
INNER JOIN (SELECT * FROM metrics m2 LIMIT 1) m2 ON true,
|
||||||
|
LATERAL (SELECT m2.time FROM devices LIMIT 1) as subq_1
|
||||||
|
WHERE subq_1.time > m1.time;
|
||||||
|
time | device_id | v0 | v1 | v2 | v3 | time | device_id | v0 | v1 | v2 | v3 | time
|
||||||
|
------+-----------+----+----+----+----+------+-----------+----+----+----+----+------
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
@ -170,4 +170,11 @@ CREATE VIEW now_view AS SELECT time, device, avg(value) from now_view_test GROUP
|
|||||||
:PREFIX SELECT * FROM now_view WHERE time > now() - '168h'::interval;
|
:PREFIX SELECT * FROM now_view WHERE time > now() - '168h'::interval;
|
||||||
DROP TABLE now_view_test CASCADE;
|
DROP TABLE now_view_test CASCADE;
|
||||||
|
|
||||||
|
-- #4709
|
||||||
|
-- test queries with constraints involving columns from different nesting levels
|
||||||
|
SELECT * FROM
|
||||||
|
(SELECT * FROM metrics m1 LIMIT 1) m1
|
||||||
|
INNER JOIN (SELECT * FROM metrics m2 LIMIT 1) m2 ON true,
|
||||||
|
LATERAL (SELECT m2.time FROM devices LIMIT 1) as subq_1
|
||||||
|
WHERE subq_1.time > m1.time;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user