Skip to content

Commit d09df40

Browse files
committed
port changes
1 parent a1c4e5e commit d09df40

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/Databases/DataLake/GlueCatalog.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -405,10 +405,12 @@ bool GlueCatalog::empty() const
405405
bool GlueCatalog::classifyTimestampTZ(const String & column_name, const TableMetadata & table_metadata) const
406406
{
407407
String metadata_path;
408+
String metadata_uri;
408409
if (auto table_specific_properties = table_metadata.getDataLakeSpecificProperties();
409410
table_specific_properties.has_value())
410411
{
411412
metadata_path = table_specific_properties->iceberg_metadata_file_location;
413+
metadata_uri = metadata_path;
412414
if (metadata_path.starts_with("s3:/"))
413415
metadata_path = metadata_path.substr(5);
414416

@@ -420,22 +422,24 @@ bool GlueCatalog::classifyTimestampTZ(const String & column_name, const TableMet
420422
else
421423
throw DB::Exception(DB::ErrorCodes::BAD_ARGUMENTS, "Metadata specific properties should be defined");
422424

423-
if (!metadata_objects.get(metadata_path))
425+
if (!metadata_objects.get(metadata_uri))
424426
{
425427
DB::ASTStorage * storage = table_engine_definition->as<DB::ASTStorage>();
426428
DB::ASTs args = storage->engine->arguments->children;
427429

428-
auto table_endpoint = settings[DB::DatabaseDataLakeSetting::storage_endpoint].value;
430+
String storage_endpoint = !settings[DB::DatabaseDataLakeSetting::storage_endpoint].empty() ? settings[DB::DatabaseDataLakeSetting::storage_endpoint].value : metadata_uri;
431+
429432
if (args.empty())
430-
args.emplace_back(std::make_shared<DB::ASTLiteral>(table_endpoint));
433+
args.emplace_back(std::make_shared<DB::ASTLiteral>(storage_endpoint));
431434
else
432-
args[0] = std::make_shared<DB::ASTLiteral>(table_endpoint);
435+
args[0] = std::make_shared<DB::ASTLiteral>(storage_endpoint);
433436

434-
if (args.size() == 1 && table_metadata.hasStorageCredentials())
437+
if (args.size() == 1)
435438
{
436-
auto storage_credentials = table_metadata.getStorageCredentials();
437-
if (storage_credentials)
438-
storage_credentials->addCredentialsToEngineArgs(args);
439+
if (table_metadata.hasStorageCredentials())
440+
table_metadata.getStorageCredentials()->addCredentialsToEngineArgs(args);
441+
else if (!credentials.IsExpiredOrEmpty())
442+
DataLake::S3Credentials(credentials.GetAWSAccessKeyId(), credentials.GetAWSSecretKey(), credentials.GetSessionToken()).addCredentialsToEngineArgs(args);
439443
}
440444

441445
auto storage_settings = std::make_shared<DB::DataLakeStorageSettings>();
@@ -454,9 +458,9 @@ bool GlueCatalog::classifyTimestampTZ(const String & column_name, const TableMet
454458
Poco::JSON::Parser parser;
455459
Poco::Dynamic::Var result = parser.parse(metadata_file);
456460
auto metadata_object = result.extract<Poco::JSON::Object::Ptr>();
457-
metadata_objects.set(metadata_path, std::make_shared<Poco::JSON::Object::Ptr>(metadata_object));
461+
metadata_objects.set(metadata_uri, std::make_shared<Poco::JSON::Object::Ptr>(metadata_object));
458462
}
459-
auto metadata_object = *metadata_objects.get(metadata_path);
463+
auto metadata_object = *metadata_objects.get(metadata_uri);
460464
auto current_schema_id = metadata_object->getValue<Int64>("current-schema-id");
461465
auto schemas = metadata_object->getArray(Iceberg::f_schemas);
462466
for (size_t i = 0; i < schemas->size(); ++i)

0 commit comments

Comments
 (0)