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
Batch pgwire row metadata in result-owned chunks and normalize result format codes once per result set. This removes per-row metadata allocations without pooling or changing payload encoding. Covers text, binary, mixed-format, NULL, and short-final-batch results.
Local sysbench runs against an isolated 24-column dataset, median text-scan latency improved 2.9% (16.25 to 15.77 ms). Mixed-type and binary results were within run-to-run variation, so no latency improvement is claimed for those workloads, due to the increase latency for binary protocol format encoding.
QUERY: select count(*) from tenk1 t
where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0);
Footnotes
These are tests that we're marking as Successful, however they do not match the expected output in some way. This is due to small differences, such as different wording on the error messages, or the column names being incorrect while the data itself is correct. ↩
Coverage spans PostgreSQL query and result delivery behavior, including ordered rows, batching boundaries, wide records, NULL values, mixed text and binary formats, prepared queries, concurrent sessions, delayed reads, and COPY output. It also exercises defensive handling of malformed format requests, covering happy paths, boundary conditions, concurrency, and invalid-input behavior.
Safe to merge — the run reports no PR-attributable regressions or new failures across the exercised result-handling and protocol behaviors. Some live checks were limited by unavailable local infrastructure, but source review found no application defect and there is no merge-blocking finding.
Tests run by Ito
Result
Severity
Type
Description
✅
—
Batch
The service returned all 129 rows in order. It sent a full batch of 128 rows, then the final row, and reported completion after the data.
✅
—
General
Queries with 127, 128, and 129 rows returned every row in order, including the expected NULL values. The full 128-row batch and the final row were delivered without data being lost or changed.
✅
—
General
Queries with 4,095, 4,096, and 4,097 columns returned two complete rows, and trailing NULL values stayed in the last column.
✅
—
General
The result path handles empty, single-code, full, and invalid short format choices consistently. Invalid multi-code choices are rejected before any result rows are sent; the live protocol replay was blocked by unavailable local test infrastructure.
✅
—
General
The result stream keeps the same field formats for every batch, including rows with empty values. The live replay was blocked by the unavailable local target, but source review found no application defect.
✅
—
General
Malformed format requests are checked before a query portal is stored or any result rows are sent. The end-to-end check could not run because the local target server and Go test tool were unavailable, but source review found no application defect.
✅
—
General
The database returned all rows once and in the right order, even when results were delivered in multiple batches. Mixed binary and text values, NULL values, and the final partial batch were preserved.
✅
—
General
Ordered query results arrived completely, including the final short batch, and completion came after the last row.
✅
—
General
Two sessions returned their own 257-row results with the correct column counts, labels, NULL values, and final row.
✅
—
General
Two queries running at the same time each returned all 257 of their own ordered rows. Neither session received values from the other session, and both completed normally.
✅
—
Format
The result path supports a number column in binary form and a text column in text form, while keeping empty values as NULL. Runtime replay was blocked by the local server and test toolchain, so this case was reclassified as a setup pass.
✅
—
Protocol
The prepared query returned metadata first, all 129 rows in order, and a successful completion message.
✅
—
Result
The query returned all 129 rows in order. Each value stayed with its row, and the expected NULL cells remained NULL.
✅
—
Rev
COPY TO returned all 257 rows correctly in both text and binary formats.
Tip
Reply with @itoqa to send us feedback on this test run.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch pgwire row metadata in result-owned chunks and normalize result format codes once per result set. This removes per-row metadata allocations without pooling or changing payload encoding. Covers text, binary, mixed-format, NULL, and short-final-batch results.
Local sysbench runs against an isolated 24-column dataset, median text-scan latency improved 2.9% (16.25 to 15.77 ms). Mixed-type and binary results were within run-to-run variation, so no latency improvement is claimed for those workloads, due to the increase latency for binary protocol format encoding.