Skip to content

PgTargetTempTests: the temp-spill e2e is anchored at the planted window's end, so analyze_server measures the series that was planted rather than one that UtcNow slid past; and the observed-time pin names the one nominal-span use (the trend midpoint) instead of forbidding the expression (#3542 lane 6 follow-up to #3681) - #3685

Merged
erikdarlingdata merged 1 commit into
devfrom
fix/3542-lane6-e2e-anchor
Sep 19, 2026

Conversation

@erikdarlingdata

Copy link
Copy Markdown
Owner

What does this PR do?

#3681 (lane 6 of #3542) was merged on its first commit while its own fix commit was still landing on the branch, so dev's Darling PostgreSQL tests now carry two red assertions in PgTargetTempTests — both in the TEST, neither in the product. This is that fix commit, cherry-picked onto dev (test file only, 13 lines).

1. The e2e's analyze_server call was un-anchored. Without as_of, the tool ends its window at UtcNow, a minute or two after the planted windowEnd, so the window's START slid past the first planted minutes — each a 120 MiB step in temp_bytes — and the frozen headline read 27.8 GB where the collector-alone assertions (which use the planted window) had just measured 28 GB. The call now passes as_of: windowEnd (the idiom lanes 2 and 3 already use), so the tool analyzes exactly the planted window. An anchored run is exploratory (not persisted); the test reads nothing persisted, and drill-down enrichment runs before the persistence gate, so the pg_temp_spill_statements assertion is unaffected.

2. A source pin over-matched. DoesNotContain("TimeRangeEnd - context.TimeRangeStart") was meant to pin "rates divide by observed time, never the nominal window" — but the coordinator-requested tps_trend legitimately uses the window's span ONCE, for the midpoint bound ($4) that splits the halves. The pin now says what it means: that expression appears exactly once, as (… ) / 2, and nothing divides by a TimeSpan of it (.TotalMilliseconds / .TotalSeconds / .TotalHours absent).

Which component(s) does this affect?

  • Lite
  • Darling
  • Lite Tests
  • Darling Tests
  • SQL collection scripts
  • Documentation
  • Full Dashboard (deprecated)
  • CLI Installer (deprecated)

How was this tested?

Test-only. Darling/Darling.Tests builds with zero warnings. The anchored shape was the one my local run of the whole pipeline against a throwaway PostgreSQL 18 store used (asOfUtc: windowEnd), which is why the pinned numbers matched there and not on the un-anchored CI run. First execution of the corrected assertions is this CI run.

Checklist

  • I have read the contributing guide
  • My code builds with zero warnings (dotnet build -c Debug)
  • I have tested my changes against at least one SQL Server version (n/a — PostgreSQL-store test)
  • I have not introduced any hardcoded credentials or server names

…w's end (un-anchored, UtcNow slid the window start past the first 120 MiB minutes), and pin the midpoint as the one nominal-span use rather than forbidding the expression
@erikdarlingdata
erikdarlingdata merged commit ec9f0be into dev Sep 19, 2026
4 of 7 checks passed
@erikdarlingdata
erikdarlingdata deleted the fix/3542-lane6-e2e-anchor branch September 19, 2026 02:45
erikdarlingdata added a commit that referenced this pull request Sep 19, 2026
… PRs across the #3653, #3542 and #3691 waves, #3704, #3710, #3712 and #3735, spliced once (#3751)

Sixty-five PRs merged to dev since #3672 (the first splice) across two seats -
the coordinator's #3653 brains-review residue lanes and the wave-2 worker's
#3542 / #3691 PostgreSQL-target engine lanes - and by rule none touched this
file; each returned its entry to a buffer. This is the one splice. Text-only;
one file; nothing outside ## [Unreleased] and the definition block moves.

[Unreleased] gains a ### Changed between ### Added and ### Fixed (Keep-a-Changelog
order) for the nine entries whose subject is a designed behaviour that now behaves
differently - routing (#3712 confidence chooses the channel), gating (#3692 tempdb
persistence, #3734 blocking/LRQ gates, #3724 peak-and-mean), the wire shape
(#3719 one error envelope), the review guard's drift arm (#3673), lineage
metadata (#3723) and two grading changes (#3693, #3747). Twenty-two new
capabilities append to ### Added (the sixteen PostgreSQL-target fact families and
rungs, CONFIG_CHANGED, the recurrence label, the V134/V135 columns, the review
traps file, the measurement census); thirty-two defects append to ### Fixed.
Order within each section is ascending PR number, as #3672 did.

Every entry is one line and verbatim from its buffer (trailing whitespace only).
Four PR pairs fold into one entry as the buffers wrote them (#3738+#3746,
#3683+#3686, #3681+#3685, #3726+#3729); #3695 carries three entries. #3673 has
no issue and cites none, like the file's ninety-six other ref-less entries. Five
definitions added ([#3691], [#3704], [#3710], [#3712], [#3735]) at the end of the
[Unreleased] run, which stays one ascending run (3517..3735). No archive touched;
the split was not run.

tools/changelog/changelog_archive.py verify: all PASS (1,483 bold entries, floor
1,329; 1,363 distinct refs resolve; 1,372 definitions; CRLF throughout; 409,263
bytes under the ceiling). Client-hygiene grep over the file: zero hits.
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