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
DatasetReader: a cut-off last row reads as the end of the dataset; limits differ from protowire-go #45
pxf.DatasetReader doesn't match protowire-go's streaming reader. The worst case: a dataset whose last row was cut off reads as a shorter, complete dataset, with no error.
This port's scan passes max_message_size to bind_row for every row. Go binds a row "under every limit but MaxMessageSize", because the synthetic body repeats the column names and is wider than the row. This half can be fixed here. It belongs with pxf.bind_row promises (pxf.default) and (pxf.required) but applies neither #24, which decides how bind_row binds (its own code or cpp's BindRow).
Done when
The four fixtures above give Go's verdicts through DatasetReader, with a test that runs them (after protowire-cpp#164 is fixed and the pin moves).
scan doesn't apply max_message_size to the bound row, with a test.
Evidence on cpp: test/pxf_corpus_test.cc streams every spec dataset fixture through DatasetReader and requires the same verdict and error as Parse. truncated-row-eof, truncated-row-then-rows and junk-between-rows are now refused there. DatasetReaderEnds.MatchProtowireGo checks 590 cut points against a table generated from protowire-go v1.16.1.
What is left here:
Move the cpp pin once a release carries #167, then run the four fixtures through DatasetReader.from_bytes(...).scan(...) and drop the #160 xfail.
The scan half (not applying max_message_size to the bound row) is still this port's to fix. That is unchanged.
protowire-cpp v2.1.0 is released (tag v2.1.0 → a4977b2) and carries trendvidia/protowire-cpp#167 (#164), #162 (#160) and the rest of the DatasetReader fixes. The first item here can go ahead now: move the cpp pin to v2.1.0, run the four fixtures through DatasetReader.from_bytes(...).scan(...), and drop the #160 xfail. The scan half is unchanged and still this port's to fix.
Activity
bfrancojr commentedon Nov 7, 2026
The protowire-cpp half of this is fixed on cpp's main. It is not in a cpp release yet; v2.0.0 predates it.
Parsegives. The bytes held while looking for a row's end are capped atmax_message_size.Scanbinds a row under the defaultmax_message_size, as Go does.MaxBytesLiteralLengthincluded.Evidence on cpp:
test/pxf_corpus_test.ccstreams every spec dataset fixture throughDatasetReaderand requires the same verdict and error asParse.truncated-row-eof,truncated-row-then-rowsandjunk-between-rowsare now refused there.DatasetReaderEnds.MatchProtowireGochecks 590 cut points against a table generated from protowire-go v1.16.1.What is left here:
DatasetReader.from_bytes(...).scan(...)and drop the #160 xfail.scanhalf (not applyingmax_message_sizeto the bound row) is still this port's to fix. That is unchanged.bfrancojr commentedon Nov 7, 2026
protowire-cpp v2.1.0 is released (tag v2.1.0 → a4977b2) and carries trendvidia/protowire-cpp#167 (#164), #162 (#160) and the rest of the DatasetReader fixes. The first item here can go ahead now: move the cpp pin to v2.1.0, run the four fixtures through
DatasetReader.from_bytes(...).scan(...), and drop the #160 xfail. Thescanhalf is unchanged and still this port's to fix.