mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-14 17:43:34 +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))
|
||||
return false;
|
||||
var = castNode(Var, tle->expr);
|
||||
if (var->varlevelsup != 0)
|
||||
return false;
|
||||
rte = list_nth(rte->subquery->rtable, var->varno - 1);
|
||||
}
|
||||
|
||||
|
@ -491,3 +491,14 @@ QUERY PLAN
|
||||
|
||||
DROP TABLE now_view_test CASCADE;
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
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