inferJoinBlocks
private fn
CsvCandidate[] inferJoinBlocks(const CsvTextBlock[] blocks,
size_t width, const CsvReadPolicy read, bool tryParseTemporal,
bool hasHeader, ddn.data.csv.CsvDialect dialect)Full-scan inference over the text blocks: each block joins its own per-column candidates (block 0 past the header), and the per-block results join in block order. The join is associative and commutative, so the block count and boundaries - which the split derives from the bytes - cannot change the schema. Any worker error (a ragged row) propagates; the caller's serial re-walk names the canonical first one.
Parameters
blocks | the text blocks (all rows; block 0 may start with the header row) |
width | the schema width |
read | the reading policy |
tryParseTemporal | whether temporal candidates are tested |
hasHeader | whether block 0's first row is the header |
dialect | the dialect (header forced off) |
Returns
the per-column joined candidates.