diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c index b14446dc953..9ec70f16e31 100644 --- a/src/backend/executor/nodeHashjoin.c +++ b/src/backend/executor/nodeHashjoin.c @@ -2341,6 +2341,18 @@ CheckTargetNode(PlanState *node, AttrNumber attno, AttrNumber *lattno) if (!IsA(te->expr, Var)) return false; + if (IsA(node, DynamicSeqScanState)) + { + *lattno = te->resno; + return true; + } + + /* + * seqscan is a special case, it's targetlist is a projection of the + * relation's attributes. so we need to find the attribute number of the + * column in the relation, because PassByBloomFilter runs before + * projection in seqscan. + */ var = castNode(Var, te->expr); /* system column is not allowed */ diff --git a/src/test/regress/expected/gp_runtime_filter.out b/src/test/regress/expected/gp_runtime_filter.out index 32287b63d01..cb47862576c 100644 --- a/src/test/regress/expected/gp_runtime_filter.out +++ b/src/test/regress/expected/gp_runtime_filter.out @@ -548,7 +548,7 @@ INSERT INTO t2 SELECT generate_series(51, 51), generate_series(51, 51); ANALYZE; SET optimizer TO on; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) -SELECT * FROM t1, t2 WHERE t1.c2 = t2.c2; +SELECT t1.c2 FROM t1, t2 WHERE t1.c2 = t2.c2; QUERY PLAN ------------------------------------------------------------------------------------------- Gather Motion 3:1 (slice1; segments: 3) (actual rows=96 loops=1) @@ -567,7 +567,7 @@ SELECT * FROM t1, t2 WHERE t1.c2 = t2.c2; SET gp_enable_runtime_filter_pushdown TO on; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) -SELECT * FROM t1, t2 WHERE t1.c2 = t2.c2; +SELECT t1.c2 FROM t1, t2 WHERE t1.c2 = t2.c2; QUERY PLAN ------------------------------------------------------------------------------------------- Gather Motion 3:1 (slice1; segments: 3) (actual rows=96 loops=1) diff --git a/src/test/regress/sql/gp_runtime_filter.sql b/src/test/regress/sql/gp_runtime_filter.sql index 6a0c6e0cafb..d221c04958e 100644 --- a/src/test/regress/sql/gp_runtime_filter.sql +++ b/src/test/regress/sql/gp_runtime_filter.sql @@ -242,12 +242,12 @@ ANALYZE; SET optimizer TO on; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) -SELECT * FROM t1, t2 WHERE t1.c2 = t2.c2; +SELECT t1.c2 FROM t1, t2 WHERE t1.c2 = t2.c2; SET gp_enable_runtime_filter_pushdown TO on; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) -SELECT * FROM t1, t2 WHERE t1.c2 = t2.c2; +SELECT t1.c2 FROM t1, t2 WHERE t1.c2 = t2.c2; RESET gp_enable_runtime_filter_pushdown;