You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 3b5f131
Browse filesBrowse the repository at this point in the historyBrowse files
perf(planner): read fingerprint state once and keep plan generation linear (#904)
* perf(planner): read fingerprint state once per plan
Full-project plans and projects declaring migrations read the latest
fingerprint per identity without a node filter, apply the selection in
memory, and share the rows with migration inspection instead of reading
the state table a second time. Narrow selections keep the filtered read.
* perf(observability): cut per-statement monitoring overhead
Statement monitors without a query-ID provider now start their thread
only once a statement outlives the heartbeat threshold, through one
shared deferred-start daemon, instead of starting and joining a thread
for every statement. Lifecycle events are validated once at
construction rather than again on publish and on sequencing, JSON
freezing builds error paths only on failure, and statements hash their
SQL once. Recorded events, diagnostics, and -v output are unchanged.
* perf(planner): resolve graph identity hashes in linear time
Expected and write identity resolution copied the whole hash cache for
every resolved node, which made identity context building and change
reconciliation quadratic in project size. A memoized resolver now
records each node once with the same resolution order, cycle handling,
and results.
* perf(planner): overlay per-test fixture types instead of copying them
SQL-test fixture completion copied the project-wide expected-type map
for every test, which made planning test-heavy projects quadratic. Each
test now overlays only the models of its chain on the shared map.
* fix(cli): report rules phase wall time on its progress line
The rules completion line reported only built-in and custom rule time,
which run concurrently and are not phase wall time, so users could not
see how long the rules phase took next to the compile line. It now leads
with the phase wall time in the same form as other phase lines.
* test(planner): guard plan phase scaling on the inspection benchmark
Plan the inspection benchmark at 1,000 and 3,000 models without the
compile cache and fail when warehouse inspection or plan generation
grows more than 1.5 times faster than the project, or when either
phase exceeds a loose ceiling.
* fix(observability): release finished statements from deferred monitor starts
A stopped monitor now cancels its pending deferred start and drops its
callbacks and query-ID provider, so a finished statement and its SQL are
no longer retained until the heartbeat deadline. A monitor thread is
recorded only after it starts, so a refused start no longer makes stop()
join an unstarted thread and fail an otherwise successful statement.
* test(pipeline): account for the rules wall-time clock read in phase timings
The rules progress line reads the clock once before rules run, between
the compile and planning windows. The phase-timing test now supplies
that read, gives rules a measurable duration, and proves compile and
planning stay disjoint from it, with and without progress reporting.
0 commit comments