@@ -71,7 +71,8 @@ std::vector<KeyNode<T>> getKeyNodes(
7171 const std::shared_ptr<const dwio::common::TypeWithId>& fileType,
7272 DwrfParams& params,
7373 common::ScanSpec& scanSpec,
74- bool asStruct) {
74+ bool asStruct,
75+ bool useColumnNames) {
7576 using namespace dwio ::common::flatmap;
7677
7778 std::vector<KeyNode<T>> keyNodes;
@@ -145,7 +146,11 @@ std::vector<KeyNode<T>> getKeyNodes(
145146 .inMapDecoder = inMapDecoder.get (),
146147 .keySelectionCallback = nullptr });
147148 auto reader = SelectiveDwrfReader::build (
148- requestedValueType, dataValueType, childParams, *childSpec);
149+ requestedValueType,
150+ dataValueType,
151+ childParams,
152+ *childSpec,
153+ useColumnNames);
149154 keyNodes.emplace_back (
150155 key, sequence, std::move (reader), std::move (inMapDecoder));
151156 });
@@ -169,14 +174,21 @@ class SelectiveFlatMapAsStructReader : public SelectiveStructColumnReaderBase {
169174 const TypePtr& requestedType,
170175 const std::shared_ptr<const dwio::common::TypeWithId>& fileType,
171176 DwrfParams& params,
172- common::ScanSpec& scanSpec)
177+ common::ScanSpec& scanSpec,
178+ bool useColumnNames)
173179 : SelectiveStructColumnReaderBase(
174180 requestedType,
175181 fileType,
176182 params,
177- scanSpec),
178- keyNodes_ (
179- getKeyNodes<T>(requestedType, fileType, params, scanSpec, true )) {
183+ scanSpec,
184+ useColumnNames),
185+ keyNodes_ (getKeyNodes<T>(
186+ requestedType,
187+ fileType,
188+ params,
189+ scanSpec,
190+ true ,
191+ useColumnNames)) {
180192 VELOX_CHECK (
181193 !keyNodes_.empty (),
182194 " For struct encoding, keys to project must be configured" );
@@ -201,15 +213,23 @@ class SelectiveFlatMapReader : public SelectiveStructColumnReaderBase {
201213 const TypePtr& requestedType,
202214 const std::shared_ptr<const dwio::common::TypeWithId>& fileType,
203215 DwrfParams& params,
204- common::ScanSpec& scanSpec)
216+ common::ScanSpec& scanSpec,
217+ bool useColumnNames)
205218 : SelectiveStructColumnReaderBase(
206219 requestedType,
207220 fileType,
208221 params,
209- scanSpec),
222+ scanSpec,
223+ useColumnNames),
210224 flatMap_ (
211225 *this ,
212- getKeyNodes<T>(requestedType, fileType, params, scanSpec, false )) {}
226+ getKeyNodes<T>(
227+ requestedType,
228+ fileType,
229+ params,
230+ scanSpec,
231+ false ,
232+ useColumnNames)) {}
213233
214234 void read (int64_t offset, const RowSet& rows, const uint64_t * incomingNulls)
215235 override {
@@ -230,13 +250,14 @@ std::unique_ptr<dwio::common::SelectiveColumnReader> createReader(
230250 const TypePtr& requestedType,
231251 const std::shared_ptr<const dwio::common::TypeWithId>& fileType,
232252 DwrfParams& params,
233- common::ScanSpec& scanSpec) {
253+ common::ScanSpec& scanSpec,
254+ bool useColumnNames) {
234255 if (scanSpec.isFlatMapAsStruct ()) {
235256 return std::make_unique<SelectiveFlatMapAsStructReader<T>>(
236- requestedType, fileType, params, scanSpec);
257+ requestedType, fileType, params, scanSpec, useColumnNames );
237258 } else {
238259 return std::make_unique<SelectiveFlatMapReader<T>>(
239- requestedType, fileType, params, scanSpec);
260+ requestedType, fileType, params, scanSpec, useColumnNames );
240261 }
241262}
242263
@@ -247,21 +268,26 @@ createSelectiveFlatMapColumnReader(
247268 const TypePtr& requestedType,
248269 const std::shared_ptr<const dwio::common::TypeWithId>& fileType,
249270 DwrfParams& params,
250- common::ScanSpec& scanSpec) {
271+ common::ScanSpec& scanSpec,
272+ bool useColumnNames) {
251273 auto kind = fileType->childAt (0 )->type ()->kind ();
252274 switch (kind) {
253275 case TypeKind::TINYINT:
254- return createReader<int8_t >(requestedType, fileType, params, scanSpec);
276+ return createReader<int8_t >(
277+ requestedType, fileType, params, scanSpec, useColumnNames);
255278 case TypeKind::SMALLINT:
256- return createReader<int16_t >(requestedType, fileType, params, scanSpec);
279+ return createReader<int16_t >(
280+ requestedType, fileType, params, scanSpec, useColumnNames);
257281 case TypeKind::INTEGER:
258- return createReader<int32_t >(requestedType, fileType, params, scanSpec);
282+ return createReader<int32_t >(
283+ requestedType, fileType, params, scanSpec, useColumnNames);
259284 case TypeKind::BIGINT:
260- return createReader<int64_t >(requestedType, fileType, params, scanSpec);
285+ return createReader<int64_t >(
286+ requestedType, fileType, params, scanSpec, useColumnNames);
261287 case TypeKind::VARBINARY:
262288 case TypeKind::VARCHAR:
263289 return createReader<StringView>(
264- requestedType, fileType, params, scanSpec);
290+ requestedType, fileType, params, scanSpec, useColumnNames );
265291 default :
266292 VELOX_UNSUPPORTED (" Not supported key type: {}" , kind);
267293 }
0 commit comments