Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions test/check_ledger.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -3798,11 +3798,11 @@ tid_range_scan tid_range_scan premise: the table holds every row 15;16;17;18;19
tid_range_scan tid_range_scan rows inserted earlier in the same transaction are in the range, as the filter sees them 15;16;17;18;19 never -
tier_partition tier_partition a DEFAULT partition is refused 15;16;17;18;19 2026-10-13 tier_partition without the DEFAULT refusal
tier_partition tier_partition a column with its own collation moves and reads back the same 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix;tier_partition returning 0 rows moved;tier_partition's foreign table without the columns' collations
tier_partition tier_partition a failure after attach leaves the rows exactly once, still local 15;16;17;18;19 never -
tier_partition tier_partition a failure after create leaves the rows exactly once, still local 15;16;17;18;19 never -
tier_partition tier_partition a failure after detach leaves the rows exactly once, still local 15;16;17;18;19 never -
tier_partition tier_partition a failure after drop leaves the rows exactly once, still local 15;16;17;18;19 never -
tier_partition tier_partition a failure after export leaves the rows exactly once, still local 15;16;17;18;19 never -
tier_partition tier_partition a failure after attach leaves the rows exactly once, still local 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition a failure after create leaves the rows exactly once, still local 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition a failure after detach leaves the rows exactly once, still local 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition a failure after drop leaves the rows exactly once, still local 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition a failure after export leaves the rows exactly once, still local 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition a fault step that is not one of tier_partition's is refused 15;16;17;18;19 2026-10-13 the tier_fault_after check hook accepting any value
tier_partition tier_partition a grant to a role whose name needs quoting is carried to the foreign partition 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix;tier_partition not carrying the grants;tier_partition returning 0 rows moved
tier_partition tier_partition a non-superuser owner tiers its own partition 15;16;17;18;19 never -
Expand All @@ -3817,7 +3817,7 @@ tier_partition tier_partition a partition with a row-level policy is refused bef
tier_partition tier_partition a partition with a trigger of its own is refused before anything moves 15;16;17;18;19 2026-10-13 tier_partition without the dependents check
tier_partition tier_partition a query on the other range scans only the local partition, beside a foreign one 15;16;17;18;19 never -
tier_partition tier_partition a query on the tiered range scans only the foreign partition 15;16;17;18;19 never -
tier_partition tier_partition a retry over the failed attempt's file moves the partition, exactly once 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix;tier_partition refusing every existing path (the first version's rule);tier_partition returning 0 rows moved
tier_partition tier_partition a retry over the failed attempt's file moves the partition, exactly once 15;16;17;18;19 2026-10-16 tier_partition naming the foreign table with a suffix;tier_partition refusing every existing path (the first version's rule);tier_partition returning 0 rows moved;tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition a role that does not own the table is refused by its own privileges (42501) 15;16;17;18;19 2026-10-14 tier_partition made SECURITY DEFINER
tier_partition tier_partition a rollback after the whole call leaves the rows local, exactly once 15;16;17;18;19 never -
tier_partition tier_partition a server of another wrapper is refused 15;16;17;18;19 2026-10-14 tier_partition without its wrong-wrapper branch, so the iceberg wrapper refuses only after the export;tier_partition without the wrapper check
Expand All @@ -3830,11 +3830,11 @@ tier_partition tier_partition after the move the caller's lock_timeout is the ca
tier_partition tier_partition an existing path is refused, so no file a table reads is overwritten 15;16;17;18;19 2026-10-13 tier_partition without the path refusal
tier_partition tier_partition an insert racing the move leaves every row exactly once, whichever side gives way 15;16;17;18;19 2026-10-13 tier_partition without the SHARE lock on the partition
tier_partition tier_partition an insert routed to the tiered range is refused 15;16;17;18;19 never -
tier_partition tier_partition and no foreign table behind it after attach 15;16;17;18;19 never -
tier_partition tier_partition and no foreign table behind it after create 15;16;17;18;19 never -
tier_partition tier_partition and no foreign table behind it after detach 15;16;17;18;19 never -
tier_partition tier_partition and no foreign table behind it after drop 15;16;17;18;19 never -
tier_partition tier_partition and no foreign table behind it after export 15;16;17;18;19 never -
tier_partition tier_partition and no foreign table behind it after attach 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition and no foreign table behind it after create 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition and no foreign table behind it after detach 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition and no foreign table behind it after drop 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition and no foreign table behind it after export 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition and the refusals moved nothing 15;16;17;18;19 2026-10-13 tier_partition without the path refusal
tier_partition tier_partition and the refused call leaves the partition local and attached, every row once 15;16;17;18;19 2026-10-14 tier_partition made SECURITY DEFINER
tier_partition tier_partition and the refused call wrote no export file 15;16;17;18;19 2026-10-14 tier_partition made SECURITY DEFINER
Expand All @@ -3851,23 +3851,23 @@ tier_partition tier_partition premise: at read committed the caller's snapshot w
tier_partition tier_partition premise: at repeatable read the caller's snapshot was taken before the writer committed 15;16;17;18;19 never -
tier_partition tier_partition premise: at serializable the caller's snapshot was taken before the writer committed 15;16;17;18;19 never -
tier_partition tier_partition premise: one side of the race gave way or both went through, and nothing hung 15;16;17;18;19 never -
tier_partition tier_partition premise: the call fails with the fault injected after attach 15;16;17;18;19 never -
tier_partition tier_partition premise: the call fails with the fault injected after create 15;16;17;18;19 never -
tier_partition tier_partition premise: the call fails with the fault injected after detach 15;16;17;18;19 never -
tier_partition tier_partition premise: the call fails with the fault injected after drop 15;16;17;18;19 never -
tier_partition tier_partition premise: the call fails with the fault injected after export 15;16;17;18;19 never -
tier_partition tier_partition premise: the cold partition holds its share 15;16;17;18;19 never -
tier_partition tier_partition premise: the cold partition is local and columnar, with its bound 15;16;17;18;19 never -
tier_partition tier_partition premise: the first attempt failed after export and left its file 15;16;17;18;19 never -
tier_partition tier_partition premise: the move started while the insert was in flight, and waited for it 15;16;17;18;19 never -
tier_partition tier_partition premise: the parent holds every row 15;16;17;18;19 never -
tier_partition tier_partition premise: the storage id was read before the move 15;16;17;18;19 never -
tier_partition tier_partition premise: tier_own owns the parent and its partitions, and neither role is a superuser 15;16;17;18;19 never -
tier_partition tier_partition premise: tier_peer can open a session and read the partition 15;16;17;18;19 never -
tier_partition tier_partition the answers over the parent are the same after the move 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix
tier_partition tier_partition the call fails with the fault injected after attach 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition the call fails with the fault injected after create 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition the call fails with the fault injected after detach 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition the call fails with the fault injected after drop 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition the call fails with the fault injected after export 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition the call holds ACCESS EXCLUSIVE on the parent until commit, as the docs say 15;16;17;18;19 never -
tier_partition tier_partition the cold partition is now a foreign partition with its own name and bound 15;16;17;18;19 2026-10-13 tier_partition attaching with the upper bound shifted a minute;tier_partition naming the foreign table with a suffix
tier_partition tier_partition the cold partition was moved with its grant and comment set 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix;tier_partition returning 0 rows moved
tier_partition tier_partition the first attempt failed after export and left its file 15;16;17;18;19 2026-10-16 tier_partition's five injected-fault RAISEs removed, so the call succeeds (mutation, #1339)
tier_partition tier_partition the foreign partition keeps the partition's grants and comment 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix;tier_partition not carrying the grants
tier_partition tier_partition the foreign partition reads the exported file 15;16;17;18;19 2026-10-13 tier_partition naming the foreign table with a suffix
tier_partition tier_partition the local partition leaves no pgcolumnar storage row behind 15;16;17;18;19 2026-10-13 tier_partition renaming the partition aside instead of dropping it
Expand Down Expand Up @@ -4132,10 +4132,10 @@ vacuum_lock_privilege vacuum_lock_privilege truncate refuses a non-owner before
vacuum_lock_privilege vacuum_lock_privilege truncate tells a non-owner nothing about the relation type (#1384) 15;16;17;18;19 2026-10-14 truncate checking ownership after its lock and its type check (main before #1384's fix)
vacuum_lock_privilege vacuum_lock_privilege vacuum refuses a non-owner before taking the exclusive lock 15;16;17;18;19 2026-10-14 every maintenance entry point checks ownership after taking its lock;pgcolumnar.vacuum checks ownership after taking its AccessExclusiveLock
vacuum_lock_privilege vacuum_lock_privilege vacuum_sorted refuses a non-owner before taking the exclusive lock 15;16;17;18;19 2026-10-14 every maintenance entry point checks ownership after taking its lock
validity_elision validity_elision a chunk claiming no bitmap while it holds fewer values than rows is refused 15;16;17;18;19 never -
validity_elision validity_elision a chunk claiming no bitmap while it holds fewer values than rows is refused 15;16;17;18;19 2026-10-16 the no-nulls guard (claims no nulls but does not account for every row) disabled, so a later guard raised the XX001 (mutation, #1339)
validity_elision validity_elision a column with no nulls stores no validity bitmap 15;16;17;18;19 2026-09-18 writer: flush_one_column's presentCount == rowCount forced false, so the bitmap is written even when the chunk holds no null
validity_elision validity_elision a null-free column elides its bitmap beside a null-bearing one in the same row group 15;16;17;18;19 never -
validity_elision validity_elision an implausible row count on an elided chunk is refused before anything is allocated 15;16;17;18;19 never -
validity_elision validity_elision an implausible row count on an elided chunk is refused before anything is allocated 15;16;17;18;19 2026-10-16 the no-nulls guard (claims no nulls but does not account for every row) disabled, so a later guard raised the XX001 (mutation, #1339)
validity_elision validity_elision and the backend survives that refusal 15;16;17;18;19 never -
validity_elision validity_elision and the backend survives that refusal too 15;16;17;18;19 never -
validity_elision validity_elision premise: each fixture is a single row group, which is what the expected size assumes 15;16;17;18;19 never -
Expand Down
25 changes: 24 additions & 1 deletion test/check_ledger_budget.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3320,4 +3320,27 @@ suites_not_covered 199
# never 2980 + 10 = 2990
# dated 1191 + 8 = 1199
# 2990 + 1199 == 4189
checks_never_observed_red 2990
# #1339, validity_elision's two guard arms ask which guard refused (jdatcmd): 2990 ->
# 2988. "a chunk claiming no bitmap while it holds fewer values than rows is refused"
# and "an implausible row count on an elided chunk is refused before anything is
# allocated" are dated by disabling the no-nulls guard, after which a later guard
# raised the same XX001. No row is added, removed or renamed.
#
# ledger rows 4189 + 0 = 4189
# never 2990 - 2 = 2988
# dated 1199 + 2 = 1201
# 2988 + 1201 == 4189
# #1339, tier_partition's injected-fault checks are arms, not premises (jdatcmd):
# 2988 -> 2972. Removing the five injected-fault RAISEs from tier_partition reddens
# "the call fails with the fault injected after <step>" for all five steps, so a
# repository change reddens them; with "the first attempt failed after export and
# left its file" they lose the prefix, renamed with their history. The same
# mutation dates the ten "a failure after <step> leaves the rows exactly once, still
# local" and "and no foreign table behind it after <step>" arms, and adds itself to
# the already-dated retry arm. No row is added or removed.
#
# ledger rows 4189 + 0 = 4189
# never 2988 - 16 = 2972
# dated 1201 + 16 = 1217
# 2972 + 1217 == 4189
checks_never_observed_red 2972
4 changes: 2 additions & 2 deletions test/pytest/test_tier_partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ def mover():
cur.execute("RESET pgcolumnar.tier_fault_after")
expect.text(f"injected fault after {step}" if f"injected fault after {step}" in err else err,
f"injected fault after {step}",
f"premise: the call fails with the fault injected after {step}")
f"the call fails with the fault injected after {step}")
expect.text(f"{_digest(conn, 'f')}|{_mar_shape(conn, 'f')}", f"{fb}|r:pgcolumnar:{BOUND}",
f"a failure after {step} leaves the rows exactly once, still local")
expect.num(_one(conn, "SELECT count(*) FROM pg_foreign_table t JOIN pg_class c ON c.oid = t.ftrelid"
Expand Down Expand Up @@ -496,7 +496,7 @@ def moved_reads(t, cols):
cur.execute("RESET pgcolumnar.tier_fault_after")
expect.text(f"{'injected fault after export' if 'injected fault after export' in err else err}|"
f"{'file' if p.exists() else 'nofile'}", "injected fault after export|file",
"premise: the first attempt failed after export and left its file")
"the first attempt failed after export and left its file")
try:
retried = str(_one(conn, _tier("again", p)))
except psycopg.Error as e:
Expand Down
Loading
Loading