@@ -682,6 +682,58 @@ TEST_F(ParquetWriterTest, updateWriterOptionsFromHiveConfig) {
682682 TimestampPrecision::kMilliseconds );
683683}
684684
685+ TEST_F (ParquetWriterTest, storeDecimalAsIntegerFromConfig) {
686+ const config::ConfigBase emptySession ({});
687+
688+ {
689+ std::unordered_map<std::string, std::string> connectorMap = {
690+ {parquet::WriterOptions::kParquetHiveConnectorStoreDecimalAsInteger ,
691+ " false" }};
692+ const config::ConfigBase connectorConfig (std::move (connectorMap));
693+ parquet::WriterOptions options;
694+ options.processConfigs (connectorConfig, emptySession);
695+ ASSERT_TRUE (options.storeDecimalAsInteger .has_value ());
696+ ASSERT_FALSE (options.storeDecimalAsInteger .value ());
697+ }
698+
699+ {
700+ std::unordered_map<std::string, std::string> connectorMap = {
701+ {parquet::WriterOptions::kParquetHiveConnectorStoreDecimalAsInteger ,
702+ " true" }};
703+ const config::ConfigBase connectorConfig (std::move (connectorMap));
704+ parquet::WriterOptions options;
705+ options.processConfigs (connectorConfig, emptySession);
706+ ASSERT_TRUE (options.storeDecimalAsInteger .has_value ());
707+ ASSERT_TRUE (options.storeDecimalAsInteger .value ());
708+ }
709+
710+ {
711+ std::unordered_map<std::string, std::string> connectorMap = {
712+ {parquet::WriterOptions::kParquetHiveConnectorStoreDecimalAsInteger ,
713+ " true" }};
714+ const config::ConfigBase connectorConfig (std::move (connectorMap));
715+ std::unordered_map<std::string, std::string> sessionMap = {
716+ {parquet::WriterOptions::kParquetSessionStoreDecimalAsInteger ,
717+ " false" }};
718+ const config::ConfigBase session (std::move (sessionMap));
719+ parquet::WriterOptions options;
720+ options.processConfigs (connectorConfig, session);
721+ ASSERT_TRUE (options.storeDecimalAsInteger .has_value ());
722+ ASSERT_FALSE (options.storeDecimalAsInteger .value ());
723+ }
724+
725+ {
726+ parquet::WriterOptions options;
727+ options.storeDecimalAsInteger = true ;
728+ std::unordered_map<std::string, std::string> connectorMap = {
729+ {parquet::WriterOptions::kParquetHiveConnectorStoreDecimalAsInteger ,
730+ " false" }};
731+ const config::ConfigBase connectorConfig (std::move (connectorMap));
732+ options.processConfigs (connectorConfig, emptySession);
733+ ASSERT_TRUE (options.storeDecimalAsInteger .value ());
734+ }
735+ }
736+
685737#ifdef VELOX_ENABLE_PARQUET
686738DEBUG_ONLY_TEST_F (ParquetWriterTest, timestampUnitAndTimeZone) {
687739 SCOPED_TESTVALUE_SET (
0 commit comments