Skip to content

Emit every merge parent from dolt_diff to_commit filters - #2550

Merged
timsehn merged 1 commit into
masterfrom
fix/2538-diff-merge-to-commit
Sep 2, 2026
Merged

Emit every merge parent from dolt_diff to_commit filters#2550
timsehn merged 1 commit into
masterfrom
fix/2538-diff-merge-to-commit

Conversation

@timsehn

@timsehn timsehn commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Fixes #2538.

WHERE to_commit = <hash of a merge commit> (and to_commit='HEAD' when HEAD is a merge) went through buildCommitDiffPair, which built a single pair from parent 0. The unconstrained dolt_diff_<t> scan already emits one pair per parent, and Dolt 2.3.1 returns both under the same hash filter. Unary +to_commit blocked the EQ pushdown and showed the true count; omit=1 on the constraint meant the missing parent never came back via a recheck.

Loop every parent in the pushdown path, skipping a parent only when that parent's table/schema roots match the merge. Root commits still emit one empty-from pair.

test/doltlite_diff_table.sh is the issue repro: filtered count matches +to_commit, both keys appear, to_commit='HEAD' resolves both parents. vc_oracle_diff_tvf_test.sh pins Dolt 2.3.1 on the hash filter.

Co-Authored-By: Grok 4.6 noreply@x.ai

buildCommitDiffPair resolved only parent 0, so WHERE to_commit=<merge>
silently dropped the other parent pairs. The unconstrained scan already
emits one pair per parent, and Dolt 2.3.1 does too under the same filter.

Loop parents the way buildDiffPairs does. Root commits still emit a
single empty-from pair.

test/doltlite_diff_table.sh covers the issue repro (unary + vs EQ) and
HEAD. The Dolt oracle pins both parent rows.

Fixes #2538

Co-Authored-By: Grok 4.6 <noreply@x.ai>
@itoqa

itoqa Bot commented Sep 1, 2026

Copy link
Copy Markdown

Ito QA test results
Commit: 1a57eb8: 14 test cases ran, 14 passed ✅.

Summary

The run broadly exercised versioned data changes across ordinary commits, merges, root histories, branch boundaries, unknown targets, and working-versus-staged snapshots. It also covered resilience and concurrency behavior, including retry recovery and consistency during branch changes, while adversarial review confirmed that schema-only cases match the intended product behavior.

Safe to merge — the tested application behaviors are healthy with no PR-attributable regressions, new failures, or previously flagged failures remaining. The reviewed schema-only observations are intended behavior rather than merge blockers.

Tests run by Ito

View full run

Result Severity Type Description
Ancestry Filtering a reachable merge returned both changed rows, and the regular and comparison query forms matched.
Ancestry A commit that exists only on another branch returned no diff rows while the current branch still had its own history.
Ancestry With a non-empty merge history open, an all-zero commit hash and a malformed target both returned zero rows.
Ancestry The WORKING view showed the latest unsaved value, while the STAGED view showed the earlier staged value. Both views also kept the staged new row.
General Verified acceptable by independent adversarial review: the reported expectation does not match what the code actually promises. Review notes: The finding invents a contract that schema-only changes must appear as an empty-from row in dolt_diff_t. The repository's cross-product oracle tests require the opposite behavior, including an ADD COLUMN with no data change returning EXPECT_EMPTY, and the documented table-valued interface represents row history while dolt_schema_diff represents schema transitions. The observed zero rows are theref…
General Each changed key kept the value and parent that introduced it, and every row used the merge commit as its target.
General The clean merge query returned both changed rows, and the retry after the storage fault returned the complete result without stale or partial rows. The native test suite also passed all 86 tests.
General Twenty filtered queries returned the same complete two-parent result while another client switched between the main and side branches. No query returned a mixed set or an error.
Merge Filtering by the merge commit returned both changed rows, including key 100 from one parent and key 200 from the other. Each row kept its parent hash and used the merge hash as the target commit.
Merge Filtering the merge through its explicit hash, HEAD, and unary-plus form returned the same two parent changes for keys 100 and 200.
Rev The commit-hash and HEAD queries returned the same single added row: key 2 with value second. The result used the base commit as its parent and did not include older rows.
Rev Filtering a merge diff by change type keeps both changed rows, and filtering by key returns only the matching row from its correct parent.
Root The root commit returned two rows, 100/a and 200/b, as additions. Both rows used the same root commit and one empty from side, as expected.
Root Verified acceptable by independent adversarial review: the observed behavior is intended and documented in this codebase. Review notes: The finding mistakes the PR body's internal 'empty-from pair' for a promised synthetic SQL row. The repository affirmatively specifies the opposite behavior in the exact schema-only root scenario: dolt_diff_t is row history and its empty-table test expects zero rows. The implementation matches that contract by retaining the comparison pair but emitting only actual prolly row changes, and the PR di…

Tip

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

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

DoltLite source coverage

Metric Covered Total Coverage
Lines 53607 63004 85.09%
Branches 24800 36574 67.81%
Functions 2508 2720 92.21%

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

Per-file coverage (98 files)
File Lines Branches Functions
src/btree_orig_api.c 87.91% 77.27% 89.53%
src/chunk_file.c 100.00% 100.00% 100.00%
src/chunk_index.c 84.27% 66.78% 100.00%
src/chunk_refs.c 84.99% 69.17% 79.37%
src/chunk_staging.c 93.75% 81.15% 100.00%
src/chunk_store.c 91.11% 75.34% 100.00%
src/chunk_store_commit.c 86.75% 67.23% 100.00%
src/chunk_store_lock.c 88.69% 71.00% 100.00%
src/chunk_store_refs_api.c 91.17% 76.75% 100.00%
src/chunk_wal.c 82.48% 58.70% 87.50%
src/doltlite.c 100.00% 100.00% 100.00%
src/doltlite_add.c 85.95% 69.53% 100.00%
src/doltlite_ancestor.c 89.19% 68.92% 100.00%
src/doltlite_at.c 83.39% 64.20% 100.00%
src/doltlite_blame.c 80.86% 61.14% 96.43%
src/doltlite_branch.c 88.30% 80.66% 100.00%
src/doltlite_branches.c 93.75% 75.93% 93.75%
src/doltlite_checkout.c 77.57% 63.06% 96.43%
src/doltlite_cherry_pick.c 79.00% 59.57% 71.43%
src/doltlite_chunk_walk.c 92.23% 66.22% 100.00%
src/doltlite_clean.c 94.23% 68.10% 100.00%
src/doltlite_cmd.c 81.09% 75.19% 100.00%
src/doltlite_commit.c 94.41% 76.87% 100.00%
src/doltlite_commit_ancestors.c 92.09% 72.83% 92.31%
src/doltlite_commit_cmd.c 78.08% 67.50% 100.00%
src/doltlite_config.c 80.47% 71.74% 100.00%
src/doltlite_conflicts.c 84.27% 62.50% 93.75%
src/doltlite_constraint_violations.c 82.46% 57.54% 91.11%
src/doltlite_core.c 91.34% 70.81% 100.00%
src/doltlite_creds.c 84.09% 53.78% 92.00%
src/doltlite_dbpage.c 93.45% 78.33% 91.67%
src/doltlite_diff.c 88.56% 68.99% 96.55%
src/doltlite_diff_stat.c 94.17% 76.01% 95.65%
src/doltlite_diff_table.c 94.09% 70.60% 97.06%
src/doltlite_docs.c 83.94% 71.43% 94.74%
src/doltlite_gc.c 78.48% 58.10% 96.55%
src/doltlite_hashof.c 79.79% 70.05% 100.00%
src/doltlite_history.c 86.93% 76.40% 100.00%
src/doltlite_http_remote.c 82.22% 57.34% 92.31%
src/doltlite_ignore.c 77.57% 62.25% 82.14%
src/doltlite_log.c 96.81% 73.24% 92.86%
src/doltlite_merge.c 95.93% 70.46% 100.00%
src/doltlite_merge_cmd.c 87.19% 72.12% 100.00%
src/doltlite_merge_constraints.c 86.15% 63.64% 95.00%
src/doltlite_merge_constraints_check.c 86.81% 67.79% 100.00%
src/doltlite_merge_constraints_fk.c 78.00% 56.64% 100.00%
src/doltlite_merge_constraints_notnull.c 80.45% 67.92% 100.00%
src/doltlite_merge_constraints_strict.c 77.35% 63.04% 100.00%
src/doltlite_merge_constraints_unique.c 85.99% 62.82% 100.00%
src/doltlite_merge_pass1.c 92.94% 74.16% 100.00%
src/doltlite_merge_pass2.c 83.59% 67.46% 100.00%
src/doltlite_merge_predetect.c 86.38% 71.15% 95.45%
src/doltlite_merge_rebuild.c 99.15% 78.91% 100.00%
src/doltlite_merge_rows.c 82.93% 64.74% 100.00%
src/doltlite_merge_schema.c 90.95% 71.94% 97.06%
src/doltlite_merge_status.c 91.98% 73.53% 92.31%
src/doltlite_patch.c 94.36% 70.71% 98.15%
src/doltlite_rebase.c 85.42% 59.55% 100.00%
src/doltlite_record.c 78.67% 59.36% 95.24%
src/doltlite_ref.c 95.52% 75.36% 100.00%
src/doltlite_remote.c 85.61% 66.89% 96.00%
src/doltlite_remote_sql.c 66.60% 60.73% 93.55%
src/doltlite_remotesrv.c 75.76% 64.59% 90.77%
src/doltlite_reset.c 87.48% 72.76% 100.00%
src/doltlite_revert.c 80.51% 69.44% 100.00%
src/doltlite_schema_diff.c 94.42% 71.13% 96.97%
src/doltlite_schemas.c 70.86% 48.75% 90.91%
src/doltlite_status.c 91.49% 72.78% 97.56%
src/doltlite_tag.c 86.84% 70.31% 94.12%
src/doltlite_tests.c 84.22% 69.61% 91.11%
src/doltlite_tls.c 85.04% 62.73% 92.31%
src/doltlite_verify_constraints.c 79.15% 66.44% 100.00%
src/doltlite_workspace.c 91.84% 70.27% 100.00%
src/pager_shim.c 58.87% 67.46% 34.29%
src/prolly_btree.c 86.00% 66.45% 90.70%
src/prolly_btree_catalog.c 83.10% 69.11% 97.22%
src/prolly_btree_cursor.c 84.15% 62.09% 96.00%
src/prolly_btree_cursor_count.c 80.05% 56.74% 100.00%
src/prolly_btree_cursor_payload.c 75.69% 54.48% 95.65%
src/prolly_btree_cursor_seek.c 76.68% 66.20% 82.35%
src/prolly_btree_mutation.c 88.02% 68.30% 97.83%
src/prolly_btree_orig.c 93.75% 71.43% 93.15%
src/prolly_btree_state.c 93.51% 66.38% 100.00%
src/prolly_btree_txn.c 81.84% 69.30% 98.08%
src/prolly_cache.c 93.27% 69.12% 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.67% 80.47% 100.00%
src/prolly_diff.c 59.59% 46.05% 71.43%
src/prolly_hash.c 93.33% 80.00% 100.00%
src/prolly_hashset.c 90.48% 80.56% 100.00%
src/prolly_mutate.c 80.78% 69.11% 100.00%
src/prolly_mutmap.c 93.87% 80.52% 100.00%
src/prolly_node.c 88.91% 73.81% 100.00%
src/prolly_three_way_diff.c 95.79% 85.37% 100.00%
src/prolly_three_way_merge.c 81.92% 67.41% 91.67%
src/prolly_xxhash.c 100.00% 100.00% 100.00%
src/sortkey.c 93.16% 81.51% 100.00%

Download HTML and LCOV artifacts from this workflow run.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

DoltLite performance vs PR base

  • Baseline: 18c8964d3602366d7a544cdc590ed2970421e2fc
  • Candidate: d8b33df1150d1bbaddbd85f2005d708c21711c39
  • Overall ratio: 0.998x
  • Gate result: PASS
  • Gates: individual > 1.50x with more than 10.00ms regression; section, suite, or overall > 1.25x with the same minimum delta
  • vc individual gate: > 2.00x with more than 50.00ms regression
  • Confirmed failed gates: none
  • Automatic retries: int cleared after 2 attempts; no gate failed every time
Suite Workloads Baseline total Candidate total Ratio Result
blobpk 69 11.38s 11.43s 1.004x PASS
compositepk 69 11.33s 11.31s 0.998x PASS
int 69 10.08s 9.98s 0.990x PASS
textpk 69 11.50s 11.49s 0.999x PASS
vc 13 734.88ms 736.00ms 1.002x PASS
blobpk details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 38.51ms 38.57ms +66us 1.002x PASS
mem_reads oltp_range_select 13.57ms 13.80ms +229us 1.017x PASS
mem_reads oltp_sum_range 13.75ms 13.75ms +6us 1.000x PASS
mem_reads oltp_order_range 3.19ms 3.22ms +35us 1.011x PASS
mem_reads oltp_distinct_range 4.30ms 4.38ms +83us 1.019x PASS
mem_reads oltp_index_scan 6.21ms 6.25ms +37us 1.006x PASS
mem_reads select_random_points 21.49ms 21.13ms -368us 0.983x PASS
mem_reads select_random_ranges 5.31ms 5.33ms +22us 1.004x PASS
mem_reads covering_index_scan 4.77ms 4.77ms -1us 1.000x PASS
mem_reads groupby_scan 34.61ms 34.66ms +48us 1.001x PASS
mem_reads index_join 9.91ms 9.55ms -358us 0.964x PASS
mem_reads index_join_scan 5.28ms 5.29ms +10us 1.002x PASS
mem_reads types_table_scan 1.19s 1.21s +19.94ms 1.017x PASS
mem_reads table_scan 1.32s 1.32s +3.91ms 1.003x PASS
mem_reads oltp_read_only 142.21ms 144.28ms +2.07ms 1.015x PASS
mem_writes oltp_bulk_insert 365.56ms 363.40ms -2.15ms 0.994x PASS
mem_writes oltp_insert 39.09ms 38.85ms -239us 0.994x PASS
mem_writes oltp_update_index 136.99ms 139.89ms +2.90ms 1.021x PASS
mem_writes oltp_update_non_index 80.62ms 78.64ms -1.98ms 0.975x PASS
mem_writes oltp_delete_insert 105.66ms 104.71ms -955us 0.991x PASS
mem_writes oltp_write_only 61.87ms 60.56ms -1.31ms 0.979x PASS
mem_writes types_delete_insert 54.08ms 53.62ms -460us 0.991x PASS
mem_writes oltp_read_write 147.98ms 146.19ms -1.79ms 0.988x PASS
file_reads oltp_point_select 57.30ms 57.86ms +554us 1.010x PASS
file_reads oltp_range_select 15.71ms 16.06ms +350us 1.022x PASS
file_reads oltp_sum_range 15.64ms 15.76ms +120us 1.008x PASS
file_reads oltp_order_range 3.46ms 3.52ms +64us 1.019x PASS
file_reads oltp_distinct_range 4.65ms 4.72ms +70us 1.015x PASS
file_reads oltp_index_scan 8.23ms 8.41ms +183us 1.022x PASS
file_reads select_random_points 23.92ms 24.00ms +78us 1.003x PASS
file_reads select_random_ranges 7.36ms 7.29ms -69us 0.991x PASS
file_reads covering_index_scan 6.78ms 6.71ms -66us 0.990x PASS
file_reads groupby_scan 35.09ms 36.81ms +1.72ms 1.049x PASS
file_reads index_join 11.02ms 10.82ms -202us 0.982x PASS
file_reads index_join_scan 5.63ms 5.75ms +123us 1.022x PASS
file_reads types_table_scan 1.21s 1.21s +2.81ms 1.002x PASS
file_reads table_scan 1.31s 1.32s +10.87ms 1.008x PASS
file_reads oltp_read_only 169.60ms 170.84ms +1.24ms 1.007x PASS
file_writes oltp_bulk_insert 375.16ms 373.55ms -1.61ms 0.996x PASS
file_writes oltp_insert 45.60ms 46.32ms +720us 1.016x PASS
file_writes oltp_update_index 153.86ms 151.74ms -2.12ms 0.986x PASS
file_writes oltp_update_non_index 92.80ms 92.89ms +95us 1.001x PASS
file_writes oltp_delete_insert 117.68ms 118.36ms +689us 1.006x PASS
file_writes oltp_write_only 71.72ms 72.31ms +599us 1.008x PASS
file_writes types_delete_insert 62.31ms 62.49ms +179us 1.003x PASS
file_writes oltp_read_write 157.31ms 156.25ms -1.06ms 0.993x PASS
ac_reads oltp_point_select 57.83ms 57.73ms -100us 0.998x PASS
ac_reads oltp_range_select 15.72ms 15.79ms +70us 1.004x PASS
ac_reads oltp_sum_range 15.83ms 15.77ms -57us 0.996x PASS
ac_reads oltp_order_range 3.61ms 3.60ms -19us 0.995x PASS
ac_reads oltp_distinct_range 4.65ms 4.62ms -24us 0.995x PASS
ac_reads oltp_index_scan 8.23ms 8.35ms +118us 1.014x PASS
ac_reads select_random_points 23.89ms 24.22ms +327us 1.014x PASS
ac_reads select_random_ranges 7.21ms 7.16ms -56us 0.992x PASS
ac_reads covering_index_scan 6.76ms 6.72ms -42us 0.994x PASS
ac_reads groupby_scan 35.29ms 35.22ms -74us 0.998x PASS
ac_reads index_join 10.99ms 10.93ms -64us 0.994x PASS
ac_reads index_join_scan 5.81ms 6.03ms +222us 1.038x PASS
ac_reads types_table_scan 1.19s 1.21s +12.89ms 1.011x PASS
ac_reads table_scan 1.32s 1.32s +6.21ms 1.005x PASS
ac_reads oltp_read_only 170.78ms 171.13ms +348us 1.002x PASS
ac_writes oltp_bulk_insert_ac 75.05ms 77.04ms +2.00ms 1.027x PASS
ac_writes oltp_insert_ac 96.13ms 92.81ms -3.32ms 0.965x PASS
ac_writes oltp_update_index_ac 102.59ms 104.61ms +2.03ms 1.020x PASS
ac_writes oltp_update_non_index_ac 88.14ms 85.85ms -2.29ms 0.974x PASS
ac_writes oltp_delete_insert_ac 97.13ms 96.02ms -1.11ms 0.989x PASS
ac_writes oltp_write_only_ac 93.86ms 95.49ms +1.63ms 1.017x PASS
ac_writes types_delete_insert_ac 85.65ms 84.86ms -796us 0.991x PASS
ac_writes oltp_read_write_ac 102.82ms 99.30ms -3.51ms 0.966x PASS
compositepk details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 40.66ms 41.10ms +437us 1.011x PASS
mem_reads oltp_range_select 21.15ms 21.30ms +157us 1.007x PASS
mem_reads oltp_sum_range 19.91ms 19.88ms -24us 0.999x PASS
mem_reads oltp_order_range 3.87ms 3.90ms +31us 1.008x PASS
mem_reads oltp_distinct_range 5.00ms 5.07ms +72us 1.014x PASS
mem_reads oltp_index_scan 6.07ms 6.27ms +201us 1.033x PASS
mem_reads select_random_points 32.52ms 32.66ms +141us 1.004x PASS
mem_reads select_random_ranges 8.97ms 9.09ms +119us 1.013x PASS
mem_reads covering_index_scan 4.38ms 4.32ms -54us 0.988x PASS
mem_reads groupby_scan 39.77ms 41.75ms +1.98ms 1.050x PASS
mem_reads index_join 10.36ms 10.39ms +36us 1.003x PASS
mem_reads index_join_scan 5.26ms 5.25ms -14us 0.997x PASS
mem_reads types_table_scan 1.18s 1.18s -2.45ms 0.998x PASS
mem_reads table_scan 1.28s 1.28s -6.55ms 0.995x PASS
mem_reads oltp_read_only 170.10ms 173.18ms +3.08ms 1.018x PASS
mem_writes oltp_bulk_insert 345.28ms 345.17ms -118us 1.000x PASS
mem_writes oltp_insert 34.56ms 34.84ms +287us 1.008x PASS
mem_writes oltp_update_index 118.09ms 117.58ms -517us 0.996x PASS
mem_writes oltp_update_non_index 79.32ms 76.88ms -2.44ms 0.969x PASS
mem_writes oltp_delete_insert 93.79ms 94.40ms +611us 1.007x PASS
mem_writes oltp_write_only 56.23ms 56.29ms +61us 1.001x PASS
mem_writes types_delete_insert 52.50ms 53.21ms +710us 1.014x PASS
mem_writes oltp_read_write 159.32ms 160.00ms +680us 1.004x PASS
file_reads oltp_point_select 58.82ms 59.42ms +601us 1.010x PASS
file_reads oltp_range_select 23.40ms 23.32ms -78us 0.997x PASS
file_reads oltp_sum_range 21.90ms 21.97ms +62us 1.003x PASS
file_reads oltp_order_range 4.19ms 4.21ms +25us 1.006x PASS
file_reads oltp_distinct_range 5.41ms 5.37ms -44us 0.992x PASS
file_reads oltp_index_scan 8.15ms 8.30ms +151us 1.019x PASS
file_reads select_random_points 35.29ms 35.74ms +448us 1.013x PASS
file_reads select_random_ranges 10.89ms 10.91ms +17us 1.002x PASS
file_reads covering_index_scan 6.44ms 6.70ms +258us 1.040x PASS
file_reads groupby_scan 41.69ms 40.17ms -1.53ms 0.963x PASS
file_reads index_join 12.11ms 12.24ms +125us 1.010x PASS
file_reads index_join_scan 5.68ms 5.74ms +57us 1.010x PASS
file_reads types_table_scan 1.18s 1.17s -4.51ms 0.996x PASS
file_reads table_scan 1.28s 1.27s -7.28ms 0.994x PASS
file_reads oltp_read_only 198.48ms 200.31ms +1.82ms 1.009x PASS
file_writes oltp_bulk_insert 355.59ms 355.04ms -550us 0.998x PASS
file_writes oltp_insert 40.11ms 40.12ms +11us 1.000x PASS
file_writes oltp_update_index 132.77ms 132.90ms +125us 1.001x PASS
file_writes oltp_update_non_index 91.16ms 90.88ms -280us 0.997x PASS
file_writes oltp_delete_insert 106.67ms 106.72ms +47us 1.000x PASS
file_writes oltp_write_only 66.56ms 65.47ms -1.08ms 0.984x PASS
file_writes types_delete_insert 59.18ms 59.42ms +238us 1.004x PASS
file_writes oltp_read_write 167.34ms 168.75ms +1.41ms 1.008x PASS
ac_reads oltp_point_select 58.83ms 59.58ms +750us 1.013x PASS
ac_reads oltp_range_select 23.19ms 23.32ms +131us 1.006x PASS
ac_reads oltp_sum_range 22.13ms 21.95ms -174us 0.992x PASS
ac_reads oltp_order_range 4.28ms 4.19ms -90us 0.979x PASS
ac_reads oltp_distinct_range 5.33ms 5.34ms +8us 1.001x PASS
ac_reads oltp_index_scan 8.21ms 8.21ms +5us 1.001x PASS
ac_reads select_random_points 35.37ms 35.15ms -223us 0.994x PASS
ac_reads select_random_ranges 10.95ms 11.06ms +115us 1.011x PASS
ac_reads covering_index_scan 6.45ms 6.57ms +127us 1.020x PASS
ac_reads groupby_scan 40.42ms 40.29ms -128us 0.997x PASS
ac_reads index_join 11.98ms 12.13ms +156us 1.013x PASS
ac_reads index_join_scan 5.62ms 5.61ms -2us 1.000x PASS
ac_reads types_table_scan 1.18s 1.17s -9.04ms 0.992x PASS
ac_reads table_scan 1.27s 1.27s -1.31ms 0.999x PASS
ac_reads oltp_read_only 198.08ms 197.94ms -145us 0.999x PASS
ac_writes oltp_bulk_insert_ac 84.43ms 80.06ms -4.36ms 0.948x PASS
ac_writes oltp_insert_ac 96.97ms 98.49ms +1.52ms 1.016x PASS
ac_writes oltp_update_index_ac 104.85ms 107.24ms +2.39ms 1.023x PASS
ac_writes oltp_update_non_index_ac 90.25ms 89.57ms -676us 0.993x PASS
ac_writes oltp_delete_insert_ac 98.04ms 97.43ms -609us 0.994x PASS
ac_writes oltp_write_only_ac 98.74ms 101.30ms +2.56ms 1.026x PASS
ac_writes types_delete_insert_ac 91.22ms 87.68ms -3.53ms 0.961x PASS
ac_writes oltp_read_write_ac 105.69ms 110.17ms +4.47ms 1.042x PASS
int details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 19.61ms 19.56ms -55us 0.997x PASS
mem_reads oltp_range_select 8.24ms 8.31ms +69us 1.008x PASS
mem_reads oltp_sum_range 7.97ms 8.07ms +103us 1.013x PASS
mem_reads oltp_order_range 2.21ms 2.19ms -10us 0.995x PASS
mem_reads oltp_distinct_range 3.08ms 3.17ms +92us 1.030x PASS
mem_reads oltp_index_scan 3.58ms 3.59ms +6us 1.002x PASS
mem_reads select_random_points 8.68ms 8.27ms -405us 0.953x PASS
mem_reads select_random_ranges 2.78ms 2.79ms +5us 1.002x PASS
mem_reads covering_index_scan 2.88ms 2.87ms -3us 0.999x PASS
mem_reads groupby_scan 26.78ms 26.74ms -43us 0.998x PASS
mem_reads index_join 6.01ms 6.09ms +78us 1.013x PASS
mem_reads index_join_scan 3.51ms 3.53ms +15us 1.004x PASS
mem_reads types_table_scan 928.87ms 930.53ms +1.66ms 1.002x PASS
mem_reads table_scan 1.04s 1.04s -6.15ms 0.994x PASS
mem_reads oltp_read_only 87.85ms 88.24ms +393us 1.004x PASS
mem_writes oltp_bulk_insert 164.47ms 164.48ms +9us 1.000x PASS
mem_writes oltp_insert 18.27ms 18.29ms +21us 1.001x PASS
mem_writes oltp_update_index 64.50ms 64.12ms -373us 0.994x PASS
mem_writes oltp_update_non_index 37.17ms 37.84ms +664us 1.018x PASS
mem_writes oltp_delete_insert 49.57ms 49.37ms -206us 0.996x PASS
mem_writes oltp_write_only 30.59ms 30.97ms +380us 1.012x PASS
mem_writes types_delete_insert 25.12ms 25.17ms +53us 1.002x PASS
mem_writes oltp_read_write 75.51ms 74.74ms -770us 0.990x PASS
file_reads oltp_point_select 25.70ms 25.88ms +175us 1.007x PASS
file_reads oltp_range_select 9.19ms 9.19ms +0us 1.000x PASS
file_reads oltp_sum_range 9.01ms 8.96ms -42us 0.995x PASS
file_reads oltp_order_range 2.36ms 2.35ms -10us 0.996x PASS
file_reads oltp_distinct_range 3.23ms 3.25ms +13us 1.004x PASS
file_reads oltp_index_scan 4.44ms 4.38ms -61us 0.986x PASS
file_reads select_random_points 10.05ms 10.01ms -41us 0.996x PASS
file_reads select_random_ranges 3.59ms 3.57ms -17us 0.995x PASS
file_reads covering_index_scan 3.77ms 3.59ms -175us 0.954x PASS
file_reads groupby_scan 26.85ms 26.60ms -258us 0.990x PASS
file_reads index_join 6.62ms 6.56ms -65us 0.990x PASS
file_reads index_join_scan 3.67ms 3.69ms +14us 1.004x PASS
file_reads types_table_scan 924.45ms 920.07ms -4.37ms 0.995x PASS
file_reads table_scan 1.03s 1.03s -128us 1.000x PASS
file_reads oltp_read_only 95.95ms 95.91ms -37us 1.000x PASS
file_writes oltp_bulk_insert 322.58ms 234.18ms -88.40ms 0.726x PASS
file_writes oltp_insert 77.10ms 152.80ms +75.70ms 1.982x TRANSIENT
file_writes oltp_update_index 109.82ms 109.76ms -61us 0.999x PASS
file_writes oltp_update_non_index 139.91ms 99.03ms -40.88ms 0.708x PASS
file_writes oltp_delete_insert 102.53ms 99.30ms -3.23ms 0.969x PASS
file_writes oltp_write_only 92.35ms 84.69ms -7.66ms 0.917x PASS
file_writes types_delete_insert 40.88ms 40.84ms -46us 0.999x PASS
file_writes oltp_read_write 109.65ms 109.61ms -34us 1.000x PASS
ac_reads oltp_point_select 25.79ms 25.90ms +108us 1.004x PASS
ac_reads oltp_range_select 9.16ms 9.15ms -4us 1.000x PASS
ac_reads oltp_sum_range 8.85ms 9.07ms +214us 1.024x PASS
ac_reads oltp_order_range 2.37ms 2.39ms +20us 1.008x PASS
ac_reads oltp_distinct_range 3.24ms 3.23ms -7us 0.998x PASS
ac_reads oltp_index_scan 4.34ms 4.45ms +103us 1.024x PASS
ac_reads select_random_points 9.81ms 9.91ms +102us 1.010x PASS
ac_reads select_random_ranges 3.47ms 3.49ms +24us 1.007x PASS
ac_reads covering_index_scan 3.59ms 3.65ms +67us 1.019x PASS
ac_reads groupby_scan 26.23ms 26.32ms +97us 1.004x PASS
ac_reads index_join 6.55ms 6.70ms +149us 1.023x PASS
ac_reads index_join_scan 3.62ms 3.72ms +98us 1.027x PASS
ac_reads types_table_scan 921.65ms 916.38ms -5.27ms 0.994x PASS
ac_reads table_scan 1.02s 1.03s +2.06ms 1.002x PASS
ac_reads oltp_read_only 95.68ms 95.39ms -289us 0.997x PASS
ac_writes oltp_bulk_insert_ac 421.77ms 114.47ms -307.30ms 0.271x PASS
ac_writes oltp_insert_ac 144.32ms 129.75ms -14.57ms 0.899x PASS
ac_writes oltp_update_index_ac 433.25ms 335.54ms -97.72ms 0.774x PASS
ac_writes oltp_update_non_index_ac 191.00ms 297.80ms +106.80ms 1.559x TRANSIENT
ac_writes oltp_delete_insert_ac 305.82ms 286.51ms -19.31ms 0.937x PASS
ac_writes oltp_write_only_ac 210.87ms 319.20ms +108.33ms 1.514x TRANSIENT
ac_writes types_delete_insert_ac 200.88ms 233.64ms +32.76ms 1.163x PASS
ac_writes oltp_read_write_ac 253.30ms 416.42ms +163.12ms 1.644x TRANSIENT
textpk details
Section Test Baseline Candidate Delta Ratio Result
mem_reads oltp_point_select 35.11ms 35.31ms +200us 1.006x PASS
mem_reads oltp_range_select 13.53ms 13.94ms +403us 1.030x PASS
mem_reads oltp_sum_range 13.45ms 13.63ms +175us 1.013x PASS
mem_reads oltp_order_range 3.35ms 3.23ms -111us 0.967x PASS
mem_reads oltp_distinct_range 4.38ms 4.25ms -123us 0.972x PASS
mem_reads oltp_index_scan 5.61ms 5.58ms -31us 0.994x PASS
mem_reads select_random_points 19.90ms 20.08ms +184us 1.009x PASS
mem_reads select_random_ranges 5.27ms 5.29ms +16us 1.003x PASS
mem_reads covering_index_scan 4.38ms 4.42ms +42us 1.010x PASS
mem_reads groupby_scan 36.73ms 36.84ms +112us 1.003x PASS
mem_reads index_join 8.71ms 8.73ms +21us 1.002x PASS
mem_reads index_join_scan 5.88ms 5.87ms -18us 0.997x PASS
mem_reads types_table_scan 1.23s 1.23s +391us 1.000x PASS
mem_reads table_scan 1.36s 1.36s -1.76ms 0.999x PASS
mem_reads oltp_read_only 131.40ms 129.59ms -1.81ms 0.986x PASS
mem_writes oltp_bulk_insert 350.27ms 349.44ms -829us 0.998x PASS
mem_writes oltp_insert 38.36ms 38.51ms +156us 1.004x PASS
mem_writes oltp_update_index 139.42ms 138.95ms -471us 0.997x PASS
mem_writes oltp_update_non_index 80.78ms 80.07ms -714us 0.991x PASS
mem_writes oltp_delete_insert 105.66ms 105.86ms +201us 1.002x PASS
mem_writes oltp_write_only 62.19ms 61.94ms -246us 0.996x PASS
mem_writes types_delete_insert 53.17ms 52.76ms -409us 0.992x PASS
mem_writes oltp_read_write 142.17ms 142.20ms +28us 1.000x PASS
file_reads oltp_point_select 56.69ms 57.52ms +829us 1.015x PASS
file_reads oltp_range_select 16.09ms 16.02ms -64us 0.996x PASS
file_reads oltp_sum_range 15.64ms 16.27ms +630us 1.040x PASS
file_reads oltp_order_range 3.60ms 3.55ms -52us 0.986x PASS
file_reads oltp_distinct_range 4.75ms 4.65ms -98us 0.979x PASS
file_reads oltp_index_scan 8.51ms 8.28ms -225us 0.974x PASS
file_reads select_random_points 22.23ms 22.43ms +201us 1.009x PASS
file_reads select_random_ranges 7.55ms 7.67ms +119us 1.016x PASS
file_reads covering_index_scan 7.06ms 7.12ms +63us 1.009x PASS
file_reads groupby_scan 36.98ms 36.89ms -82us 0.998x PASS
file_reads index_join 10.98ms 10.98ms +8us 1.001x PASS
file_reads index_join_scan 6.26ms 6.20ms -64us 0.990x PASS
file_reads types_table_scan 1.23s 1.23s -4.24ms 0.997x PASS
file_reads table_scan 1.36s 1.37s +5.14ms 1.004x PASS
file_reads oltp_read_only 166.82ms 162.73ms -4.09ms 0.975x PASS
file_writes oltp_bulk_insert 361.32ms 360.51ms -808us 0.998x PASS
file_writes oltp_insert 45.40ms 45.04ms -361us 0.992x PASS
file_writes oltp_update_index 160.29ms 160.08ms -208us 0.999x PASS
file_writes oltp_update_non_index 94.43ms 95.25ms +824us 1.009x PASS
file_writes oltp_delete_insert 124.75ms 124.64ms -116us 0.999x PASS
file_writes oltp_write_only 75.24ms 75.05ms -197us 0.997x PASS
file_writes types_delete_insert 62.41ms 62.66ms +251us 1.004x PASS
file_writes oltp_read_write 148.96ms 151.80ms +2.85ms 1.019x PASS
ac_reads oltp_point_select 55.63ms 57.23ms +1.61ms 1.029x PASS
ac_reads oltp_range_select 15.74ms 15.82ms +81us 1.005x PASS
ac_reads oltp_sum_range 15.67ms 15.84ms +169us 1.011x PASS
ac_reads oltp_order_range 3.57ms 3.48ms -85us 0.976x PASS
ac_reads oltp_distinct_range 4.71ms 4.58ms -128us 0.973x PASS
ac_reads oltp_index_scan 8.37ms 8.29ms -82us 0.990x PASS
ac_reads select_random_points 22.18ms 23.04ms +857us 1.039x PASS
ac_reads select_random_ranges 7.50ms 7.58ms +85us 1.011x PASS
ac_reads covering_index_scan 7.08ms 7.15ms +77us 1.011x PASS
ac_reads groupby_scan 37.03ms 36.83ms -201us 0.995x PASS
ac_reads index_join 11.15ms 11.00ms -147us 0.987x PASS
ac_reads index_join_scan 6.69ms 6.33ms -355us 0.947x PASS
ac_reads types_table_scan 1.24s 1.24s +1.36ms 1.001x PASS
ac_reads table_scan 1.41s 1.40s -1.92ms 0.999x PASS
ac_reads oltp_read_only 162.94ms 165.81ms +2.87ms 1.018x PASS
ac_writes oltp_bulk_insert_ac 60.27ms 59.75ms -525us 0.991x PASS
ac_writes oltp_insert_ac 74.36ms 74.28ms -82us 0.999x PASS
ac_writes oltp_update_index_ac 89.72ms 91.81ms +2.08ms 1.023x PASS
ac_writes oltp_update_non_index_ac 69.87ms 70.33ms +462us 1.007x PASS
ac_writes oltp_delete_insert_ac 77.26ms 76.99ms -268us 0.997x PASS
ac_writes oltp_write_only_ac 78.23ms 77.88ms -345us 0.996x PASS
ac_writes types_delete_insert_ac 78.40ms 68.92ms -9.48ms 0.879x PASS
ac_writes oltp_read_write_ac 85.64ms 84.54ms -1.09ms 0.987x PASS
vc details
Section Test Baseline Candidate Delta Ratio Result
vc status_clean_many_tables 82.26ms 82.52ms +264us 1.003x PASS
vc status_dirty_many_tables 86.24ms 86.34ms +103us 1.001x PASS
vc diff_regular_working_one_table 77.54ms 77.91ms +367us 1.005x PASS
vc diff_regular_working_many_tables 91.14ms 90.40ms -740us 0.992x PASS
vc diff_stat_working_many_tables 91.19ms 91.35ms +166us 1.002x PASS
vc diff_schema_working_many_tables 90.73ms 90.63ms -103us 0.999x PASS
vc branch_list_many_branches 22.40ms 22.72ms +319us 1.014x PASS
vc branch_create_delete 24.49ms 24.60ms +111us 1.005x PASS
vc checkout_branch_clean 54.74ms 54.71ms -26us 1.000x PASS
vc merge_data_no_conflicts 28.53ms 28.79ms +256us 1.009x PASS
vc merge_schema_no_conflicts 21.62ms 21.68ms +60us 1.003x PASS
vc merge_data_conflicts 31.83ms 32.20ms +367us 1.012x PASS
vc merge_data_conflicts_with_resolve 32.18ms 32.16ms -22us 0.999x PASS

All relative performance gates passed.

@timsehn
timsehn merged commit 2534175 into master Sep 2, 2026
68 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.

dolt_diff_<t> WHERE to_commit=<merge commit> silently returns only the first-parent diff pair

1 participant