Repository navigation
docs: consolidate CHANGELOG for the perf audit and batch-2/batch-3 fixes; refresh performance baselines (#566) - #598
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Claude finished @ajitpratap0's task in 32s —— View job Review of PR #598: CHANGELOG consolidation and baseline refresh
VerdictNo blocking issues. I'd approve this, but I can't submit a formal approval.
|
| Benchmark | Limit (ns/op) | Slowest CI run (ns/op) |
|---|---|---|
| SimpleSelect | 1280 | 918 |
| ComplexQuery | 4785 | 3386 |
| WindowFunction | 2400 | 1876 |
| CTE | 2240 | 1692 |
| INSERT | 1520 | 1169 |
Headroom is about 25–40%.
Trade-off (already stated in the PR): a local regression of up to about 4× the M4 median now passes. TestPerformanceRegression is a coarse guard, not a precise one. A tighter local check, such as a benchstat comparison, would complement it. That would be separate work.
Nit, not blocking: "version": "1.14.0" is unchanged although the content now covers unreleased work. It makes sense as "last release baselined against". It may be worth bumping when the release is cut.
Nit, not blocking: the same long note string is repeated five times. It's harmless, but a single top-level note would be easier to maintain if the schema allows one.
Nit, not blocking: the "(up to ~3.2x)" parenthetical is redundant next to "1.5-3.2x".
CHANGELOG.md
- Structure is good. The opening Behavior changes section lists what is observable on upgrade, with PR and issue references on each bullet. It follows Keep a Changelog conventions.
- The zero-copy bullet is the most important one. It tells callers to use
strings.Cloneon cached token and AST strings, and it notes thatExtract*and the DDL loader already clone. Consider also putting this in the release notes. - The "Oracle
arr[1:n]now fails" bullet is a real change in behavior. It is documented clearly and is limited toDialectOracle. - The visitor-pointer bullet warns that mutating nodes now changes the AST and that the pointers are invalid after
ReleaseAST. That is the right level of warning. - Wording nit: the intro says "Exported signatures are unchanged apart from additions", but the Behavior changes include
ReleaseASTpooling semantics and error text changes. That's accurate for signatures, but you may want to say "source-compatible" so readers don't assume runtime behavior is unchanged. - Release-time check: the section header says
[Unreleased]. When the release PR is cut (per the CLAUDE.md release workflow), make sure the version and date replace it. The baselinesversionfield should be updated at the same time. - Perf figures are not independently verifiable here. The PR states they were copied from each PR's own measurements. I treated them as given.
Test plan
The PR reports TestPerformanceRegression passing locally and the JSON validating. I did not re-run the performance test. Race-detector runs skip it, and CI is the more meaningful signal given the runner variance this PR addresses.
· branch docs/changelog-perf-audit
…resh performance baselines (#566) CHANGELOG [Unreleased] now covers every PR merged since v1.14.0, with a Behavior changes section for the observable changes in #597, #595, #584, #585, #588, #581, #582/#570, #517/#518 and #511, plus Added, Changed, Fixed, Performance, Security and Internal entries. The two existing entries (#526 and the tokenizer-pool dialect fix) are kept verbatim. performance_baselines.json is re-measured on an Apple M4 with BenchmarkPerformanceBaseline -count=10 -benchmem (median). Baselines are set at about 2.5x the M4 median rather than 1.5x: the CI Benchmark job on ubuntu-latest measures these queries about 1.5-3.2x slower than M4 (last 9 Tests runs on main, 0715bb9..61ca6c8), so 1.5x with the unchanged tolerances would fail CI's slowest runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UZSk1292jPc8ipDboNxeve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UZSk1292jPc8ipDboNxeve
…e guards Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UZSk1292jPc8ipDboNxeve
4da0296 to
5c44d7e
Compare
|
Claude finished @ajitpratap0's task in 27s —— View job Review of PR #598 (re-review after new commits)
VerdictNo blocking issues. I can't submit a formal approval.
|
…d costs - #628: SQLite still rejects count(*) [cnt]; only SQL Server keeps it. - #631: bare FORMAT / FORMAT <name> rules apply after SETTINGS. - Performance: record the measured costs of the batch-3 correctness fixes (Identifier and TableReference growth, quoting in SQL(), lineStarts reallocation, sorted Extract results). - #632: note the lıke, WITH CHECK OPTION and MINUS rendering changes. - Fix the [Unreleased] compare link (v1.14.0...HEAD) and add [1.14.0]. - Keep each section a single tight list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UZSk1292jPc8ipDboNxeve
|
Claude finished @ajitpratap0's task in 16s —— View job Re-review of PR #598 (after
|
…me behaviour changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UZSk1292jPc8ipDboNxeve
|
Claude finished @ajitpratap0's task in 20s —— View job Re-review of PR #598 (after
|
|
Merge train (batch 3): #598, the last PR in the train
|
Summary
The CHANGELOG and baselines PR that the perf audit PRs promised; those PRs left CHANGELOG.md and performance_baselines.json alone so this could be one consolidated update.
CHANGELOG.md
[Unreleased]gosqlx formatsilently corrupts many expressions; switch the CLI to pkg/formatter #599–schema/postgres: loader misreports index columns and key flags (column order, INCLUDE, expression and partitioned indexes, read-only roles) #620, PRs fix(ast): return CreateTable, FunctionDesc and trigger children as pointers (#617) #621–fix(ast,formatter): NOT EXISTS, quoted identifiers, table hints and PIVOT render correctly (#601, #611, #604) #632 and fix(cli): render gosqlx format through pkg/formatter and refuse non-round-tripping output (#599) #624).origin/main: API names, error codes, CLI behaviour and PR/issue numbers. That pass corrected the fix(parser,ast): ClickHouse parametric aggregates, FROM table functions and their rendering (#605, #606, #607) #628 SQLite claim and narrowed the fix(formatter,ast,parser): no inner semicolons; keep IGNORE NULLS, named args, ON DUPLICATE KEY, OUTPUT, SETTINGS (#602, #600) #631 FORMAT rule.[Unreleased]compare link is nowv1.14.0...HEAD, and a[1.14.0]link is added.MaxTokens(E1007);NOTand derived tables;$nameplaceholders keep their text;strings.Clone; Extract* results and the DDL loader already clone;gosqlx formatkeeps leading CTEs on INSERT, UPDATE and DELETE, with changed error texts;ReleaseASTpooling;performance_baselines.json
BenchmarkPerformanceBaseline -count=10 -benchmem(median) on an Apple M4. Tolerances are unchanged.Test Plan
go test -count=3 -run TestPerformanceRegression ./pkg/sql/parser/passes locally.performance_baselines.jsonis valid JSON.Breaking Changes
None. This PR changes documentation and test baselines only.
Part of #566
🤖 Generated with Claude Code
https://claude.ai/code/session_01UZSk1292jPc8ipDboNxeve