aboutsummaryrefslogtreecommitdiff
path: root/src/test/regress/expected/memoize.out
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/regress/expected/memoize.out')
-rw-r--r--src/test/regress/expected/memoize.out39
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;