fix: normalize table references in policy expressions #226
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
Fixes #224 - Perpetual diffs when policy expressions contain table references in same-schema subqueries.
Following the pattern established in PR #222 for function qualifiers, this extends policy expression normalization to also strip same-schema qualifiers from table references.
Problem:
USING (user_id IN (SELECT u.id FROM users u))FROM public.users upg_get_expr()returns:FROM users uSolution:
schema.identifierfollowed by whitespace, comma,), or end of stringChanges
ir/normalize.go: ExtendednormalizePolicyExpression()to normalize table referencestestdata/diff/create_policy/same_schema_table_reference/: New test caseTest plan
PGSCHEMA_TEST_FILTER="create_policy/same_schema_table_reference" go test ./internal/diff -run TestDiffFromFilesPGSCHEMA_TEST_FILTER="create_policy/same_schema_table_reference" go test ./cmd -run TestPlanAndApplyPGSCHEMA_TEST_FILTER="create_policy/" go test ./internal/diff -run TestDiffFromFiles🤖 Generated with Claude Code