MCPcopy Create free account
hub / github.com/apache/impala / SkipValues

Method SkipValues

be/src/exec/parquet/parquet-bool-decoder.cc:69–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67}
68
69bool ParquetBoolDecoder::SkipValues(int num_values) {
70 DCHECK_GE(num_values, 0);
71 int skip_cached = min(num_unpacked_values_ - unpacked_value_idx_, num_values);
72 unpacked_value_idx_ += skip_cached;
73 if (skip_cached == num_values) return true;
74 int num_remaining = num_values - skip_cached;
75 if (encoding_ == parquet::Encoding::PLAIN) {
76 int num_to_skip = BitUtil::RoundDownToPowerOf2(num_remaining, 32);
77 if (num_to_skip > 0) {
78 bool skipped = bool_values_.SkipBatch(1, num_to_skip);
79 DCHECK(skipped);
80 }
81 num_remaining -= num_to_skip;
82 if (num_remaining > 0) {
83 DCHECK_LE(num_remaining, UNPACKED_BUFFER_LEN);
84 num_unpacked_values_ = bool_values_.UnpackBatch(1, UNPACKED_BUFFER_LEN,
85 &unpacked_values_[0]);
86 if (UNLIKELY(num_unpacked_values_ < num_remaining)) return false;
87 unpacked_value_idx_ = num_remaining;
88 }
89 return true;
90 } else {
91 // rle_decoder_.SkipValues() might fill its internal buffer 'literal_buffer_'.
92 // This can result in sub-optimal decoding later, because 'literal_buffer_' might
93 // be used again and again, especially when reading a very long literal run.
94 DCHECK_EQ(encoding_, parquet::Encoding::RLE);
95 return rle_decoder_.SkipValues(num_remaining) == num_remaining;
96 }
97}
98
99} // namespace impala

Callers 4

TestSkippingFunction · 0.45
skipMethod · 0.45
SkipFunction · 0.45

Calls 3

minFunction · 0.85
SkipBatchMethod · 0.80
UnpackBatchMethod · 0.80

Tested by 3

TestSkippingFunction · 0.36
skipMethod · 0.36
SkipFunction · 0.36