Skip to content

Commit 2fe6a95

Browse files
rui-moLakehouse Engine Bot
authored andcommitted
[13620] fix: Add config for requested type check in ReaderBase::convertType
Alchemy-item: [[13620] fix: Add config for requested type check in ReaderBase::convertType](#35 (comment)) commit 1/1 - d2272fd
1 parent f0d4272 commit 2fe6a95

File tree

7 files changed

+176
-94
lines changed

7 files changed

+176
-94
lines changed

velox/connectors/hive/HiveConfig.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,13 @@ bool HiveConfig::readStatsBasedFilterReorderDisabled(
230230
config_->get<bool>(kReadStatsBasedFilterReorderDisabled, false));
231231
}
232232

233+
bool HiveConfig::isRequestedTypeCheckEnabled(
234+
const config::ConfigBase* session) const {
235+
return session->get<bool>(
236+
kEnableRequestedTypeCheckSession,
237+
config_->get<bool>(kEnableRequestedTypeCheck, true));
238+
}
239+
233240
std::string HiveConfig::hiveLocalDataPath() const {
234241
return config_->get<std::string>(kLocalDataPath, "");
235242
}

velox/connectors/hive/HiveConfig.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,11 @@ class HiveConfig {
187187
static constexpr const char* kLocalDataPath = "hive_local_data_path";
188188
static constexpr const char* kLocalFileFormat = "hive_local_file_format";
189189

190+
static constexpr const char* kEnableRequestedTypeCheck =
191+
"enable-requested-type-check";
192+
static constexpr const char* kEnableRequestedTypeCheckSession =
193+
"enable_requested_type_check";
194+
190195
InsertExistingPartitionsBehavior insertExistingPartitionsBehavior(
191196
const config::ConfigBase* session) const;
192197

@@ -258,6 +263,10 @@ class HiveConfig {
258263
bool readStatsBasedFilterReorderDisabled(
259264
const config::ConfigBase* session) const;
260265

266+
/// Whether to enable requested type check in the ReaderBase::convertType.
267+
/// Returns true by default.
268+
bool isRequestedTypeCheckEnabled(const config::ConfigBase* session) const;
269+
261270
/// Returns the file system path containing local data. If non-empty,
262271
/// initializes LocalHiveConnectorMetadata to provide metadata for the tables
263272
/// in the directory.

velox/connectors/hive/HiveConnectorUtil.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,8 @@ void configureReaderOptions(
604604
}
605605

606606
readerOptions.setFileFormat(hiveSplit->fileFormat);
607+
readerOptions.setEnableRequestedTypeCheck(
608+
hiveConfig->isRequestedTypeCheckEnabled(sessionProperties));
607609
}
608610
}
609611

velox/docs/configs.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,11 @@ Each query can override the config by setting corresponding query session proper
664664
- bool
665665
- true
666666
- Reads timestamp partition value as local time if true. Otherwise, reads as UTC.
667+
* - enable-requested-type-check
668+
- enable_requested_type_check
669+
- bool
670+
- true
671+
- Whether to enable requested type check in the `ReaderBase::convertType`. True by default.
667672

668673
``ORC File Format Configuration``
669674
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

velox/dwio/common/Options.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,10 @@ class ReaderOptions : public io::ReaderOptions {
600600
return randomSkip_;
601601
}
602602

603+
bool enableRequestedTypeCheck() const {
604+
return enableRequestedTypeCheck_;
605+
}
606+
603607
void setRandomSkip(std::shared_ptr<random::RandomSkipTracker> randomSkip) {
604608
randomSkip_ = std::move(randomSkip);
605609
}
@@ -636,6 +640,10 @@ class ReaderOptions : public io::ReaderOptions {
636640
allowEmptyFile_ = value;
637641
}
638642

643+
void setEnableRequestedTypeCheck(bool enableRequestedTypeCheck) {
644+
enableRequestedTypeCheck_ = enableRequestedTypeCheck;
645+
}
646+
639647
private:
640648
uint64_t tailLocation_;
641649
FileFormat fileFormat_;
@@ -653,6 +661,7 @@ class ReaderOptions : public io::ReaderOptions {
653661
bool adjustTimestampToTimezone_{false};
654662
bool selectiveNimbleReaderEnabled_{false};
655663
bool allowEmptyFile_{false};
664+
bool enableRequestedTypeCheck_{true};
656665
};
657666

658667
struct WriterOptions {

0 commit comments

Comments
 (0)