Skip to content

Propagate dolt_diff read failures - #2003

Merged
timsehn merged 1 commit into
masterfrom
fix/diff-read-error-propagation
Aug 6, 2026
Merged

Propagate dolt_diff read failures#2003
timsehn merged 1 commit into
masterfrom
fix/diff-read-error-propagation

Conversation

@timsehn

@timsehn timsehn commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • return failed HEAD catalog reads from dolt_diff working and staged scans instead of treating them as an empty diff
  • separate schema-scan status from the found/not-found result so prolly iterator and cursor failures reach the virtual-table caller
  • release partially opened diff iterators when their initial tree read fails

Failure before

computeWorkingBatch() returned SQLITE_OK whenever loading the HEAD commit failed. A commit_hash='WORKING' query therefore reported zero rows for a missing or unreadable HEAD instead of reporting corruption or I/O failure.

The special dolt_schemas scanners had the same ambiguity: their integer return value represented only whether a view or trigger was found, so iterator-open, iterator-step, cursor-first, and cursor-next failures all became “no schema change.”

Validation

  • new fault-backed regression: 8 passed, 0 failed
  • full C regression: 310,170 passed, 0 failed
  • test/doltlite_diff.sh: 41 passed, 0 failed
  • test/vc_oracle_diff_test.sh: 67 passed, 0 failed
  • test/run_doltlite_tests.sh build/doltlite: 99/99 suites
  • make lint
  • git diff --check

Co-Authored-By: OpenAI Codex noreply@openai.com

Return failed HEAD catalog reads instead of presenting an empty working diff. Separate schema scan status from its boolean result so prolly iterator and cursor failures reach the virtual-table caller, and close partially opened diff iterators on error.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

DoltLite source coverage

Metric Covered Total Coverage
Lines 43041 51009 84.38%
Branches 18851 28152 66.96%
Functions 2097 2296 91.33%

Merged 164 pooled raw profiles from the distributed Linux correctness jobs.

Per-file coverage (91 files)
File Lines Branches Functions
src/btree_orig_api.c 85.87% 76.19% 87.18%
src/chunk_file.c 100.00% 100.00% 100.00%
src/chunk_index.c 88.76% 76.47% 100.00%
src/chunk_refs.c 99.35% 85.48% 100.00%
src/chunk_staging.c 87.50% 77.05% 94.12%
src/chunk_store.c 91.01% 75.00% 100.00%
src/chunk_store_commit.c 86.32% 66.96% 100.00%
src/chunk_store_lock.c 94.25% 77.47% 100.00%
src/chunk_store_refs_api.c 91.52% 77.40% 100.00%
src/chunk_wal.c 94.24% 75.00% 92.86%
src/doltlite.c 100.00% 100.00% 100.00%
src/doltlite_add.c 85.19% 67.71% 100.00%
src/doltlite_ancestor.c 88.68% 66.11% 100.00%
src/doltlite_at.c 77.98% 59.93% 94.12%
src/doltlite_blame.c 80.70% 58.94% 96.43%
src/doltlite_branch.c 85.28% 81.98% 100.00%
src/doltlite_branches.c 93.51% 76.14% 92.86%
src/doltlite_checkout.c 76.28% 59.67% 100.00%
src/doltlite_cherry_pick.c 70.53% 55.08% 71.43%
src/doltlite_chunk_walk.c 88.60% 64.19% 100.00%
src/doltlite_cmd.c 69.23% 60.83% 93.33%
src/doltlite_commit.c 93.22% 73.08% 100.00%
src/doltlite_commit_ancestors.c 90.65% 68.89% 92.31%
src/doltlite_commit_cmd.c 75.72% 69.42% 100.00%
src/doltlite_config.c 77.54% 71.43% 100.00%
src/doltlite_conflicts.c 81.83% 58.92% 93.44%
src/doltlite_constraint_violations.c 81.56% 55.91% 92.86%
src/doltlite_core.c 91.69% 72.22% 100.00%
src/doltlite_creds.c 84.01% 54.75% 89.74%
src/doltlite_dbpage.c 92.68% 73.21% 91.67%
src/doltlite_diff.c 87.88% 69.04% 96.43%
src/doltlite_diff_stat.c 94.09% 74.90% 95.56%
src/doltlite_diff_table.c 93.78% 68.45% 97.14%
src/doltlite_gc.c 77.11% 56.01% 96.30%
src/doltlite_hashof.c 75.64% 62.86% 94.44%
src/doltlite_history.c 85.61% 70.55% 100.00%
src/doltlite_http_remote.c 82.22% 57.17% 92.31%
src/doltlite_ignore.c 90.06% 66.67% 100.00%
src/doltlite_log.c 94.38% 70.16% 92.31%
src/doltlite_merge.c 96.94% 74.49% 100.00%
src/doltlite_merge_cmd.c 88.89% 73.50% 100.00%
src/doltlite_merge_constraints.c 88.25% 67.65% 100.00%
src/doltlite_merge_constraints_check.c 92.68% 65.76% 100.00%
src/doltlite_merge_constraints_fk.c 77.09% 55.86% 85.71%
src/doltlite_merge_constraints_unique.c 86.50% 64.37% 100.00%
src/doltlite_merge_pass1.c 91.02% 74.87% 100.00%
src/doltlite_merge_pass2.c 62.90% 57.69% 100.00%
src/doltlite_merge_rows.c 88.25% 69.37% 100.00%
src/doltlite_merge_schema.c 84.75% 63.03% 96.55%
src/doltlite_merge_status.c 91.98% 73.53% 92.31%
src/doltlite_patch.c 94.92% 74.25% 97.83%
src/doltlite_rebase.c 85.57% 59.77% 100.00%
src/doltlite_record.c 75.90% 57.54% 92.86%
src/doltlite_ref.c 98.91% 84.48% 100.00%
src/doltlite_remote.c 81.98% 63.65% 95.92%
src/doltlite_remote_sql.c 63.89% 55.98% 92.86%
src/doltlite_remotesrv.c 75.94% 65.14% 90.62%
src/doltlite_reset.c 86.10% 71.53% 100.00%
src/doltlite_revert.c 79.29% 68.18% 100.00%
src/doltlite_schema_diff.c 92.38% 69.46% 96.88%
src/doltlite_schemas.c 68.97% 44.87% 90.91%
src/doltlite_status.c 92.46% 71.84% 97.22%
src/doltlite_tag.c 79.72% 56.06% 93.33%
src/doltlite_tls.c 85.04% 62.73% 92.31%
src/doltlite_verify_constraints.c 74.11% 58.46% 100.00%
src/doltlite_workspace.c 89.46% 65.50% 100.00%
src/pager_shim.c 58.00% 64.73% 32.37%
src/prolly_btree.c 81.21% 63.06% 86.40%
src/prolly_btree_catalog.c 80.81% 66.17% 96.67%
src/prolly_btree_cursor.c 86.32% 62.69% 97.92%
src/prolly_btree_cursor_count.c 78.78% 55.70% 100.00%
src/prolly_btree_cursor_payload.c 78.81% 60.38% 94.12%
src/prolly_btree_cursor_seek.c 73.88% 61.69% 82.35%
src/prolly_btree_mutation.c 85.54% 65.05% 97.92%
src/prolly_btree_orig.c 83.44% 35.71% 87.67%
src/prolly_btree_state.c 93.89% 67.48% 100.00%
src/prolly_btree_txn.c 82.63% 69.75% 98.00%
src/prolly_cache.c 93.24% 69.70% 100.00%
src/prolly_check.c 60.36% 62.96% 100.00%
src/prolly_chunker.c 94.04% 78.38% 100.00%
src/prolly_cursor.c 89.62% 80.95% 100.00%
src/prolly_diff.c 52.48% 38.62% 60.87%
src/prolly_hash.c 93.65% 80.00% 100.00%
src/prolly_hashset.c 90.48% 80.56% 100.00%
src/prolly_mutate.c 87.07% 78.08% 100.00%
src/prolly_mutmap.c 92.95% 80.22% 100.00%
src/prolly_node.c 89.25% 73.64% 100.00%
src/prolly_three_way_diff.c 95.58% 85.90% 100.00%
src/prolly_three_way_merge.c 80.78% 66.67% 91.67%
src/prolly_xxhash.c 100.00% 100.00% 100.00%
src/sortkey.c 93.06% 80.14% 100.00%

Download HTML and LCOV artifacts from this workflow run.

@itoqa

itoqa Bot commented Aug 6, 2026

Copy link
Copy Markdown

Ito QA test results
Commit: 5a406e6: 14 test cases ran, 14 passed ✅.

Summary

Coverage spans normal schema and data-change detection, historical and staged/working comparisons, and recovery after damaged or missing saved state. It also exercises adversarial read failures and retries, verifying that errors surface cleanly without fabricated, partial, stale, or duplicate results and that valid scans recover afterward.

Safe to merge — the exercised behavior is healthy across normal flows and failure-recovery paths, with no PR-attributable regressions or unresolved failures. No merge blocker is indicated by this run.

Tests run by Ito

View full run

Result Severity Type Description
Cursor A schema cursor read failure is returned as an error, and the diff does not add a made-up row.
Cursor The schema diff reports data_change=1 and schema_change=0 when the old root already has a view or trigger, and reports data_change=1 and schema_change=1 when the object is new.
Head A WORKING diff with a missing non-empty HEAD returned a SQLite error instead of falsely reporting zero changes.
Head The staged scan succeeds when no staged catalog is saved and correctly uses the current saved version as its baseline.
Head Both the staged and unfiltered change scans returned an error when the saved HEAD was damaged, instead of showing an empty result.
Head After a temporary WORKING query fault, the same connection returned the expected staged changes for STAGED and the expected working-only changes for WORKING.
Iterator Creating a view after the base revision produced the expected schema change row in the working diff.
Iterator A forced schema-iterator open error was returned to SQL, and the query produced no partial schema row.
Iterator The database returned an error for each simulated read failure, then returned one valid schema row after the failures were removed.
Retry After the schema scan failed, running the same query again returned one correct schema row without stale data.
Retry The first scan failed as expected when the cursor read was interrupted. After the fault was removed, the same scan returned one correct schema row.
Retry A normal historical scan completed successfully and returned the expected history rows while no fault was enabled.
Retry After a schema scan fails, the next try returns one current row without stale or duplicate data.
Retry A damaged HEAD returned an error without exposing partial diff rows, and a fresh scan worked after the catalog was restored.

Tip

Reply with @itoqa to send us feedback on this test run.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

DoltLite performance vs PR base

  • Baseline: b92cd62873d350b7da2fb28e06a31ecea744618c
  • Candidate: 8f6e90b0a0528631cda305f5503172ee41653cc7
  • Overall ratio: 1.000x
  • Gate result: PASS
  • Gates: individual > 1.25x with more than 5.00ms regression; section, suite, or overall > 1.15x with the same minimum delta
  • vc individual gate: > 1.50x with more than 25.00ms regression
  • Confirmed failed gates: none
  • Automatic retries: compositepk cleared after 3 attempts; no gate failed every time
Suite Workloads Baseline total Candidate total Ratio Result
blobpk 69 11.72s 11.83s 1.009x PASS
compositepk 69 9.16s 9.25s 1.010x PASS
int 69 11.25s 11.25s 0.999x PASS
textpk 69 11.79s 11.62s 0.985x PASS
vc 13 954.10ms 954.01ms 1.000x PASS
blobpk details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 35.30ms 34.74ms -552us 0.984x PASS
mem_reads oltp_range_select 13.72ms 13.81ms +94us 1.007x PASS
mem_reads oltp_sum_range 13.23ms 13.30ms +72us 1.005x PASS
mem_reads oltp_order_range 3.17ms 3.19ms +17us 1.005x PASS
mem_reads oltp_distinct_range 4.15ms 4.21ms +55us 1.013x PASS
mem_reads oltp_index_scan 6.06ms 6.02ms -40us 0.993x PASS
mem_reads select_random_points 20.87ms 20.08ms -794us 0.962x PASS
mem_reads select_random_ranges 5.29ms 5.24ms -59us 0.989x PASS
mem_reads covering_index_scan 4.69ms 4.76ms +73us 1.016x PASS
mem_reads groupby_scan 35.51ms 35.32ms -193us 0.995x PASS
mem_reads index_join 9.68ms 9.20ms -480us 0.950x PASS
mem_reads index_join_scan 5.77ms 5.69ms -79us 0.986x PASS
mem_reads types_table_scan 1.26s 1.28s +19.07ms 1.015x PASS
mem_reads table_scan 1.39s 1.40s +13.74ms 1.010x PASS
mem_reads oltp_read_only 128.76ms 129.38ms +620us 1.005x PASS
mem_writes oltp_bulk_insert 338.29ms 332.44ms -5.85ms 0.983x PASS
mem_writes oltp_insert 39.40ms 39.60ms +201us 1.005x PASS
mem_writes oltp_update_index 134.97ms 133.59ms -1.37ms 0.990x PASS
mem_writes oltp_update_non_index 85.12ms 85.19ms +63us 1.001x PASS
mem_writes oltp_delete_insert 103.67ms 104.28ms +612us 1.006x PASS
mem_writes oltp_write_only 64.16ms 63.57ms -588us 0.991x PASS
mem_writes types_delete_insert 52.80ms 53.41ms +615us 1.012x PASS
mem_writes oltp_read_write 133.70ms 134.32ms +628us 1.005x PASS
file_reads oltp_point_select 63.49ms 62.73ms -766us 0.988x PASS
file_reads oltp_range_select 16.30ms 16.49ms +191us 1.012x PASS
file_reads oltp_sum_range 15.85ms 15.99ms +148us 1.009x PASS
file_reads oltp_order_range 3.51ms 3.53ms +14us 1.004x PASS
file_reads oltp_distinct_range 4.52ms 4.53ms +7us 1.002x PASS
file_reads oltp_index_scan 9.07ms 9.12ms +43us 1.005x PASS
file_reads select_random_points 22.80ms 23.19ms +385us 1.017x PASS
file_reads select_random_ranges 8.19ms 8.11ms -85us 0.990x PASS
file_reads covering_index_scan 7.77ms 7.68ms -89us 0.989x PASS
file_reads groupby_scan 35.75ms 36.11ms +355us 1.010x PASS
file_reads index_join 11.28ms 11.35ms +62us 1.005x PASS
file_reads index_join_scan 6.28ms 6.09ms -190us 0.970x PASS
file_reads types_table_scan 1.26s 1.28s +19.84ms 1.016x PASS
file_reads table_scan 1.38s 1.39s +11.30ms 1.008x PASS
file_reads oltp_read_only 171.68ms 173.93ms +2.25ms 1.013x PASS
file_writes oltp_bulk_insert 361.44ms 357.40ms -4.04ms 0.989x PASS
file_writes oltp_insert 52.83ms 51.26ms -1.57ms 0.970x PASS
file_writes oltp_update_index 164.82ms 164.19ms -629us 0.996x PASS
file_writes oltp_update_non_index 108.42ms 108.66ms +235us 1.002x PASS
file_writes oltp_delete_insert 131.81ms 131.95ms +146us 1.001x PASS
file_writes oltp_write_only 85.42ms 86.58ms +1.16ms 1.014x PASS
file_writes types_delete_insert 71.72ms 71.28ms -435us 0.994x PASS
file_writes oltp_read_write 155.81ms 156.03ms +212us 1.001x PASS
ac_reads oltp_point_select 62.71ms 62.98ms +263us 1.004x PASS
ac_reads oltp_range_select 16.28ms 16.58ms +294us 1.018x PASS
ac_reads oltp_sum_range 15.97ms 16.16ms +186us 1.012x PASS
ac_reads oltp_order_range 3.49ms 3.56ms +64us 1.018x PASS
ac_reads oltp_distinct_range 4.50ms 4.51ms +9us 1.002x PASS
ac_reads oltp_index_scan 9.07ms 9.13ms +52us 1.006x PASS
ac_reads select_random_points 23.15ms 23.49ms +344us 1.015x PASS
ac_reads select_random_ranges 8.13ms 8.14ms +10us 1.001x PASS
ac_reads covering_index_scan 7.67ms 7.71ms +41us 1.005x PASS
ac_reads groupby_scan 35.83ms 36.03ms +204us 1.006x PASS
ac_reads index_join 11.34ms 11.59ms +247us 1.022x PASS
ac_reads index_join_scan 6.28ms 6.15ms -131us 0.979x PASS
ac_reads types_table_scan 1.26s 1.27s +16.03ms 1.013x PASS
ac_reads table_scan 1.38s 1.40s +21.34ms 1.016x PASS
ac_reads oltp_read_only 169.49ms 170.51ms +1.02ms 1.006x PASS
ac_writes oltp_bulk_insert_ac 63.94ms 64.50ms +554us 1.009x PASS
ac_writes oltp_insert_ac 88.84ms 85.53ms -3.32ms 0.963x PASS
ac_writes oltp_update_index_ac 98.37ms 102.18ms +3.81ms 1.039x PASS
ac_writes oltp_update_non_index_ac 79.41ms 78.17ms -1.25ms 0.984x PASS
ac_writes oltp_delete_insert_ac 88.87ms 92.68ms +3.81ms 1.043x PASS
ac_writes oltp_write_only_ac 89.33ms 92.82ms +3.49ms 1.039x PASS
ac_writes types_delete_insert_ac 74.17ms 74.66ms +483us 1.007x PASS
ac_writes oltp_read_write_ac 97.15ms 100.76ms +3.61ms 1.037x PASS
compositepk details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 23.32ms 22.59ms -737us 0.968x PASS
mem_reads oltp_range_select 12.61ms 11.05ms -1.56ms 0.876x PASS
mem_reads oltp_sum_range 10.94ms 11.04ms +101us 1.009x PASS
mem_reads oltp_order_range 2.33ms 2.17ms -158us 0.932x PASS
mem_reads oltp_distinct_range 2.84ms 2.69ms -154us 0.946x PASS
mem_reads oltp_index_scan 3.50ms 3.66ms +161us 1.046x PASS
mem_reads select_random_points 18.91ms 19.95ms +1.05ms 1.055x PASS
mem_reads select_random_ranges 5.06ms 5.07ms +7us 1.001x PASS
mem_reads covering_index_scan 2.51ms 2.69ms +179us 1.071x PASS
mem_reads groupby_scan 22.81ms 21.63ms -1.18ms 0.948x PASS
mem_reads index_join 6.04ms 6.15ms +115us 1.019x PASS
mem_reads index_join_scan 4.09ms 4.17ms +76us 1.019x PASS
mem_reads types_table_scan 759.07ms 769.08ms +10.01ms 1.013x PASS
mem_reads table_scan 838.67ms 856.97ms +18.30ms 1.022x PASS
mem_reads oltp_read_only 95.90ms 90.29ms -5.61ms 0.942x PASS
mem_writes oltp_bulk_insert 209.00ms 208.30ms -700us 0.997x PASS
mem_writes oltp_insert 22.70ms 22.53ms -163us 0.993x PASS
mem_writes oltp_update_index 76.60ms 78.41ms +1.82ms 1.024x PASS
mem_writes oltp_update_non_index 54.28ms 54.18ms -100us 0.998x PASS
mem_writes oltp_delete_insert 60.46ms 60.23ms -238us 0.996x PASS
mem_writes oltp_write_only 38.41ms 38.09ms -312us 0.992x PASS
mem_writes types_delete_insert 34.17ms 34.01ms -161us 0.995x PASS
mem_writes oltp_read_write 86.98ms 85.35ms -1.62ms 0.981x PASS
file_reads oltp_point_select 42.90ms 42.25ms -645us 0.985x PASS
file_reads oltp_range_select 14.30ms 13.35ms -944us 0.934x PASS
file_reads oltp_sum_range 13.17ms 13.24ms +71us 1.005x PASS
file_reads oltp_order_range 2.60ms 2.44ms -151us 0.942x PASS
file_reads oltp_distinct_range 3.10ms 2.97ms -126us 0.959x PASS
file_reads oltp_index_scan 5.74ms 5.83ms +86us 1.015x PASS
file_reads select_random_points 21.77ms 20.91ms -862us 0.960x PASS
file_reads select_random_ranges 7.13ms 7.14ms +12us 1.002x PASS
file_reads covering_index_scan 4.59ms 4.61ms +19us 1.004x PASS
file_reads groupby_scan 22.97ms 21.82ms -1.14ms 0.950x PASS
file_reads index_join 7.63ms 7.50ms -128us 0.983x PASS
file_reads index_join_scan 4.22ms 4.25ms +27us 1.006x PASS
file_reads types_table_scan 760.08ms 759.64ms -446us 0.999x PASS
file_reads table_scan 848.92ms 842.24ms -6.68ms 0.992x PASS
file_reads oltp_read_only 118.73ms 114.99ms -3.74ms 0.969x PASS
file_writes oltp_bulk_insert 272.92ms 260.47ms -12.45ms 0.954x PASS
file_writes oltp_insert 38.88ms 38.55ms -324us 0.992x PASS
file_writes oltp_update_index 147.69ms 181.56ms +33.88ms 1.229x PASS
file_writes oltp_update_non_index 119.68ms 149.19ms +29.51ms 1.247x PASS
file_writes oltp_delete_insert 121.20ms 130.70ms +9.50ms 1.078x PASS
file_writes oltp_write_only 98.96ms 94.66ms -4.30ms 0.957x PASS
file_writes types_delete_insert 76.33ms 76.44ms +110us 1.001x PASS
file_writes oltp_read_write 139.36ms 139.25ms -107us 0.999x PASS
ac_reads oltp_point_select 43.21ms 43.09ms -123us 0.997x PASS
ac_reads oltp_range_select 14.48ms 13.34ms -1.14ms 0.921x PASS
ac_reads oltp_sum_range 13.12ms 13.33ms +214us 1.016x PASS
ac_reads oltp_order_range 2.60ms 2.49ms -106us 0.959x PASS
ac_reads oltp_distinct_range 3.12ms 3.00ms -119us 0.962x PASS
ac_reads oltp_index_scan 6.23ms 6.06ms -174us 0.972x PASS
ac_reads select_random_points 21.34ms 21.65ms +316us 1.015x PASS
ac_reads select_random_ranges 7.25ms 7.24ms -12us 0.998x PASS
ac_reads covering_index_scan 5.08ms 5.09ms +12us 1.002x PASS
ac_reads groupby_scan 23.07ms 22.07ms -1.00ms 0.957x PASS
ac_reads index_join 8.14ms 8.18ms +42us 1.005x PASS
ac_reads index_join_scan 4.29ms 4.31ms +16us 1.004x PASS
ac_reads types_table_scan 769.32ms 783.45ms +14.13ms 1.018x PASS
ac_reads table_scan 857.74ms 867.17ms +9.43ms 1.011x PASS
ac_reads oltp_read_only 122.20ms 118.16ms -4.04ms 0.967x PASS
ac_writes oltp_bulk_insert_ac 507.60ms 274.70ms -232.90ms 0.541x PASS
ac_writes oltp_insert_ac 279.09ms 305.68ms +26.59ms 1.095x PASS
ac_writes oltp_update_index_ac 192.69ms 242.78ms +50.09ms 1.260x TRANSIENT
ac_writes oltp_update_non_index_ac 148.61ms 164.20ms +15.59ms 1.105x PASS
ac_writes oltp_delete_insert_ac 350.35ms 525.83ms +175.48ms 1.501x TRANSIENT
ac_writes oltp_write_only_ac 166.04ms 115.32ms -50.73ms 0.694x PASS
ac_writes types_delete_insert_ac 99.34ms 109.04ms +9.70ms 1.098x PASS
ac_writes oltp_read_write_ac 232.10ms 248.69ms +16.59ms 1.071x PASS
int details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 28.14ms 28.24ms +98us 1.003x PASS
mem_reads oltp_range_select 12.22ms 12.16ms -59us 0.995x PASS
mem_reads oltp_sum_range 11.73ms 11.55ms -174us 0.985x PASS
mem_reads oltp_order_range 2.90ms 2.91ms +7us 1.002x PASS
mem_reads oltp_distinct_range 3.91ms 3.92ms +9us 1.002x PASS
mem_reads oltp_index_scan 5.23ms 5.26ms +32us 1.006x PASS
mem_reads select_random_points 11.32ms 11.30ms -11us 0.999x PASS
mem_reads select_random_ranges 4.14ms 4.15ms +9us 1.002x PASS
mem_reads covering_index_scan 4.36ms 4.36ms -2us 1.000x PASS
mem_reads groupby_scan 34.77ms 34.46ms -314us 0.991x PASS
mem_reads index_join 8.21ms 8.10ms -106us 0.987x PASS
mem_reads index_join_scan 4.91ms 4.90ms -13us 0.997x PASS
mem_reads types_table_scan 1.28s 1.29s +9.19ms 1.007x PASS
mem_reads table_scan 1.40s 1.40s +1.37ms 1.001x PASS
mem_reads oltp_read_only 117.12ms 116.68ms -443us 0.996x PASS
mem_writes oltp_bulk_insert 243.70ms 244.22ms +523us 1.002x PASS
mem_writes oltp_insert 28.51ms 28.87ms +359us 1.013x PASS
mem_writes oltp_update_index 111.56ms 111.56ms +0us 1.000x PASS
mem_writes oltp_update_non_index 60.45ms 60.82ms +367us 1.006x PASS
mem_writes oltp_delete_insert 83.42ms 81.36ms -2.07ms 0.975x PASS
mem_writes oltp_write_only 46.52ms 47.15ms +633us 1.014x PASS
mem_writes types_delete_insert 41.12ms 40.98ms -146us 0.996x PASS
mem_writes oltp_read_write 108.73ms 109.16ms +431us 1.004x PASS
file_reads oltp_point_select 56.37ms 55.81ms -562us 0.990x PASS
file_reads oltp_range_select 14.96ms 15.02ms +61us 1.004x PASS
file_reads oltp_sum_range 14.59ms 14.56ms -27us 0.998x PASS
file_reads oltp_order_range 3.25ms 3.21ms -39us 0.988x PASS
file_reads oltp_distinct_range 4.22ms 4.23ms +7us 1.002x PASS
file_reads oltp_index_scan 8.23ms 8.21ms -18us 0.998x PASS
file_reads select_random_points 14.55ms 14.52ms -27us 0.998x PASS
file_reads select_random_ranges 6.87ms 6.85ms -15us 0.998x PASS
file_reads covering_index_scan 7.30ms 7.38ms +78us 1.011x PASS
file_reads groupby_scan 35.07ms 34.69ms -383us 0.989x PASS
file_reads index_join 10.20ms 10.15ms -52us 0.995x PASS
file_reads index_join_scan 5.43ms 5.28ms -157us 0.971x PASS
file_reads types_table_scan 1.31s 1.29s -14.96ms 0.989x PASS
file_reads table_scan 1.41s 1.40s -1.90ms 0.999x PASS
file_reads oltp_read_only 159.64ms 157.19ms -2.45ms 0.985x PASS
file_writes oltp_bulk_insert 264.78ms 262.29ms -2.49ms 0.991x PASS
file_writes oltp_insert 36.10ms 35.66ms -449us 0.988x PASS
file_writes oltp_update_index 132.74ms 131.38ms -1.36ms 0.990x PASS
file_writes oltp_update_non_index 80.99ms 81.61ms +621us 1.008x PASS
file_writes oltp_delete_insert 102.22ms 101.22ms -1.00ms 0.990x PASS
file_writes oltp_write_only 66.10ms 66.35ms +252us 1.004x PASS
file_writes types_delete_insert 54.09ms 54.17ms +88us 1.002x PASS
file_writes oltp_read_write 127.93ms 128.80ms +868us 1.007x PASS
ac_reads oltp_point_select 56.31ms 55.73ms -580us 0.990x PASS
ac_reads oltp_range_select 15.09ms 15.29ms +195us 1.013x PASS
ac_reads oltp_sum_range 14.73ms 14.61ms -120us 0.992x PASS
ac_reads oltp_order_range 3.25ms 3.24ms -14us 0.996x PASS
ac_reads oltp_distinct_range 4.22ms 4.20ms -19us 0.996x PASS
ac_reads oltp_index_scan 8.32ms 8.21ms -102us 0.988x PASS
ac_reads select_random_points 14.41ms 14.47ms +67us 1.005x PASS
ac_reads select_random_ranges 6.95ms 6.83ms -120us 0.983x PASS
ac_reads covering_index_scan 7.35ms 7.36ms +4us 1.001x PASS
ac_reads groupby_scan 35.00ms 34.67ms -336us 0.990x PASS
ac_reads index_join 10.22ms 10.06ms -156us 0.985x PASS
ac_reads index_join_scan 5.33ms 5.28ms -50us 0.991x PASS
ac_reads types_table_scan 1.29s 1.29s +8.72ms 1.007x PASS
ac_reads table_scan 1.41s 1.40s -9.96ms 0.993x PASS
ac_reads oltp_read_only 158.12ms 157.79ms -338us 0.998x PASS
ac_writes oltp_bulk_insert_ac 61.95ms 61.23ms -721us 0.988x PASS
ac_writes oltp_insert_ac 81.85ms 78.29ms -3.56ms 0.956x PASS
ac_writes oltp_update_index_ac 94.32ms 100.09ms +5.77ms 1.061x PASS
ac_writes oltp_update_non_index_ac 74.03ms 71.16ms -2.88ms 0.961x PASS
ac_writes oltp_delete_insert_ac 82.80ms 89.52ms +6.72ms 1.081x PASS
ac_writes oltp_write_only_ac 88.09ms 81.79ms -6.30ms 0.928x PASS
ac_writes types_delete_insert_ac 69.45ms 75.75ms +6.31ms 1.091x PASS
ac_writes oltp_read_write_ac 91.27ms 96.33ms +5.06ms 1.055x PASS
textpk details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 36.73ms 36.80ms +66us 1.002x PASS
mem_reads oltp_range_select 14.07ms 14.02ms -52us 0.996x PASS
mem_reads oltp_sum_range 13.96ms 14.02ms +60us 1.004x PASS
mem_reads oltp_order_range 3.12ms 3.11ms -15us 0.995x PASS
mem_reads oltp_distinct_range 4.22ms 4.19ms -36us 0.991x PASS
mem_reads oltp_index_scan 6.09ms 6.06ms -35us 0.994x PASS
mem_reads select_random_points 20.82ms 20.84ms +12us 1.001x PASS
mem_reads select_random_ranges 5.08ms 5.11ms +29us 1.006x PASS
mem_reads covering_index_scan 4.35ms 4.27ms -80us 0.982x PASS
mem_reads groupby_scan 34.57ms 34.01ms -559us 0.984x PASS
mem_reads index_join 8.72ms 8.74ms +18us 1.002x PASS
mem_reads index_join_scan 5.34ms 5.25ms -90us 0.983x PASS
mem_reads types_table_scan 1.25s 1.22s -25.04ms 0.980x PASS
mem_reads table_scan 1.38s 1.35s -26.30ms 0.981x PASS
mem_reads oltp_read_only 136.17ms 135.40ms -765us 0.994x PASS
mem_writes oltp_bulk_insert 353.61ms 349.57ms -4.04ms 0.989x PASS
mem_writes oltp_insert 39.22ms 39.15ms -68us 0.998x PASS
mem_writes oltp_update_index 130.81ms 131.39ms +573us 1.004x PASS
mem_writes oltp_update_non_index 85.68ms 85.63ms -50us 0.999x PASS
mem_writes oltp_delete_insert 102.41ms 102.01ms -406us 0.996x PASS
mem_writes oltp_write_only 60.71ms 60.86ms +147us 1.002x PASS
mem_writes types_delete_insert 54.43ms 54.08ms -346us 0.994x PASS
mem_writes oltp_read_write 140.19ms 137.76ms -2.43ms 0.983x PASS
file_reads oltp_point_select 61.12ms 60.92ms -202us 0.997x PASS
file_reads oltp_range_select 16.64ms 16.64ms +2us 1.000x PASS
file_reads oltp_sum_range 16.46ms 16.74ms +274us 1.017x PASS
file_reads oltp_order_range 3.47ms 3.44ms -33us 0.990x PASS
file_reads oltp_distinct_range 4.57ms 4.55ms -24us 0.995x PASS
file_reads oltp_index_scan 8.97ms 8.86ms -119us 0.987x PASS
file_reads select_random_points 24.38ms 24.16ms -213us 0.991x PASS
file_reads select_random_ranges 7.65ms 7.62ms -29us 0.996x PASS
file_reads covering_index_scan 7.08ms 7.17ms +90us 1.013x PASS
file_reads groupby_scan 34.92ms 34.67ms -253us 0.993x PASS
file_reads index_join 11.18ms 11.06ms -125us 0.989x PASS
file_reads index_join_scan 5.99ms 5.99ms -5us 0.999x PASS
file_reads types_table_scan 1.25s 1.21s -36.91ms 0.970x PASS
file_reads table_scan 1.38s 1.35s -23.44ms 0.983x PASS
file_reads oltp_read_only 172.51ms 170.66ms -1.85ms 0.989x PASS
file_writes oltp_bulk_insert 381.65ms 378.08ms -3.58ms 0.991x PASS
file_writes oltp_insert 51.03ms 51.81ms +784us 1.015x PASS
file_writes oltp_update_index 164.31ms 166.60ms +2.29ms 1.014x PASS
file_writes oltp_update_non_index 110.57ms 109.89ms -682us 0.994x PASS
file_writes oltp_delete_insert 130.59ms 131.51ms +921us 1.007x PASS
file_writes oltp_write_only 82.86ms 83.43ms +567us 1.007x PASS
file_writes types_delete_insert 73.05ms 72.64ms -415us 0.994x PASS
file_writes oltp_read_write 161.82ms 160.21ms -1.61ms 0.990x PASS
ac_reads oltp_point_select 61.05ms 61.45ms +394us 1.006x PASS
ac_reads oltp_range_select 16.67ms 16.72ms +43us 1.003x PASS
ac_reads oltp_sum_range 16.55ms 16.82ms +274us 1.017x PASS
ac_reads oltp_order_range 3.46ms 3.47ms +10us 1.003x PASS
ac_reads oltp_distinct_range 4.56ms 4.61ms +42us 1.009x PASS
ac_reads oltp_index_scan 8.83ms 8.98ms +155us 1.018x PASS
ac_reads select_random_points 24.71ms 24.44ms -268us 0.989x PASS
ac_reads select_random_ranges 7.72ms 7.62ms -97us 0.987x PASS
ac_reads covering_index_scan 7.20ms 7.17ms -21us 0.997x PASS
ac_reads groupby_scan 34.64ms 34.39ms -253us 0.993x PASS
ac_reads index_join 10.95ms 11.04ms +92us 1.008x PASS
ac_reads index_join_scan 6.00ms 5.91ms -84us 0.986x PASS
ac_reads types_table_scan 1.24s 1.21s -27.06ms 0.978x PASS
ac_reads table_scan 1.37s 1.35s -27.46ms 0.980x PASS
ac_reads oltp_read_only 170.54ms 171.23ms +687us 1.004x PASS
ac_writes oltp_bulk_insert_ac 76.20ms 77.32ms +1.12ms 1.015x PASS
ac_writes oltp_insert_ac 92.81ms 93.82ms +1.01ms 1.011x PASS
ac_writes oltp_update_index_ac 108.46ms 109.59ms +1.13ms 1.010x PASS
ac_writes oltp_update_non_index_ac 87.68ms 90.19ms +2.51ms 1.029x PASS
ac_writes oltp_delete_insert_ac 102.44ms 99.78ms -2.66ms 0.974x PASS
ac_writes oltp_write_only_ac 99.18ms 100.30ms +1.12ms 1.011x PASS
ac_writes types_delete_insert_ac 88.46ms 88.82ms +364us 1.004x PASS
ac_writes oltp_read_write_ac 108.05ms 106.61ms -1.45ms 0.987x PASS
vc details
Section Test Baseline Candidate Delta Ratio Result
vc status_clean_many_tables 83.77ms 83.61ms -156us 0.998x PASS
vc status_dirty_many_tables 87.02ms 87.32ms +298us 1.003x PASS
vc diff_regular_working_one_table 79.44ms 79.16ms -279us 0.996x PASS
vc diff_regular_working_many_tables 92.89ms 92.94ms +59us 1.001x PASS
vc diff_stat_working_many_tables 93.35ms 93.04ms -318us 0.997x PASS
vc diff_schema_working_many_tables 92.87ms 93.68ms +807us 1.009x PASS
vc branch_list_many_branches 24.47ms 24.31ms -160us 0.993x PASS
vc branch_create_delete 27.69ms 27.34ms -348us 0.987x PASS
vc checkout_branch_clean 58.66ms 58.44ms -216us 0.996x PASS
vc merge_data_no_conflicts 31.72ms 31.62ms -98us 0.997x PASS
vc merge_schema_no_conflicts 24.46ms 24.47ms +12us 1.000x PASS
vc merge_data_conflicts 128.90ms 129.15ms +248us 1.002x PASS
vc merge_data_conflicts_with_resolve 128.87ms 128.94ms +64us 1.000x PASS

All relative performance gates passed.

@timsehn
timsehn merged commit 71e32e3 into master Aug 6, 2026
117 of 118 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant