While working on the invalid parameterized join path issue [1], I noticed that we can simplify the codes for checking parameterized partial paths in try_partial_hashjoin/mergejoin_path, with the help of macro PATH_REQ_OUTER.
- if (inner_path->param_info != NULL) - { - Relids inner_paramrels = inner_path->param_info->ppi_req_outer; - - if (!bms_is_empty(inner_paramrels)) - return; - } + if (!bms_is_empty(PATH_REQ_OUTER(inner_path))) + return; Also there is a comment there that is not correct. * If the inner path is parameterized, the parameterization must be fully * satisfied by the proposed outer path. This is true for nestloop but not for hashjoin/mergejoin. Besides, I wonder if it'd be better that we verify that the outer input path for a partial join path should not have any parameterization dependency. Attached is a patch for all these changes. [1] https://www.postgresql.org/message-id/flat/CAJKUy5g2uZRrUDZJ8p-%3DgiwcSHVUn0c9nmdxPSY0jF0Ov8VoEA%40mail.gmail.com Thanks Richard
v1-0001-Trivial-revise-for-the-check-of-parameterized-partial-paths.patch
Description: Binary data