Repository navigation
Commit 869e229
LAV-3119: Enforce restricted caller grants in DDL and SHOW gates (#4421)
* LAV-3119: wip (budget exhausted: wall_clock)
Co-authored-by: Sabir Akhadov <sabir.akhadov@localstack.cloud>
* LAV-3119: investigator: serialize capture/replay and finish latest-tree validation
Attempt 1 ended at the wall-clock limit, not an implementer bail-out: driver.log records phase_end killed: wall_clock at 2026-10-08T20:31:41Z. Verified the original worktree clean and spec-advancing WIP 0fa49d2852b5bad077003041924d1f121e861a66 (28 files, store authorization/ownership/SHOW gates, SQL/JavaScript/Python nested-restriction tests and Cloud snapshots). No prior corrective note exists.
Transcript evidence: 19:32:15Z reports /tmp/lav3119-final-replay.log: 366 passed, 4 xfailed; 20:11:31Z reports /tmp/lav3119-complete-replay.log: 118 passed; 20:27:45Z reports /tmp/lav3119-check12.log: Quick check passed. Those runs precede the last additions and are not final approval. The last action was restarting the interrupted six-file replay and auditing function/procedure metadata readers; the new suite currently contains 135 snapshot entries.
Concrete mechanical cause: Cloud capture and emulator replay were launched concurrently through make test-compat. The interrupted handoff replay records ProgrammingError 390111: Session no longer exists. Makefile:323 depends on start; scripts/start.py:649 bootstraps with --reinstall-extension; crates/server/src/pg_supervisor.rs:875 drops the extension CASCADE and refreshes account databases. Even a Cloud-targeted make invocation therefore mutates local PG. Do not overlap make test-compat, Cloud capture, make start/restart or extension install on the same checkout/PG. Finish each invocation before starting another; this means serial invocations, not necessarily disabling pytest xdist.
Next round: resume from existing snapshots, not repeated broad recaptures. Run make check and one uninterrupted focused replay of test_restricted_store.py, test_adr107_baselines.py, test_caller_grants_direct.py, test_caller_grants_inherited.py, test_show_caller_grants.py, and test_schema_ownership.py. Complete the final function/procedure SHOW and grant/revoke authorization call-site audit. Explicitly run make test-vendored-sqlparser: check12 said vendor unchanged/skipped before the WIP was committed, but origin/main..HEAD changes vendor/sqlparser/src/parser/mod.rs (GRANT MANAGEMENT). Preserve Cloud observations and document any ADR/AC contradictions under ## Deviations, including disjoint-privilege SHOW visibility and temporary-table CREATE privilege behavior; action authorization must remain strict. If a lock failure survives isolated replay, investigate its actual lock cycle rather than attributing every error to the reset. Leave the post-turn .spiral/check.sh gate to the driver. No issue implementation or test waiver was made by this investigation.
Co-authored-by: Sabir Akhadov <sabir.akhadov@localstack.cloud>
* LAV-3119: wip (terminated)
Co-authored-by: Sabir Akhadov <sabir.akhadov@localstack.cloud>
* LAV-3119: complete routine DDL privilege intersection
Continue the existing store/SHOW implementation with CREATE PROCEDURE, non-rename
ALTER, and DROP routine gates. Normalize overload signatures through the existing
type renderer, preserve procedure identity after opaque-body lowering, and enforce
routine visibility before command privileges. Evaluate caller authority per owner,
including mixed direct OWNERSHIP and account FULL MANAGEMENT in nested restrictions.
Keep the effective-role validation and PostgreSQL data-plane projection intact.
Procedure catalog synchronization resets the PostgreSQL role; pass its validated
creator to internal future-grant attribution and seed the implicit routine ownership
edge directly instead of recursively authorizing it as an explicit user GRANT.
Preserve grant serialization and invalidation through the existing store triggers.
Added real-Cloud snapshots for routine creation, mutation, nested mixed authorities,
and overloaded NUMBER/VARCHAR signatures. Swept server and extension dynamic-SQL
entry points for missing routine gates; also fixed opaque procedure creation's
FUNCTION/PROCEDURE classification. Gates operate on the AST, not raw text.
Validation so far: make check passed on the latest tree; make test-vendored-sqlparser
passed. The initial uninterrupted six-file replay passed 412 existing cases with
4 xfails. Focused post-gate replay passed 34 routine cases and identified the
procedure catalog synchronization failures fixed here. The final six-file replay
is in progress; the final validation commit will record its outcome.
Co-authored-by: Sabir Akhadov <sabir.akhadov@localstack.cloud>
## Deviations
- Cloud snapshots show SHOW visibility is a base-any-privilege and per-owner-any-caller-privilege intersection, even when privileges differ. Preserve that visibility rule, while authorizing individual actions against their specific privileges.
- Cloud permits temporary-table creation without CREATE TABLE grants; retain namespace checks and do not impose the permanent-table privilege rule on temporary tables.
- Cloud requires CALLER GRANT MANAGEMENT on an ancestor for explicit grants/revokes, plus effective MANAGE GRANTS when using that authority. A base role lacking revoke authority can receive success without changing grants; snapshot the resulting edges rather than treating success alone as authorization.
- Cloud requires CALLER FULL MANAGEMENT for routine creation, even when CALLER CREATE FUNCTION/PROCEDURE exists. Routine ALTER COMMENT requires MODIFY (caller OWNERSHIP also suffices), and routine DROP requires OWNERSHIP; FULL MANAGEMENT can satisfy each owner's caller-side routine authority but never replaces the base half.
- Extended the internal future-grants helper with an optional validated creator for privileged procedure catalog synchronization, and seed implicit routine ownership without explicit-GRANT authorization. This repairs the underlying metadata path without weakening the executable-context guard or changing data-plane enforcement.
## Test matrix
The rows below enumerate each parameterized input and snapshot-observed path in the
restricted-store suite, including the action's independently recorded metadata effect.
Error rows assert the captured code, SQL state, and verbatim message together.
Routine signatures cover zero arguments and overloaded NUMBER/VARCHAR arguments;
SQL, JavaScript, and Python are the existing available procedure execution paths.
Resource-index syntax was checked for CREATE PROCEDURE, ALTER FUNCTION, and caller
grant clauses; this task changes their authorization, not their accepted properties.
test_restricted_caller_grant_management[False-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[False-GRANT] [code_1]
test_restricted_caller_grant_management[False-GRANT] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[False-GRANT] [remaining]
test_restricted_caller_grant_management[False-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[False-REVOKE] [code_1]
test_restricted_caller_grant_management[False-REVOKE] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[False-REVOKE] [remaining]
test_restricted_caller_grant_management[True-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[True-GRANT] [code_1]
test_restricted_caller_grant_management[True-GRANT] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[True-GRANT] [remaining]
test_restricted_caller_grant_management[True-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[True-REVOKE] [code_1]
test_restricted_caller_grant_management[True-REVOKE] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_caller_grant_management[True-REVOKE] [remaining]
test_restricted_create_function[False-False-both] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-False-both] [code_1]
test_restricted_create_function[False-False-both] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-False-both] [remaining]
test_restricted_create_function[False-False-no-base] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-False-no-base] [code_1]
test_restricted_create_function[False-False-no-base] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-False-no-base] [remaining]
test_restricted_create_function[False-False-no-caller] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-False-no-caller] [code_1]
test_restricted_create_function[False-False-no-caller] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-False-no-caller] [remaining]
test_restricted_create_function[False-True-both] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-True-both] [code_1]
test_restricted_create_function[False-True-both] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-True-both] [remaining]
test_restricted_create_function[False-True-no-base] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-True-no-base] [code_1]
test_restricted_create_function[False-True-no-base] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-True-no-base] [remaining]
test_restricted_create_function[False-True-no-caller] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-True-no-caller] [code_1]
test_restricted_create_function[False-True-no-caller] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[False-True-no-caller] [remaining]
test_restricted_create_function[True-False-both] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-both] [created]
test_restricted_create_function[True-False-both] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-both] [effect]
test_restricted_create_function[True-False-both] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-both] [remaining]
test_restricted_create_function[True-False-no-base] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-no-base] [code_1]
test_restricted_create_function[True-False-no-base] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-no-base] [remaining]
test_restricted_create_function[True-False-no-caller] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-no-caller] [created]
test_restricted_create_function[True-False-no-caller] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-no-caller] [effect]
test_restricted_create_function[True-False-no-caller] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-False-no-caller] [remaining]
test_restricted_create_function[True-True-both] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-both] [created]
test_restricted_create_function[True-True-both] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-both] [effect]
test_restricted_create_function[True-True-both] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-both] [remaining]
test_restricted_create_function[True-True-no-base] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-no-base] [created]
test_restricted_create_function[True-True-no-base] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-no-base] [effect]
test_restricted_create_function[True-True-no-base] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-no-base] [remaining]
test_restricted_create_function[True-True-no-caller] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-no-caller] [created]
test_restricted_create_function[True-True-no-caller] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-no-caller] [effect]
test_restricted_create_function[True-True-no-caller] × remaining -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_function[True-True-no-caller] [remaining]
test_restricted_create_intersection[False-both-CREATE FILE FORMAT] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE FILE FORMAT] [created]
test_restricted_create_intersection[False-both-CREATE FILE FORMAT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE FILE FORMAT] [effect]
test_restricted_create_intersection[False-both-CREATE SCHEMA] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE SCHEMA] [created]
test_restricted_create_intersection[False-both-CREATE SCHEMA] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE SCHEMA] [effect]
test_restricted_create_intersection[False-both-CREATE SECRET] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE SECRET] [created]
test_restricted_create_intersection[False-both-CREATE SECRET] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE SECRET] [effect]
test_restricted_create_intersection[False-both-CREATE SEQUENCE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE SEQUENCE] [created]
test_restricted_create_intersection[False-both-CREATE SEQUENCE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE SEQUENCE] [effect]
test_restricted_create_intersection[False-both-CREATE STAGE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE STAGE] [created]
test_restricted_create_intersection[False-both-CREATE STAGE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE STAGE] [effect]
test_restricted_create_intersection[False-both-CREATE TABLE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE TABLE] [created]
test_restricted_create_intersection[False-both-CREATE TABLE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE TABLE] [effect]
test_restricted_create_intersection[False-both-CREATE VIEW] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE VIEW] [created]
test_restricted_create_intersection[False-both-CREATE VIEW] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-both-CREATE VIEW] [effect]
test_restricted_create_intersection[False-no-base-CREATE FILE FORMAT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE FILE FORMAT] [code_1]
test_restricted_create_intersection[False-no-base-CREATE SCHEMA] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE SCHEMA] [code_1]
test_restricted_create_intersection[False-no-base-CREATE SECRET] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE SECRET] [code_1]
test_restricted_create_intersection[False-no-base-CREATE SEQUENCE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE SEQUENCE] [code_1]
test_restricted_create_intersection[False-no-base-CREATE STAGE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE STAGE] [code_1]
test_restricted_create_intersection[False-no-base-CREATE TABLE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE TABLE] [code_1]
test_restricted_create_intersection[False-no-base-CREATE VIEW] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-base-CREATE VIEW] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE FILE FORMAT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE FILE FORMAT] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE SCHEMA] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE SCHEMA] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE SECRET] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE SECRET] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE SEQUENCE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE SEQUENCE] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE STAGE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE STAGE] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE TABLE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE TABLE] [code_1]
test_restricted_create_intersection[False-no-caller-CREATE VIEW] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[False-no-caller-CREATE VIEW] [code_1]
test_restricted_create_intersection[True-both-CREATE FILE FORMAT] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE FILE FORMAT] [created]
test_restricted_create_intersection[True-both-CREATE FILE FORMAT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE FILE FORMAT] [effect]
test_restricted_create_intersection[True-both-CREATE SCHEMA] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE SCHEMA] [created]
test_restricted_create_intersection[True-both-CREATE SCHEMA] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE SCHEMA] [effect]
test_restricted_create_intersection[True-both-CREATE SECRET] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE SECRET] [created]
test_restricted_create_intersection[True-both-CREATE SECRET] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE SECRET] [effect]
test_restricted_create_intersection[True-both-CREATE SEQUENCE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE SEQUENCE] [created]
test_restricted_create_intersection[True-both-CREATE SEQUENCE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE SEQUENCE] [effect]
test_restricted_create_intersection[True-both-CREATE STAGE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE STAGE] [created]
test_restricted_create_intersection[True-both-CREATE STAGE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE STAGE] [effect]
test_restricted_create_intersection[True-both-CREATE TABLE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE TABLE] [created]
test_restricted_create_intersection[True-both-CREATE TABLE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE TABLE] [effect]
test_restricted_create_intersection[True-both-CREATE VIEW] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE VIEW] [created]
test_restricted_create_intersection[True-both-CREATE VIEW] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-both-CREATE VIEW] [effect]
test_restricted_create_intersection[True-no-base-CREATE FILE FORMAT] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE FILE FORMAT] [created]
test_restricted_create_intersection[True-no-base-CREATE FILE FORMAT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE FILE FORMAT] [effect]
test_restricted_create_intersection[True-no-base-CREATE SCHEMA] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE SCHEMA] [created]
test_restricted_create_intersection[True-no-base-CREATE SCHEMA] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE SCHEMA] [effect]
test_restricted_create_intersection[True-no-base-CREATE SECRET] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE SECRET] [created]
test_restricted_create_intersection[True-no-base-CREATE SECRET] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE SECRET] [effect]
test_restricted_create_intersection[True-no-base-CREATE SEQUENCE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE SEQUENCE] [created]
test_restricted_create_intersection[True-no-base-CREATE SEQUENCE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE SEQUENCE] [effect]
test_restricted_create_intersection[True-no-base-CREATE STAGE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE STAGE] [created]
test_restricted_create_intersection[True-no-base-CREATE STAGE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE STAGE] [effect]
test_restricted_create_intersection[True-no-base-CREATE TABLE] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE TABLE] [created]
test_restricted_create_intersection[True-no-base-CREATE TABLE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE TABLE] [effect]
test_restricted_create_intersection[True-no-base-CREATE VIEW] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE VIEW] [created]
test_restricted_create_intersection[True-no-base-CREATE VIEW] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-base-CREATE VIEW] [effect]
test_restricted_create_intersection[True-no-caller-CREATE FILE FORMAT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE FILE FORMAT] [code_1]
test_restricted_create_intersection[True-no-caller-CREATE SCHEMA] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE SCHEMA] [code_1]
test_restricted_create_intersection[True-no-caller-CREATE SECRET] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE SECRET] [code_1]
test_restricted_create_intersection[True-no-caller-CREATE SEQUENCE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE SEQUENCE] [code_1]
test_restricted_create_intersection[True-no-caller-CREATE STAGE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE STAGE] [code_1]
test_restricted_create_intersection[True-no-caller-CREATE TABLE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE TABLE] [code_1]
test_restricted_create_intersection[True-no-caller-CREATE VIEW] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_intersection[True-no-caller-CREATE VIEW] [code_1]
test_restricted_create_languages[False-JAVASCRIPT] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[False-JAVASCRIPT] [created]
test_restricted_create_languages[False-JAVASCRIPT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[False-JAVASCRIPT] [effect]
test_restricted_create_languages[False-PYTHON] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[False-PYTHON] [created]
test_restricted_create_languages[False-PYTHON] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[False-PYTHON] [effect]
test_restricted_create_languages[False-SQL] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[False-SQL] [created]
test_restricted_create_languages[False-SQL] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[False-SQL] [effect]
test_restricted_create_languages[True-JAVASCRIPT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-JAVASCRIPT] [code_1]
test_restricted_create_languages[True-JAVASCRIPT] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-JAVASCRIPT] [created]
test_restricted_create_languages[True-JAVASCRIPT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-JAVASCRIPT] [effect]
test_restricted_create_languages[True-PYTHON] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-PYTHON] [code_1]
test_restricted_create_languages[True-PYTHON] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-PYTHON] [created]
test_restricted_create_languages[True-PYTHON] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-PYTHON] [effect]
test_restricted_create_languages[True-SQL] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-SQL] [code_1]
test_restricted_create_languages[True-SQL] × created -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-SQL] [created]
test_restricted_create_languages[True-SQL] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_languages[True-SQL] [effect]
test_restricted_create_procedure[False-both] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-both] [call-True]
test_restricted_create_procedure[False-both] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-both] [code_1]
test_restricted_create_procedure[False-both] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-both] [effect-False]
test_restricted_create_procedure[False-both] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-both] [effect-True]
test_restricted_create_procedure[False-both] × value -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-both] [value]
test_restricted_create_procedure[False-no-base] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-base] [code_1]
test_restricted_create_procedure[False-no-base] × error code_2 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-base] [code_2]
test_restricted_create_procedure[False-no-base] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-base] [effect-False]
test_restricted_create_procedure[False-no-base] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-base] [effect-True]
test_restricted_create_procedure[False-no-caller] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-caller] [call-True]
test_restricted_create_procedure[False-no-caller] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-caller] [code_1]
test_restricted_create_procedure[False-no-caller] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-caller] [effect-False]
test_restricted_create_procedure[False-no-caller] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-caller] [effect-True]
test_restricted_create_procedure[False-no-caller] × value -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[False-no-caller] [value]
test_restricted_create_procedure[True-both] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-both] [call-True]
test_restricted_create_procedure[True-both] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-both] [code_1]
test_restricted_create_procedure[True-both] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-both] [effect-False]
test_restricted_create_procedure[True-both] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-both] [effect-True]
test_restricted_create_procedure[True-both] × value -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-both] [value]
test_restricted_create_procedure[True-no-base] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-base] [call-True]
test_restricted_create_procedure[True-no-base] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-base] [code_1]
test_restricted_create_procedure[True-no-base] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-base] [effect-False]
test_restricted_create_procedure[True-no-base] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-base] [effect-True]
test_restricted_create_procedure[True-no-base] × value -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-base] [value]
test_restricted_create_procedure[True-no-caller] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-caller] [call-True]
test_restricted_create_procedure[True-no-caller] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-caller] [code_1]
test_restricted_create_procedure[True-no-caller] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-caller] [effect-False]
test_restricted_create_procedure[True-no-caller] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-caller] [effect-True]
test_restricted_create_procedure[True-no-caller] × value -> tests/queries/access_control/test_restricted_store.py::test_restricted_create_procedure[True-no-caller] [value]
test_restricted_global_manager[base-global-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[base-global-GRANT] [code_1]
test_restricted_global_manager[base-global-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[base-global-GRANT] [target-grants]
test_restricted_global_manager[base-global-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[base-global-REVOKE] [code_1]
test_restricted_global_manager[base-global-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[base-global-REVOKE] [target-grants]
test_restricted_global_manager[both-GRANT] × mutation -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[both-GRANT] [mutation]
test_restricted_global_manager[both-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[both-GRANT] [target-grants]
test_restricted_global_manager[both-REVOKE] × mutation -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[both-REVOKE] [mutation]
test_restricted_global_manager[both-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[both-REVOKE] [target-grants]
test_restricted_global_manager[caller-global-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[caller-global-GRANT] [code_1]
test_restricted_global_manager[caller-global-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[caller-global-GRANT] [target-grants]
test_restricted_global_manager[caller-global-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[caller-global-REVOKE] [code_1]
test_restricted_global_manager[caller-global-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[caller-global-REVOKE] [target-grants]
test_restricted_global_manager[no-base-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-base-GRANT] [code_1]
test_restricted_global_manager[no-base-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-base-GRANT] [target-grants]
test_restricted_global_manager[no-base-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-base-REVOKE] [code_1]
test_restricted_global_manager[no-base-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-base-REVOKE] [target-grants]
test_restricted_global_manager[no-caller-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-caller-GRANT] [code_1]
test_restricted_global_manager[no-caller-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-caller-GRANT] [target-grants]
test_restricted_global_manager[no-caller-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-caller-REVOKE] [code_1]
test_restricted_global_manager[no-caller-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_global_manager[no-caller-REVOKE] [target-grants]
test_restricted_grant_intersection[both-grant-option-GRANT] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-grant-option-GRANT] [authorized]
test_restricted_grant_intersection[both-grant-option-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-grant-option-GRANT] [target-grants]
test_restricted_grant_intersection[both-grant-option-REVOKE GRANT OPTION FOR] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-grant-option-REVOKE GRANT OPTION FOR] [authorized]
test_restricted_grant_intersection[both-grant-option-REVOKE GRANT OPTION FOR] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-grant-option-REVOKE GRANT OPTION FOR] [target-grants]
test_restricted_grant_intersection[both-grant-option-REVOKE] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-grant-option-REVOKE] [authorized]
test_restricted_grant_intersection[both-grant-option-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-grant-option-REVOKE] [target-grants]
test_restricted_grant_intersection[both-manage-grants-GRANT] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-manage-grants-GRANT] [authorized]
test_restricted_grant_intersection[both-manage-grants-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-manage-grants-GRANT] [target-grants]
test_restricted_grant_intersection[both-manage-grants-REVOKE GRANT OPTION FOR] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-manage-grants-REVOKE GRANT OPTION FOR] [authorized]
test_restricted_grant_intersection[both-manage-grants-REVOKE GRANT OPTION FOR] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-manage-grants-REVOKE GRANT OPTION FOR] [target-grants]
test_restricted_grant_intersection[both-manage-grants-REVOKE] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-manage-grants-REVOKE] [authorized]
test_restricted_grant_intersection[both-manage-grants-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[both-manage-grants-REVOKE] [target-grants]
test_restricted_grant_intersection[no-base-grant-option-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-grant-option-GRANT] [code_1]
test_restricted_grant_intersection[no-base-grant-option-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-grant-option-GRANT] [target-grants]
test_restricted_grant_intersection[no-base-grant-option-REVOKE GRANT OPTION FOR] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-grant-option-REVOKE GRANT OPTION FOR] [authorized]
test_restricted_grant_intersection[no-base-grant-option-REVOKE GRANT OPTION FOR] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-grant-option-REVOKE GRANT OPTION FOR] [target-grants]
test_restricted_grant_intersection[no-base-grant-option-REVOKE] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-grant-option-REVOKE] [authorized]
test_restricted_grant_intersection[no-base-grant-option-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-grant-option-REVOKE] [target-grants]
test_restricted_grant_intersection[no-base-manage-grants-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-manage-grants-GRANT] [code_1]
test_restricted_grant_intersection[no-base-manage-grants-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-manage-grants-GRANT] [target-grants]
test_restricted_grant_intersection[no-base-manage-grants-REVOKE GRANT OPTION FOR] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-manage-grants-REVOKE GRANT OPTION FOR] [authorized]
test_restricted_grant_intersection[no-base-manage-grants-REVOKE GRANT OPTION FOR] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-manage-grants-REVOKE GRANT OPTION FOR] [target-grants]
test_restricted_grant_intersection[no-base-manage-grants-REVOKE] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-manage-grants-REVOKE] [authorized]
test_restricted_grant_intersection[no-base-manage-grants-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-base-manage-grants-REVOKE] [target-grants]
test_restricted_grant_intersection[no-caller-grant-option-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-grant-option-GRANT] [code_1]
test_restricted_grant_intersection[no-caller-grant-option-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-grant-option-GRANT] [target-grants]
test_restricted_grant_intersection[no-caller-grant-option-REVOKE GRANT OPTION FOR] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-grant-option-REVOKE GRANT OPTION FOR] [code_1]
test_restricted_grant_intersection[no-caller-grant-option-REVOKE GRANT OPTION FOR] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-grant-option-REVOKE GRANT OPTION FOR] [target-grants]
test_restricted_grant_intersection[no-caller-grant-option-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-grant-option-REVOKE] [code_1]
test_restricted_grant_intersection[no-caller-grant-option-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-grant-option-REVOKE] [target-grants]
test_restricted_grant_intersection[no-caller-manage-grants-GRANT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-manage-grants-GRANT] [code_1]
test_restricted_grant_intersection[no-caller-manage-grants-GRANT] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-manage-grants-GRANT] [target-grants]
test_restricted_grant_intersection[no-caller-manage-grants-REVOKE GRANT OPTION FOR] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-manage-grants-REVOKE GRANT OPTION FOR] [code_1]
test_restricted_grant_intersection[no-caller-manage-grants-REVOKE GRANT OPTION FOR] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-manage-grants-REVOKE GRANT OPTION FOR] [target-grants]
test_restricted_grant_intersection[no-caller-manage-grants-REVOKE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-manage-grants-REVOKE] [code_1]
test_restricted_grant_intersection[no-caller-manage-grants-REVOKE] × target-grants -> tests/queries/access_control/test_restricted_store.py::test_restricted_grant_intersection[no-caller-manage-grants-REVOKE] [target-grants]
test_restricted_nested_routine_authority[ALTER] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_nested_routine_authority[ALTER] [authorized]
test_restricted_nested_routine_authority[ALTER] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_nested_routine_authority[ALTER] [code_1]
test_restricted_nested_routine_authority[ALTER] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_nested_routine_authority[ALTER] [effect]
test_restricted_nested_routine_authority[DROP] × authorized -> tests/queries/access_control/test_restricted_store.py::test_restricted_nested_routine_authority[DROP] [authorized]
test_restricted_nested_routine_authority[DROP] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_nested_routine_authority[DROP] [code_1]
test_restricted_nested_routine_authority[DROP] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_nested_routine_authority[DROP] [effect]
test_restricted_object_ownership[ALTER-DATABASE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-DATABASE] [code_1]
test_restricted_object_ownership[ALTER-DATABASE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-DATABASE] [effect]
test_restricted_object_ownership[ALTER-DATABASE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-DATABASE] [with-caller-ownership]
test_restricted_object_ownership[ALTER-FILE FORMAT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-FILE FORMAT] [code_1]
test_restricted_object_ownership[ALTER-FILE FORMAT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-FILE FORMAT] [effect]
test_restricted_object_ownership[ALTER-FILE FORMAT] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-FILE FORMAT] [with-caller-ownership]
test_restricted_object_ownership[ALTER-PIPE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-PIPE] [code_1]
test_restricted_object_ownership[ALTER-PIPE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-PIPE] [effect]
test_restricted_object_ownership[ALTER-PIPE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-PIPE] [with-caller-ownership]
test_restricted_object_ownership[ALTER-SCHEMA] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SCHEMA] [code_1]
test_restricted_object_ownership[ALTER-SCHEMA] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SCHEMA] [effect]
test_restricted_object_ownership[ALTER-SCHEMA] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SCHEMA] [with-caller-ownership]
test_restricted_object_ownership[ALTER-SECRET] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SECRET] [code_1]
test_restricted_object_ownership[ALTER-SECRET] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SECRET] [effect]
test_restricted_object_ownership[ALTER-SECRET] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SECRET] [with-caller-ownership]
test_restricted_object_ownership[ALTER-SEQUENCE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SEQUENCE] [code_1]
test_restricted_object_ownership[ALTER-SEQUENCE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SEQUENCE] [effect]
test_restricted_object_ownership[ALTER-SEQUENCE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-SEQUENCE] [with-caller-ownership]
test_restricted_object_ownership[ALTER-STAGE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-STAGE] [code_1]
test_restricted_object_ownership[ALTER-STAGE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-STAGE] [effect]
test_restricted_object_ownership[ALTER-STAGE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-STAGE] [with-caller-ownership]
test_restricted_object_ownership[ALTER-STREAM] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-STREAM] [code_1]
test_restricted_object_ownership[ALTER-STREAM] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-STREAM] [effect]
test_restricted_object_ownership[ALTER-STREAM] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-STREAM] [with-caller-ownership]
test_restricted_object_ownership[ALTER-TAG] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-TAG] [code_1]
test_restricted_object_ownership[ALTER-TAG] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-TAG] [effect]
test_restricted_object_ownership[ALTER-TAG] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-TAG] [with-caller-ownership]
test_restricted_object_ownership[ALTER-TASK] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-TASK] [code_1]
test_restricted_object_ownership[ALTER-TASK] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-TASK] [effect]
test_restricted_object_ownership[ALTER-TASK] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-TASK] [with-caller-ownership]
test_restricted_object_ownership[ALTER-VIEW] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-VIEW] [code_1]
test_restricted_object_ownership[ALTER-VIEW] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-VIEW] [effect]
test_restricted_object_ownership[ALTER-VIEW] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[ALTER-VIEW] [with-caller-ownership]
test_restricted_object_ownership[DROP-DATABASE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-DATABASE] [code_1]
test_restricted_object_ownership[DROP-DATABASE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-DATABASE] [effect]
test_restricted_object_ownership[DROP-DATABASE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-DATABASE] [with-caller-ownership]
test_restricted_object_ownership[DROP-FILE FORMAT] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-FILE FORMAT] [code_1]
test_restricted_object_ownership[DROP-FILE FORMAT] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-FILE FORMAT] [effect]
test_restricted_object_ownership[DROP-FILE FORMAT] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-FILE FORMAT] [with-caller-ownership]
test_restricted_object_ownership[DROP-PIPE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-PIPE] [code_1]
test_restricted_object_ownership[DROP-PIPE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-PIPE] [effect]
test_restricted_object_ownership[DROP-PIPE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-PIPE] [with-caller-ownership]
test_restricted_object_ownership[DROP-SCHEMA] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SCHEMA] [code_1]
test_restricted_object_ownership[DROP-SCHEMA] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SCHEMA] [effect]
test_restricted_object_ownership[DROP-SCHEMA] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SCHEMA] [with-caller-ownership]
test_restricted_object_ownership[DROP-SECRET] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SECRET] [code_1]
test_restricted_object_ownership[DROP-SECRET] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SECRET] [effect]
test_restricted_object_ownership[DROP-SECRET] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SECRET] [with-caller-ownership]
test_restricted_object_ownership[DROP-SEQUENCE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SEQUENCE] [code_1]
test_restricted_object_ownership[DROP-SEQUENCE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SEQUENCE] [effect]
test_restricted_object_ownership[DROP-SEQUENCE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-SEQUENCE] [with-caller-ownership]
test_restricted_object_ownership[DROP-STAGE] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-STAGE] [code_1]
test_restricted_object_ownership[DROP-STAGE] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-STAGE] [effect]
test_restricted_object_ownership[DROP-STAGE] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-STAGE] [with-caller-ownership]
test_restricted_object_ownership[DROP-STREAM] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-STREAM] [code_1]
test_restricted_object_ownership[DROP-STREAM] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-STREAM] [effect]
test_restricted_object_ownership[DROP-STREAM] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-STREAM] [with-caller-ownership]
test_restricted_object_ownership[DROP-TAG] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-TAG] [code_1]
test_restricted_object_ownership[DROP-TAG] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-TAG] [effect]
test_restricted_object_ownership[DROP-TAG] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-TAG] [with-caller-ownership]
test_restricted_object_ownership[DROP-TASK] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-TASK] [code_1]
test_restricted_object_ownership[DROP-TASK] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-TASK] [effect]
test_restricted_object_ownership[DROP-TASK] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-TASK] [with-caller-ownership]
test_restricted_object_ownership[DROP-VIEW] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-VIEW] [code_1]
test_restricted_object_ownership[DROP-VIEW] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-VIEW] [effect]
test_restricted_object_ownership[DROP-VIEW] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_object_ownership[DROP-VIEW] [with-caller-ownership]
test_restricted_ownership_gate[ALTER] × caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[ALTER] [caller-ownership]
test_restricted_ownership_gate[ALTER] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[ALTER] [code_1]
test_restricted_ownership_gate[ALTER] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[ALTER] [effect]
test_restricted_ownership_gate[ALTER] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[ALTER] [with-caller-ownership]
test_restricted_ownership_gate[DROP] × caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[DROP] [caller-ownership]
test_restricted_ownership_gate[DROP] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[DROP] [code_1]
test_restricted_ownership_gate[DROP] × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[DROP] [effect]
test_restricted_ownership_gate[DROP] × with-caller-ownership -> tests/queries/access_control/test_restricted_store.py::test_restricted_ownership_gate[DROP] [with-caller-ownership]
test_restricted_rename_function × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function [code_1]
test_restricted_rename_function × error code_2 -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function [code_2]
test_restricted_rename_function × effect -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function [effect]
test_restricted_rename_function × renamed -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function [renamed]
test_restricted_rename_function × unchanged -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function [unchanged]
test_restricted_rename_function_without_base[False] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function_without_base[False] [code_1]
test_restricted_rename_function_without_base[False] × unchanged -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function_without_base[False] [unchanged]
test_restricted_rename_function_without_base[True] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function_without_base[True] [code_1]
test_restricted_rename_function_without_base[True] × unchanged -> tests/queries/access_control/test_restricted_store.py::test_restricted_rename_function_without_base[True] [unchanged]
test_restricted_routine_mutation[both-ALTER-FUNCTION] × call-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-FUNCTION] [call-False]
test_restricted_routine_mutation[both-ALTER-FUNCTION] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-FUNCTION] [call-True]
test_restricted_routine_mutation[both-ALTER-FUNCTION] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-FUNCTION] [effect-False]
test_restricted_routine_mutation[both-ALTER-FUNCTION] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-FUNCTION] [effect-True]
test_restricted_routine_mutation[both-ALTER-PROCEDURE] × call-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-PROCEDURE] [call-False]
test_restricted_routine_mutation[both-ALTER-PROCEDURE] × call-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-PROCEDURE] [call-True]
test_restricted_routine_mutation[both-ALTER-PROCEDURE] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-PROCEDURE] [effect-False]
test_restricted_routine_mutation[both-ALTER-PROCEDURE] × effect-True -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-ALTER-PROCEDURE] [effect-True]
test_restricted_routine_mutation[both-DROP-FUNCTION] × call-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-DROP-FUNCTION] [call-False]
test_restricted_routine_mutation[both-DROP-FUNCTION] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-DROP-FUNCTION] [effect-False]
test_restricted_routine_mutation[both-DROP-PROCEDURE] × call-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-DROP-PROCEDURE] [call-False]
test_restricted_routine_mutation[both-DROP-PROCEDURE] × effect-False -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[both-DROP-PROCEDURE] [effect-False]
test_restricted_routine_mutation[no-base-ALTER-FUNCTION] × error code_1 -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[no-base-ALTER-FUNCTION] [code_1]
test_restricted_routine_mutation[no-base-ALTER-FUNCTION] × error code_2 -> tests/queries/access_control/test_restricted_store.py::test_restricted_routine_mutation[no-base-ALTER-FUNCTION] [code_2]
test_restricted_routine_mutation[no-base-ALTER-FUNCTION] × effect-False -> tests/queries/access_control/test_restricted_store.py::t…1 parent d667baf commit 869e229
1 file changed
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21581 | 21581 | | |
21582 | 21582 | | |
21583 | 21583 | | |
| 21584 | + | |
| 21585 | + | |
21584 | 21586 | | |
21585 | 21587 | | |
21586 | 21588 | | |
| |||
0 commit comments