diff options
Diffstat (limited to 'src/test/regress/expected/memoize.out')
-rw-r--r-- | src/test/regress/expected/memoize.out | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/test/regress/expected/memoize.out b/src/test/regress/expected/memoize.out index 0ed5d8474af..4ca0bd1f1e1 100644 --- a/src/test/regress/expected/memoize.out +++ b/src/test/regress/expected/memoize.out @@ -196,6 +196,45 @@ SELECT * FROM strtest s1 INNER JOIN strtest s2 ON s1.t >= s2.t;', false); (8 rows) DROP TABLE strtest; +-- Exercise Memoize code that flushes the cache when a parameter changes which +-- is not part of the cache key. +-- Ensure we get a Memoize plan +EXPLAIN (COSTS OFF) +SELECT unique1 FROM tenk1 t0 +WHERE unique1 < 3 + AND EXISTS ( + SELECT 1 FROM tenk1 t1 + INNER JOIN tenk1 t2 ON t1.unique1 = t2.hundred + WHERE t0.ten = t1.twenty AND t0.two <> t2.four OFFSET 0); + QUERY PLAN +---------------------------------------------------------------- + Index Scan using tenk1_unique1 on tenk1 t0 + Index Cond: (unique1 < 3) + Filter: (SubPlan 1) + SubPlan 1 + -> Nested Loop + -> Index Scan using tenk1_hundred on tenk1 t2 + Filter: (t0.two <> four) + -> Memoize + Cache Key: t2.hundred + Cache Mode: logical + -> Index Scan using tenk1_unique1 on tenk1 t1 + Index Cond: (unique1 = t2.hundred) + Filter: (t0.ten = twenty) +(13 rows) + +-- Ensure the above query returns the correct result +SELECT unique1 FROM tenk1 t0 +WHERE unique1 < 3 + AND EXISTS ( + SELECT 1 FROM tenk1 t1 + INNER JOIN tenk1 t2 ON t1.unique1 = t2.hundred + WHERE t0.ten = t1.twenty AND t0.two <> t2.four OFFSET 0); + unique1 +--------- + 2 +(1 row) + RESET enable_seqscan; RESET enable_mergejoin; RESET work_mem; |