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
64 changes: 58 additions & 6 deletions test/check_ledger.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -2426,14 +2426,21 @@ native_decode_gating native_decode_gating the needle removes exactly the non-mat
native_decode_gating native_decode_gating the needle skips exactly the vectors holding no match 15;16;17;18;19 2026-10-16 columnar_reader.c: the per-vector qual evaluation between the decode passes never runs;columnar_reader.c: the per-vector qual evaluator marks every vector skipped
native_decode_gating native_decode_gating the nomatch query returns nothing 15;16;17;18;19 never -
native_decode_gating native_decode_gating the zero-match query removes every row by filter, counted once 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths a DELETE whose qual deletes another row of the table succeeds and leaves heap's rows (#1394) 15;16;17;18;19 2026-10-14 PgColumnarUpsertDeleteVector without the command advance (main before #1394's fix)
native_delete_visibility_paths native_delete_visibility_paths a deleted row is invisible via the index 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths a DELETE whose qual deletes another row of the table succeeds and leaves heap's rows (#1394) 15;16;17;18;19 2026-10-16 PgColumnarUpsertDeleteVector without the command advance (main before #1394's fix);columnar_reader.c: the row-at-a-time scan reads a deleted row as live
native_delete_visibility_paths native_delete_visibility_paths a deleted row is invisible via the index 15;16;17;18;19 2026-10-16 columnar_reader.c: pgcolumnar_fetch_row ignores the flushed delete vector
native_delete_visibility_paths native_delete_visibility_paths a live row is visible via the index 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths a row deleted in-transaction is invisible in the same transaction 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths a row deleted in-transaction is invisible in the same transaction 15;16;17;18;19 2026-10-16 columnar_reader.c: pgcolumnar_fetch_row ignores the flushed delete vector
native_delete_visibility_paths native_delete_visibility_paths aggregate over the whole table sees the live set 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths index / bitmap scan sees the live set 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths index-only scan sees the live set 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths sequential scan sees the live set (row-emitting path) 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths index / bitmap scan sees the live set 15;16;17;18;19 2026-10-16 columnar_reader.c: pgcolumnar_fetch_row ignores the flushed delete vector
native_delete_visibility_paths native_delete_visibility_paths index-only scan sees the live set 15;16;17;18;19 2026-10-16 columnar_reader.c: pgcolumnar_fetch_row ignores the flushed delete vector
native_delete_visibility_paths native_delete_visibility_paths premise: the deletes span more than one row group 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths premise: the index arm really plans an Index Scan 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths premise: the index-only arm really plans an Index Only Scan 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths premise: the sequential arm really plans a Seq Scan 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths premise: the table holds all 5000 rows 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths premise: the whole-table aggregate stays on the columnar path 15;16;17;18;19 never -
native_delete_visibility_paths native_delete_visibility_paths sequential scan sees the live set (row-emitting path) 15;16;17;18;19 2026-10-16 columnar_reader.c: the row-at-a-time scan reads a deleted row as live
native_delete_visibility_paths native_delete_visibility_paths the rolled-back delete left the row in place 15;16;17;18;19 never -
native_dict_underfill native_dict_underfill backend survives the under-filled DICT chunk 15;16;17;18;19 2026-10-16 columnar_encoding.c: the DICT fill refusal replaced by a backend crash
native_dict_underfill native_dict_underfill premise: the inflation rewrote the DICT chunk's descriptor 15;16;17;18;19 never -
native_dict_underfill native_dict_underfill the text column is DICT-encoded (precondition) 15;16;17;18;19 never -
Expand Down Expand Up @@ -2696,6 +2703,19 @@ native_groupagg_batch native_groupagg_batch toggle-differential: two keys [premi
native_groupagg_batch native_groupagg_batch two keys: answers match the heap mirror 15;16;17;18;19 2026-10-16 columnar_vector.c: the grouped fold's gather drops the NULL-key flag, so the NULL group folds into k = 0 (jdatcmd's #1485 review)
native_groupagg_batch native_groupagg_batch two keys: the fold ran (work done) 15;16;17;18;19 2026-10-16 columnar_vector.c: pgcolumnar_groupagg_build never calls the grouped batch fold (the removal proof)
native_groupagg_batch native_groupagg_batch two keys: the grouped node is planned 15;16;17;18;19 never -
native_index native_index duplicate id rejected 15;16;17;18;19 2026-10-16 columnar_tableam.c: pgcolumnar_index_fetch_tuple fetches the neighbouring row number;columnar_tableam.c: pgcolumnar_index_fetch_tuple finds no row
native_index native_index index IN lookup 15;16;17;18;19 2026-10-16 columnar_tableam.c: pgcolumnar_index_fetch_tuple fetches the neighbouring row number;columnar_tableam.c: pgcolumnar_index_fetch_tuple finds no row
native_index native_index index lookup miss returns nothing 15;16;17;18;19 never -
native_index native_index index point lookup 15;16;17;18;19 2026-10-16 columnar_tableam.c: pgcolumnar_index_fetch_tuple fetches the neighbouring row number;columnar_tableam.c: pgcolumnar_index_fetch_tuple finds no row
native_index native_index index range aggregate 15;16;17;18;19 2026-10-16 columnar_tableam.c: pgcolumnar_index_fetch_tuple fetches the neighbouring row number;columnar_tableam.c: pgcolumnar_index_fetch_tuple finds no row
native_index native_index premise: the index IN lookup fetches through n_pkey 15;16;17;18;19 never -
native_index native_index premise: the index lookup miss fetches through n_pkey 15;16;17;18;19 never -
native_index native_index premise: the index point lookup fetches through n_pkey 15;16;17;18;19 never -
native_index native_index premise: the index range aggregate fetches through n_pkey 15;16;17;18;19 never -
native_index native_index row count 15;16;17;18;19 never -
native_index native_index row count unchanged after rejected dup 15;16;17;18;19 2026-10-16 columnar_tableam.c: pgcolumnar_index_fetch_tuple fetches the neighbouring row number;columnar_tableam.c: pgcolumnar_index_fetch_tuple finds no row
native_index native_index unique index admits a new key 15;16;17;18;19 never -
native_index native_index unique index rejects duplicate 15;16;17;18;19 2026-10-16 columnar_tableam.c: pgcolumnar_index_fetch_tuple fetches the neighbouring row number;columnar_tableam.c: pgcolumnar_index_fetch_tuple finds no row
native_index_projection native_index_projection a parallel build projects one column of twenty, not all twenty 15;16;17;18;19 never -
native_index_projection native_index_projection a parallel expression build projects its expression's columns 15;16;17;18;19 2026-10-16 columnar_tableam.c: the index build's projection omits ii_Expressions' columns
native_index_projection native_index_projection a parallel partial build projects the predicate's columns too 15;16;17;18;19 2026-10-16 columnar_tableam.c: the index build's projection omits ii_Predicate's columns
Expand Down Expand Up @@ -2828,6 +2848,38 @@ native_parquet_flba native_parquet_flba pyarrow decimal128 values are exact 15;1
native_parquet_flba native_parquet_flba pyarrow uuid reads as uuid 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a FIXED_LEN_BYTE_ARRAY uuid's bytes are reversed on read
native_parquet_flba native_parquet_flba uuid round-trips through export/read 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a FIXED_LEN_BYTE_ARRAY uuid's bytes are reversed on read
native_parquet_flba native_parquet_flba whole-row round-trip == source 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a FIXED_LEN_BYTE_ARRAY uuid's bytes are reversed on read
native_parquet_multifile native_parquet_multifile EXPLAIN reports 3 files 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile EXPLAIN sums row groups across files 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile FDW(directory) == oracle 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile FIFO named *.parquet is skipped, does not block 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension;columnar_parquet_reader.c: any non-directory entry is a candidate, a FIFO included
native_parquet_multifile native_parquet_multifile _temporary and dot directories are not walked 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension;columnar_parquet_reader.c: the walk descends into names beginning with _ or .
native_parquet_multifile native_parquet_multifile a file whose name starts with _ is skipped too 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension;columnar_parquet_reader.c: the walk descends into names beginning with _ or .
native_parquet_multifile native_parquet_multifile a symlink loop terminates and does not multiply rows 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension;columnar_parquet_reader.c: the walk descends a symlinked directory
native_parquet_multifile native_parquet_multifile a symlinked directory is not descended 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension;columnar_parquet_reader.c: the walk descends a symlinked directory
native_parquet_multifile native_parquet_multifile a symlinked file is still read 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile a tree deeper than the bound is rejected, not truncated 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: the walk has no depth bound
native_parquet_multifile native_parquet_multifile count(*) over directory is correct 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile count(*) over directory reads 0 columns 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile cross-file predicate result == oracle 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile dangling symlink in a glob errors, not skipped 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a path that cannot be stat'ed is dropped instead of handed to the reader
native_parquet_multifile native_parquet_multifile dangling symlink in directory errors, not skipped 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a path that cannot be stat'ed is dropped instead of handed to the reader
native_parquet_multifile native_parquet_multifile directory ignores a subdir named *.parquet 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile directory of only *.parquet subdirs errors 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a directory holding no .parquet files resolves to no files instead of an error
native_parquet_multifile native_parquet_multifile directory read ignores non-parquet files 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile empty directory errors 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a directory holding no .parquet files resolves to no files instead of an error
native_parquet_multifile native_parquet_multifile glob matching only directories errors 15;16;17;18;19 never -
native_parquet_multifile native_parquet_multifile glob part-[01] == first two files 15;16;17;18;19 never -
native_parquet_multifile native_parquet_multifile glob skips a directory match, reads the files 15;16;17;18;19 never -
native_parquet_multifile native_parquet_multifile import_parquet(directory) == oracle 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile import_parquet(directory) row count 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile nested tree reads every level as one relation 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile nested tree row count 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile non-matching glob errors 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a glob matching nothing resolves to no files instead of an error
native_parquet_multifile native_parquet_multifile one column over directory reads 1 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile predicate skips the two non-matching files' groups 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile read_parquet(directory) == oracle 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_multifile native_parquet_multifile schema-mismatched file in directory errors 15;16;17;18;19 never -
native_parquet_multifile native_parquet_multifile tree read order follows the sorted full path 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: a walked directory's files are not sorted;columnar_parquet_reader.c: a walked entry is read whatever its extension
native_parquet_pushdown native_parquet_pushdown INT64-backed DECIMAL: predicate skips 3 of 4 groups 15;16;17;18;19 2026-10-16 columnar_parquet_reader.c: INT64 statistics are not decoded, so an INT64-backed DECIMAL never skips;columnar_parquet_reader.c: pqfdw_compute_skip never marks a row group skippable
native_parquet_pushdown native_parquet_pushdown INT64-backed DECIMAL: skipping did not drop rows 15;16;17;18;19 never -
native_parquet_pushdown native_parquet_pushdown INT64-backed DECIMAL: unfiltered scan skips nothing 15;16;17;18;19 never -
Expand Down
44 changes: 42 additions & 2 deletions test/check_ledger_budget.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#
# Adding a check to a suite that is already covered does not move it, which is
# what makes it safe to bound.
suites_not_covered 195
suites_not_covered 193
#
# checks_never_observed_red -- A CENSUS. NOT a ceiling, and it must not become
# one.
Expand Down Expand Up @@ -3416,4 +3416,44 @@ suites_not_covered 195
# never 3002 + 4 = 3006
# dated 1261 + 11 = 1272
# 3006 + 1272 == 4278
checks_never_observed_red 3006
#
# #1341, native_parquet_multifile seeded, with its twin (OffgridwithJD): 3006 -> 3010,
# and suites_not_covered 195 -> 194. The suite had no rows. It enters with all 32
# checks from five-major runs (32/32 on each of 15-19). 28 are dated by nine
# mutations of the directory walk and glob expansion: an empty directory and an
# unmatched glob reading as nothing, an unstat-able path dropped, a FIFO opened,
# _ and . names walked, a symlinked directory descended, the files unsorted, no
# depth bound, and every extension read. Four arrive never: the three glob arms
# (subset, directory match skipped, only directories) and the schema mismatch.
#
# ledger rows 4278 + 32 = 4310
# never 3006 + 4 = 3010
# dated 1272 + 28 = 1300
# 3010 + 1300 == 4310
#
# #1341, native_index seeded, with its twin (OffgridwithJD): 3010 -> 3017, and
# suites_not_covered 194 -> 193. The suite had no rows. It enters with all 13
# checks from five-major runs (13/13 on each of 15-19). 6 are dated by two
# mutations of pgcolumnar_index_fetch_tuple: the neighbouring row fetched, and no
# row found. Seven arrive never: the four index-path premises, the row count, the
# lookup miss (which no fetch mutation turns into a hit), and the unique index
# admitting a new key.
#
# ledger rows 4310 + 13 = 4323
# never 3010 + 7 = 3017
# dated 1300 + 6 = 1306
# 3017 + 1306 == 4323
#
# #1339, native_delete_visibility_paths' shell arms take the paths they name
# (OffgridwithJD): 3017 -> 3019. Seven checks are new, all never: the six path and
# fixture premises the twin already had, and the rolled-back row. Five arms that
# entered never are now dated: the index / bitmap, index-only, deleted-row-via-index
# and in-transaction arms by pgcolumnar_fetch_row ignoring the delete vector, and
# the sequential arm by the row scan reading a deleted row as live. The #1394 arm
# gains the second in its history.
#
# ledger rows 4323 + 7 = 4330
# never 3017 + 7 - 5 = 3019
# dated 1306 + 5 = 1311
# 3019 + 1311 == 4330
checks_never_observed_red 3019
Loading
Loading