mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 19:42:00 +00:00
Fix broken tests
This commit is contained in:
parent
e05b64064e
commit
deb3751a3a
@ -270,31 +270,11 @@ bool IcebergSchemaProcessor::allowPrimitiveTypeConversion(const String & old_typ
|
|||||||
return allowed_type_conversion;
|
return allowed_type_conversion;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<const ActionsDAG> IcebergSchemaProcessor::getSchemaTransformationDagByIds(Int32 old_id, Int32 new_id)
|
|
||||||
|
// Ids are passed only for error logging purposes
|
||||||
|
std::shared_ptr<ActionsDAG> IcebergSchemaProcessor::getSchemaTransformationDag(
|
||||||
|
const Poco::JSON::Object::Ptr & old_schema, const Poco::JSON::Object::Ptr & new_schema, Int32 old_id, Int32 new_id)
|
||||||
{
|
{
|
||||||
std::lock_guard lock(mutex);
|
|
||||||
Poco::JSON::Object::Ptr old_schema, new_schema;
|
|
||||||
auto required_transform_dag_it = transform_dags_by_ids.find({old_id, new_id});
|
|
||||||
if (required_transform_dag_it != transform_dags_by_ids.end())
|
|
||||||
{
|
|
||||||
return required_transform_dag_it->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (old_id == new_id)
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto old_schema_it = iceberg_table_schemas_by_ids.find(old_id);
|
|
||||||
if (old_schema_it == iceberg_table_schemas_by_ids.end())
|
|
||||||
{
|
|
||||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Schema with schema-id {} is unknown", old_id);
|
|
||||||
}
|
|
||||||
auto new_schema_it = iceberg_table_schemas_by_ids.find(new_id);
|
|
||||||
if (new_schema_it == iceberg_table_schemas_by_ids.end())
|
|
||||||
{
|
|
||||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Schema with schema-id {} is unknown", new_id);
|
|
||||||
}
|
|
||||||
std::unordered_map<size_t, std::pair<Poco::JSON::Object::Ptr, const ActionsDAG::Node *>> old_schema_entries;
|
std::unordered_map<size_t, std::pair<Poco::JSON::Object::Ptr, const ActionsDAG::Node *>> old_schema_entries;
|
||||||
auto old_schema_fields = old_schema->get("fields").extract<Poco::JSON::Array::Ptr>();
|
auto old_schema_fields = old_schema->get("fields").extract<Poco::JSON::Array::Ptr>();
|
||||||
std::shared_ptr<ActionsDAG> dag = std::make_shared<ActionsDAG>();
|
std::shared_ptr<ActionsDAG> dag = std::make_shared<ActionsDAG>();
|
||||||
@ -325,7 +305,8 @@ std::shared_ptr<const ActionsDAG> IcebergSchemaProcessor::getSchemaTransformatio
|
|||||||
{
|
{
|
||||||
throw Exception(
|
throw Exception(
|
||||||
ErrorCodes::UNSUPPORTED_METHOD,
|
ErrorCodes::UNSUPPORTED_METHOD,
|
||||||
"Schema evolution is not supported for complex types yet, field id is {}, old schema id is {}, new schema id is {}",
|
"Schema evolution is not supported for complex types yet, field id is {}, old schema id is {}, new schema id "
|
||||||
|
"is {}",
|
||||||
id,
|
id,
|
||||||
old_id,
|
old_id,
|
||||||
new_id);
|
new_id);
|
||||||
@ -370,7 +351,8 @@ std::shared_ptr<const ActionsDAG> IcebergSchemaProcessor::getSchemaTransformatio
|
|||||||
{
|
{
|
||||||
throw Exception(
|
throw Exception(
|
||||||
ErrorCodes::UNSUPPORTED_METHOD,
|
ErrorCodes::UNSUPPORTED_METHOD,
|
||||||
"Adding a default column with id {} and complex type is not supported yet. Old schema id is {}, new schema id is {}",
|
"Adding a default column with id {} and complex type is not supported yet. Old schema id is {}, new schema id is "
|
||||||
|
"{}",
|
||||||
id,
|
id,
|
||||||
old_id,
|
old_id,
|
||||||
new_id);
|
new_id);
|
||||||
@ -391,7 +373,34 @@ std::shared_ptr<const ActionsDAG> IcebergSchemaProcessor::getSchemaTransformatio
|
|||||||
outputs.push_back(&constant);
|
outputs.push_back(&constant);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return transform_dags_by_ids[{old_id, new_id}] = dag;
|
return dag;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<const ActionsDAG> IcebergSchemaProcessor::getSchemaTransformationDagByIds(Int32 old_id, Int32 new_id)
|
||||||
|
{
|
||||||
|
if (old_id == new_id)
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
std::lock_guard lock(mutex);
|
||||||
|
auto required_transform_dag_it = transform_dags_by_ids.find({old_id, new_id});
|
||||||
|
if (required_transform_dag_it != transform_dags_by_ids.end())
|
||||||
|
{
|
||||||
|
return required_transform_dag_it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto old_schema_it = iceberg_table_schemas_by_ids.find(old_id);
|
||||||
|
if (old_schema_it == iceberg_table_schemas_by_ids.end())
|
||||||
|
{
|
||||||
|
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Schema with schema-id {} is unknown", old_id);
|
||||||
|
}
|
||||||
|
auto new_schema_it = iceberg_table_schemas_by_ids.find(new_id);
|
||||||
|
if (new_schema_it == iceberg_table_schemas_by_ids.end())
|
||||||
|
{
|
||||||
|
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Schema with schema-id {} is unknown", new_id);
|
||||||
|
}
|
||||||
|
return transform_dags_by_ids[{old_id, new_id}]
|
||||||
|
= getSchemaTransformationDag(old_schema_it->second, new_schema_it->second, old_id, new_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IcebergSchemaProcessor::addIcebergTableSchema(Poco::JSON::Object::Ptr schema_ptr)
|
void IcebergSchemaProcessor::addIcebergTableSchema(Poco::JSON::Object::Ptr schema_ptr)
|
||||||
|
@ -99,6 +99,9 @@ private:
|
|||||||
bool allowPrimitiveTypeConversion(const String & old_type, const String & new_type);
|
bool allowPrimitiveTypeConversion(const String & old_type, const String & new_type);
|
||||||
const Node * getDefaultNodeForField(const Poco::JSON::Object::Ptr & field);
|
const Node * getDefaultNodeForField(const Poco::JSON::Object::Ptr & field);
|
||||||
|
|
||||||
|
std::shared_ptr<ActionsDAG> getSchemaTransformationDag(
|
||||||
|
const Poco::JSON::Object::Ptr & old_schema, const Poco::JSON::Object::Ptr & new_schema, Int32 old_id, Int32 new_id);
|
||||||
|
|
||||||
std::mutex mutex;
|
std::mutex mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user