Repository navigation
Commit f8135e7
LAV-3525: Persist row-access policy comments across CREATE and ALTER (#3866)
Parse and persist CREATE comments, including CREATE OR ALTER's clearing of
omitted comments, without changing the SHOW or DESC projections. Support
ALTER SET/UNSET COMMENT with IF EXISTS and Cloud's alternate literal forms.
Validate comment clauses at their AST expression boundary before mutation,
and match the recorded wire errors, including their query-context shape.
Verification:
- Enterprise Cloud captures: 102 new parameterized cases, captured serially.
- make check: passed.
- New comment compat file: 102 passed.
- Existing body-update, view-policy, drop-table and RBAC row-access tests:
122 passed, 238 deselected; no existing test/snapshot edits.
- make test-vendored-sqlparser: passed.
Co-authored-by: Sabir Akhadov <sabir.akhadov@localstack.cloud>
## Deviations
Cloud returns an internal-error incident for CREATE COMMENT = NULL, while
ALTER SET COMMENT = NULL clears the comment. Implemented these recorded
behaviors and normalized incident IDs in the new snapshots using the
existing recipe in tests/queries/access_control/test_grant_plural_rejected.py:27.
The CREATE atomicity snapshots exposed an existing duplicate-object error
that discarded explicit name qualifiers. Pass the requested qualified name
to the lifecycle UDF for that error; qualified and unqualified cases are
both captured, without changing the stored policy name or metadata columns.
## Test matrix
Resource-index scope: CREATE/CREATE OR ALTER COMMENT and ALTER SET/UNSET
COMMENT; RENAME, SET BODY and TAG operations are unchanged. Existing RENAME
and SET BODY cases were included in the row-access regression selection.
alter_row_access_policy_comment_existence[SET COMMENT = 'after'--False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 'after'--False]
alter_row_access_policy_comment_existence[SET COMMENT = 'after'--True] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 'after'--True]
alter_row_access_policy_comment_existence[SET COMMENT = 'after'-IF EXISTS-False] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 'after'-IF EXISTS-False]
alter_row_access_policy_comment_existence[SET COMMENT = 'after'-IF EXISTS-True] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 'after'-IF EXISTS-True]
alter_row_access_policy_comment_existence[SET COMMENT = 123--False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 123--False]
alter_row_access_policy_comment_existence[SET COMMENT = 123--True] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 123--True]
alter_row_access_policy_comment_existence[SET COMMENT = 123-IF EXISTS-False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 123-IF EXISTS-False]
alter_row_access_policy_comment_existence[SET COMMENT = 123-IF EXISTS-True] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = 123-IF EXISTS-True]
alter_row_access_policy_comment_existence[SET COMMENT = E'bad'--False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = E'bad'--False]
alter_row_access_policy_comment_existence[SET COMMENT = E'bad'--True] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = E'bad'--True]
alter_row_access_policy_comment_existence[SET COMMENT = E'bad'-IF EXISTS-False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = E'bad'-IF EXISTS-False]
alter_row_access_policy_comment_existence[SET COMMENT = E'bad'-IF EXISTS-True] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = E'bad'-IF EXISTS-True]
alter_row_access_policy_comment_existence[SET COMMENT = NULL--False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = NULL--False]
alter_row_access_policy_comment_existence[SET COMMENT = NULL--True] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = NULL--True]
alter_row_access_policy_comment_existence[SET COMMENT = NULL-IF EXISTS-False] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = NULL-IF EXISTS-False]
alter_row_access_policy_comment_existence[SET COMMENT = NULL-IF EXISTS-True] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[SET COMMENT = NULL-IF EXISTS-True]
alter_row_access_policy_comment_existence[UNSET COMMENT--False] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[UNSET COMMENT--False]
alter_row_access_policy_comment_existence[UNSET COMMENT--True] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[UNSET COMMENT--True]
alter_row_access_policy_comment_existence[UNSET COMMENT-IF EXISTS-False] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[UNSET COMMENT-IF EXISTS-False]
alter_row_access_policy_comment_existence[UNSET COMMENT-IF EXISTS-True] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_alter_row_access_policy_comment_existence[UNSET COMMENT-IF EXISTS-True]
create_row_access_policy_omitted_comment × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_create_row_access_policy_omitted_comment
row_access_policy_comment_clause_scope["COMMENT"-"COMMENT" = 1] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_clause_scope["COMMENT"-"COMMENT" = 1]
row_access_policy_comment_clause_scope[comment-comment = 1] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_clause_scope[comment-comment = 1]
row_access_policy_comment_clause_scope[id-$$COMMENT = E'bad'$$ = $$COMMENT = E'bad'$$] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_clause_scope[id-$$COMMENT = E'bad'$$ = $$COMMENT = E'bad'$$]
row_access_policy_comment_clause_scope[id-'COMMENT = NULL' = 'COMMENT = NULL'] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_clause_scope[id-'COMMENT = NULL' = 'COMMENT = NULL']
row_access_policy_comment_clause_scope[id-id -- COMMENT = NULL\n = 1] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_clause_scope[id-id -- COMMENT = NULL\n = 1]
row_access_policy_comment_clause_scope[id-id /* COMMENT = 123 */ = 1] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_clause_scope[id-id /* COMMENT = 123 */ = 1]
row_access_policy_comment_create_flags × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
row_access_policy_comment_lifecycle × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
row_access_policy_comment_literals[backslash-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[backslash-create]
row_access_policy_comment_literals[backslash-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[backslash-create_or_alter]
row_access_policy_comment_literals[backslash-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[backslash-set]
row_access_policy_comment_literals[boolean-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[boolean-create]
row_access_policy_comment_literals[boolean-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[boolean-create_or_alter]
row_access_policy_comment_literals[boolean-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[boolean-set]
row_access_policy_comment_literals[dollar-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[dollar-create]
row_access_policy_comment_literals[dollar-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[dollar-create_or_alter]
row_access_policy_comment_literals[dollar-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[dollar-set]
row_access_policy_comment_literals[doubled_quote-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[doubled_quote-create]
row_access_policy_comment_literals[doubled_quote-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[doubled_quote-create_or_alter]
row_access_policy_comment_literals[doubled_quote-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[doubled_quote-set]
row_access_policy_comment_literals[empty-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[empty-create]
row_access_policy_comment_literals[empty-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[empty-create_or_alter]
row_access_policy_comment_literals[empty-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[empty-set]
row_access_policy_comment_literals[escaped_prefix-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[escaped_prefix-create]
row_access_policy_comment_literals[escaped_prefix-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[escaped_prefix-create_or_alter]
row_access_policy_comment_literals[escaped_prefix-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[escaped_prefix-set]
row_access_policy_comment_literals[expression-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[expression-create]
row_access_policy_comment_literals[expression-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[expression-create_or_alter]
row_access_policy_comment_literals[expression-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[expression-set]
row_access_policy_comment_literals[identifier-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[identifier-create]
row_access_policy_comment_literals[identifier-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[identifier-create_or_alter]
row_access_policy_comment_literals[identifier-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[identifier-set]
row_access_policy_comment_literals[multiline-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[multiline-create]
row_access_policy_comment_literals[multiline-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[multiline-create_or_alter]
row_access_policy_comment_literals[multiline-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[multiline-set]
row_access_policy_comment_literals[negative-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[negative-create]
row_access_policy_comment_literals[negative-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[negative-create_or_alter]
row_access_policy_comment_literals[negative-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[negative-set]
row_access_policy_comment_literals[null-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[null-create]
row_access_policy_comment_literals[null-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[null-create_or_alter]
row_access_policy_comment_literals[null-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[null-set]
row_access_policy_comment_literals[number-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[number-create]
row_access_policy_comment_literals[number-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[number-create_or_alter]
row_access_policy_comment_literals[number-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[number-set]
row_access_policy_comment_literals[ordinary-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[ordinary-create]
row_access_policy_comment_literals[ordinary-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[ordinary-create_or_alter]
row_access_policy_comment_literals[ordinary-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[ordinary-set]
row_access_policy_comment_literals[tagged_dollar-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[tagged_dollar-create]
row_access_policy_comment_literals[tagged_dollar-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[tagged_dollar-create_or_alter]
row_access_policy_comment_literals[tagged_dollar-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[tagged_dollar-set]
row_access_policy_comment_literals[tagged_plain-create] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[tagged_plain-create]
row_access_policy_comment_literals[tagged_plain-create_or_alter] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[tagged_plain-create_or_alter]
row_access_policy_comment_literals[tagged_plain-set] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[tagged_plain-set]
row_access_policy_comment_literals[unicode-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[unicode-create]
row_access_policy_comment_literals[unicode-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[unicode-create_or_alter]
row_access_policy_comment_literals[unicode-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[unicode-set]
row_access_policy_comment_literals[unquoted-create] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[unquoted-create]
row_access_policy_comment_literals[unquoted-create_or_alter] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[unquoted-create_or_alter]
row_access_policy_comment_literals[unquoted-set] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_literals[unquoted-set]
row_access_policy_create_comment_syntax[COMMENT 'after'-CREATE OR ALTER] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT 'after'-CREATE OR ALTER]
row_access_policy_create_comment_syntax[COMMENT 'after'-CREATE OR REPLACE] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT 'after'-CREATE OR REPLACE]
row_access_policy_create_comment_syntax[COMMENT = 'after' extra-CREATE OR ALTER] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT = 'after' extra-CREATE OR ALTER]
row_access_policy_create_comment_syntax[COMMENT = 'after' extra-CREATE OR REPLACE] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT = 'after' extra-CREATE OR REPLACE]
row_access_policy_create_comment_syntax[COMMENT = E-CREATE OR ALTER] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT = E-CREATE OR ALTER]
row_access_policy_create_comment_syntax[COMMENT = E-CREATE OR REPLACE] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT = E-CREATE OR REPLACE]
row_access_policy_create_comment_syntax[COMMENT =-CREATE OR ALTER] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT =-CREATE OR ALTER]
row_access_policy_create_comment_syntax[COMMENT =-CREATE OR REPLACE] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT =-CREATE OR REPLACE]
row_access_policy_create_comment_syntax[COMMENT-CREATE OR ALTER] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT-CREATE OR ALTER]
row_access_policy_create_comment_syntax[COMMENT-CREATE OR REPLACE] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_create_comment_syntax[COMMENT-CREATE OR REPLACE]
row_access_policy_invalid_comment_preserves_definition[-SET COMMENT 'after'] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[-SET COMMENT 'after']
row_access_policy_invalid_comment_preserves_definition[-SET COMMENT = 'after' extra] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[-SET COMMENT = 'after' extra]
row_access_policy_invalid_comment_preserves_definition[-SET COMMENT = NULL] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[-SET COMMENT = NULL]
row_access_policy_invalid_comment_preserves_definition[-SET COMMENT =] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[-SET COMMENT =]
row_access_policy_invalid_comment_preserves_definition[-SET COMMENT] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[-SET COMMENT]
row_access_policy_invalid_comment_preserves_definition[-UNSET COMMENT = 'after'] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[-UNSET COMMENT = 'after']
row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT 'after'] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT 'after']
row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT = 'after' extra] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT = 'after' extra]
row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT = NULL] × happy/boundary + read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT = NULL]
row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT =] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT =]
row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[IF EXISTS-SET COMMENT]
row_access_policy_invalid_comment_preserves_definition[IF EXISTS-UNSET COMMENT = 'after'] × error + unchanged read-back -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_invalid_comment_preserves_definition[IF EXISTS-UNSET COMMENT = 'after']
CREATE OR ALTER new × populated comment -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
CREATE OR ALTER existing × changed comment/body -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
CREATE OR ALTER existing × omission clears comment -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
CREATE OR ALTER existing × explicit empty comment -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
CREATE OR ALTER × table/view attachments and changed body enforcement -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
ALTER SET escaped/empty comment × attached table/view body preservation -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
ALTER UNSET/repeated UNSET × attached table/view body preservation -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
Invalid CREATE OR ALTER numeric/ALTER prefixed literal × attached definition preservation -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_lifecycle
CREATE IF NOT EXISTS × populated policy unchanged -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
CREATE duplicate qualified/unqualified name × unchanged definition and exact error -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
CREATE OR REPLACE × populated comment -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
CREATE OR REPLACE × omitted comment -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
CREATE OR REPLACE numeric comment × unchanged definition -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
CREATE OR ALTER signature rejection × unchanged comment/definition -> tests/queries/ddl/test_row_access_policy_comments.py::test_row_access_policy_comment_create_flags
Unchanged RENAME × present/missing/IF EXISTS -> tests/queries/access_control/test_rbac.py::test_crud_for_row_access_policies
Unchanged SET BODY × attached/error/boundary -> tests/queries/ddl/test_row_access_policy_body_updates.py
Co-authored-by: spiral <spiral@localhost>
Co-authored-by: Sabir Akhadov <sabir.akhadov@localstack.cloud>1 parent b419f33 commit f8135e7
3 files changed
Lines changed: 52 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1611 | 1611 | | |
1612 | 1612 | | |
1613 | 1613 | | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
1614 | 1621 | | |
1615 | 1622 | | |
1616 | 1623 | | |
| |||
1626 | 1633 | | |
1627 | 1634 | | |
1628 | 1635 | | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
1629 | 1640 | | |
1630 | 1641 | | |
1631 | 1642 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5776 | 5776 | | |
5777 | 5777 | | |
5778 | 5778 | | |
| 5779 | + | |
| 5780 | + | |
5779 | 5781 | | |
5780 | 5782 | | |
5781 | 5783 | | |
| |||
9504 | 9506 | | |
9505 | 9507 | | |
9506 | 9508 | | |
| 9509 | + | |
9507 | 9510 | | |
9508 | 9511 | | |
9509 | 9512 | | |
9510 | 9513 | | |
9511 | 9514 | | |
9512 | 9515 | | |
9513 | 9516 | | |
9514 | | - | |
| 9517 | + | |
| 9518 | + | |
| 9519 | + | |
| 9520 | + | |
| 9521 | + | |
| 9522 | + | |
| 9523 | + | |
| 9524 | + | |
| 9525 | + | |
9515 | 9526 | | |
9516 | 9527 | | |
9517 | 9528 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5136 | 5136 | | |
5137 | 5137 | | |
5138 | 5138 | | |
| 5139 | + | |
| 5140 | + | |
| 5141 | + | |
| 5142 | + | |
| 5143 | + | |
| 5144 | + | |
5139 | 5145 | | |
5140 | 5146 | | |
5141 | 5147 | | |
| |||
5144 | 5150 | | |
5145 | 5151 | | |
5146 | 5152 | | |
| 5153 | + | |
5147 | 5154 | | |
5148 | 5155 | | |
5149 | 5156 | | |
| |||
5156 | 5163 | | |
5157 | 5164 | | |
5158 | 5165 | | |
| 5166 | + | |
| 5167 | + | |
| 5168 | + | |
| 5169 | + | |
| 5170 | + | |
| 5171 | + | |
| 5172 | + | |
| 5173 | + | |
| 5174 | + | |
| 5175 | + | |
| 5176 | + | |
5159 | 5177 | | |
5160 | 5178 | | |
5161 | 5179 | | |
| |||
5169 | 5187 | | |
5170 | 5188 | | |
5171 | 5189 | | |
| 5190 | + | |
| 5191 | + | |
| 5192 | + | |
| 5193 | + | |
| 5194 | + | |
| 5195 | + | |
| 5196 | + | |
| 5197 | + | |
| 5198 | + | |
| 5199 | + | |
| 5200 | + | |
5172 | 5201 | | |
5173 | 5202 | | |
5174 | 5203 | | |
| |||
0 commit comments