1515 */
1616#include " dwio/nimble/velox/FieldWriter.h"
1717#include " dwio/nimble/common/Exceptions.h"
18- #include " dwio/nimble/common/Types.h"
1918#include " dwio/nimble/velox/DeduplicationUtils.h"
2019#include " dwio/nimble/velox/SchemaBuilder.h"
2120#include " dwio/nimble/velox/SchemaTypes.h"
@@ -296,7 +295,8 @@ class SimpleFieldWriter : public FieldWriter {
296295 uint64_t nullCount = 0 ;
297296
298297 if (auto flat = vector->asFlatVector <SourceType>()) {
299- valuesStream_.ensureNullsCapacity (flat->mayHaveNulls (), size);
298+ valuesStream_.ensureNullsCapacity (
299+ flat->mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
300300 bool rangeCopied = false ;
301301 if (!flat->mayHaveNulls ()) {
302302 if constexpr (
@@ -342,7 +342,8 @@ class SimpleFieldWriter : public FieldWriter {
342342 } else {
343343 auto decodingContext = context_.getDecodingContext ();
344344 auto & decoded = decodingContext.decode (vector, ranges);
345- valuesStream_.ensureNullsCapacity (decoded.mayHaveNulls (), size);
345+ valuesStream_.ensureNullsCapacity (
346+ decoded.mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
346347 auto nonNullCount = iterateNonNullValues (
347348 ranges,
348349 valuesStream_.mutableNonNulls (),
@@ -408,7 +409,8 @@ class RowFieldWriter : public FieldWriter {
408409 " Schema mismatch: expected {} fields, but got {} fields" ,
409410 fields_.size (),
410411 row->childrenSize ()));
411- nullsStream_.ensureNullsCapacity (vector->mayHaveNulls (), size);
412+ nullsStream_.ensureNullsCapacity (
413+ vector->mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
412414 if (row->mayHaveNulls ()) {
413415 childRangesPtr = &childRanges;
414416 auto nonNullCount = iterateNonNullIndices<true >(
@@ -432,7 +434,8 @@ class RowFieldWriter : public FieldWriter {
432434 fields_.size (),
433435 row->childrenSize ()));
434436 childRangesPtr = &childRanges;
435- nullsStream_.ensureNullsCapacity (decoded.mayHaveNulls (), size);
437+ nullsStream_.ensureNullsCapacity (
438+ decoded.mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
436439 auto nonNullCount = iterateNonNullIndices<true >(
437440 ranges,
438441 nullsStream_.mutableNonNulls (),
@@ -521,7 +524,8 @@ class MultiValueFieldWriter : public FieldWriter {
521524 offsets = casted->rawOffsets ();
522525 lengths = casted->rawSizes ();
523526
524- lengthsStream_.ensureNullsCapacity (casted->mayHaveNulls (), size);
527+ lengthsStream_.ensureNullsCapacity (
528+ casted->mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
525529 auto nonNullCount = iterateNonNullIndices<true >(
526530 ranges, lengthsStream_.mutableNonNulls (), Flat{vector}, proc);
527531 nullCount = size - nonNullCount;
@@ -533,7 +537,8 @@ class MultiValueFieldWriter : public FieldWriter {
533537 offsets = casted->rawOffsets ();
534538 lengths = casted->rawSizes ();
535539
536- lengthsStream_.ensureNullsCapacity (decoded.mayHaveNulls (), size);
540+ lengthsStream_.ensureNullsCapacity (
541+ decoded.mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
537542 auto nonNullCount = iterateNonNullIndices<true >(
538543 ranges, lengthsStream_.mutableNonNulls (), Decoded{decoded}, proc);
539544 nullCount = size - nonNullCount;
@@ -747,7 +752,10 @@ class SlidingWindowMapFieldWriter : public FieldWriter {
747752 if (mapVector) {
748753 rawOffsets = mapVector->rawOffsets ();
749754 rawLengths = mapVector->rawSizes ();
750- offsetsStream_.ensureNullsCapacity (mapVector->mayHaveNulls (), size);
755+ offsetsStream_.ensureNullsCapacity (
756+ mapVector->mayHaveNulls (),
757+ size,
758+ context_.inputBufferGrowthPolicy .get ());
751759 Flat iterableVector{vector};
752760 auto nonNullCount = iterateNonNullIndices<true >(
753761 ranges,
@@ -762,7 +770,8 @@ class SlidingWindowMapFieldWriter : public FieldWriter {
762770 NIMBLE_ASSERT (mapVector, " Unexpected vector type" );
763771 rawOffsets = mapVector->rawOffsets ();
764772 rawLengths = mapVector->rawSizes ();
765- offsetsStream_.ensureNullsCapacity (decoded.mayHaveNulls (), size);
773+ offsetsStream_.ensureNullsCapacity (
774+ decoded.mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
766775 Decoded iterableVector{decoded};
767776 auto nonNullCount = iterateNonNullIndices<true >(
768777 ranges,
@@ -974,7 +983,8 @@ class FlatMapFieldWriter : public FieldWriter {
974983 flatMap,
975984 " Unexpected vector type. Vector must be a decoded ROW vector." );
976985 const auto size = ranges.size ();
977- nullsStream_.ensureNullsCapacity (flatMap->mayHaveNulls (), size);
986+ nullsStream_.ensureNullsCapacity (
987+ flatMap->mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
978988 const auto & keys = flatMap->type ()->asRow ().names ();
979989 const auto & values = flatMap->children ();
980990
@@ -1080,7 +1090,8 @@ class FlatMapFieldWriter : public FieldWriter {
10801090 offsets = map->rawOffsets ();
10811091 lengths = map->rawSizes ();
10821092
1083- nullsStream_.ensureNullsCapacity (map->mayHaveNulls (), size);
1093+ nullsStream_.ensureNullsCapacity (
1094+ map->mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
10841095 processVector (map, Flat{vector});
10851096 } else {
10861097 // Map is encoded. Decode.
@@ -1091,7 +1102,10 @@ class FlatMapFieldWriter : public FieldWriter {
10911102 offsets = map->rawOffsets ();
10921103 lengths = map->rawSizes ();
10931104
1094- nullsStream_.ensureNullsCapacity (decodedMap.mayHaveNulls (), size);
1105+ nullsStream_.ensureNullsCapacity (
1106+ decodedMap.mayHaveNulls (),
1107+ size,
1108+ context_.inputBufferGrowthPolicy .get ());
10951109 processVector (map, Decoded{decodedMap});
10961110 }
10971111
@@ -1357,7 +1371,10 @@ class ArrayWithOffsetsFieldWriter : public FieldWriter {
13571371 const OrderedRanges& ranges,
13581372 OrderedRanges& filteredRanges) {
13591373 auto size = ranges.size ();
1360- offsetsStream_.ensureNullsCapacity (dictionaryVector.mayHaveNulls (), size);
1374+ offsetsStream_.ensureNullsCapacity (
1375+ dictionaryVector.mayHaveNulls (),
1376+ size,
1377+ context_.inputBufferGrowthPolicy .get ());
13611378
13621379 auto & offsetsData = offsetsStream_.mutableData ();
13631380 auto & lengthsData = lengthsStream_.mutableData ();
@@ -1575,7 +1592,10 @@ class ArrayWithOffsetsFieldWriter : public FieldWriter {
15751592 rawOffsets = arrayVector->rawOffsets ();
15761593 rawLengths = arrayVector->rawSizes ();
15771594
1578- offsetsStream_.ensureNullsCapacity (arrayVector->mayHaveNulls (), size);
1595+ offsetsStream_.ensureNullsCapacity (
1596+ arrayVector->mayHaveNulls (),
1597+ size,
1598+ context_.inputBufferGrowthPolicy .get ());
15791599 Flat iterableVector{vector};
15801600 iterateNonNullIndices<true >(
15811601 ranges, offsetsStream_.mutableNonNulls (), iterableVector, proc);
@@ -1589,7 +1609,8 @@ class ArrayWithOffsetsFieldWriter : public FieldWriter {
15891609 rawOffsets = arrayVector->rawOffsets ();
15901610 rawLengths = arrayVector->rawSizes ();
15911611
1592- offsetsStream_.ensureNullsCapacity (decoded.mayHaveNulls (), size);
1612+ offsetsStream_.ensureNullsCapacity (
1613+ decoded.mayHaveNulls (), size, context_.inputBufferGrowthPolicy .get ());
15931614 Decoded iterableVector{decoded};
15941615 iterateNonNullIndices<true >(
15951616 ranges, offsetsStream_.mutableNonNulls (), iterableVector, proc);
0 commit comments