Fix segmentation fault with MATCH inside CTEs and UNION (issue #276) #294
+131
−52
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
SetOperationNodeProblem
The parser extension's
duckpgq_find_select_statement()was not handlingSetOperationNode(UNION/UNION ALL/EXCEPT/INTERSECT), causing segfaults when GRAPH_TABLE was used in these contexts:Error:
INTERNAL Error: Attempted to dereference unique_ptr that is NULL!Solution
Added a recursive
duckpgq_traverse_query_node()function that properly handles allQueryNodetypes:SelectNode: traversefrom_tableand CTEsCTENode: recurse into child nodeSetOperationNode: recurse into all children (for UNION/EXCEPT/INTERSECT)Test plan
test/sql/cte_union_match.testwith 5 test casesFixes #276
🤖 Generated with Claude Code