From 51fbd46724f410a2f682a56e377bb5ccdda703ab Mon Sep 17 00:00:00 2001 From: azevaykin Date: Sun, 8 Sep 2024 19:14:23 +0000 Subject: [PATCH 1/6] PgTypeDesc is const --- ydb/core/grpc_services/rpc_kh_describe.cpp | 2 +- ydb/core/grpc_services/rpc_read_rows.cpp | 2 +- ydb/core/io_formats/cell_maker/cell_maker.cpp | 6 +- .../kqp/provider/read_attributes_utils.cpp | 2 +- ydb/core/kqp/provider/yql_kikimr_gateway.cpp | 2 +- ydb/core/kqp/provider/yql_kikimr_provider.cpp | 2 +- ydb/core/kqp/provider/yql_kikimr_results.cpp | 2 +- .../kqp/query_compiler/kqp_mkql_compiler.cpp | 2 +- ydb/core/kqp/runtime/kqp_program_builder.h | 4 +- ydb/core/kqp/runtime/kqp_write_table.cpp | 2 +- ydb/core/kqp/ut/common/columnshard.cpp | 2 +- ydb/core/kqp/ut/common/columnshard.h | 4 +- ydb/core/kqp/ut/opt/kqp_kv_ut.cpp | 4 +- ydb/core/kqp/ut/pg/kqp_pg_ut.cpp | 6 +- ydb/core/scheme/scheme_type_order.h | 4 +- ydb/core/scheme_types/scheme_type_info.h | 6 +- ydb/core/tablet_flat/flat_dbase_apply.cpp | 2 +- .../transactions/operators/schema.cpp | 2 +- ydb/core/tx/datashard/export_common.cpp | 2 +- ydb/core/tx/datashard/export_common.h | 2 +- ydb/core/tx/datashard/read_table_scan.cpp | 2 +- ...shard__operation_common_external_table.cpp | 4 +- .../tx/schemeshard/schemeshard_info_types.cpp | 4 +- ydb/core/tx/schemeshard/schemeshard_utils.cpp | 2 +- ydb/core/tx/tx_proxy/read_table_impl.cpp | 2 +- .../tx/tx_proxy/upload_rows_common_impl.h | 4 +- ydb/core/ydb_convert/table_description.cpp | 8 +- ydb/library/mkql_proto/mkql_proto.cpp | 4 +- .../yql/parser/pg_wrapper/comp_factory.cpp | 76 +++++++++---------- .../parser/pg_wrapper/interface/type_desc.h | 30 ++++---- ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp | 30 ++++---- 31 files changed, 113 insertions(+), 113 deletions(-) diff --git a/ydb/core/grpc_services/rpc_kh_describe.cpp b/ydb/core/grpc_services/rpc_kh_describe.cpp index 8e5b621e0dbf..1b517ff201d8 100644 --- a/ydb/core/grpc_services/rpc_kh_describe.cpp +++ b/ydb/core/grpc_services/rpc_kh_describe.cpp @@ -179,7 +179,7 @@ class TKikhouseDescribeTableRPC : public TActorBootstrappedmutable_type(); if (typeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - auto* typeDesc = typeInfo.GetTypeDesc(); + auto typeDesc = typeInfo.GetTypeDesc(); auto* pg = item->mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/grpc_services/rpc_read_rows.cpp b/ydb/core/grpc_services/rpc_read_rows.cpp index 4065927fa755..cae6850d160e 100644 --- a/ydb/core/grpc_services/rpc_read_rows.cpp +++ b/ydb/core/grpc_services/rpc_read_rows.cpp @@ -164,7 +164,7 @@ class TReadRowsRPC : public TActorBootstrapped { } } else if (typeInProto.has_pg_type()) { const auto& typeName = typeInProto.pg_type().type_name(); - auto* typeDesc = NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NPg::TypeDescFromPgTypeName(typeName); if (!typeDesc) { errorMessage = Sprintf("Unknown pg type for column %s: %s", name.c_str(), typeName.c_str()); diff --git a/ydb/core/io_formats/cell_maker/cell_maker.cpp b/ydb/core/io_formats/cell_maker/cell_maker.cpp index fdc01a237f03..6a8c5fd4c2bf 100644 --- a/ydb/core/io_formats/cell_maker/cell_maker.cpp +++ b/ydb/core/io_formats/cell_maker/cell_maker.cpp @@ -108,7 +108,7 @@ namespace { } template - bool TryParse(TStringBuf value, T& result, TString& err, void* parseParam) { + bool TryParse(TStringBuf value, T& result, TString& err, const void* parseParam) { Y_UNUSED(value); Y_UNUSED(result); Y_UNUSED(err); @@ -117,7 +117,7 @@ namespace { } template <> - bool TryParse(TStringBuf value, NPg::TConvertResult& result, TString& err, void* typeDesc) { + bool TryParse(TStringBuf value, NPg::TConvertResult& result, TString& err, const void* typeDesc) { TString unescaped; if (!CheckedUnescape(value, unescaped)) { err = MakeError(); @@ -233,7 +233,7 @@ namespace { return Conv(c, v, pool, conv); } - static bool Make(TCell& c, TStringBuf v, TMemoryPool& pool, TString& err, TConverter conv, void* parseParam) { + static bool Make(TCell& c, TStringBuf v, TMemoryPool& pool, TString& err, TConverter conv, const void* parseParam) { T t; if (!TryParse(v, t, err, parseParam)) { return false; diff --git a/ydb/core/kqp/provider/read_attributes_utils.cpp b/ydb/core/kqp/provider/read_attributes_utils.cpp index 9ae143169ab6..2184a948de2d 100644 --- a/ydb/core/kqp/provider/read_attributes_utils.cpp +++ b/ydb/core/kqp/provider/read_attributes_utils.cpp @@ -218,7 +218,7 @@ void ReplaceReadAttributes(TExprNode& node, static Ydb::Type CreateYdbType(const NKikimr::NScheme::TTypeInfo& typeInfo, bool notNull) { Ydb::Type ydbType; if (typeInfo.GetTypeId() == NKikimr::NScheme::NTypeIds::Pg) { - auto* typeDesc = typeInfo.GetTypeDesc(); + auto typeDesc = typeInfo.GetTypeDesc(); auto* pg = ydbType.mutable_pg_type(); pg->set_type_name(NKikimr::NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NKikimr::NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/kqp/provider/yql_kikimr_gateway.cpp b/ydb/core/kqp/provider/yql_kikimr_gateway.cpp index d794ab94e492..0057e576760b 100644 --- a/ydb/core/kqp/provider/yql_kikimr_gateway.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_gateway.cpp @@ -177,7 +177,7 @@ EYqlIssueCode YqlStatusFromYdbStatus(ui32 ydbStatus) { } void SetColumnType(Ydb::Type& protoType, const TString& typeName, bool notNull) { - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NKikimr::NPg::TypeDescFromPgTypeName(typeName); if (typeDesc) { Y_ABORT_UNLESS(!notNull, "It is not allowed to create NOT NULL pg columns"); auto* pg = protoType.mutable_pg_type(); diff --git a/ydb/core/kqp/provider/yql_kikimr_provider.cpp b/ydb/core/kqp/provider/yql_kikimr_provider.cpp index e5376392f038..adb35cae0b35 100644 --- a/ydb/core/kqp/provider/yql_kikimr_provider.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_provider.cpp @@ -668,7 +668,7 @@ std::optional FillLiteralProto(NNodes::TExprBase maybeLiteral, const TT auto actualPgType = valueType->Cast(); YQL_ENSURE(actualPgType); - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(actualPgType->GetId()); + auto typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(actualPgType->GetId()); if (!typeDesc) { return TStringBuilder() << "Failed to parse default expr typename " << actualPgType->GetName(); } diff --git a/ydb/core/kqp/provider/yql_kikimr_results.cpp b/ydb/core/kqp/provider/yql_kikimr_results.cpp index 3aa20d8d77c2..95b1fab3734f 100644 --- a/ydb/core/kqp/provider/yql_kikimr_results.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_results.cpp @@ -888,7 +888,7 @@ const TTypeAnnotationNode* ParseTypeFromYdbType(const Ydb::Type& type, TExprCont case Ydb::Type::kPgType: { if (!type.pg_type().type_name().empty()) { const auto& typeName = type.pg_type().type_name(); - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NKikimr::NPg::TypeDescFromPgTypeName(typeName); return ctx.MakeType(NKikimr::NPg::PgTypeIdFromTypeDesc(typeDesc)); } return ctx.MakeType(type.pg_type().Getoid()); diff --git a/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp b/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp index 5a8fec44ea15..95f27bdb4cc5 100644 --- a/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp +++ b/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp @@ -25,7 +25,7 @@ TVector GetKqpColumns(const TKikimrTableMetadata& table, const ui32 columnId = 0; ui32 columnType = 0; bool notNull = false; - void* columnTypeDesc = nullptr; + const void* columnTypeDesc = nullptr; auto columnData = table.Columns.FindPtr(name); if (columnData) { diff --git a/ydb/core/kqp/runtime/kqp_program_builder.h b/ydb/core/kqp/runtime/kqp_program_builder.h index f52cea905f1b..10bbb828dbc9 100644 --- a/ydb/core/kqp/runtime/kqp_program_builder.h +++ b/ydb/core/kqp/runtime/kqp_program_builder.h @@ -13,9 +13,9 @@ struct TKqpTableColumn { TString Name; NUdf::TDataTypeId Type; bool NotNull; - void* TypeDesc; + const void* TypeDesc; - TKqpTableColumn(ui32 id, const TStringBuf& name, NUdf::TDataTypeId type, bool notNull, void* typeDesc) + TKqpTableColumn(ui32 id, const TStringBuf& name, NUdf::TDataTypeId type, bool notNull, const void* typeDesc) : Id(id) , Name(name) , Type(type) diff --git a/ydb/core/kqp/runtime/kqp_write_table.cpp b/ydb/core/kqp/runtime/kqp_write_table.cpp index 21dc4b1f2734..ed20ed059cb0 100644 --- a/ydb/core/kqp/runtime/kqp_write_table.cpp +++ b/ydb/core/kqp/runtime/kqp_write_table.cpp @@ -231,7 +231,7 @@ class TRowBuilder { CellsInfo[index].Value = value; if (type.GetTypeId() == NScheme::NTypeIds::Pg) { - const auto typeDesc = type.GetTypeDesc(); + auto typeDesc = type.GetTypeDesc(); if (typmod != -1 && NPg::TypeDescNeedsCoercion(typeDesc)) { TMaybe err; CellsInfo[index].PgBinaryValue = NYql::NCommon::PgValueCoerce(value, NPg::PgTypeIdFromTypeDesc(typeDesc), typmod, &err); diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index 6318a8f1e7ea..f7466b183f42 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -198,7 +198,7 @@ namespace NKqp { return JoinStrings(columnStr, ", "); } - std::shared_ptr TTestHelper::TColumnTableBase::BuildField(const TString name, const NScheme::TTypeId typeId, void*const typeDesc, bool nullable) const { + std::shared_ptr TTestHelper::TColumnTableBase::BuildField(const TString name, const NScheme::TTypeId typeId, const void* typeDesc, bool nullable) const { switch (typeId) { case NScheme::NTypeIds::Bool: return arrow::field(name, arrow::boolean(), nullable); diff --git a/ydb/core/kqp/ut/common/columnshard.h b/ydb/core/kqp/ut/common/columnshard.h index 201b44ad8ea5..61fc6a14a702 100644 --- a/ydb/core/kqp/ut/common/columnshard.h +++ b/ydb/core/kqp/ut/common/columnshard.h @@ -18,7 +18,7 @@ namespace NKqp { class TTestHelper { public: class TColumnSchema { - using TTypeDesc = void*; + using TTypeDesc = const void*; YDB_ACCESSOR_DEF(TString, Name); YDB_ACCESSOR_DEF(NScheme::TTypeId, Type); YDB_ACCESSOR_DEF(TTypeDesc, TypeDesc); @@ -49,7 +49,7 @@ namespace NKqp { private: virtual TString GetObjectType() const = 0; TString BuildColumnsStr(const TVector& clumns) const; - std::shared_ptr BuildField(const TString name, const NScheme::TTypeId typeId, void*const typeDesc, bool nullable) const; + std::shared_ptr BuildField(const TString name, const NScheme::TTypeId typeId, const void* typeDesc, bool nullable) const; }; class TColumnTable : public TColumnTableBase { diff --git a/ydb/core/kqp/ut/opt/kqp_kv_ut.cpp b/ydb/core/kqp/ut/opt/kqp_kv_ut.cpp index aad73eda0583..3780c73ea3a7 100644 --- a/ydb/core/kqp/ut/opt/kqp_kv_ut.cpp +++ b/ydb/core/kqp/ut/opt/kqp_kv_ut.cpp @@ -435,7 +435,7 @@ Y_UNIT_TEST_SUITE(KqpKv) { const auto testSingle = [&](const ::ReadRowsPgParam& testParam, bool isNull) { - auto* typeDesc = NPg::TypeDescFromPgTypeId(testParam.TypeId); + auto typeDesc = NPg::TypeDescFromPgTypeId(testParam.TypeId); UNIT_ASSERT(!!typeDesc); const auto typeName = NPg::PgTypeNameFromTypeDesc(typeDesc); const auto& pgType = TPgType(typeName, testParam.TypeMod); @@ -510,7 +510,7 @@ Y_UNIT_TEST_SUITE(KqpKv) { const auto testSingle = [&](const ::ReadRowsPgParam& testParam, bool isNull) { - auto* typeDesc = NPg::TypeDescFromPgTypeId(testParam.TypeId); + auto typeDesc = NPg::TypeDescFromPgTypeId(testParam.TypeId); UNIT_ASSERT(!!typeDesc); const auto typeName = NPg::PgTypeNameFromTypeDesc(typeDesc); const auto& pgType = TPgType(typeName, testParam.TypeMod); diff --git a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp index f6186397e69e..0ffe23ee16e0 100644 --- a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp +++ b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp @@ -729,7 +729,7 @@ Y_UNIT_TEST_SUITE(KqpPg) { ui16 rowCount = 10, TVector colNames = {"key", "value"} ) { - auto* typeDesc = NPg::TypeDescFromPgTypeId(typeId); + auto typeDesc = NPg::TypeDescFromPgTypeId(typeId); auto typeName = NPg::PgTypeNameFromTypeDesc(typeDesc); TTableBuilder builder; @@ -793,7 +793,7 @@ Y_UNIT_TEST_SUITE(KqpPg) { std::function textIn, size_t rowCount = 1 ) { - auto* typeDesc = NPg::TypeDescFromPgTypeId(typeId); + auto typeDesc = NPg::TypeDescFromPgTypeId(typeId); auto typeName = NPg::PgTypeNameFromTypeDesc(typeDesc); auto paramsHash = THash()(typeMod); @@ -3213,7 +3213,7 @@ Y_UNIT_TEST_SUITE(KqpPg) { auto tableClient = kikimr.GetTableClient(); auto session = tableClient.CreateSession().GetValueSync().GetSession(); auto tableName = createTable(tableClient, session, spec.TypeId, spec.IsKey, true, spec.TextIn, "", 0); - auto* typeDesc = NPg::TypeDescFromPgTypeId(spec.TypeId); + auto typeDesc = NPg::TypeDescFromPgTypeId(spec.TypeId); auto typeName = NPg::PgTypeNameFromTypeDesc(typeDesc); auto keyType = spec.IsKey ? typeName : "pgint2"; auto req = Sprintf("\ diff --git a/ydb/core/scheme/scheme_type_order.h b/ydb/core/scheme/scheme_type_order.h index 283f65464140..a42e2ac60c0b 100644 --- a/ydb/core/scheme/scheme_type_order.h +++ b/ydb/core/scheme/scheme_type_order.h @@ -81,7 +81,7 @@ struct TTypeInfoOrder { return TypeIdOrder.IsDescending(); } - void* GetTypeDesc() const { + const void* GetTypeDesc() const { return TypeDesc; } @@ -91,7 +91,7 @@ struct TTypeInfoOrder { private: TTypeIdOrder TypeIdOrder; - void* TypeDesc = {}; + const void* TypeDesc = {}; }; } diff --git a/ydb/core/scheme_types/scheme_type_info.h b/ydb/core/scheme_types/scheme_type_info.h index 6fa43baf8a68..cbb358a70c5d 100644 --- a/ydb/core/scheme_types/scheme_type_info.h +++ b/ydb/core/scheme_types/scheme_type_info.h @@ -9,7 +9,7 @@ class TTypeInfo { constexpr TTypeInfo() {} - explicit constexpr TTypeInfo(TTypeId typeId, void* typeDesc = {}) + explicit constexpr TTypeInfo(TTypeId typeId, const void* typeDesc = {}) : TypeId(typeId) , TypeDesc(typeDesc) { @@ -30,13 +30,13 @@ class TTypeInfo { return TypeId; } - void* GetTypeDesc() const { + const void* GetTypeDesc() const { return TypeDesc; } private: TTypeId TypeId = 0; - void* TypeDesc = {}; + const void* TypeDesc = {}; }; } // namespace NKikimr::NScheme diff --git a/ydb/core/tablet_flat/flat_dbase_apply.cpp b/ydb/core/tablet_flat/flat_dbase_apply.cpp index ba5e01228055..e00d8bcbc004 100644 --- a/ydb/core/tablet_flat/flat_dbase_apply.cpp +++ b/ydb/core/tablet_flat/flat_dbase_apply.cpp @@ -257,7 +257,7 @@ bool TSchemeModifier::AddPgColumn(ui32 tid, const TString &name, ui32 id, ui32 t NScheme::TTypeInfo typeInfo; if (pgType != 0) { Y_ABORT_UNLESS((NScheme::TTypeId)type == NScheme::NTypeIds::Pg); - auto* typeDesc = NPg::TypeDescFromPgTypeId(pgType); + auto typeDesc = NPg::TypeDescFromPgTypeId(pgType); Y_ABORT_UNLESS(typeDesc); typeInfo = NScheme::TTypeInfo(type, typeDesc); } else { diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.cpp b/ydb/core/tx/columnshard/transactions/operators/schema.cpp index d4019542bf1e..2cc9d78e974b 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.cpp +++ b/ydb/core/tx/columnshard/transactions/operators/schema.cpp @@ -119,7 +119,7 @@ NKikimr::TConclusionStatus TSchemaTransactionOperator::ValidateTableSchema(const TVector columnErrors; for (const NKikimrSchemeOp::TOlapColumnDescription& column : schema.GetColumns()) { TString name = column.GetName(); - void* typeDescr = nullptr; + const void* typeDescr = nullptr; if (column.GetTypeId() == NTypeIds::Pg && column.HasTypeInfo()) { typeDescr = NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()); } diff --git a/ydb/core/tx/datashard/export_common.cpp b/ydb/core/tx/datashard/export_common.cpp index a0d0faa35ce2..300fc4b0f03a 100644 --- a/ydb/core/tx/datashard/export_common.cpp +++ b/ydb/core/tx/datashard/export_common.cpp @@ -132,7 +132,7 @@ bool DyNumberToStream(TStringBuf data, IOutputStream& out, TString& err) { return true; } -bool PgToStream(TStringBuf data, void* typeDesc, IOutputStream& out, TString& err) { +bool PgToStream(TStringBuf data, const void* typeDesc, IOutputStream& out, TString& err) { const NPg::TConvertResult& pgResult = NPg::PgNativeTextFromNativeBinary(data, typeDesc); if (pgResult.Error) { err = *pgResult.Error; diff --git a/ydb/core/tx/datashard/export_common.h b/ydb/core/tx/datashard/export_common.h index 098b8b770d67..cdc5c4eb48ca 100644 --- a/ydb/core/tx/datashard/export_common.h +++ b/ydb/core/tx/datashard/export_common.h @@ -43,7 +43,7 @@ TString DecimalToString(const std::pair& loHi); TString DyNumberToString(TStringBuf data); bool DecimalToStream(const std::pair& loHi, IOutputStream& out, TString& err); bool DyNumberToStream(TStringBuf data, IOutputStream& out, TString& err); -bool PgToStream(TStringBuf data, void* typeDesc, IOutputStream& out, TString& err); +bool PgToStream(TStringBuf data, const void* typeDesc, IOutputStream& out, TString& err); bool UuidToStream(const std::pair& loHi, IOutputStream& out, TString& err); } // NDataShard diff --git a/ydb/core/tx/datashard/read_table_scan.cpp b/ydb/core/tx/datashard/read_table_scan.cpp index 8b21023527fc..45ad5e928cf1 100644 --- a/ydb/core/tx/datashard/read_table_scan.cpp +++ b/ydb/core/tx/datashard/read_table_scan.cpp @@ -355,7 +355,7 @@ class TRowsToYdbResult : public TRowsToResult { if (col.GetTypeId() == NScheme::NTypeIds::Pg) { auto* pg = meta->mutable_type()->mutable_pg_type(); - auto* typeDesc = typeInfoMod.TypeInfo.GetTypeDesc(); + auto typeDesc = typeInfoMod.TypeInfo.GetTypeDesc(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_type_modifier(typeInfoMod.TypeMod); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp index 86dcd1493373..a4b76532fa0e 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp @@ -54,7 +54,7 @@ bool Validate(const TString& sourceType, const NKikimrSchemeOp::TExternalTableDe Ydb::Type CreateYdbType(const NScheme::TTypeInfo& typeInfo, bool notNull) { Ydb::Type ydbType; if (typeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - auto* typeDesc = typeInfo.GetTypeDesc(); + auto typeDesc = typeInfo.GetTypeDesc(); auto* pg = ydbType.mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); @@ -132,7 +132,7 @@ std::pair> CreateExternalTable( } typeInfo = NScheme::TTypeInfo(type->GetTypeId()); } else { - auto* typeDesc = NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NPg::TypeDescFromPgTypeName(typeName); if (!typeDesc) { errStr = Sprintf("Type '%s' specified for column '%s' is not supported by storage", col.GetType().data(), colName.data()); return std::make_pair(nullptr, errStr); diff --git a/ydb/core/tx/schemeshard/schemeshard_info_types.cpp b/ydb/core/tx/schemeshard/schemeshard_info_types.cpp index b49ae8165da8..73ebbb43a840 100644 --- a/ydb/core/tx/schemeshard/schemeshard_info_types.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_info_types.cpp @@ -469,7 +469,7 @@ TTableInfo::TAlterDataPtr TTableInfo::CreateAlterData( } } } else { - auto* typeDesc = NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NPg::TypeDescFromPgTypeName(typeName); if (!typeDesc) { errStr = Sprintf("Type '%s' specified for column '%s' is not supported by storage", col.GetType().data(), colName.data()); return nullptr; @@ -2501,7 +2501,7 @@ std::optional> ValidateSequenceType(const TString& sequenceN } } } else { - auto* typeDesc = NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NPg::TypeDescFromPgTypeName(typeName); if (!typeDesc) { errStr = Sprintf("Type '%s' specified for sequence '%s' is not supported", dataType.data(), sequenceName.c_str()); return std::nullopt; diff --git a/ydb/core/tx/schemeshard/schemeshard_utils.cpp b/ydb/core/tx/schemeshard/schemeshard_utils.cpp index 5ba564b6f703..ae94997e4542 100644 --- a/ydb/core/tx/schemeshard/schemeshard_utils.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_utils.cpp @@ -554,7 +554,7 @@ bool ExtractTypes(const NKikimrSchemeOp::TTableDescription& baseTableDescr, TCol auto typeName = NMiniKQL::AdaptLegacyYqlType(column.GetType()); const NScheme::IType* type = typeRegistry->GetType(typeName); if (!type) { - auto* typeDesc = NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NPg::TypeDescFromPgTypeName(typeName); if (!typeDesc) { explain += TStringBuilder() << "Type '" << column.GetType() << "' specified for column '" << columnName << "' is not supported by storage"; return false; diff --git a/ydb/core/tx/tx_proxy/read_table_impl.cpp b/ydb/core/tx/tx_proxy/read_table_impl.cpp index ba8f20f990c4..99451237a445 100644 --- a/ydb/core/tx/tx_proxy/read_table_impl.cpp +++ b/ydb/core/tx/tx_proxy/read_table_impl.cpp @@ -1760,7 +1760,7 @@ class TReadTableWorker : public TActorBootstrapped { meta->set_name(col.Name); if (col.PType.GetTypeId() == NScheme::NTypeIds::Pg) { - auto* typeDesc = col.PType.GetTypeDesc(); + auto typeDesc = col.PType.GetTypeDesc(); auto* pg = meta->mutable_type()->mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h index d2098f26e711..ef1b53384246 100644 --- a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h +++ b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h @@ -469,7 +469,7 @@ class TUploadRowsBase : public TActorBootstrappedset_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); @@ -517,7 +517,7 @@ class TUploadRowsBase : public TActorBootstrappedset_name(column.GetName()); Ydb::Type* columnType = nullptr; - auto* typeDesc = NPg::TypeDescFromPgTypeName(column.GetType()); + auto typeDesc = NPg::TypeDescFromPgTypeName(column.GetType()); if (typeDesc) { columnType = newColumn->mutable_type(); auto* pg = columnType->mutable_pg_type(); @@ -429,7 +429,7 @@ Ydb::Type* AddColumn(Ydb::Table::ColumnMeta newColumn->set_name(column.GetName()); Ydb::Type* columnType = nullptr; - auto* typeDesc = NPg::TypeDescFromPgTypeName(column.GetType()); + auto typeDesc = NPg::TypeDescFromPgTypeName(column.GetType()); if (typeDesc) { columnType = newColumn->mutable_type(); auto* pg = columnType->mutable_pg_type(); @@ -629,7 +629,7 @@ bool ExtractColumnTypeInfo(NScheme::TTypeInfo& outTypeInfo, TString& outTypeMod, case Ydb::Type::kPgType: { const auto& pgType = itemType.pg_type(); const auto& typeName = pgType.type_name(); - auto* desc = NPg::TypeDescFromPgTypeName(typeName); + auto desc = NPg::TypeDescFromPgTypeName(typeName); if (!desc) { status = Ydb::StatusIds::BAD_REQUEST; error = TStringBuilder() << "Invalid PG type name: " << typeName; @@ -1505,7 +1505,7 @@ bool FillSequenceDescription(Ydb::Table::CreateTableRequest& out, const NKikimrS } if (sequenceDescription.HasDataType()) { auto* dataType = fromSequence->mutable_data_type(); - auto* typeDesc = NPg::TypeDescFromPgTypeName(sequenceDescription.GetDataType()); + auto typeDesc = NPg::TypeDescFromPgTypeName(sequenceDescription.GetDataType()); if (typeDesc) { auto* pg = dataType->mutable_pg_type(); auto typeId = NPg::PgTypeIdFromTypeDesc(typeDesc); diff --git a/ydb/library/mkql_proto/mkql_proto.cpp b/ydb/library/mkql_proto/mkql_proto.cpp index 4c33428b70c2..95fc138d963f 100644 --- a/ydb/library/mkql_proto/mkql_proto.cpp +++ b/ydb/library/mkql_proto/mkql_proto.cpp @@ -298,7 +298,7 @@ void ExportTypeToProtoImpl(TType* type, Ydb::Type& res, const TVector* col case TType::EKind::Pg: { auto* pgType = static_cast(type); auto typeId = pgType->GetTypeId(); - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(typeId); + auto typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(typeId); MKQL_ENSURE(typeDesc, TStringBuilder() << "Unknown PG type id: " << typeId); auto* pg = res.mutable_pg_type(); @@ -1382,7 +1382,7 @@ TType* TProtoImporter::ImportTypeFromProto(const Ydb::Type& input) { return env.GetTypeOfEmptyDictLazy(); case Ydb::Type::kPgType: { if (const auto& typeName = input.pg_type().type_name()) { - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeName(typeName); + auto typeDesc = NKikimr::NPg::TypeDescFromPgTypeName(typeName); MKQL_ENSURE(typeDesc, TStringBuilder() << "Unknown PG type name: " << typeName); return TPgType::Create(NKikimr::NPg::PgTypeIdFromTypeDesc(typeDesc), env); } else { diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp index a4b6c179846f..b556c7c63b20 100644 --- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp +++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp @@ -5475,7 +5475,7 @@ class TPgTypeDescriptor } } - TMaybe Validate(const TStringBuf binary) { + TMaybe Validate(const TStringBuf binary) const { NMiniKQL::TOnlyThrowingBindTerminator bind; NMiniKQL::TScopedAlloc alloc(__LOCATION__); NMiniKQL::TPAllocScope scope; @@ -5497,11 +5497,11 @@ class TPgTypeDescriptor } } - TCoerceResult Coerce(const TStringBuf binary, i32 typmod) { + TCoerceResult Coerce(const TStringBuf binary, i32 typmod) const { return Coerce(true, binary, 0, typmod); } - TCoerceResult Coerce(const NUdf::TUnboxedValuePod& value, i32 typmod) { + TCoerceResult Coerce(const NUdf::TUnboxedValuePod& value, i32 typmod) const { Datum datum = PassByValue ? NMiniKQL::ScalarDatumFromPod(value) : NMiniKQL::PointerDatumFromPod(value); @@ -5510,7 +5510,7 @@ class TPgTypeDescriptor } private: - TCoerceResult Coerce(bool isSourceBinary, const TStringBuf binary, Datum datum, i32 typmod) { + TCoerceResult Coerce(bool isSourceBinary, const TStringBuf binary, Datum datum, i32 typmod) const { NMiniKQL::TOnlyThrowingBindTerminator bind; NMiniKQL::TScopedAlloc alloc(__LOCATION__); NMiniKQL::TPAllocScope scope; @@ -5656,7 +5656,7 @@ class TPgTypeDescriptor return result; } - bool IsArray() { + bool IsArray() const { return TypeId == ArrayTypeId; } @@ -5712,37 +5712,37 @@ class TPgTypeDescriptors { THashMap ByName; }; -ui32 PgTypeIdFromTypeDesc(void* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { if (!typeDesc) { return 0; } - return static_cast(typeDesc)->TypeId; + return static_cast(typeDesc)->TypeId; } -void* TypeDescFromPgTypeId(ui32 pgTypeId) { +const void* TypeDescFromPgTypeId(ui32 pgTypeId) { if (!pgTypeId) { return {}; } - return (void*)TPgTypeDescriptors::Instance().Find(pgTypeId); + return (const void*)TPgTypeDescriptors::Instance().Find(pgTypeId); } -TString PgTypeNameFromTypeDesc(void* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { if (!typeDesc) { return ""; } - auto* pgTypeDesc = static_cast(typeDesc); + auto* pgTypeDesc = static_cast(typeDesc); if (typeMod.empty()) { return pgTypeDesc->YdbTypeName; } return pgTypeDesc->YdbTypeName + INTERNAL_TYPE_AND_MOD_SEPARATOR + typeMod; } -void* TypeDescFromPgTypeName(const TStringBuf name) { +const void* TypeDescFromPgTypeName(const TStringBuf name) { auto space = name.find_first_of(INTERNAL_TYPE_AND_MOD_SEPARATOR); if (space != TStringBuf::npos) { - return (void*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); + return (const void*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); } - return (void*)TPgTypeDescriptors::Instance().Find(name); + return (const void*)TPgTypeDescriptors::Instance().Find(name); } TString TypeModFromPgTypeName(const TStringBuf name) { @@ -5753,79 +5753,79 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(void* typeDesc) { +bool TypeDescIsComparable(const void* typeDesc) { if (!typeDesc) { return false; } - return static_cast(typeDesc)->CompareProcId != 0; + return static_cast(typeDesc)->CompareProcId != 0; } -i32 TypeDescGetTypeLen(void* typeDesc) { +i32 TypeDescGetTypeLen(const void* typeDesc) { if (!typeDesc) { return 0; } - return static_cast(typeDesc)->TypeLen; + return static_cast(typeDesc)->TypeLen; } -ui32 TypeDescGetStoredSize(void* typeDesc) { +ui32 TypeDescGetStoredSize(const void* typeDesc) { if (!typeDesc) { return 0; } - return static_cast(typeDesc)->StoredSize; + return static_cast(typeDesc)->StoredSize; } -bool TypeDescNeedsCoercion(void* typeDesc) { +bool TypeDescNeedsCoercion(const void* typeDesc) { if (!typeDesc) { return false; } - return static_cast(typeDesc)->NeedsCoercion; + return static_cast(typeDesc)->NeedsCoercion; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, void* typeDesc) { - return static_cast(typeDesc)->Compare(dataL, sizeL, dataR, sizeR); +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { + return static_cast(typeDesc)->Compare(dataL, sizeL, dataR, sizeR); } -ui64 PgNativeBinaryHash(const char* data, size_t size, void* typeDesc) { - return static_cast(typeDesc)->Hash(data, size); +ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { + return static_cast(typeDesc)->Hash(data, size); } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, void* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { if (!typeDesc) { return {-1, "invalid type descriptor"}; } - return static_cast(typeDesc)->ReadTypeMod(str); + return static_cast(typeDesc)->ReadTypeMod(str); } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, void* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { if (!typeDesc) { return "invalid type descriptor"; } - return static_cast(typeDesc)->Validate(binary); + return static_cast(typeDesc)->Validate(binary); } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, void* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } - return static_cast(typeDesc)->Coerce(binary, typmod); + return static_cast(typeDesc)->Coerce(binary, typmod); } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, void* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } - return static_cast(typeDesc)->NativeBinaryFromNativeText(str); + return static_cast(typeDesc)->NativeBinaryFromNativeText(str); } TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { return PgNativeBinaryFromNativeText(str, TypeDescFromPgTypeId(pgTypeId)); } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, void* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } - return static_cast(typeDesc)->NativeTextFromNativeBinary(binary); + return static_cast(typeDesc)->NativeTextFromNativeBinary(binary); } TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, ui32 pgTypeId) { @@ -5837,14 +5837,14 @@ TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, ui32 pgType namespace NYql::NCommon { TString PgValueCoerce(const NUdf::TUnboxedValuePod& value, ui32 pgTypeId, i32 typMod, TMaybe* error) { - auto* typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(pgTypeId); + auto typeDesc = NKikimr::NPg::TypeDescFromPgTypeId(pgTypeId); if (!typeDesc) { if (error) { *error = "invalid type descriptor"; } return {}; } - auto result = static_cast(typeDesc)->Coerce(value, typMod); + auto result = static_cast(typeDesc)->Coerce(value, typMod); if (result.Error) { if (error) { *error = result.Error; diff --git a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h index 8fed8a3f62b3..357cebea222e 100644 --- a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h +++ b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h @@ -5,46 +5,46 @@ namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(void* typeDesc); -void* TypeDescFromPgTypeId(ui32 pgTypeId); +ui32 PgTypeIdFromTypeDesc(const void* typeDesc); +const void* TypeDescFromPgTypeId(ui32 pgTypeId); -TString PgTypeNameFromTypeDesc(void* typeDesc, const TString& typeMod = {}); -void* TypeDescFromPgTypeName(const TStringBuf name); +TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod = {}); +const void* TypeDescFromPgTypeName(const TStringBuf name); TString TypeModFromPgTypeName(const TStringBuf name); -bool TypeDescIsComparable(void* typeDesc); -i32 TypeDescGetTypeLen(void* typeDesc); -ui32 TypeDescGetStoredSize(void* typeDesc); -bool TypeDescNeedsCoercion(void* typeDesc); +bool TypeDescIsComparable(const void* typeDesc); +i32 TypeDescGetTypeLen(const void* typeDesc); +ui32 TypeDescGetStoredSize(const void* typeDesc); +bool TypeDescNeedsCoercion(const void* typeDesc); -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, void* typeDesc); +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc); -ui64 PgNativeBinaryHash(const char* data, size_t size, void* typeDesc); +ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc); struct TTypeModResult { i32 Typmod = -1; TMaybe Error; }; -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, void* typeDesc); +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc); -TMaybe PgNativeBinaryValidate(const TStringBuf binary, void* typeDesc); +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc); struct TCoerceResult { TMaybe NewValue; TMaybe Error; }; -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, void* typeDesc, i32 typmod); +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod); struct TConvertResult { TString Str; TMaybe Error; }; -TConvertResult PgNativeBinaryFromNativeText(const TString& str, void* typeDesc); +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc); TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId); -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, void* typeDesc); +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc); TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, ui32 pgTypeId); } // namespace NKikimr::NPg diff --git a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp index 98d20b018a05..5d8bd30d95da 100644 --- a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp +++ b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp @@ -427,23 +427,23 @@ IOptimizerNew* MakePgOptimizerNew(IProviderContext& pctx, TExprContext& ctx, con namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(void* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { Y_UNUSED(typeDesc); return 0; } -void* TypeDescFromPgTypeId(ui32 pgTypeId) { +const void* TypeDescFromPgTypeId(ui32 pgTypeId) { Y_UNUSED(pgTypeId); return {}; } -TString PgTypeNameFromTypeDesc(void* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { Y_UNUSED(typeDesc); Y_UNUSED(typeMod); return ""; } -void* TypeDescFromPgTypeName(const TStringBuf name) { +const void* TypeDescFromPgTypeName(const TStringBuf name) { Y_UNUSED(name); return {}; } @@ -453,27 +453,27 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(void* typeDesc) { +bool TypeDescIsComparable(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -i32 TypeDescGetTypeLen(void* typeDesc) { +i32 TypeDescGetTypeLen(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -ui32 TypeDescGetStoredSize(void* typeDesc) { +ui32 TypeDescGetStoredSize(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -bool TypeDescNeedsCoercion(void* typeDesc) { +bool TypeDescNeedsCoercion(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, void* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { Y_UNUSED(dataL); Y_UNUSED(sizeL); Y_UNUSED(dataR); @@ -482,33 +482,33 @@ int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, si throw yexception() << "PG types are not supported"; } -ui64 PgNativeBinaryHash(const char* data, size_t size, void* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { Y_UNUSED(data); Y_UNUSED(size); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, void* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, void* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, void* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { Y_UNUSED(binary); Y_UNUSED(typeDesc); Y_UNUSED(typmod); throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, void* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; @@ -520,7 +520,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, void* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; From 274b6881c96960a09d451d16a0d3486589c71b46 Mon Sep 17 00:00:00 2001 From: azevaykin Date: Mon, 9 Sep 2024 14:59:08 +0000 Subject: [PATCH 2/6] NKikimr::NScheme::TTypeDesc --- ydb/core/io_formats/cell_maker/cell_maker.cpp | 16 ++------- .../kqp/query_compiler/kqp_mkql_compiler.cpp | 2 +- ydb/core/kqp/runtime/kqp_program_builder.h | 6 ++-- ydb/core/kqp/ut/common/columnshard.cpp | 2 +- ydb/core/kqp/ut/common/columnshard.h | 4 +-- ydb/core/scheme/scheme_type_order.h | 6 ++-- ydb/core/scheme_types/scheme_type_desc.h | 10 ++++++ ydb/core/scheme_types/scheme_type_info.h | 10 ++++-- .../transactions/operators/schema.cpp | 2 +- ydb/core/tx/datashard/export_common.cpp | 2 +- ydb/core/tx/datashard/export_common.h | 2 +- ydb/library/yql/parser/pg_catalog/catalog.h | 3 +- .../yql/parser/pg_wrapper/comp_factory.cpp | 36 +++++++++---------- .../parser/pg_wrapper/interface/type_desc.h | 34 ++++++++++-------- ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp | 30 ++++++++-------- 15 files changed, 88 insertions(+), 77 deletions(-) create mode 100644 ydb/core/scheme_types/scheme_type_desc.h diff --git a/ydb/core/io_formats/cell_maker/cell_maker.cpp b/ydb/core/io_formats/cell_maker/cell_maker.cpp index 6a8c5fd4c2bf..a482dcf58cc4 100644 --- a/ydb/core/io_formats/cell_maker/cell_maker.cpp +++ b/ydb/core/io_formats/cell_maker/cell_maker.cpp @@ -107,17 +107,7 @@ namespace { return result.Defined(); } - template - bool TryParse(TStringBuf value, T& result, TString& err, const void* parseParam) { - Y_UNUSED(value); - Y_UNUSED(result); - Y_UNUSED(err); - Y_UNUSED(parseParam); - Y_ABORT("TryParse with parseParam is unimplemented"); - } - - template <> - bool TryParse(TStringBuf value, NPg::TConvertResult& result, TString& err, const void* typeDesc) { + bool TryParse(TStringBuf value, NPg::TConvertResult& result, TString& err, const NScheme::TTypeDesc* typeDesc) { TString unescaped; if (!CheckedUnescape(value, unescaped)) { err = MakeError(); @@ -233,9 +223,9 @@ namespace { return Conv(c, v, pool, conv); } - static bool Make(TCell& c, TStringBuf v, TMemoryPool& pool, TString& err, TConverter conv, const void* parseParam) { + static bool Make(TCell& c, TStringBuf v, TMemoryPool& pool, TString& err, TConverter conv, const NScheme::TTypeDesc* parseParam) { T t; - if (!TryParse(v, t, err, parseParam)) { + if (!TryParse(v, t, err, parseParam)) { return false; } diff --git a/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp b/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp index 95f27bdb4cc5..b7d6fdc9d639 100644 --- a/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp +++ b/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp @@ -25,7 +25,7 @@ TVector GetKqpColumns(const TKikimrTableMetadata& table, const ui32 columnId = 0; ui32 columnType = 0; bool notNull = false; - const void* columnTypeDesc = nullptr; + const NScheme::TTypeDesc* columnTypeDesc = nullptr; auto columnData = table.Columns.FindPtr(name); if (columnData) { diff --git a/ydb/core/kqp/runtime/kqp_program_builder.h b/ydb/core/kqp/runtime/kqp_program_builder.h index 10bbb828dbc9..3a09002eda2d 100644 --- a/ydb/core/kqp/runtime/kqp_program_builder.h +++ b/ydb/core/kqp/runtime/kqp_program_builder.h @@ -1,5 +1,7 @@ #pragma once +#include + #include namespace NKikimr { @@ -13,9 +15,9 @@ struct TKqpTableColumn { TString Name; NUdf::TDataTypeId Type; bool NotNull; - const void* TypeDesc; + const NScheme::TTypeDesc* TypeDesc; - TKqpTableColumn(ui32 id, const TStringBuf& name, NUdf::TDataTypeId type, bool notNull, const void* typeDesc) + TKqpTableColumn(ui32 id, const TStringBuf& name, NUdf::TDataTypeId type, bool notNull, const NScheme::TTypeDesc* typeDesc) : Id(id) , Name(name) , Type(type) diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index f7466b183f42..576da7641bc5 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -198,7 +198,7 @@ namespace NKqp { return JoinStrings(columnStr, ", "); } - std::shared_ptr TTestHelper::TColumnTableBase::BuildField(const TString name, const NScheme::TTypeId typeId, const void* typeDesc, bool nullable) const { + std::shared_ptr TTestHelper::TColumnTableBase::BuildField(const TString name, const NScheme::TTypeId typeId, const NScheme::TTypeDesc* typeDesc, bool nullable) const { switch (typeId) { case NScheme::NTypeIds::Bool: return arrow::field(name, arrow::boolean(), nullable); diff --git a/ydb/core/kqp/ut/common/columnshard.h b/ydb/core/kqp/ut/common/columnshard.h index 61fc6a14a702..0c6d44249f57 100644 --- a/ydb/core/kqp/ut/common/columnshard.h +++ b/ydb/core/kqp/ut/common/columnshard.h @@ -18,7 +18,7 @@ namespace NKqp { class TTestHelper { public: class TColumnSchema { - using TTypeDesc = const void*; + using TTypeDesc = const NKikimr::NScheme::TTypeDesc*; YDB_ACCESSOR_DEF(TString, Name); YDB_ACCESSOR_DEF(NScheme::TTypeId, Type); YDB_ACCESSOR_DEF(TTypeDesc, TypeDesc); @@ -49,7 +49,7 @@ namespace NKqp { private: virtual TString GetObjectType() const = 0; TString BuildColumnsStr(const TVector& clumns) const; - std::shared_ptr BuildField(const TString name, const NScheme::TTypeId typeId, const void* typeDesc, bool nullable) const; + std::shared_ptr BuildField(const TString name, const NScheme::TTypeId typeId, const NScheme::TTypeDesc* typeDesc, bool nullable) const; }; class TColumnTable : public TColumnTableBase { diff --git a/ydb/core/scheme/scheme_type_order.h b/ydb/core/scheme/scheme_type_order.h index a42e2ac60c0b..2dcc0c970ef5 100644 --- a/ydb/core/scheme/scheme_type_order.h +++ b/ydb/core/scheme/scheme_type_order.h @@ -55,7 +55,7 @@ struct TTypeInfoOrder { TTypeInfoOrder() {} - TTypeInfoOrder(TTypeIdOrder typeIdOrder, void* typeDesc = {}) + TTypeInfoOrder(TTypeIdOrder typeIdOrder, const TTypeDesc* typeDesc = {}) : TypeIdOrder(typeIdOrder) , TypeDesc(typeDesc) {} @@ -81,7 +81,7 @@ struct TTypeInfoOrder { return TypeIdOrder.IsDescending(); } - const void* GetTypeDesc() const { + const TTypeDesc* GetTypeDesc() const { return TypeDesc; } @@ -91,7 +91,7 @@ struct TTypeInfoOrder { private: TTypeIdOrder TypeIdOrder; - const void* TypeDesc = {}; + const TTypeDesc* TypeDesc = {}; }; } diff --git a/ydb/core/scheme_types/scheme_type_desc.h b/ydb/core/scheme_types/scheme_type_desc.h new file mode 100644 index 000000000000..21776ef4e802 --- /dev/null +++ b/ydb/core/scheme_types/scheme_type_desc.h @@ -0,0 +1,10 @@ +#pragma once + +namespace NKikimr::NScheme { + +struct TTypeDesc +{ + virtual ~TTypeDesc() {} +}; + +} diff --git a/ydb/core/scheme_types/scheme_type_info.h b/ydb/core/scheme_types/scheme_type_info.h index cbb358a70c5d..e7a089174482 100644 --- a/ydb/core/scheme_types/scheme_type_info.h +++ b/ydb/core/scheme_types/scheme_type_info.h @@ -1,15 +1,19 @@ #pragma once +#include "scheme_type_desc.h" + #include namespace NKikimr::NScheme { +struct TTypeDesc; + class TTypeInfo { public: constexpr TTypeInfo() {} - explicit constexpr TTypeInfo(TTypeId typeId, const void* typeDesc = {}) + explicit constexpr TTypeInfo(TTypeId typeId, const TTypeDesc* typeDesc = {}) : TypeId(typeId) , TypeDesc(typeDesc) { @@ -30,13 +34,13 @@ class TTypeInfo { return TypeId; } - const void* GetTypeDesc() const { + const TTypeDesc* GetTypeDesc() const { return TypeDesc; } private: TTypeId TypeId = 0; - const void* TypeDesc = {}; + const TTypeDesc* TypeDesc = {}; }; } // namespace NKikimr::NScheme diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.cpp b/ydb/core/tx/columnshard/transactions/operators/schema.cpp index 2cc9d78e974b..f3ad8f91ce6f 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.cpp +++ b/ydb/core/tx/columnshard/transactions/operators/schema.cpp @@ -119,7 +119,7 @@ NKikimr::TConclusionStatus TSchemaTransactionOperator::ValidateTableSchema(const TVector columnErrors; for (const NKikimrSchemeOp::TOlapColumnDescription& column : schema.GetColumns()) { TString name = column.GetName(); - const void* typeDescr = nullptr; + const NScheme::TTypeDesc* typeDescr = nullptr; if (column.GetTypeId() == NTypeIds::Pg && column.HasTypeInfo()) { typeDescr = NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()); } diff --git a/ydb/core/tx/datashard/export_common.cpp b/ydb/core/tx/datashard/export_common.cpp index 300fc4b0f03a..834e39d57b4b 100644 --- a/ydb/core/tx/datashard/export_common.cpp +++ b/ydb/core/tx/datashard/export_common.cpp @@ -132,7 +132,7 @@ bool DyNumberToStream(TStringBuf data, IOutputStream& out, TString& err) { return true; } -bool PgToStream(TStringBuf data, const void* typeDesc, IOutputStream& out, TString& err) { +bool PgToStream(TStringBuf data, const NScheme::TTypeDesc* typeDesc, IOutputStream& out, TString& err) { const NPg::TConvertResult& pgResult = NPg::PgNativeTextFromNativeBinary(data, typeDesc); if (pgResult.Error) { err = *pgResult.Error; diff --git a/ydb/core/tx/datashard/export_common.h b/ydb/core/tx/datashard/export_common.h index cdc5c4eb48ca..89c280ccdd1e 100644 --- a/ydb/core/tx/datashard/export_common.h +++ b/ydb/core/tx/datashard/export_common.h @@ -43,7 +43,7 @@ TString DecimalToString(const std::pair& loHi); TString DyNumberToString(TStringBuf data); bool DecimalToStream(const std::pair& loHi, IOutputStream& out, TString& err); bool DyNumberToStream(TStringBuf data, IOutputStream& out, TString& err); -bool PgToStream(TStringBuf data, const void* typeDesc, IOutputStream& out, TString& err); +bool PgToStream(TStringBuf data, const NScheme::TTypeDesc* typeDesc, IOutputStream& out, TString& err); bool UuidToStream(const std::pair& loHi, IOutputStream& out, TString& err); } // NDataShard diff --git a/ydb/library/yql/parser/pg_catalog/catalog.h b/ydb/library/yql/parser/pg_catalog/catalog.h index 7342ca2c762e..45d864164416 100644 --- a/ydb/library/yql/parser/pg_catalog/catalog.h +++ b/ydb/library/yql/parser/pg_catalog/catalog.h @@ -1,4 +1,5 @@ #pragma once +#include #include #include #include @@ -105,7 +106,7 @@ enum class ETypType : char { constexpr char InvalidCategory = '\0'; -struct TTypeDesc { +struct TTypeDesc : NKikimr::NScheme::TTypeDesc { ui32 TypeId = 0; ui32 ArrayTypeId = 0; TString Descr; diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp index b556c7c63b20..fc5ffab9d71e 100644 --- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp +++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp @@ -5712,21 +5712,21 @@ class TPgTypeDescriptors { THashMap ByName; }; -ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const TTypeDesc* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->TypeId; } -const void* TypeDescFromPgTypeId(ui32 pgTypeId) { +const TTypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId) { if (!pgTypeId) { return {}; } - return (const void*)TPgTypeDescriptors::Instance().Find(pgTypeId); + return (const TTypeDesc*)TPgTypeDescriptors::Instance().Find(pgTypeId); } -TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod) { if (!typeDesc) { return ""; } @@ -5737,12 +5737,12 @@ TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { return pgTypeDesc->YdbTypeName + INTERNAL_TYPE_AND_MOD_SEPARATOR + typeMod; } -const void* TypeDescFromPgTypeName(const TStringBuf name) { +const TTypeDesc* TypeDescFromPgTypeName(const TStringBuf name) { auto space = name.find_first_of(INTERNAL_TYPE_AND_MOD_SEPARATOR); if (space != TStringBuf::npos) { - return (const void*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); + return (const TTypeDesc*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); } - return (const void*)TPgTypeDescriptors::Instance().Find(name); + return (const TTypeDesc*)TPgTypeDescriptors::Instance().Find(name); } TString TypeModFromPgTypeName(const TStringBuf name) { @@ -5753,64 +5753,64 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(const void* typeDesc) { +bool TypeDescIsComparable(const TTypeDesc* typeDesc) { if (!typeDesc) { return false; } return static_cast(typeDesc)->CompareProcId != 0; } -i32 TypeDescGetTypeLen(const void* typeDesc) { +i32 TypeDescGetTypeLen(const TTypeDesc* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->TypeLen; } -ui32 TypeDescGetStoredSize(const void* typeDesc) { +ui32 TypeDescGetStoredSize(const TTypeDesc* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->StoredSize; } -bool TypeDescNeedsCoercion(const void* typeDesc) { +bool TypeDescNeedsCoercion(const TTypeDesc* typeDesc) { if (!typeDesc) { return false; } return static_cast(typeDesc)->NeedsCoercion; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const TTypeDesc* typeDesc) { return static_cast(typeDesc)->Compare(dataL, sizeL, dataR, sizeR); } -ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const TTypeDesc* typeDesc) { return static_cast(typeDesc)->Hash(data, size); } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const TTypeDesc* typeDesc) { if (!typeDesc) { return {-1, "invalid type descriptor"}; } return static_cast(typeDesc)->ReadTypeMod(str); } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const TTypeDesc* typeDesc) { if (!typeDesc) { return "invalid type descriptor"; } return static_cast(typeDesc)->Validate(binary); } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const TTypeDesc* typeDesc, i32 typmod) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } return static_cast(typeDesc)->Coerce(binary, typmod); } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const TTypeDesc* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } @@ -5821,7 +5821,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { return PgNativeBinaryFromNativeText(str, TypeDescFromPgTypeId(pgTypeId)); } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const TTypeDesc* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } diff --git a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h index 357cebea222e..e793ad19c31a 100644 --- a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h +++ b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h @@ -1,50 +1,54 @@ #pragma once +#include + #include #include namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(const void* typeDesc); -const void* TypeDescFromPgTypeId(ui32 pgTypeId); +using TTypeDesc = NScheme::TTypeDesc; + +ui32 PgTypeIdFromTypeDesc(const TTypeDesc* typeDesc); +const TTypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId); -TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod = {}); -const void* TypeDescFromPgTypeName(const TStringBuf name); +TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod = {}); +const TTypeDesc* TypeDescFromPgTypeName(const TStringBuf name); TString TypeModFromPgTypeName(const TStringBuf name); -bool TypeDescIsComparable(const void* typeDesc); -i32 TypeDescGetTypeLen(const void* typeDesc); -ui32 TypeDescGetStoredSize(const void* typeDesc); -bool TypeDescNeedsCoercion(const void* typeDesc); +bool TypeDescIsComparable(const TTypeDesc* typeDesc); +i32 TypeDescGetTypeLen(const TTypeDesc* typeDesc); +ui32 TypeDescGetStoredSize(const TTypeDesc* typeDesc); +bool TypeDescNeedsCoercion(const TTypeDesc* typeDesc); -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc); +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const TTypeDesc* typeDesc); -ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc); +ui64 PgNativeBinaryHash(const char* data, size_t size, const TTypeDesc* typeDesc); struct TTypeModResult { i32 Typmod = -1; TMaybe Error; }; -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc); +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const TTypeDesc* typeDesc); -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc); +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const TTypeDesc* typeDesc); struct TCoerceResult { TMaybe NewValue; TMaybe Error; }; -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod); +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const TTypeDesc* typeDesc, i32 typmod); struct TConvertResult { TString Str; TMaybe Error; }; -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc); +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const TTypeDesc* typeDesc); TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId); -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc); +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const TTypeDesc* typeDesc); TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, ui32 pgTypeId); } // namespace NKikimr::NPg diff --git a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp index 5d8bd30d95da..1424bfd8c1d2 100644 --- a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp +++ b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp @@ -427,23 +427,23 @@ IOptimizerNew* MakePgOptimizerNew(IProviderContext& pctx, TExprContext& ctx, con namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const TTypeDesc* typeDesc) { Y_UNUSED(typeDesc); return 0; } -const void* TypeDescFromPgTypeId(ui32 pgTypeId) { +const TTypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId) { Y_UNUSED(pgTypeId); return {}; } -TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod) { Y_UNUSED(typeDesc); Y_UNUSED(typeMod); return ""; } -const void* TypeDescFromPgTypeName(const TStringBuf name) { +const TTypeDesc* TypeDescFromPgTypeName(const TStringBuf name) { Y_UNUSED(name); return {}; } @@ -453,27 +453,27 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(const void* typeDesc) { +bool TypeDescIsComparable(const TTypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -i32 TypeDescGetTypeLen(const void* typeDesc) { +i32 TypeDescGetTypeLen(const TTypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -ui32 TypeDescGetStoredSize(const void* typeDesc) { +ui32 TypeDescGetStoredSize(const TTypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -bool TypeDescNeedsCoercion(const void* typeDesc) { +bool TypeDescNeedsCoercion(const TTypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const TTypeDesc* typeDesc) { Y_UNUSED(dataL); Y_UNUSED(sizeL); Y_UNUSED(dataR); @@ -482,33 +482,33 @@ int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, si throw yexception() << "PG types are not supported"; } -ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const TTypeDesc* typeDesc) { Y_UNUSED(data); Y_UNUSED(size); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const TTypeDesc* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const TTypeDesc* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const TTypeDesc* typeDesc, i32 typmod) { Y_UNUSED(binary); Y_UNUSED(typeDesc); Y_UNUSED(typmod); throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const TTypeDesc* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; @@ -520,7 +520,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const TTypeDesc* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; From 460229933c52619ee8a8598a43c1ce32128a5423 Mon Sep 17 00:00:00 2001 From: azevaykin Date: Tue, 10 Sep 2024 14:20:33 +0000 Subject: [PATCH 3/6] const void in yql --- ydb/core/kqp/runtime/kqp_program_builder.h | 2 +- ydb/core/kqp/ut/common/columnshard.cpp | 14 +- ydb/core/kqp/ut/common/columnshard.h | 7 +- ydb/core/kqp/ut/olap/datatime64_ut.cpp | 26 +-- ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp | 6 +- ydb/core/kqp/ut/olap/kqp_olap_ut.cpp | 12 +- ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp | 196 +++++++++--------- ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp | 8 +- ydb/core/scheme_types/scheme_type_desc.h | 10 - ydb/core/scheme_types/scheme_type_info.h | 13 +- .../transactions/operators/schema.cpp | 2 +- ydb/library/yql/parser/pg_catalog/catalog.h | 3 +- .../yql/parser/pg_wrapper/comp_factory.cpp | 36 ++-- .../parser/pg_wrapper/interface/type_desc.h | 34 ++- ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp | 30 +-- 15 files changed, 194 insertions(+), 205 deletions(-) delete mode 100644 ydb/core/scheme_types/scheme_type_desc.h diff --git a/ydb/core/kqp/runtime/kqp_program_builder.h b/ydb/core/kqp/runtime/kqp_program_builder.h index 3a09002eda2d..a88c255bc097 100644 --- a/ydb/core/kqp/runtime/kqp_program_builder.h +++ b/ydb/core/kqp/runtime/kqp_program_builder.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index 576da7641bc5..a38b74fd9150 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -146,9 +146,9 @@ namespace NKqp { TString TTestHelper::TColumnSchema::BuildQuery() const { TStringBuilder str; str << Name << ' '; - switch (Type) { + switch (TypeInfo.GetTypeId()) { case NScheme::NTypeIds::Pg: - str << NPg::PgTypeNameFromTypeDesc(TypeDesc); + str << NPg::PgTypeNameFromTypeDesc(TypeInfo.GetTypeDesc()); break; case NScheme::NTypeIds::Decimal: { TTypeBuilder builder; @@ -157,7 +157,7 @@ namespace NKqp { break; } default: - str << NScheme::GetTypeName(Type); + str << NScheme::GetTypeName(TypeInfo.GetTypeId()); } if (!NullableFlag) { str << " NOT NULL"; @@ -184,7 +184,7 @@ namespace NKqp { std::shared_ptr TTestHelper::TColumnTableBase::GetArrowSchema(const TVector& columns) { std::vector> result; for (auto&& col : columns) { - result.push_back(BuildField(col.GetName(), col.GetType(), col.GetTypeDesc(), col.IsNullable())); + result.push_back(BuildField(col.GetName(), col.GetTypeInfo(), col.IsNullable())); } return std::make_shared(result); } @@ -198,8 +198,8 @@ namespace NKqp { return JoinStrings(columnStr, ", "); } - std::shared_ptr TTestHelper::TColumnTableBase::BuildField(const TString name, const NScheme::TTypeId typeId, const NScheme::TTypeDesc* typeDesc, bool nullable) const { - switch (typeId) { + std::shared_ptr TTestHelper::TColumnTableBase::BuildField(const TString name, const NScheme::TTypeInfo& typeInfo, bool nullable) const { + switch (typeInfo.GetTypeId()) { case NScheme::NTypeIds::Bool: return arrow::field(name, arrow::boolean(), nullable); case NScheme::NTypeIds::Int8: @@ -249,7 +249,7 @@ namespace NKqp { case NScheme::NTypeIds::Decimal: return arrow::field(name, arrow::decimal(22, 9)); case NScheme::NTypeIds::Pg: - switch (NPg::PgTypeIdFromTypeDesc(typeDesc)) { + switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())) { case INT2OID: return arrow::field(name, arrow::int16(), true); case INT4OID: diff --git a/ydb/core/kqp/ut/common/columnshard.h b/ydb/core/kqp/ut/common/columnshard.h index 0c6d44249f57..64cda705a138 100644 --- a/ydb/core/kqp/ut/common/columnshard.h +++ b/ydb/core/kqp/ut/common/columnshard.h @@ -18,10 +18,9 @@ namespace NKqp { class TTestHelper { public: class TColumnSchema { - using TTypeDesc = const NKikimr::NScheme::TTypeDesc*; + using TTypeDesc = const void*; YDB_ACCESSOR_DEF(TString, Name); - YDB_ACCESSOR_DEF(NScheme::TTypeId, Type); - YDB_ACCESSOR_DEF(TTypeDesc, TypeDesc); + YDB_ACCESSOR_DEF(NScheme::TTypeInfo, TypeInfo); YDB_FLAG_ACCESSOR(Nullable, true); public: TString BuildQuery() const; @@ -49,7 +48,7 @@ namespace NKqp { private: virtual TString GetObjectType() const = 0; TString BuildColumnsStr(const TVector& clumns) const; - std::shared_ptr BuildField(const TString name, const NScheme::TTypeId typeId, const NScheme::TTypeDesc* typeDesc, bool nullable) const; + std::shared_ptr BuildField(const TString name, const NScheme::TTypeInfo& typeInfo, bool nullable) const; }; class TColumnTable : public TColumnTableBase { diff --git a/ydb/core/kqp/ut/olap/datatime64_ut.cpp b/ydb/core/kqp/ut/olap/datatime64_ut.cpp index 97e2a2f2fd28..07ba997d33bf 100644 --- a/ydb/core/kqp/ut/olap/datatime64_ut.cpp +++ b/ydb/core/kqp/ut/olap/datatime64_ut.cpp @@ -31,9 +31,9 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64), - TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp64) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64), + TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -59,8 +59,8 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64) + TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -98,8 +98,8 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("datetime").SetType(NScheme::NTypeIds::Datetime64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64) + TTestHelper::TColumnSchema().SetName("datetime").SetTypeInfo(NScheme::NTypeIds::Datetime64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -137,8 +137,8 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("date").SetType(NScheme::NTypeIds::Date32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64) + TTestHelper::TColumnSchema().SetName("date").SetTypeInfo(NScheme::NTypeIds::Date32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -173,10 +173,10 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).SetComponents({ NKikimrServices::GROUPED_MEMORY_LIMITER }, "CS").Initialize(); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("date32").SetType(NScheme::NTypeIds::Date32), - TTestHelper::TColumnSchema().SetName("timestamp64").SetType(NScheme::NTypeIds::Timestamp64), - TTestHelper::TColumnSchema().SetName("datetime64").SetType(NScheme::NTypeIds::Datetime64), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("date32").SetTypeInfo(NScheme::NTypeIds::Date32), + TTestHelper::TColumnSchema().SetName("timestamp64").SetTypeInfo(NScheme::NTypeIds::Timestamp64), + TTestHelper::TColumnSchema().SetName("datetime64").SetTypeInfo(NScheme::NTypeIds::Datetime64), }; TTestHelper::TColumnTable testTable; diff --git a/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp index c1fcab4be0fd..a750fd195685 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp @@ -15,9 +15,9 @@ Y_UNIT_TEST_SUITE(KqpOlapStats) { constexpr size_t size_single_table = 13152; const TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32)}; + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32)}; class TOlapStatsController : public NYDBTest::NColumnShard::TController { public: diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp index 635efa2c00b2..f771d2faacd6 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp @@ -2426,10 +2426,10 @@ Y_UNIT_TEST_SUITE(KqpOlap) { TTestHelper testHelper(runnerSettings); Tests::NCommon::TLoggerInit(testHelper.GetRuntime()).Initialize(); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -2458,8 +2458,8 @@ Y_UNIT_TEST_SUITE(KqpOlap) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("value").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("value").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), }; TTestHelper::TColumnTable testTable; diff --git a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp index 3651546b3914..b5b45398e6da 100644 --- a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp @@ -7316,10 +7316,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7348,10 +7348,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7359,7 +7359,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.CreateTable(testTable); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -7372,10 +7372,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7401,10 +7401,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7434,10 +7434,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { const TString tableName = "/Root/ColumnTableTest"; TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7475,10 +7475,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7611,9 +7611,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -7632,7 +7632,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -7671,9 +7671,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7700,9 +7700,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7727,9 +7727,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTableStore testTableStore; @@ -7749,7 +7749,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT * FROM `/Root/TableStoreTest/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLESTORE `" << testTableStore.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); @@ -7791,9 +7791,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Pg).SetTypeDesc(NPg::TypeDescFromPgTypeName("pgint4")) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo({NScheme::NTypeIds::Pg, NPg::TypeDescFromPgTypeName("pgint4")}) }; TTestHelper::TColumnTableStore testTableStore; @@ -7813,7 +7813,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT * FROM `/Root/TableStoreTest/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Pg).SetTypeDesc(NPg::TypeDescFromPgTypeName("pgfloat4"))); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo({NScheme::NTypeIds::Pg, NPg::TypeDescFromPgTypeName("pgfloat4")})); auto alterQuery = TStringBuilder() << "ALTER TABLESTORE `" << testTableStore.GetName() << "` ADD COLUMN new_column pgfloat4;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); @@ -7855,9 +7855,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); @@ -7876,18 +7876,18 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false) }; TTestHelper::TColumnTable testTable; testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); testHelper.CreateTable(testTable); TVector schemaWithNull = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; { TTestHelper::TUpdatesBuilder tableInserter(testTable.GetArrowSchema(schemaWithNull)); @@ -7911,8 +7911,8 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Uuid).SetNullable(true) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Uuid).SetNullable(true) }; TTestHelper::TColumnTable testTable; testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); @@ -7924,9 +7924,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7961,9 +7961,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7988,9 +7988,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -8015,9 +8015,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -8032,7 +8032,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { } testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -8060,8 +8060,8 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("value").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("value").SetTypeInfo(NScheme::NTypeIds::Utf8), }; TTestHelper::TColumnTable testTable; @@ -8094,7 +8094,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); } - schema.back().SetType(NScheme::NTypeIds::Uint64); + schema.back().SetTypeInfo(NScheme::NTypeIds::Uint64); { TTestHelper::TUpdatesBuilder tableInserter(testTable.GetArrowSchema(schema)); @@ -8133,10 +8133,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -8162,9 +8162,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -8190,9 +8190,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTableStore testTableStore; @@ -8217,11 +8217,11 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Uint64).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Uint64).SetNullable(false) }; for (ui64 i = 0; i < 10000; ++i) { - schema.emplace_back(TTestHelper::TColumnSchema().SetName("column" + ToString(i)).SetType(NScheme::NTypeIds::Int32).SetNullable(true)); + schema.emplace_back(TTestHelper::TColumnSchema().SetName("column" + ToString(i)).SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(true)); } TTestHelper::TColumnTable testTable; @@ -8253,9 +8253,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(true), - TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(true), + TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false) }; TTestHelper::TColumnTableStore testTableStore; testTableStore.SetName("/Root/TableStoreTest").SetPrimaryKey({"id"}).SetSchema(schema); @@ -8277,9 +8277,9 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false), - TTestHelper::TColumnSchema().SetName("ui64_type").SetType(NScheme::NTypeIds::Uint64).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false), + TTestHelper::TColumnSchema().SetName("ui64_type").SetTypeInfo(NScheme::NTypeIds::Uint64).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -8302,8 +8302,8 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal).SetNullable(false), }; TTestHelper::TColumnTable testTable; @@ -8382,8 +8382,8 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal).SetNullable(false), }; TTestHelper::TColumnTable testTable; @@ -8412,9 +8412,9 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false), - TTestHelper::TColumnSchema().SetName("timestamp_max").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false), + TTestHelper::TColumnSchema().SetName("timestamp_max").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -8471,9 +8471,9 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("json").SetType(NScheme::NTypeIds::Json).SetNullable(true), - TTestHelper::TColumnSchema().SetName("json_doc").SetType(NScheme::NTypeIds::JsonDocument).SetNullable(true), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("json").SetTypeInfo(NScheme::NTypeIds::Json).SetNullable(true), + TTestHelper::TColumnSchema().SetName("json_doc").SetTypeInfo(NScheme::NTypeIds::JsonDocument).SetNullable(true), }; TTestHelper::TColumnTable testTable; diff --git a/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp b/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp index 0af07b0f5a2c..e216410f4689 100644 --- a/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp +++ b/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp @@ -1010,8 +1010,8 @@ Y_UNIT_TEST_SUITE(KqpQueryService) { Y_UNIT_TEST(DdlColumnTable) { const TVector schema = { - TTestHelper::TColumnSchema().SetName("Key").SetType(NScheme::NTypeIds::Uint64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("Value").SetType(NScheme::NTypeIds::String) + TTestHelper::TColumnSchema().SetName("Key").SetTypeInfo(NScheme::NTypeIds::Uint64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("Value").SetTypeInfo(NScheme::NTypeIds::String) }; NKikimrConfig::TAppConfig appConfig; @@ -3240,8 +3240,8 @@ Y_UNIT_TEST_SUITE(KqpQueryService) { Tests::NCommon::TLoggerInit(kikimr).Initialize(); TVector schema = { - TTestHelper::TColumnSchema().SetName("Col1").SetType(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("Col2").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("Col1").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("Col2").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), }; TTestHelper::TColumnTable testTable1; diff --git a/ydb/core/scheme_types/scheme_type_desc.h b/ydb/core/scheme_types/scheme_type_desc.h deleted file mode 100644 index 21776ef4e802..000000000000 --- a/ydb/core/scheme_types/scheme_type_desc.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -namespace NKikimr::NScheme { - -struct TTypeDesc -{ - virtual ~TTypeDesc() {} -}; - -} diff --git a/ydb/core/scheme_types/scheme_type_info.h b/ydb/core/scheme_types/scheme_type_info.h index e7a089174482..d1e5a421cf61 100644 --- a/ydb/core/scheme_types/scheme_type_info.h +++ b/ydb/core/scheme_types/scheme_type_info.h @@ -1,6 +1,5 @@ #pragma once -#include "scheme_type_desc.h" #include @@ -13,12 +12,18 @@ class TTypeInfo { constexpr TTypeInfo() {} - explicit constexpr TTypeInfo(TTypeId typeId, const TTypeDesc* typeDesc = {}) + constexpr TTypeInfo(TTypeId typeId) : TypeId(typeId) - , TypeDesc(typeDesc) + { } + + constexpr TTypeInfo(TTypeId typeId, const void* typeDesc) + : TypeId(typeId) + , TypeDesc(static_cast(typeDesc)) { if (TypeId != NTypeIds::Pg) { Y_ABORT_UNLESS(!TypeDesc); + } else { + Y_ABORT_UNLESS(TypeDesc); } } @@ -40,7 +45,7 @@ class TTypeInfo { private: TTypeId TypeId = 0; - const TTypeDesc* TypeDesc = {}; + const TTypeDesc* TypeDesc = nullptr; }; } // namespace NKikimr::NScheme diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.cpp b/ydb/core/tx/columnshard/transactions/operators/schema.cpp index f3ad8f91ce6f..2cc9d78e974b 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.cpp +++ b/ydb/core/tx/columnshard/transactions/operators/schema.cpp @@ -119,7 +119,7 @@ NKikimr::TConclusionStatus TSchemaTransactionOperator::ValidateTableSchema(const TVector columnErrors; for (const NKikimrSchemeOp::TOlapColumnDescription& column : schema.GetColumns()) { TString name = column.GetName(); - const NScheme::TTypeDesc* typeDescr = nullptr; + const void* typeDescr = nullptr; if (column.GetTypeId() == NTypeIds::Pg && column.HasTypeInfo()) { typeDescr = NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()); } diff --git a/ydb/library/yql/parser/pg_catalog/catalog.h b/ydb/library/yql/parser/pg_catalog/catalog.h index 45d864164416..7342ca2c762e 100644 --- a/ydb/library/yql/parser/pg_catalog/catalog.h +++ b/ydb/library/yql/parser/pg_catalog/catalog.h @@ -1,5 +1,4 @@ #pragma once -#include #include #include #include @@ -106,7 +105,7 @@ enum class ETypType : char { constexpr char InvalidCategory = '\0'; -struct TTypeDesc : NKikimr::NScheme::TTypeDesc { +struct TTypeDesc { ui32 TypeId = 0; ui32 ArrayTypeId = 0; TString Descr; diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp index fc5ffab9d71e..b556c7c63b20 100644 --- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp +++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp @@ -5712,21 +5712,21 @@ class TPgTypeDescriptors { THashMap ByName; }; -ui32 PgTypeIdFromTypeDesc(const TTypeDesc* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->TypeId; } -const TTypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId) { +const void* TypeDescFromPgTypeId(ui32 pgTypeId) { if (!pgTypeId) { return {}; } - return (const TTypeDesc*)TPgTypeDescriptors::Instance().Find(pgTypeId); + return (const void*)TPgTypeDescriptors::Instance().Find(pgTypeId); } -TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { if (!typeDesc) { return ""; } @@ -5737,12 +5737,12 @@ TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod return pgTypeDesc->YdbTypeName + INTERNAL_TYPE_AND_MOD_SEPARATOR + typeMod; } -const TTypeDesc* TypeDescFromPgTypeName(const TStringBuf name) { +const void* TypeDescFromPgTypeName(const TStringBuf name) { auto space = name.find_first_of(INTERNAL_TYPE_AND_MOD_SEPARATOR); if (space != TStringBuf::npos) { - return (const TTypeDesc*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); + return (const void*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); } - return (const TTypeDesc*)TPgTypeDescriptors::Instance().Find(name); + return (const void*)TPgTypeDescriptors::Instance().Find(name); } TString TypeModFromPgTypeName(const TStringBuf name) { @@ -5753,64 +5753,64 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(const TTypeDesc* typeDesc) { +bool TypeDescIsComparable(const void* typeDesc) { if (!typeDesc) { return false; } return static_cast(typeDesc)->CompareProcId != 0; } -i32 TypeDescGetTypeLen(const TTypeDesc* typeDesc) { +i32 TypeDescGetTypeLen(const void* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->TypeLen; } -ui32 TypeDescGetStoredSize(const TTypeDesc* typeDesc) { +ui32 TypeDescGetStoredSize(const void* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->StoredSize; } -bool TypeDescNeedsCoercion(const TTypeDesc* typeDesc) { +bool TypeDescNeedsCoercion(const void* typeDesc) { if (!typeDesc) { return false; } return static_cast(typeDesc)->NeedsCoercion; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const TTypeDesc* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { return static_cast(typeDesc)->Compare(dataL, sizeL, dataR, sizeR); } -ui64 PgNativeBinaryHash(const char* data, size_t size, const TTypeDesc* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { return static_cast(typeDesc)->Hash(data, size); } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const TTypeDesc* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { if (!typeDesc) { return {-1, "invalid type descriptor"}; } return static_cast(typeDesc)->ReadTypeMod(str); } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const TTypeDesc* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { if (!typeDesc) { return "invalid type descriptor"; } return static_cast(typeDesc)->Validate(binary); } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const TTypeDesc* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } return static_cast(typeDesc)->Coerce(binary, typmod); } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const TTypeDesc* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } @@ -5821,7 +5821,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { return PgNativeBinaryFromNativeText(str, TypeDescFromPgTypeId(pgTypeId)); } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const TTypeDesc* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } diff --git a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h index e793ad19c31a..357cebea222e 100644 --- a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h +++ b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h @@ -1,54 +1,50 @@ #pragma once -#include - #include #include namespace NKikimr::NPg { -using TTypeDesc = NScheme::TTypeDesc; - -ui32 PgTypeIdFromTypeDesc(const TTypeDesc* typeDesc); -const TTypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId); +ui32 PgTypeIdFromTypeDesc(const void* typeDesc); +const void* TypeDescFromPgTypeId(ui32 pgTypeId); -TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod = {}); -const TTypeDesc* TypeDescFromPgTypeName(const TStringBuf name); +TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod = {}); +const void* TypeDescFromPgTypeName(const TStringBuf name); TString TypeModFromPgTypeName(const TStringBuf name); -bool TypeDescIsComparable(const TTypeDesc* typeDesc); -i32 TypeDescGetTypeLen(const TTypeDesc* typeDesc); -ui32 TypeDescGetStoredSize(const TTypeDesc* typeDesc); -bool TypeDescNeedsCoercion(const TTypeDesc* typeDesc); +bool TypeDescIsComparable(const void* typeDesc); +i32 TypeDescGetTypeLen(const void* typeDesc); +ui32 TypeDescGetStoredSize(const void* typeDesc); +bool TypeDescNeedsCoercion(const void* typeDesc); -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const TTypeDesc* typeDesc); +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc); -ui64 PgNativeBinaryHash(const char* data, size_t size, const TTypeDesc* typeDesc); +ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc); struct TTypeModResult { i32 Typmod = -1; TMaybe Error; }; -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const TTypeDesc* typeDesc); +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc); -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const TTypeDesc* typeDesc); +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc); struct TCoerceResult { TMaybe NewValue; TMaybe Error; }; -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const TTypeDesc* typeDesc, i32 typmod); +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod); struct TConvertResult { TString Str; TMaybe Error; }; -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const TTypeDesc* typeDesc); +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc); TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId); -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const TTypeDesc* typeDesc); +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc); TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, ui32 pgTypeId); } // namespace NKikimr::NPg diff --git a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp index 1424bfd8c1d2..5d8bd30d95da 100644 --- a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp +++ b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp @@ -427,23 +427,23 @@ IOptimizerNew* MakePgOptimizerNew(IProviderContext& pctx, TExprContext& ctx, con namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(const TTypeDesc* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { Y_UNUSED(typeDesc); return 0; } -const TTypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId) { +const void* TypeDescFromPgTypeId(ui32 pgTypeId) { Y_UNUSED(pgTypeId); return {}; } -TString PgTypeNameFromTypeDesc(const TTypeDesc* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { Y_UNUSED(typeDesc); Y_UNUSED(typeMod); return ""; } -const TTypeDesc* TypeDescFromPgTypeName(const TStringBuf name) { +const void* TypeDescFromPgTypeName(const TStringBuf name) { Y_UNUSED(name); return {}; } @@ -453,27 +453,27 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(const TTypeDesc* typeDesc) { +bool TypeDescIsComparable(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -i32 TypeDescGetTypeLen(const TTypeDesc* typeDesc) { +i32 TypeDescGetTypeLen(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -ui32 TypeDescGetStoredSize(const TTypeDesc* typeDesc) { +ui32 TypeDescGetStoredSize(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -bool TypeDescNeedsCoercion(const TTypeDesc* typeDesc) { +bool TypeDescNeedsCoercion(const void* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const TTypeDesc* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { Y_UNUSED(dataL); Y_UNUSED(sizeL); Y_UNUSED(dataR); @@ -482,33 +482,33 @@ int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, si throw yexception() << "PG types are not supported"; } -ui64 PgNativeBinaryHash(const char* data, size_t size, const TTypeDesc* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { Y_UNUSED(data); Y_UNUSED(size); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const TTypeDesc* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const TTypeDesc* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const TTypeDesc* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { Y_UNUSED(binary); Y_UNUSED(typeDesc); Y_UNUSED(typmod); throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const TTypeDesc* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; @@ -520,7 +520,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const TTypeDesc* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; From a0de5d22da75a1c09c0cbf1fc7bb925e645ea86e Mon Sep 17 00:00:00 2001 From: azevaykin Date: Wed, 11 Sep 2024 10:49:07 +0000 Subject: [PATCH 4/6] ITypeDesc --- .../engine/minikql/minikql_engine_host.cpp | 2 +- ydb/core/engine/mkql_keys.cpp | 2 +- ydb/core/engine/mkql_proto.cpp | 4 +- ydb/core/formats/arrow/switch/switch_type.h | 2 +- ydb/core/grpc_services/rpc_kh_describe.cpp | 2 +- ydb/core/grpc_services/rpc_object_storage.cpp | 6 +-- ydb/core/grpc_services/rpc_read_rows.cpp | 4 +- ydb/core/io_formats/cell_maker/cell_maker.cpp | 32 +++++++++------ ydb/core/io_formats/cell_maker/cell_maker.h | 6 +-- ydb/core/kqp/common/kqp_types.cpp | 4 +- .../compute_actor/kqp_scan_fetcher_actor.cpp | 13 +++---- .../kqp/executer_actor/kqp_tasks_graph.cpp | 4 +- ydb/core/kqp/gateway/kqp_metadata_loader.cpp | 4 +- .../kqp/provider/read_attributes_utils.cpp | 2 +- ydb/core/kqp/provider/yql_kikimr_provider.cpp | 2 +- .../kqp/query_compiler/kqp_mkql_compiler.cpp | 8 ++-- .../kqp/query_compiler/kqp_query_compiler.cpp | 6 +-- ydb/core/kqp/runtime/kqp_program_builder.cpp | 3 +- ydb/core/kqp/runtime/kqp_program_builder.h | 6 +-- ydb/core/kqp/runtime/kqp_read_actor.cpp | 26 ++++++------- ydb/core/kqp/runtime/kqp_scan_data.cpp | 4 +- .../kqp/runtime/kqp_stream_lookup_worker.cpp | 21 +++++----- ydb/core/kqp/runtime/kqp_write_table.cpp | 2 +- ydb/core/kqp/ut/common/columnshard.cpp | 4 +- ydb/core/kqp/ut/common/columnshard.h | 1 - ydb/core/scheme/scheme_tablecell.cpp | 2 +- ydb/core/scheme/scheme_tablecell.h | 4 +- ydb/core/scheme/scheme_type_info.cpp | 2 +- ydb/core/scheme/scheme_type_order.h | 10 +++-- ydb/core/scheme/scheme_types_defs.h | 2 +- ydb/core/scheme/scheme_types_proto.cpp | 4 +- ydb/core/scheme_types/scheme_type_info.cpp | 10 +++++ ydb/core/scheme_types/scheme_type_info.h | 30 ++++++++++---- ydb/core/scheme_types/ya.make | 1 + ydb/core/sys_view/pg_tables/pg_tables.cpp | 2 +- ydb/core/tablet_flat/flat_dbase_apply.cpp | 2 +- ydb/core/tablet_flat/flat_dbase_scheme.cpp | 2 +- ydb/core/tablet_flat/flat_executor_db_mon.cpp | 2 +- ydb/core/tablet_flat/ut/flat_test_db.cpp | 2 +- .../transactions/operators/schema.cpp | 9 +++-- .../datashard/datashard_kqp_lookup_table.cpp | 2 +- .../datashard/datashard_kqp_upsert_rows.cpp | 6 +-- ydb/core/tx/datashard/export_common.cpp | 4 +- ydb/core/tx/datashard/export_common.h | 2 +- .../tx/datashard/export_s3_buffer_raw.cpp | 2 +- ydb/core/tx/datashard/read_table_scan.cpp | 4 +- ydb/core/tx/datashard/scan_common.cpp | 2 +- ...shard__operation_common_external_table.cpp | 2 +- .../tx/schemeshard/schemeshard_info_types.cpp | 4 +- ydb/core/tx/schemeshard/schemeshard_utils.cpp | 2 +- ydb/core/tx/schemeshard/schemeshard_utils.h | 2 +- ydb/core/tx/tx_proxy/read_table_impl.cpp | 2 +- .../tx/tx_proxy/upload_rows_common_impl.h | 2 +- ydb/core/ydb_convert/table_description.cpp | 4 +- ydb/core/ydb_convert/ydb_convert.cpp | 4 +- .../yql/parser/pg_wrapper/comp_factory.cpp | 39 ++++++++++--------- .../parser/pg_wrapper/interface/type_desc.h | 32 ++++++++------- .../ydb/actors/yql_ydb_read_actor.cpp | 2 +- ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp | 30 +++++++------- ydb/library/yql/tools/dqrun/dqrun.cpp | 12 +++--- 60 files changed, 225 insertions(+), 188 deletions(-) create mode 100644 ydb/core/scheme_types/scheme_type_info.cpp diff --git a/ydb/core/engine/minikql/minikql_engine_host.cpp b/ydb/core/engine/minikql/minikql_engine_host.cpp index d0f09d1c03d9..fb7188aea314 100644 --- a/ydb/core/engine/minikql/minikql_engine_host.cpp +++ b/ydb/core/engine/minikql/minikql_engine_host.cpp @@ -1087,7 +1087,7 @@ NUdf::TUnboxedValue GetCellValue(const TCell& cell, NScheme::TTypeInfo type) { } if (type.GetTypeId() == NScheme::NTypeIds::Pg) { - return NYql::NCommon::PgValueFromNativeBinary(cell.AsBuf(), NPg::PgTypeIdFromTypeDesc(type.GetTypeDesc())); + return NYql::NCommon::PgValueFromNativeBinary(cell.AsBuf(), NPg::PgTypeIdFromTypeDesc(type.GetPgTypeDesc())); } Y_DEBUG_ABORT("Unsupported type: %" PRIu16, type.GetTypeId()); diff --git a/ydb/core/engine/mkql_keys.cpp b/ydb/core/engine/mkql_keys.cpp index d282ccf5f40f..439f5c7281d7 100644 --- a/ydb/core/engine/mkql_keys.cpp +++ b/ydb/core/engine/mkql_keys.cpp @@ -275,7 +275,7 @@ TCell MakeCell(NScheme::TTypeInfo type, const NUdf::TUnboxedValuePod& value, NYql::NUdf::TStringRef ref; bool isPg = (type.GetTypeId() == NScheme::NTypeIds::Pg); if (isPg) { - auto typeDesc = type.GetTypeDesc(); + auto typeDesc = type.GetPgTypeDesc(); if (typmod != -1 && NPg::TypeDescNeedsCoercion(typeDesc)) { TMaybe err; binary = NYql::NCommon::PgValueCoerce(value, NPg::PgTypeIdFromTypeDesc(typeDesc), typmod, &err); diff --git a/ydb/core/engine/mkql_proto.cpp b/ydb/core/engine/mkql_proto.cpp index 98c622608f7d..cc2907d0024b 100644 --- a/ydb/core/engine/mkql_proto.cpp +++ b/ydb/core/engine/mkql_proto.cpp @@ -192,7 +192,7 @@ bool CellsFromTuple(const NKikimrMiniKQL::TType* tupleType, if (v.HasBytes()) { c = TCell(v.GetBytes().data(), v.GetBytes().size()); } else if (v.HasText()) { - auto typeDesc = types[i].GetTypeDesc(); + auto typeDesc = types[i].GetPgTypeDesc(); auto convert = NPg::PgNativeBinaryFromNativeText(v.GetText(), NPg::PgTypeIdFromTypeDesc(typeDesc)); if (convert.Error) { CHECK_OR_RETURN_ERROR(false, Sprintf("Cannot parse value of type Pg: %s in tuple at position %" PRIu32, convert.Error->data(), i)); @@ -329,7 +329,7 @@ bool CellToValue(NScheme::TTypeInfo type, const TCell& c, NKikimrMiniKQL::TValue break; case NScheme::NTypeIds::Pg: { - auto convert = NPg::PgNativeTextFromNativeBinary(c.AsBuf(), type.GetTypeDesc()); + auto convert = NPg::PgNativeTextFromNativeBinary(c.AsBuf(), type.GetPgTypeDesc()); if (convert.Error) { errStr = *convert.Error; return false; diff --git a/ydb/core/formats/arrow/switch/switch_type.h b/ydb/core/formats/arrow/switch/switch_type.h index 78a9dfa04360..fec6d1c93b39 100644 --- a/ydb/core/formats/arrow/switch/switch_type.h +++ b/ydb/core/formats/arrow/switch/switch_type.h @@ -177,7 +177,7 @@ template break; // Deprecated types case NScheme::NTypeIds::Pg: - switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())) { + switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc())) { case INT2OID: return callback(TTypeWrapper()); case INT4OID: diff --git a/ydb/core/grpc_services/rpc_kh_describe.cpp b/ydb/core/grpc_services/rpc_kh_describe.cpp index 1b517ff201d8..c6f92a1442ad 100644 --- a/ydb/core/grpc_services/rpc_kh_describe.cpp +++ b/ydb/core/grpc_services/rpc_kh_describe.cpp @@ -179,7 +179,7 @@ class TKikhouseDescribeTableRPC : public TActorBootstrappedmutable_type(); if (typeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - auto typeDesc = typeInfo.GetTypeDesc(); + auto typeDesc = typeInfo.GetPgTypeDesc(); auto* pg = item->mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/grpc_services/rpc_object_storage.cpp b/ydb/core/grpc_services/rpc_object_storage.cpp index 8ed0134084b6..1eea78eef23a 100644 --- a/ydb/core/grpc_services/rpc_object_storage.cpp +++ b/ydb/core/grpc_services/rpc_object_storage.cpp @@ -116,7 +116,7 @@ bool CellFromTuple(NScheme::TTypeInfo type, if (tupleValue.Hasbytes_value()) { c = TCell(tupleValue.Getbytes_value().data(), tupleValue.Getbytes_value().size()); } else if (tupleValue.Hastext_value()) { - auto typeDesc = type.GetTypeDesc(); + auto typeDesc = type.GetPgTypeDesc(); auto convert = NPg::PgNativeBinaryFromNativeText(tupleValue.Gettext_value(), NPg::PgTypeIdFromTypeDesc(typeDesc)); if (convert.Error) { CHECK_OR_RETURN_ERROR(false, Sprintf("Cannot parse value of type Pg: %s in tuple at position %" PRIu32, convert.Error->data(), position)); @@ -815,7 +815,7 @@ class TObjectStorageListingRequestGrpc : public TActorBootstrapped &columns, TVector resultRows) { const auto getPgTypeFromColMeta = [](const auto &colMeta) { - return NYdb::TPgType(NPg::PgTypeNameFromTypeDesc(colMeta.PType.GetTypeDesc()), + return NYdb::TPgType(NPg::PgTypeNameFromTypeDesc(colMeta.PType.GetPgTypeDesc()), colMeta.PTypeMod); }; @@ -846,7 +846,7 @@ class TObjectStorageListingRequestGrpc : public TActorBootstrappedAsActorContext(), NKikimrServices::RPC_REQUEST, "PgNativeTextFromNativeBinary error " << *pgResult.Error); } diff --git a/ydb/core/grpc_services/rpc_read_rows.cpp b/ydb/core/grpc_services/rpc_read_rows.cpp index cae6850d160e..85fd7d5ee095 100644 --- a/ydb/core/grpc_services/rpc_read_rows.cpp +++ b/ydb/core/grpc_services/rpc_read_rows.cpp @@ -567,7 +567,7 @@ class TReadRowsRPC : public TActorBootstrapped { auto& ioStats = stats.ReadIOStat; const auto getPgTypeFromColMeta = [](const auto &colMeta) { - return NYdb::TPgType(NPg::PgTypeNameFromTypeDesc(colMeta.Type.GetTypeDesc()), + return NYdb::TPgType(NPg::PgTypeNameFromTypeDesc(colMeta.Type.GetPgTypeDesc()), colMeta.PTypeMod); }; @@ -604,7 +604,7 @@ class TReadRowsRPC : public TActorBootstrapped { vb.AddMember(colMeta.Name); if (colMeta.Type.GetTypeId() == NScheme::NTypeIds::Pg) { - const NPg::TConvertResult& pgResult = NPg::PgNativeTextFromNativeBinary(cell.AsBuf(), colMeta.Type.GetTypeDesc()); + const NPg::TConvertResult& pgResult = NPg::PgNativeTextFromNativeBinary(cell.AsBuf(), colMeta.Type.GetPgTypeDesc()); if (pgResult.Error) { LOG_DEBUG_S(TlsActivationContext->AsActorContext(), NKikimrServices::RPC_REQUEST, "PgNativeTextFromNativeBinary error " << *pgResult.Error); } diff --git a/ydb/core/io_formats/cell_maker/cell_maker.cpp b/ydb/core/io_formats/cell_maker/cell_maker.cpp index a482dcf58cc4..2cb4441bc7a6 100644 --- a/ydb/core/io_formats/cell_maker/cell_maker.cpp +++ b/ydb/core/io_formats/cell_maker/cell_maker.cpp @@ -107,14 +107,24 @@ namespace { return result.Defined(); } - bool TryParse(TStringBuf value, NPg::TConvertResult& result, TString& err, const NScheme::TTypeDesc* typeDesc) { + template + bool TryParse(TStringBuf value, T& result, TString& err, const NScheme::TTypeInfo& typeInfo) { + Y_UNUSED(value); + Y_UNUSED(result); + Y_UNUSED(err); + Y_UNUSED(typeInfo); + Y_ABORT("TryParse with typeInfo is unimplemented"); + } + + template<> + bool TryParse(TStringBuf value, NPg::TConvertResult& result, TString& err, const NScheme::TTypeInfo& typeInfo) { TString unescaped; if (!CheckedUnescape(value, unescaped)) { err = MakeError(); return false; } - result = NPg::PgNativeBinaryFromNativeText(unescaped, typeDesc); + result = NPg::PgNativeBinaryFromNativeText(unescaped, typeInfo.GetPgTypeDesc()); if (result.Error) { err = *result.Error; return false; @@ -223,9 +233,9 @@ namespace { return Conv(c, v, pool, conv); } - static bool Make(TCell& c, TStringBuf v, TMemoryPool& pool, TString& err, TConverter conv, const NScheme::TTypeDesc* parseParam) { + static bool Make(TCell& c, TStringBuf v, TMemoryPool& pool, TString& err, TConverter conv, const NScheme::TTypeInfo& typeInfo) { T t; - if (!TryParse(v, t, err, parseParam)) { + if (!TryParse(v, t, err, typeInfo)) { return false; } @@ -256,12 +266,12 @@ namespace { } // anonymous -bool MakeCell(TCell& cell, TStringBuf value, NScheme::TTypeInfo type, TMemoryPool& pool, TString& err) { +bool MakeCell(TCell& cell, TStringBuf value, const NScheme::TTypeInfo& typeInfo, TMemoryPool& pool, TString& err) { if (value == "null") { return true; } - switch (type.GetTypeId()) { + switch (typeInfo.GetTypeId()) { case NScheme::NTypeIds::Bool: return TCellMaker::Make(cell, value, pool, err); case NScheme::NTypeIds::Int8: @@ -312,7 +322,7 @@ bool MakeCell(TCell& cell, TStringBuf value, NScheme::TTypeInfo type, TMemoryPoo case NScheme::NTypeIds::Decimal: return TCellMaker>::Make(cell, value, pool, err, &Int128ToPair); case NScheme::NTypeIds::Pg: - return TCellMaker::Make(cell, value, pool, err, &PgToStringBuf, type.GetTypeDesc()); + return TCellMaker::Make(cell, value, pool, err, &PgToStringBuf, typeInfo); case NScheme::NTypeIds::Uuid: return TCellMaker::Make(cell, value, pool, err, &UuidToStringBuf); default: @@ -320,13 +330,13 @@ bool MakeCell(TCell& cell, TStringBuf value, NScheme::TTypeInfo type, TMemoryPoo } } -bool MakeCell(TCell& cell, const NJson::TJsonValue& value, NScheme::TTypeInfo type, TMemoryPool& pool, TString& err) { +bool MakeCell(TCell& cell, const NJson::TJsonValue& value, const NScheme::TTypeInfo& typeInfo, TMemoryPool& pool, TString& err) { if (value.IsNull()) { return true; } try { - switch (type.GetTypeId()) { + switch (typeInfo.GetTypeId()) { case NScheme::NTypeIds::Bool: return TCellMaker::MakeDirect(cell, value.GetBooleanSafe(), pool, err); case NScheme::NTypeIds::Int8: @@ -393,12 +403,12 @@ bool MakeCell(TCell& cell, const NJson::TJsonValue& value, NScheme::TTypeInfo ty } } -bool CheckCellValue(const TCell& cell, NScheme::TTypeInfo type) { +bool CheckCellValue(const TCell& cell, const NScheme::TTypeInfo& typeInfo) { if (cell.IsNull()) { return true; } - switch (type.GetTypeId()) { + switch (typeInfo.GetTypeId()) { case NScheme::NTypeIds::Bool: case NScheme::NTypeIds::Int8: case NScheme::NTypeIds::Uint8: diff --git a/ydb/core/io_formats/cell_maker/cell_maker.h b/ydb/core/io_formats/cell_maker/cell_maker.h index a5f198ba3753..8c9f2d66b87b 100644 --- a/ydb/core/io_formats/cell_maker/cell_maker.h +++ b/ydb/core/io_formats/cell_maker/cell_maker.h @@ -11,8 +11,8 @@ namespace NKikimr::NFormats { -bool MakeCell(TCell& cell, TStringBuf value, NScheme::TTypeInfo type, TMemoryPool& pool, TString& err); -bool MakeCell(TCell& cell, const NJson::TJsonValue& value, NScheme::TTypeInfo type, TMemoryPool& pool, TString& err); -bool CheckCellValue(const TCell& cell, NScheme::TTypeInfo type); +bool MakeCell(TCell& cell, TStringBuf value, const NScheme::TTypeInfo& typeInfo, TMemoryPool& pool, TString& err); +bool MakeCell(TCell& cell, const NJson::TJsonValue& value, const NScheme::TTypeInfo& typeInfo, TMemoryPool& pool, TString& err); +bool CheckCellValue(const TCell& cell, const NScheme::TTypeInfo& typeInfo); } diff --git a/ydb/core/kqp/common/kqp_types.cpp b/ydb/core/kqp/common/kqp_types.cpp index 2288ca2d09b4..1945723dfd5f 100644 --- a/ydb/core/kqp/common/kqp_types.cpp +++ b/ydb/core/kqp/common/kqp_types.cpp @@ -8,7 +8,7 @@ namespace NKikimr::NScheme { void ProtoMiniKQLTypeFromTypeInfo(NKikimrMiniKQL::TType* type, const TTypeInfo typeInfo) { if (typeInfo.GetTypeId() == NTypeIds::Pg) { type->SetKind(NKikimrMiniKQL::Pg); - type->MutablePg()->Setoid(NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())); + type->MutablePg()->Setoid(NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc())); } else { type->SetKind(NKikimrMiniKQL::Data); type->MutableData()->SetScheme(typeInfo.GetTypeId()); @@ -28,7 +28,7 @@ TTypeInfo TypeInfoFromProtoMiniKQLType(const NKikimrMiniKQL::TType& type) { const NMiniKQL::TType* MiniKQLTypeFromTypeInfo(const TTypeInfo typeInfo, const NMiniKQL::TTypeEnvironment& env) { if (typeInfo.GetTypeId() == NTypeIds::Pg) { - return NMiniKQL::TPgType::Create(NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc()), env); + return NMiniKQL::TPgType::Create(NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc()), env); } else { return NMiniKQL::TDataType::Create((NUdf::TDataTypeId)typeInfo.GetTypeId(), env); } diff --git a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp index 73f4c86398b9..3175cc7fdfab 100644 --- a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp +++ b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp @@ -45,14 +45,11 @@ TKqpScanFetcherActor::TKqpScanFetcherActor(const NKikimrKqp::TKqpSnapshot& snaps ALS_DEBUG(NKikimrServices::KQP_COMPUTE) << "META:" << meta.DebugString(); KeyColumnTypes.reserve(Meta.GetKeyColumnTypes().size()); for (size_t i = 0; i < Meta.KeyColumnTypesSize(); i++) { - auto typeId = Meta.GetKeyColumnTypes().at(i); - KeyColumnTypes.push_back(NScheme::TTypeInfo( - (NScheme::TTypeId)typeId, - (typeId == NScheme::NTypeIds::Pg) ? - NPg::TypeDescFromPgTypeId( - Meta.GetKeyColumnTypeInfos().at(i).GetPgTypeId() - ) : nullptr - )); + NScheme::TTypeId typeId = Meta.GetKeyColumnTypes().at(i); + NScheme::TTypeInfo typeInfo = typeId == NScheme::NTypeIds::Pg ? + NScheme::TTypeInfo(typeId, NPg::TypeDescFromPgTypeId(Meta.GetKeyColumnTypeInfos().at(i).GetPgTypeId())) : + NScheme::TTypeInfo(typeId); + KeyColumnTypes.push_back(typeInfo); } } diff --git a/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp b/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp index 6ebb045bd53a..cfb4485c7b58 100644 --- a/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp +++ b/ydb/core/kqp/executer_actor/kqp_tasks_graph.cpp @@ -387,7 +387,7 @@ void BuildStreamLookupChannels(TKqpTasksGraph& graph, const TStageInfo& stageInf if (columnIt->second.Type.GetTypeId() == NScheme::NTypeIds::Pg) { auto& typeInfo = *keyColumnProto->MutableTypeInfo(); - typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnIt->second.Type.GetTypeDesc())); + typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnIt->second.Type.GetPgTypeDesc())); typeInfo.SetPgTypeMod(columnIt->second.TypeMod); } } @@ -409,7 +409,7 @@ void BuildStreamLookupChannels(TKqpTasksGraph& graph, const TStageInfo& stageInf if (columnIt->second.Type.GetTypeId() == NScheme::NTypeIds::Pg) { auto& typeInfo = *columnProto->MutableTypeInfo(); - typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnIt->second.Type.GetTypeDesc())); + typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnIt->second.Type.GetPgTypeDesc())); typeInfo.SetPgTypeMod(columnIt->second.TypeMod); } } diff --git a/ydb/core/kqp/gateway/kqp_metadata_loader.cpp b/ydb/core/kqp/gateway/kqp_metadata_loader.cpp index 97496c3068e7..83d151198013 100644 --- a/ydb/core/kqp/gateway/kqp_metadata_loader.cpp +++ b/ydb/core/kqp/gateway/kqp_metadata_loader.cpp @@ -126,8 +126,8 @@ TString GetTypeName(const NScheme::TTypeInfoMod& typeInfoMod) { if (typeInfoMod.TypeInfo.GetTypeId() != NScheme::NTypeIds::Pg) { YQL_ENSURE(NScheme::TryGetTypeName(typeInfoMod.TypeInfo.GetTypeId(), typeName)); } else { - YQL_ENSURE(typeInfoMod.TypeInfo.GetTypeDesc(), "no pg type descriptor"); - typeName = NPg::PgTypeNameFromTypeDesc(typeInfoMod.TypeInfo.GetTypeDesc(), typeInfoMod.TypeMod); + YQL_ENSURE(typeInfoMod.TypeInfo.GetPgTypeDesc(), "no pg type descriptor"); + typeName = NPg::PgTypeNameFromTypeDesc(typeInfoMod.TypeInfo.GetPgTypeDesc(), typeInfoMod.TypeMod); } return typeName; } diff --git a/ydb/core/kqp/provider/read_attributes_utils.cpp b/ydb/core/kqp/provider/read_attributes_utils.cpp index 2184a948de2d..edf9b6fdf5c4 100644 --- a/ydb/core/kqp/provider/read_attributes_utils.cpp +++ b/ydb/core/kqp/provider/read_attributes_utils.cpp @@ -218,7 +218,7 @@ void ReplaceReadAttributes(TExprNode& node, static Ydb::Type CreateYdbType(const NKikimr::NScheme::TTypeInfo& typeInfo, bool notNull) { Ydb::Type ydbType; if (typeInfo.GetTypeId() == NKikimr::NScheme::NTypeIds::Pg) { - auto typeDesc = typeInfo.GetTypeDesc(); + auto typeDesc = typeInfo.GetPgTypeDesc(); auto* pg = ydbType.mutable_pg_type(); pg->set_type_name(NKikimr::NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NKikimr::NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/kqp/provider/yql_kikimr_provider.cpp b/ydb/core/kqp/provider/yql_kikimr_provider.cpp index adb35cae0b35..4fd30dab8dd0 100644 --- a/ydb/core/kqp/provider/yql_kikimr_provider.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_provider.cpp @@ -235,7 +235,7 @@ bool TKikimrTableDescription::Load(TExprContext& ctx, bool withSystemColumns) { if (column.TypeInfo.GetTypeId() != NKikimr::NScheme::NTypeIds::Pg) { type = ctx.MakeType(NKikimr::NUdf::GetDataSlot(column.Type)); } else { - type = ctx.MakeType(NKikimr::NPg::PgTypeIdFromTypeDesc(column.TypeInfo.GetTypeDesc())); + type = ctx.MakeType(NKikimr::NPg::PgTypeIdFromTypeDesc(column.TypeInfo.GetPgTypeDesc())); } } diff --git a/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp b/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp index b7d6fdc9d639..2815689a38c5 100644 --- a/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp +++ b/ydb/core/kqp/query_compiler/kqp_mkql_compiler.cpp @@ -25,14 +25,14 @@ TVector GetKqpColumns(const TKikimrTableMetadata& table, const ui32 columnId = 0; ui32 columnType = 0; bool notNull = false; - const NScheme::TTypeDesc* columnTypeDesc = nullptr; + NScheme::TTypeInfo columnTypeInfo; auto columnData = table.Columns.FindPtr(name); if (columnData) { columnId = columnData->Id; columnType = columnData->TypeInfo.GetTypeId(); if (columnType == NScheme::NTypeIds::Pg) { - columnTypeDesc = columnData->TypeInfo.GetTypeDesc(); + columnTypeInfo = columnData->TypeInfo; } notNull = columnData->NotNull; } else if (allowSystemColumns) { @@ -43,7 +43,7 @@ TVector GetKqpColumns(const TKikimrTableMetadata& table, const } YQL_ENSURE(columnId, "Unknown column: " << name); - pgmColumns.emplace_back(columnId, name, columnType, notNull, columnTypeDesc); + pgmColumns.emplace_back(columnId, name, columnType, notNull, columnTypeInfo); } return pgmColumns; @@ -77,7 +77,7 @@ NMiniKQL::TType* CreateColumnType(const NKikimr::NScheme::TTypeInfo& typeInfo, c if (typeId == NUdf::TDataType::Id) { return ctx.PgmBuilder().NewDecimalType(22, 9); } else if (typeId == NKikimr::NScheme::NTypeIds::Pg) { - return ctx.PgmBuilder().NewPgType(NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())); + return ctx.PgmBuilder().NewPgType(NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc())); } else { return ctx.PgmBuilder().NewDataType(typeId); } diff --git a/ydb/core/kqp/query_compiler/kqp_query_compiler.cpp b/ydb/core/kqp/query_compiler/kqp_query_compiler.cpp index dbf49d955207..81bc7642d8aa 100644 --- a/ydb/core/kqp/query_compiler/kqp_query_compiler.cpp +++ b/ydb/core/kqp/query_compiler/kqp_query_compiler.cpp @@ -184,7 +184,7 @@ void FillTable(const TKikimrTableMetadata& tableMeta, THashSet&& col } phyColumn.SetNotNull(column->NotNull); if (column->TypeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - phyColumn.SetPgTypeName(NPg::PgTypeNameFromTypeDesc(column->TypeInfo.GetTypeDesc())); + phyColumn.SetPgTypeName(NPg::PgTypeNameFromTypeDesc(column->TypeInfo.GetPgTypeDesc())); } } } @@ -1077,7 +1077,7 @@ class TKqpQueryCompiler : public IKqpQueryCompiler { if (columnMeta->TypeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { auto& typeInfo = *keyColumnProto->MutableTypeInfo(); - typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnMeta->TypeInfo.GetTypeDesc())); + typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnMeta->TypeInfo.GetPgTypeDesc())); typeInfo.SetPgTypeMod(columnMeta->TypeMod); } } @@ -1094,7 +1094,7 @@ class TKqpQueryCompiler : public IKqpQueryCompiler { if (columnMeta->TypeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { auto& typeInfo = *columnProto->MutableTypeInfo(); - typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnMeta->TypeInfo.GetTypeDesc())); + typeInfo.SetPgTypeId(NPg::PgTypeIdFromTypeDesc(columnMeta->TypeInfo.GetPgTypeDesc())); typeInfo.SetPgTypeMod(columnMeta->TypeMod); } } diff --git a/ydb/core/kqp/runtime/kqp_program_builder.cpp b/ydb/core/kqp/runtime/kqp_program_builder.cpp index a01c01aa771c..cb93675658fb 100644 --- a/ydb/core/kqp/runtime/kqp_program_builder.cpp +++ b/ydb/core/kqp/runtime/kqp_program_builder.cpp @@ -25,8 +25,7 @@ TType* GetRowType(const TProgramBuilder& builder, const TArrayRef; diff --git a/ydb/core/kqp/runtime/kqp_read_actor.cpp b/ydb/core/kqp/runtime/kqp_read_actor.cpp index f6d2cf7b5833..a43de91822d9 100644 --- a/ydb/core/kqp/runtime/kqp_read_actor.cpp +++ b/ydb/core/kqp/runtime/kqp_read_actor.cpp @@ -377,14 +377,11 @@ class TKqpReadActor : public TActorBootstrapped, public NYql::NDq KeyColumnTypes.reserve(Settings->GetKeyColumnTypes().size()); for (size_t i = 0; i < Settings->KeyColumnTypesSize(); ++i) { - auto typeId = Settings->GetKeyColumnTypes(i); - KeyColumnTypes.push_back( - NScheme::TTypeInfo( - (NScheme::TTypeId)typeId, - (typeId == NScheme::NTypeIds::Pg) ? - NPg::TypeDescFromPgTypeId( - Settings->GetKeyColumnTypeInfos(i).GetPgTypeId() - ) : nullptr)); + NScheme::TTypeId typeId = Settings->GetKeyColumnTypes(i); + NScheme::TTypeInfo typeInfo = typeId == NScheme::NTypeIds::Pg ? + NScheme::TTypeInfo(typeId, NPg::TypeDescFromPgTypeId(Settings->GetKeyColumnTypeInfos(i).GetPgTypeId())) : + NScheme::TTypeInfo(typeId); + KeyColumnTypes.push_back(typeInfo); } Counters->ReadActorsCount->Inc(); @@ -1463,13 +1460,12 @@ class TKqpReadActor : public TActorBootstrapped, public NYql::NDq private: NScheme::TTypeInfo MakeTypeInfo(const NKikimrTxDataShard::TKqpTransaction_TColumnMeta& info) { - auto typeId = info.GetType(); - return NScheme::TTypeInfo( - (NScheme::TTypeId)typeId, - (typeId == NScheme::NTypeIds::Pg) ? - NPg::TypeDescFromPgTypeId( - info.GetTypeInfo().GetPgTypeId() - ) : nullptr); + NScheme::TTypeId typeId = info.GetType(); + if (typeId == NScheme::NTypeIds::Pg) { + return {typeId, NPg::TypeDescFromPgTypeId(info.GetTypeInfo().GetPgTypeId())}; + } else { + return {typeId}; + } } void InitResultColumns() { diff --git a/ydb/core/kqp/runtime/kqp_scan_data.cpp b/ydb/core/kqp/runtime/kqp_scan_data.cpp index 96c8f6dbbca3..24b6d86985a2 100644 --- a/ydb/core/kqp/runtime/kqp_scan_data.cpp +++ b/ydb/core/kqp/runtime/kqp_scan_data.cpp @@ -28,7 +28,7 @@ TBytesStatistics GetUnboxedValueSize(const NUdf::TUnboxedValue& value, const NSc { return { sizeof(NUdf::TUnboxedValue), - PgValueSize(value, NPg::TypeDescGetTypeLen(type.GetTypeDesc())) + PgValueSize(value, NPg::TypeDescGetTypeLen(type.GetPgTypeDesc())) }; } @@ -438,7 +438,7 @@ TBytesStatistics WriteColumnValuesFromArrowImpl(TAccessor editAccessor, return WriteColumnValuesFromArrowSpecImpl>(editAccessor, batch, columnIndex, columnPtr, columnType); } case NTypeIds::Pg: - switch (NPg::PgTypeIdFromTypeDesc(columnType.GetTypeDesc())) { + switch (NPg::PgTypeIdFromTypeDesc(columnType.GetPgTypeDesc())) { case INT2OID: return WriteColumnValuesFromArrowSpecImpl>(editAccessor, batch, columnIndex, columnPtr, columnType); case INT4OID: diff --git a/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp b/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp index af995daf05bd..7322a909d941 100644 --- a/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp +++ b/ydb/core/kqp/runtime/kqp_stream_lookup_worker.cpp @@ -148,17 +148,16 @@ TKqpStreamLookupWorker::TKqpStreamLookupWorker(NKikimrKqp::TKqpStreamLookupSetti KeyColumns.reserve(settings.GetKeyColumns().size()); i32 keyOrder = 0; for (const auto& keyColumn : settings.GetKeyColumns()) { + NScheme::TTypeInfo typeInfo = keyColumn.GetTypeId() == NScheme::NTypeIds::Pg ? + NScheme::TTypeInfo(keyColumn.GetTypeId(), NPg::TypeDescFromPgTypeId(keyColumn.GetTypeInfo().GetPgTypeId())) : + NScheme::TTypeInfo(keyColumn.GetTypeId()); + KeyColumns.emplace( keyColumn.GetName(), TSysTables::TTableColumnInfo{ keyColumn.GetName(), keyColumn.GetId(), - NScheme::TTypeInfo{ - static_cast(keyColumn.GetTypeId()), - keyColumn.GetTypeId() == NScheme::NTypeIds::Pg - ? NPg::TypeDescFromPgTypeId(keyColumn.GetTypeInfo().GetPgTypeId()) - : nullptr - }, + typeInfo, keyColumn.GetTypeInfo().GetPgTypeMod(), keyOrder++ } @@ -174,14 +173,14 @@ TKqpStreamLookupWorker::TKqpStreamLookupWorker(NKikimrKqp::TKqpStreamLookupSetti Columns.reserve(settings.GetColumns().size()); for (const auto& column : settings.GetColumns()) { + NScheme::TTypeInfo typeInfo = column.GetTypeId() == NScheme::NTypeIds::Pg ? + NScheme::TTypeInfo(column.GetTypeId(), NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId())) : + NScheme::TTypeInfo(column.GetTypeId()); + Columns.emplace_back(TSysTables::TTableColumnInfo{ column.GetName(), column.GetId(), - NScheme::TTypeInfo{static_cast(column.GetTypeId()), - column.GetTypeId() == NScheme::NTypeIds::Pg - ? NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()) - : nullptr, - }, + typeInfo, column.GetTypeInfo().GetPgTypeMod() }); } diff --git a/ydb/core/kqp/runtime/kqp_write_table.cpp b/ydb/core/kqp/runtime/kqp_write_table.cpp index ed20ed059cb0..a409701b6dac 100644 --- a/ydb/core/kqp/runtime/kqp_write_table.cpp +++ b/ydb/core/kqp/runtime/kqp_write_table.cpp @@ -231,7 +231,7 @@ class TRowBuilder { CellsInfo[index].Value = value; if (type.GetTypeId() == NScheme::NTypeIds::Pg) { - auto typeDesc = type.GetTypeDesc(); + auto typeDesc = type.GetPgTypeDesc(); if (typmod != -1 && NPg::TypeDescNeedsCoercion(typeDesc)) { TMaybe err; CellsInfo[index].PgBinaryValue = NYql::NCommon::PgValueCoerce(value, NPg::PgTypeIdFromTypeDesc(typeDesc), typmod, &err); diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index a38b74fd9150..f5f1588cfbce 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -148,7 +148,7 @@ namespace NKqp { str << Name << ' '; switch (TypeInfo.GetTypeId()) { case NScheme::NTypeIds::Pg: - str << NPg::PgTypeNameFromTypeDesc(TypeInfo.GetTypeDesc()); + str << NPg::PgTypeNameFromTypeDesc(TypeInfo.GetPgTypeDesc()); break; case NScheme::NTypeIds::Decimal: { TTypeBuilder builder; @@ -249,7 +249,7 @@ namespace NKqp { case NScheme::NTypeIds::Decimal: return arrow::field(name, arrow::decimal(22, 9)); case NScheme::NTypeIds::Pg: - switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())) { + switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc())) { case INT2OID: return arrow::field(name, arrow::int16(), true); case INT4OID: diff --git a/ydb/core/kqp/ut/common/columnshard.h b/ydb/core/kqp/ut/common/columnshard.h index 64cda705a138..166ab6c4c755 100644 --- a/ydb/core/kqp/ut/common/columnshard.h +++ b/ydb/core/kqp/ut/common/columnshard.h @@ -18,7 +18,6 @@ namespace NKqp { class TTestHelper { public: class TColumnSchema { - using TTypeDesc = const void*; YDB_ACCESSOR_DEF(TString, Name); YDB_ACCESSOR_DEF(NScheme::TTypeInfo, TypeInfo); YDB_FLAG_ACCESSOR(Nullable, true); diff --git a/ydb/core/scheme/scheme_tablecell.cpp b/ydb/core/scheme/scheme_tablecell.cpp index 8f1b9bade0cf..23753d00a471 100644 --- a/ydb/core/scheme/scheme_tablecell.cpp +++ b/ydb/core/scheme/scheme_tablecell.cpp @@ -430,7 +430,7 @@ TString DbgPrintCell(const TCell& r, NScheme::TTypeInfo typeInfo, const NScheme: TString res; if (typeId == NScheme::NTypeIds::Pg) { - res = NPg::PgTypeNameFromTypeDesc(typeInfo.GetTypeDesc()); + res = NPg::PgTypeNameFromTypeDesc(typeInfo.GetPgTypeDesc()); } else { NScheme::ITypeSP t = reg.GetType(typeId); diff --git a/ydb/core/scheme/scheme_tablecell.h b/ydb/core/scheme/scheme_tablecell.h index e6d5b8ecee35..8438964d889f 100644 --- a/ydb/core/scheme/scheme_tablecell.h +++ b/ydb/core/scheme/scheme_tablecell.h @@ -271,7 +271,7 @@ inline int CompareTypedCells(const TCell& a, const TCell& b, NScheme::TTypeInfoO case NKikimr::NScheme::NTypeIds::Pg: { - auto typeDesc = type.GetTypeDesc(); + auto typeDesc = type.GetPgTypeDesc(); Y_ABORT_UNLESS(typeDesc, "no pg type descriptor"); int result = NPg::PgNativeBinaryCompare(a.Data(), a.Size(), b.Data(), b.Size(), typeDesc); return type.IsDescending() ? -result : result; @@ -372,7 +372,7 @@ inline ui64 GetValueHash(NScheme::TTypeInfo info, const TCell& cell) { } if (typeId == NKikimr::NScheme::NTypeIds::Pg) { - auto typeDesc = info.GetTypeDesc(); + auto typeDesc = info.GetPgTypeDesc(); Y_ABORT_UNLESS(typeDesc, "no pg type descriptor"); return NPg::PgNativeBinaryHash(cell.Data(), cell.Size(), typeDesc); } diff --git a/ydb/core/scheme/scheme_type_info.cpp b/ydb/core/scheme/scheme_type_info.cpp index 5631b6de550e..4503e6072664 100644 --- a/ydb/core/scheme/scheme_type_info.cpp +++ b/ydb/core/scheme/scheme_type_info.cpp @@ -7,7 +7,7 @@ namespace NKikimr::NScheme { ::TString TypeName(const TTypeInfo typeInfo, const ::TString& typeMod) { if (typeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - return NPg::PgTypeNameFromTypeDesc(typeInfo.GetTypeDesc(), typeMod); + return NPg::PgTypeNameFromTypeDesc(typeInfo.GetPgTypeDesc(), typeMod); } else { return TypeName(typeInfo.GetTypeId()); } diff --git a/ydb/core/scheme/scheme_type_order.h b/ydb/core/scheme/scheme_type_order.h index 2dcc0c970ef5..aa32c8c24376 100644 --- a/ydb/core/scheme/scheme_type_order.h +++ b/ydb/core/scheme/scheme_type_order.h @@ -55,7 +55,7 @@ struct TTypeInfoOrder { TTypeInfoOrder() {} - TTypeInfoOrder(TTypeIdOrder typeIdOrder, const TTypeDesc* typeDesc = {}) + TTypeInfoOrder(TTypeIdOrder typeIdOrder, const ITypeDesc* typeDesc = {}) : TypeIdOrder(typeIdOrder) , TypeDesc(typeDesc) {} @@ -81,17 +81,21 @@ struct TTypeInfoOrder { return TypeIdOrder.IsDescending(); } - const TTypeDesc* GetTypeDesc() const { + const ITypeDesc* GetTypeDesc() const { return TypeDesc; } TTypeInfo ToTypeInfo() const { return TTypeInfo(GetTypeId(), GetTypeDesc()); } + + const NPg::ITypeDesc* GetPgTypeDesc() const { + return reinterpret_cast(TypeDesc); + } private: TTypeIdOrder TypeIdOrder; - const TTypeDesc* TypeDesc = {}; + const ITypeDesc* TypeDesc = {}; }; } diff --git a/ydb/core/scheme/scheme_types_defs.h b/ydb/core/scheme/scheme_types_defs.h index 307e93f9e977..d724d7a8111a 100644 --- a/ydb/core/scheme/scheme_types_defs.h +++ b/ydb/core/scheme/scheme_types_defs.h @@ -60,7 +60,7 @@ inline ui32 GetFixedSize(TTypeInfo typeInfo) { KIKIMR_FOREACH_TYPE(KIKIMR_TYPE_MACRO) #undef KIKIMR_TYPE_MACRO case NTypeIds::Pg: - return NPg::TypeDescGetStoredSize(typeInfo.GetTypeDesc()); + return NPg::TypeDescGetStoredSize(typeInfo.GetPgTypeDesc()); default: return 0; } diff --git a/ydb/core/scheme/scheme_types_proto.cpp b/ydb/core/scheme/scheme_types_proto.cpp index 6170839010df..6f99bf43b7e4 100644 --- a/ydb/core/scheme/scheme_types_proto.cpp +++ b/ydb/core/scheme/scheme_types_proto.cpp @@ -7,9 +7,9 @@ TProtoColumnType ProtoColumnTypeFromTypeInfoMod(const TTypeInfo typeInfo, const TProtoColumnType columnType; columnType.TypeId = (ui32)typeInfo.GetTypeId(); if (typeInfo.GetTypeId() == NTypeIds::Pg) { - Y_ABORT_UNLESS(typeInfo.GetTypeDesc(), "no pg type descriptor"); + Y_ABORT_UNLESS(typeInfo.GetPgTypeDesc(), "no pg type descriptor"); columnType.TypeInfo = NKikimrProto::TTypeInfo(); - columnType.TypeInfo->SetPgTypeId(NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())); + columnType.TypeInfo->SetPgTypeId(NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc())); if (typeMod) { columnType.TypeInfo->SetPgTypeMod(typeMod); } diff --git a/ydb/core/scheme_types/scheme_type_info.cpp b/ydb/core/scheme_types/scheme_type_info.cpp new file mode 100644 index 000000000000..127afd7c9f51 --- /dev/null +++ b/ydb/core/scheme_types/scheme_type_info.cpp @@ -0,0 +1,10 @@ +#include "scheme_type_info.h" + + +namespace NKikimr { +namespace NScheme { + +struct ITypeDesc {}; + +} // namespace NScheme +} // namespace NKikimr diff --git a/ydb/core/scheme_types/scheme_type_info.h b/ydb/core/scheme_types/scheme_type_info.h index d1e5a421cf61..ab8e49abf727 100644 --- a/ydb/core/scheme_types/scheme_type_info.h +++ b/ydb/core/scheme_types/scheme_type_info.h @@ -1,11 +1,16 @@ #pragma once - #include +namespace NKikimr::NPg { + +struct ITypeDesc; + +} + namespace NKikimr::NScheme { -struct TTypeDesc; +struct ITypeDesc; class TTypeInfo { public: @@ -16,17 +21,22 @@ class TTypeInfo { : TypeId(typeId) { } - constexpr TTypeInfo(TTypeId typeId, const void* typeDesc) + constexpr TTypeInfo(TTypeId typeId, const ITypeDesc* typeDesc) : TypeId(typeId) - , TypeDesc(static_cast(typeDesc)) + , TypeDesc(typeDesc) { if (TypeId != NTypeIds::Pg) { Y_ABORT_UNLESS(!TypeDesc); - } else { - Y_ABORT_UNLESS(TypeDesc); } } + TTypeInfo(TTypeId typeId, const NPg::ITypeDesc* typeDesc) + : TypeId(typeId) + , TypeDesc(reinterpret_cast(typeDesc)) + { + Y_ABORT_UNLESS (TypeId == NTypeIds::Pg); + } + bool operator==(const TTypeInfo& other) const { return TypeId == other.TypeId && TypeDesc == other.TypeDesc; } @@ -39,13 +49,17 @@ class TTypeInfo { return TypeId; } - const TTypeDesc* GetTypeDesc() const { + const ITypeDesc* GetTypeDesc() const { return TypeDesc; } + const NPg::ITypeDesc* GetPgTypeDesc() const { + return reinterpret_cast(TypeDesc); + } + private: TTypeId TypeId = 0; - const TTypeDesc* TypeDesc = nullptr; + const ITypeDesc* TypeDesc = nullptr; }; } // namespace NKikimr::NScheme diff --git a/ydb/core/scheme_types/ya.make b/ydb/core/scheme_types/ya.make index 98a13ddf349e..c6542fa7fdd4 100644 --- a/ydb/core/scheme_types/ya.make +++ b/ydb/core/scheme_types/ya.make @@ -1,6 +1,7 @@ LIBRARY() SRCS( + scheme_type_info.cpp scheme_type_metadata.cpp scheme_type_registry.cpp scheme_types_defs.cpp diff --git a/ydb/core/sys_view/pg_tables/pg_tables.cpp b/ydb/core/sys_view/pg_tables/pg_tables.cpp index 44442bce79c2..d3e3508620f7 100644 --- a/ydb/core/sys_view/pg_tables/pg_tables.cpp +++ b/ydb/core/sys_view/pg_tables/pg_tables.cpp @@ -25,7 +25,7 @@ TStringBuf TPgTablesScanBase::GetColumnName(NTable::TTag tag) const { TCell TPgTablesScanBase::MakePgCell(const Schema::PgColumn& column, const TString& value, TVector& cellData) { NYql::NUdf::TStringRef ref; - auto convert = NPg::PgNativeBinaryFromNativeText(value, NPg::PgTypeIdFromTypeDesc(column._ColumnTypeInfo.GetTypeDesc())); + auto convert = NPg::PgNativeBinaryFromNativeText(value, NPg::PgTypeIdFromTypeDesc(column._ColumnTypeInfo.GetPgTypeDesc())); if (convert.Error) { ConvertError_ = *convert.Error; return TCell(); diff --git a/ydb/core/tablet_flat/flat_dbase_apply.cpp b/ydb/core/tablet_flat/flat_dbase_apply.cpp index e00d8bcbc004..465a13ebd889 100644 --- a/ydb/core/tablet_flat/flat_dbase_apply.cpp +++ b/ydb/core/tablet_flat/flat_dbase_apply.cpp @@ -53,7 +53,7 @@ bool TSchemeModifier::Apply(const TAlterRecord &delta) auto typeInfoMod = NScheme::TypeInfoModFromProtoColumnType(delta.GetColumnType(), delta.HasColumnTypeInfo() ? &delta.GetColumnTypeInfo() : nullptr); - ui32 pgTypeId = NPg::PgTypeIdFromTypeDesc(typeInfoMod.TypeInfo.GetTypeDesc()); + ui32 pgTypeId = NPg::PgTypeIdFromTypeDesc(typeInfoMod.TypeInfo.GetPgTypeDesc()); changes |= AddPgColumn(table, delta.GetColumnName(), delta.GetColumnId(), delta.GetColumnType(), pgTypeId, typeInfoMod.TypeMod, delta.GetNotNull(), null); } else if (action == TAlterRecord::DropColumn) { diff --git a/ydb/core/tablet_flat/flat_dbase_scheme.cpp b/ydb/core/tablet_flat/flat_dbase_scheme.cpp index b38f11a16a94..8f81eea6c007 100644 --- a/ydb/core/tablet_flat/flat_dbase_scheme.cpp +++ b/ydb/core/tablet_flat/flat_dbase_scheme.cpp @@ -31,7 +31,7 @@ TAutoPtr TScheme::GetSnapshot() const { const auto &col = it.second; delta.AddPgColumn(table, col.Name, it.first, col.PType.GetTypeId(), - NPg::PgTypeIdFromTypeDesc(col.PType.GetTypeDesc()), + NPg::PgTypeIdFromTypeDesc(col.PType.GetPgTypeDesc()), col.PTypeMod, col.NotNull, col.Null); delta.AddColumnToFamily(table, it.first, col.Family); } diff --git a/ydb/core/tablet_flat/flat_executor_db_mon.cpp b/ydb/core/tablet_flat/flat_executor_db_mon.cpp index 469d74564ef2..3575a8c02ebc 100644 --- a/ydb/core/tablet_flat/flat_executor_db_mon.cpp +++ b/ydb/core/tablet_flat/flat_executor_db_mon.cpp @@ -230,7 +230,7 @@ class TExecutor::TTxExecutorDbMon : public TTransactionBase { break; } case NScheme::NTypeIds::Pg: { - str << "(Pg) " << NPg::PgTypeNameFromTypeDesc(tuple.Types[i].GetTypeDesc()); + str << "(Pg) " << NPg::PgTypeNameFromTypeDesc(tuple.Types[i].GetPgTypeDesc()); break; } default: diff --git a/ydb/core/tablet_flat/ut/flat_test_db.cpp b/ydb/core/tablet_flat/ut/flat_test_db.cpp index 31d950ab36af..212d6f065494 100644 --- a/ydb/core/tablet_flat/ut/flat_test_db.cpp +++ b/ydb/core/tablet_flat/ut/flat_test_db.cpp @@ -27,7 +27,7 @@ struct TFakeKeyComparator { return false; Y_ASSERT(av.Type() == bv.Type()); // pg types are not supported - int res = CompareTypedCells(TCell(&av), TCell(&bv), NScheme::TTypeInfo(av.Type(), {})); + int res = CompareTypedCells(TCell(&av), TCell(&bv), NScheme::TTypeInfo(av.Type())); if (res) return res < 0; } diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.cpp b/ydb/core/tx/columnshard/transactions/operators/schema.cpp index 2cc9d78e974b..dd6ebe064e99 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.cpp +++ b/ydb/core/tx/columnshard/transactions/operators/schema.cpp @@ -119,12 +119,15 @@ NKikimr::TConclusionStatus TSchemaTransactionOperator::ValidateTableSchema(const TVector columnErrors; for (const NKikimrSchemeOp::TOlapColumnDescription& column : schema.GetColumns()) { TString name = column.GetName(); - const void* typeDescr = nullptr; + NScheme::TTypeId typeId = column.GetTypeId(); + NScheme::TTypeInfo schemeType; if (column.GetTypeId() == NTypeIds::Pg && column.HasTypeInfo()) { - typeDescr = NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()); + auto typeDescr = NPg::TypeDescFromPgTypeId(column.GetTypeInfo().GetPgTypeId()); + schemeType = {typeId, typeDescr}; + } else { + schemeType = {typeId}; } - NScheme::TTypeInfo schemeType(column.GetTypeId(), typeDescr); if (keyColumns.contains(name) && !pkSupportedTypes.contains(column.GetTypeId())) { columnErrors.emplace_back("key column " + name + " has unsupported type " + column.GetTypeName()); } diff --git a/ydb/core/tx/datashard/datashard_kqp_lookup_table.cpp b/ydb/core/tx/datashard/datashard_kqp_lookup_table.cpp index 51752b1d206a..71fabe8153fa 100644 --- a/ydb/core/tx/datashard/datashard_kqp_lookup_table.cpp +++ b/ydb/core/tx/datashard/datashard_kqp_lookup_table.cpp @@ -36,7 +36,7 @@ void ValidateLookupKeys(const TType* inputType, const THashMapGetTypeDesc()), + NPg::PgTypeIdFromTypeDesc(pgTypeInfo.GetPgTypeDesc()) == NPg::PgTypeIdFromTypeDesc(columnType->GetPgTypeDesc()), "Key column type mismatch, column: " << name ); } else { diff --git a/ydb/core/tx/datashard/datashard_kqp_upsert_rows.cpp b/ydb/core/tx/datashard/datashard_kqp_upsert_rows.cpp index 0a8e3ce35e3d..d6692af1faf4 100644 --- a/ydb/core/tx/datashard/datashard_kqp_upsert_rows.cpp +++ b/ydb/core/tx/datashard/datashard_kqp_upsert_rows.cpp @@ -75,7 +75,7 @@ class TKqpUpsertRowsWrapper : public TMutableComputationNodeColumns.end()); const auto& typeMod = itColumnInfo->second.TypeMod; if (!typeMod.empty()) { - auto result = NPg::BinaryTypeModFromTextTypeMod(typeMod, rowTypes[i].GetTypeDesc()); + auto result = NPg::BinaryTypeModFromTextTypeMod(typeMod, rowTypes[i].GetPgTypeDesc()); MKQL_ENSURE_S(!result.Error, "invalid type mod"); rowTypeMods[i] = result.Typmod; } @@ -231,7 +231,7 @@ IComputationNode* WrapKqpUpsertRows(TCallable& callable, const TComputationNodeF if (NKqp::StructHoldsPgType(*rowType, it->second)) { auto typeInfo = NKqp::UnwrapPgTypeFromStruct(*rowType, it->second); MKQL_ENSURE_S( - NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc()) == NPg::PgTypeIdFromTypeDesc(columnInfo.Type.GetTypeDesc()), + NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc()) == NPg::PgTypeIdFromTypeDesc(columnInfo.Type.GetPgTypeDesc()), "row key type mismatch with table key type" ); } else { diff --git a/ydb/core/tx/datashard/export_common.cpp b/ydb/core/tx/datashard/export_common.cpp index 834e39d57b4b..53cdc71f2134 100644 --- a/ydb/core/tx/datashard/export_common.cpp +++ b/ydb/core/tx/datashard/export_common.cpp @@ -132,8 +132,8 @@ bool DyNumberToStream(TStringBuf data, IOutputStream& out, TString& err) { return true; } -bool PgToStream(TStringBuf data, const NScheme::TTypeDesc* typeDesc, IOutputStream& out, TString& err) { - const NPg::TConvertResult& pgResult = NPg::PgNativeTextFromNativeBinary(data, typeDesc); +bool PgToStream(TStringBuf data, const NScheme::TTypeInfo& typeInfo, IOutputStream& out, TString& err) { + const NPg::TConvertResult& pgResult = NPg::PgNativeTextFromNativeBinary(data, typeInfo.GetPgTypeDesc()); if (pgResult.Error) { err = *pgResult.Error; return false; diff --git a/ydb/core/tx/datashard/export_common.h b/ydb/core/tx/datashard/export_common.h index 89c280ccdd1e..fac97dde1d77 100644 --- a/ydb/core/tx/datashard/export_common.h +++ b/ydb/core/tx/datashard/export_common.h @@ -43,7 +43,7 @@ TString DecimalToString(const std::pair& loHi); TString DyNumberToString(TStringBuf data); bool DecimalToStream(const std::pair& loHi, IOutputStream& out, TString& err); bool DyNumberToStream(TStringBuf data, IOutputStream& out, TString& err); -bool PgToStream(TStringBuf data, const NScheme::TTypeDesc* typeDesc, IOutputStream& out, TString& err); +bool PgToStream(TStringBuf data, const NScheme::TTypeInfo& typeInfo, IOutputStream& out, TString& err); bool UuidToStream(const std::pair& loHi, IOutputStream& out, TString& err); } // NDataShard diff --git a/ydb/core/tx/datashard/export_s3_buffer_raw.cpp b/ydb/core/tx/datashard/export_s3_buffer_raw.cpp index 9db04d1e08d4..f3ba89076b4e 100644 --- a/ydb/core/tx/datashard/export_s3_buffer_raw.cpp +++ b/ydb/core/tx/datashard/export_s3_buffer_raw.cpp @@ -131,7 +131,7 @@ bool TS3BufferRaw::Collect(const NTable::IScan::TRow& row, IOutputStream& out) { out << '"' << CGIEscapeRet(NBinaryJson::SerializeToJson(cell.AsBuf())) << '"'; break; case NScheme::NTypeIds::Pg: - serialized = PgToStream(cell.AsBuf(), column.Type.GetTypeDesc(), out, ErrorString); + serialized = PgToStream(cell.AsBuf(), column.Type, out, ErrorString); break; case NScheme::NTypeIds::Uuid: serialized = UuidToStream(cell.AsValue>(), out, ErrorString); diff --git a/ydb/core/tx/datashard/read_table_scan.cpp b/ydb/core/tx/datashard/read_table_scan.cpp index 45ad5e928cf1..94f8edeb974d 100644 --- a/ydb/core/tx/datashard/read_table_scan.cpp +++ b/ydb/core/tx/datashard/read_table_scan.cpp @@ -187,7 +187,7 @@ Y_FORCE_INLINE bool AddCell(TOutValue& row, NScheme::TTypeInfo type, const TCell break; } case NScheme::NTypeIds::Pg: { - auto result = NPg::PgNativeTextFromNativeBinary(cell.AsBuf(), type.GetTypeDesc()); + auto result = NPg::PgNativeTextFromNativeBinary(cell.AsBuf(), type.GetPgTypeDesc()); if (result.Error) { err = Sprintf("Failed to add cell to Ydb::Value: %s", (*result.Error).c_str()); return false; @@ -355,7 +355,7 @@ class TRowsToYdbResult : public TRowsToResult { if (col.GetTypeId() == NScheme::NTypeIds::Pg) { auto* pg = meta->mutable_type()->mutable_pg_type(); - auto typeDesc = typeInfoMod.TypeInfo.GetTypeDesc(); + auto typeDesc = typeInfoMod.TypeInfo.GetPgTypeDesc(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_type_modifier(typeInfoMod.TypeMod); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/tx/datashard/scan_common.cpp b/ydb/core/tx/datashard/scan_common.cpp index 3a0b9f779ecd..0abfde17fc78 100644 --- a/ydb/core/tx/datashard/scan_common.cpp +++ b/ydb/core/tx/datashard/scan_common.cpp @@ -31,7 +31,7 @@ TColumnsTypes GetAllTypes(const TUserTable& tableInfo) { void ProtoYdbTypeFromTypeInfo(Ydb::Type* type, const NScheme::TTypeInfo typeInfo) { if (typeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - auto* typeDesc = typeInfo.GetTypeDesc(); + auto* typeDesc = typeInfo.GetPgTypeDesc(); auto* pg = type->mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp index a4b76532fa0e..8b38ec371846 100644 --- a/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__operation_common_external_table.cpp @@ -54,7 +54,7 @@ bool Validate(const TString& sourceType, const NKikimrSchemeOp::TExternalTableDe Ydb::Type CreateYdbType(const NScheme::TTypeInfo& typeInfo, bool notNull) { Ydb::Type ydbType; if (typeInfo.GetTypeId() == NScheme::NTypeIds::Pg) { - auto typeDesc = typeInfo.GetTypeDesc(); + auto typeDesc = typeInfo.GetPgTypeDesc(); auto* pg = ydbType.mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/tx/schemeshard/schemeshard_info_types.cpp b/ydb/core/tx/schemeshard/schemeshard_info_types.cpp index 73ebbb43a840..1903fe2a5e94 100644 --- a/ydb/core/tx/schemeshard/schemeshard_info_types.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_info_types.cpp @@ -383,7 +383,7 @@ TTableInfo::TAlterDataPtr TTableInfo::CreateAlterData( case NScheme::NTypeIds::Utf8: break; case NScheme::NTypeIds::Pg: { - switch (NPg::PgTypeIdFromTypeDesc(sourceColumn.PType.GetTypeDesc())) { + switch (NPg::PgTypeIdFromTypeDesc(sourceColumn.PType.GetPgTypeDesc())) { case INT2OID: case INT4OID: case INT8OID: @@ -391,7 +391,7 @@ TTableInfo::TAlterDataPtr TTableInfo::CreateAlterData( case FLOAT8OID: break; default: { - TString columnType = NPg::PgTypeNameFromTypeDesc(sourceColumn.PType.GetTypeDesc()); + TString columnType = NPg::PgTypeNameFromTypeDesc(sourceColumn.PType.GetPgTypeDesc()); TString sequenceType = NPg::PgTypeNameFromTypeDesc(NPg::TypeDescFromPgTypeId(INT8OID)); errStr = Sprintf( "Column '%s' is of type %s but default expression is of type %s", colName.c_str(), columnType.c_str(), sequenceType.c_str() diff --git a/ydb/core/tx/schemeshard/schemeshard_utils.cpp b/ydb/core/tx/schemeshard/schemeshard_utils.cpp index ae94997e4542..ea0fb58795a7 100644 --- a/ydb/core/tx/schemeshard/schemeshard_utils.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_utils.cpp @@ -592,7 +592,7 @@ bool IsCompatibleKeyTypes( auto typeId = item.second.GetTypeId(); if (typeId == NScheme::NTypeIds::Pg) { - if (!item.second.GetTypeDesc()) { + if (!item.second.GetPgTypeDesc()) { explain += TStringBuilder() << "unknown pg type for column '" << columnName << "'"; return false; } diff --git a/ydb/core/tx/schemeshard/schemeshard_utils.h b/ydb/core/tx/schemeshard/schemeshard_utils.h index 513fc5c221e1..f316768c84f3 100644 --- a/ydb/core/tx/schemeshard/schemeshard_utils.h +++ b/ydb/core/tx/schemeshard/schemeshard_utils.h @@ -33,7 +33,7 @@ inline bool IsAllowedKeyType(NScheme::TTypeInfo typeInfo) { case NScheme::NTypeIds::JsonDocument: return false; case NScheme::NTypeIds::Pg: - return NPg::TypeDescIsComparable(typeInfo.GetTypeDesc()); + return NPg::TypeDescIsComparable(typeInfo.GetPgTypeDesc()); default: return true; } diff --git a/ydb/core/tx/tx_proxy/read_table_impl.cpp b/ydb/core/tx/tx_proxy/read_table_impl.cpp index 99451237a445..22a75b94214d 100644 --- a/ydb/core/tx/tx_proxy/read_table_impl.cpp +++ b/ydb/core/tx/tx_proxy/read_table_impl.cpp @@ -1760,7 +1760,7 @@ class TReadTableWorker : public TActorBootstrapped { meta->set_name(col.Name); if (col.PType.GetTypeId() == NScheme::NTypeIds::Pg) { - auto typeDesc = col.PType.GetTypeDesc(); + auto typeDesc = col.PType.GetPgTypeDesc(); auto* pg = meta->mutable_type()->mutable_pg_type(); pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h index ef1b53384246..dc5878ab6286 100644 --- a/ydb/core/tx/tx_proxy/upload_rows_common_impl.h +++ b/ydb/core/tx/tx_proxy/upload_rows_common_impl.h @@ -469,7 +469,7 @@ class TUploadRowsBase : public TActorBootstrappedset_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc)); pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc)); diff --git a/ydb/core/ydb_convert/table_description.cpp b/ydb/core/ydb_convert/table_description.cpp index d30018d58b44..40011334c058 100644 --- a/ydb/core/ydb_convert/table_description.cpp +++ b/ydb/core/ydb_convert/table_description.cpp @@ -1606,7 +1606,7 @@ bool FillSequenceDescription(NKikimrSchemeOp::TSequenceDescription& out, const Y break; } case NScheme::NTypeIds::Pg: { - switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetTypeDesc())) { + switch (NPg::PgTypeIdFromTypeDesc(typeInfo.GetPgTypeDesc())) { case INT2OID: case INT4OID: case INT8OID: { @@ -1614,7 +1614,7 @@ bool FillSequenceDescription(NKikimrSchemeOp::TSequenceDescription& out, const Y break; } default: { - TString sequenceType = NPg::PgTypeNameFromTypeDesc(typeInfo.GetTypeDesc()); + TString sequenceType = NPg::PgTypeNameFromTypeDesc(typeInfo.GetPgTypeDesc()); status = Ydb::StatusIds::BAD_REQUEST; error = Sprintf( "Invalid type name %s for sequence: %s", sequenceType.c_str(), out.GetName().data() diff --git a/ydb/core/ydb_convert/ydb_convert.cpp b/ydb/core/ydb_convert/ydb_convert.cpp index 8fb072d8f4fe..20f04c1e5bd9 100644 --- a/ydb/core/ydb_convert/ydb_convert.cpp +++ b/ydb/core/ydb_convert/ydb_convert.cpp @@ -1255,7 +1255,7 @@ bool CellFromProtoVal(NScheme::TTypeInfo type, i32 typmod, const Ydb::Value* vp, TString text = val.Gettext_value(); if (!text.empty()) { isText = true; - auto desc = type.GetTypeDesc(); + auto desc = type.GetPgTypeDesc(); auto res = NPg::PgNativeBinaryFromNativeText(text, desc); if (res.Error) { err = TStringBuilder() << "Invalid text value for " @@ -1266,7 +1266,7 @@ bool CellFromProtoVal(NScheme::TTypeInfo type, i32 typmod, const Ydb::Value* vp, } else { binary = val.Getbytes_value(); } - auto* desc = type.GetTypeDesc(); + auto* desc = type.GetPgTypeDesc(); if (typmod != -1 && NPg::TypeDescNeedsCoercion(desc)) { auto res = NPg::PgNativeBinaryCoerce(TStringBuf(binary), desc, typmod); if (res.Error) { diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp index b556c7c63b20..ee53a7fc8ef0 100644 --- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp +++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp @@ -5201,8 +5201,11 @@ namespace NKikimr::NPg { constexpr char INTERNAL_TYPE_AND_MOD_SEPARATOR = ':'; +struct ITypeDesc {}; + class TPgTypeDescriptor : public NYql::NPg::TTypeDesc + , public ITypeDesc { public: explicit TPgTypeDescriptor(const NYql::NPg::TTypeDesc& desc) @@ -5712,21 +5715,21 @@ class TPgTypeDescriptors { THashMap ByName; }; -ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const ITypeDesc* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->TypeId; } -const void* TypeDescFromPgTypeId(ui32 pgTypeId) { +const ITypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId) { if (!pgTypeId) { return {}; } - return (const void*)TPgTypeDescriptors::Instance().Find(pgTypeId); + return (const ITypeDesc*)TPgTypeDescriptors::Instance().Find(pgTypeId); } -TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const ITypeDesc* typeDesc, const TString& typeMod) { if (!typeDesc) { return ""; } @@ -5737,12 +5740,12 @@ TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { return pgTypeDesc->YdbTypeName + INTERNAL_TYPE_AND_MOD_SEPARATOR + typeMod; } -const void* TypeDescFromPgTypeName(const TStringBuf name) { +const ITypeDesc* TypeDescFromPgTypeName(const TStringBuf name) { auto space = name.find_first_of(INTERNAL_TYPE_AND_MOD_SEPARATOR); if (space != TStringBuf::npos) { - return (const void*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); + return (const ITypeDesc*)TPgTypeDescriptors::Instance().Find(name.substr(0, space)); } - return (const void*)TPgTypeDescriptors::Instance().Find(name); + return (const ITypeDesc*)TPgTypeDescriptors::Instance().Find(name); } TString TypeModFromPgTypeName(const TStringBuf name) { @@ -5753,64 +5756,64 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(const void* typeDesc) { +bool TypeDescIsComparable(const ITypeDesc* typeDesc) { if (!typeDesc) { return false; } return static_cast(typeDesc)->CompareProcId != 0; } -i32 TypeDescGetTypeLen(const void* typeDesc) { +i32 TypeDescGetTypeLen(const ITypeDesc* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->TypeLen; } -ui32 TypeDescGetStoredSize(const void* typeDesc) { +ui32 TypeDescGetStoredSize(const ITypeDesc* typeDesc) { if (!typeDesc) { return 0; } return static_cast(typeDesc)->StoredSize; } -bool TypeDescNeedsCoercion(const void* typeDesc) { +bool TypeDescNeedsCoercion(const ITypeDesc* typeDesc) { if (!typeDesc) { return false; } return static_cast(typeDesc)->NeedsCoercion; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const ITypeDesc* typeDesc) { return static_cast(typeDesc)->Compare(dataL, sizeL, dataR, sizeR); } -ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const ITypeDesc* typeDesc) { return static_cast(typeDesc)->Hash(data, size); } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const ITypeDesc* typeDesc) { if (!typeDesc) { return {-1, "invalid type descriptor"}; } return static_cast(typeDesc)->ReadTypeMod(str); } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const ITypeDesc* typeDesc) { if (!typeDesc) { return "invalid type descriptor"; } return static_cast(typeDesc)->Validate(binary); } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const ITypeDesc* typeDesc, i32 typmod) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } return static_cast(typeDesc)->Coerce(binary, typmod); } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const ITypeDesc* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } @@ -5821,7 +5824,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { return PgNativeBinaryFromNativeText(str, TypeDescFromPgTypeId(pgTypeId)); } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const ITypeDesc* typeDesc) { if (!typeDesc) { return {{}, "invalid type descriptor"}; } diff --git a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h index 357cebea222e..f50c3a33e4be 100644 --- a/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h +++ b/ydb/library/yql/parser/pg_wrapper/interface/type_desc.h @@ -5,46 +5,48 @@ namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(const void* typeDesc); -const void* TypeDescFromPgTypeId(ui32 pgTypeId); +struct ITypeDesc; -TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod = {}); -const void* TypeDescFromPgTypeName(const TStringBuf name); +ui32 PgTypeIdFromTypeDesc(const ITypeDesc* typeDesc); +const ITypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId); + +TString PgTypeNameFromTypeDesc(const ITypeDesc* typeDesc, const TString& typeMod = {}); +const ITypeDesc* TypeDescFromPgTypeName(const TStringBuf name); TString TypeModFromPgTypeName(const TStringBuf name); -bool TypeDescIsComparable(const void* typeDesc); -i32 TypeDescGetTypeLen(const void* typeDesc); -ui32 TypeDescGetStoredSize(const void* typeDesc); -bool TypeDescNeedsCoercion(const void* typeDesc); +bool TypeDescIsComparable(const ITypeDesc* typeDesc); +i32 TypeDescGetTypeLen(const ITypeDesc* typeDesc); +ui32 TypeDescGetStoredSize(const ITypeDesc* typeDesc); +bool TypeDescNeedsCoercion(const ITypeDesc* typeDesc); -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc); +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const ITypeDesc* typeDesc); -ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc); +ui64 PgNativeBinaryHash(const char* data, size_t size, const ITypeDesc* typeDesc); struct TTypeModResult { i32 Typmod = -1; TMaybe Error; }; -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc); +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const ITypeDesc* typeDesc); -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc); +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const ITypeDesc* typeDesc); struct TCoerceResult { TMaybe NewValue; TMaybe Error; }; -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod); +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const ITypeDesc* typeDesc, i32 typmod); struct TConvertResult { TString Str; TMaybe Error; }; -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc); +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const ITypeDesc* typeDesc); TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId); -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc); +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const ITypeDesc* typeDesc); TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, ui32 pgTypeId); } // namespace NKikimr::NPg diff --git a/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp b/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp index 1800a2992dc8..ca05414ece0b 100644 --- a/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp +++ b/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp @@ -269,7 +269,7 @@ std::pair CreateYdbReadActor( keyColumnTypes.reserve(params.GetKeyColumnTypes().size()); for (auto i = 0; i < params.GetKeyColumnTypes().size(); ++i) // TODO support pg types - keyColumnTypes.emplace_back(NKikimr::NScheme::TTypeInfo(params.GetKeyColumnTypes().Get(i), nullptr)); + keyColumnTypes.emplace_back(NKikimr::NScheme::TTypeInfo(params.GetKeyColumnTypes().Get(i))); ui64 maxRowsInRequest = 0ULL; ui64 maxBytesInRequest = 0ULL; diff --git a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp index 5d8bd30d95da..926928fa1a7b 100644 --- a/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp +++ b/ydb/library/yql/sql/pg_dummy/pg_sql_dummy.cpp @@ -427,23 +427,23 @@ IOptimizerNew* MakePgOptimizerNew(IProviderContext& pctx, TExprContext& ctx, con namespace NKikimr::NPg { -ui32 PgTypeIdFromTypeDesc(const void* typeDesc) { +ui32 PgTypeIdFromTypeDesc(const ITypeDesc* typeDesc) { Y_UNUSED(typeDesc); return 0; } -const void* TypeDescFromPgTypeId(ui32 pgTypeId) { +const ITypeDesc* TypeDescFromPgTypeId(ui32 pgTypeId) { Y_UNUSED(pgTypeId); return {}; } -TString PgTypeNameFromTypeDesc(const void* typeDesc, const TString& typeMod) { +TString PgTypeNameFromTypeDesc(const ITypeDesc* typeDesc, const TString& typeMod) { Y_UNUSED(typeDesc); Y_UNUSED(typeMod); return ""; } -const void* TypeDescFromPgTypeName(const TStringBuf name) { +const ITypeDesc* TypeDescFromPgTypeName(const TStringBuf name) { Y_UNUSED(name); return {}; } @@ -453,27 +453,27 @@ TString TypeModFromPgTypeName(const TStringBuf name) { return {}; } -bool TypeDescIsComparable(const void* typeDesc) { +bool TypeDescIsComparable(const ITypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -i32 TypeDescGetTypeLen(const void* typeDesc) { +i32 TypeDescGetTypeLen(const ITypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -ui32 TypeDescGetStoredSize(const void* typeDesc) { +ui32 TypeDescGetStoredSize(const ITypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -bool TypeDescNeedsCoercion(const void* typeDesc) { +bool TypeDescNeedsCoercion(const ITypeDesc* typeDesc) { Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const void* typeDesc) { +int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, size_t sizeR, const ITypeDesc* typeDesc) { Y_UNUSED(dataL); Y_UNUSED(sizeL); Y_UNUSED(dataR); @@ -482,33 +482,33 @@ int PgNativeBinaryCompare(const char* dataL, size_t sizeL, const char* dataR, si throw yexception() << "PG types are not supported"; } -ui64 PgNativeBinaryHash(const char* data, size_t size, const void* typeDesc) { +ui64 PgNativeBinaryHash(const char* data, size_t size, const ITypeDesc* typeDesc) { Y_UNUSED(data); Y_UNUSED(size); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const void* typeDesc) { +TTypeModResult BinaryTypeModFromTextTypeMod(const TString& str, const ITypeDesc* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TMaybe PgNativeBinaryValidate(const TStringBuf binary, const void* typeDesc) { +TMaybe PgNativeBinaryValidate(const TStringBuf binary, const ITypeDesc* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; } -TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const void* typeDesc, i32 typmod) { +TCoerceResult PgNativeBinaryCoerce(const TStringBuf binary, const ITypeDesc* typeDesc, i32 typmod) { Y_UNUSED(binary); Y_UNUSED(typeDesc); Y_UNUSED(typmod); throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeBinaryFromNativeText(const TString& str, const void* typeDesc) { +TConvertResult PgNativeBinaryFromNativeText(const TString& str, const ITypeDesc* typeDesc) { Y_UNUSED(str); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; @@ -520,7 +520,7 @@ TConvertResult PgNativeBinaryFromNativeText(const TString& str, ui32 pgTypeId) { throw yexception() << "PG types are not supported"; } -TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const void* typeDesc) { +TConvertResult PgNativeTextFromNativeBinary(const TStringBuf binary, const ITypeDesc* typeDesc) { Y_UNUSED(binary); Y_UNUSED(typeDesc); throw yexception() << "PG types are not supported"; diff --git a/ydb/library/yql/tools/dqrun/dqrun.cpp b/ydb/library/yql/tools/dqrun/dqrun.cpp index 3a813dcc91fd..7aa7f67a0a23 100644 --- a/ydb/library/yql/tools/dqrun/dqrun.cpp +++ b/ydb/library/yql/tools/dqrun/dqrun.cpp @@ -813,19 +813,19 @@ int RunMain(int argc, const char* argv[]) runOptions.User = user; - NPg::SetSqlLanguageParser(NSQLTranslationPG::CreateSqlLanguageParser()); - NPg::LoadSystemFunctions(*NSQLTranslationPG::CreateSystemFunctionsParser()); + NYql::NPg::SetSqlLanguageParser(NSQLTranslationPG::CreateSqlLanguageParser()); + NYql::NPg::LoadSystemFunctions(*NSQLTranslationPG::CreateSystemFunctionsParser()); if (!pgExtConfig.empty()) { NProto::TPgExtensions config; Y_ABORT_UNLESS(NKikimr::ParsePBFromFile(pgExtConfig, &config)); - TVector extensions; + TVector extensions; PgExtensionsFromProto(config, extensions); - NPg::RegisterExtensions(extensions, false, + NYql::NPg::RegisterExtensions(extensions, false, *NSQLTranslationPG::CreateExtensionSqlParser(), NKikimr::NMiniKQL::CreateExtensionLoader().get()); } - NPg::GetSqlLanguageParser()->Freeze(); + NYql::NPg::GetSqlLanguageParser()->Freeze(); TUserDataTable dataTable; FillUsedFiles(filesMappingList, dataTable); @@ -1022,7 +1022,7 @@ int RunMain(int argc, const char* argv[]) } TExprContext ctx; - ctx.NextUniqueId = NPg::GetSqlLanguageParser()->GetContext().NextUniqueId; + ctx.NextUniqueId = NYql::NPg::GetSqlLanguageParser()->GetContext().NextUniqueId; IModuleResolver::TPtr moduleResolver; if (!mountConfig.empty()) { TModulesTable modules; From 4853f96584b5e54989ddc2ae0550b445ccb21552 Mon Sep 17 00:00:00 2001 From: azevaykin Date: Wed, 11 Sep 2024 13:18:27 +0000 Subject: [PATCH 5/6] decimal_ut --- ydb/core/kqp/ut/olap/decimal_ut.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ydb/core/kqp/ut/olap/decimal_ut.cpp b/ydb/core/kqp/ut/olap/decimal_ut.cpp index 151226bd01d6..c7486a87748b 100644 --- a/ydb/core/kqp/ut/olap/decimal_ut.cpp +++ b/ydb/core/kqp/ut/olap/decimal_ut.cpp @@ -44,9 +44,9 @@ Y_UNIT_TEST_SUITE(KqpDecimalColumnShard) { void PrepareTable1() { Schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("int").SetType(NScheme::NTypeIds::Int64), - TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("int").SetTypeInfo(NScheme::NTypeIds::Int64), + TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal), }; TestTable.SetName("/Root/Table1").SetPrimaryKey({ "id" }).SetSharding({ "id" }).SetSchema(Schema); TestHelper.CreateTable(TestTable); @@ -68,9 +68,9 @@ Y_UNIT_TEST_SUITE(KqpDecimalColumnShard) { void PrepareTable2() { Schema = { - TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("table1_id").SetType(NScheme::NTypeIds::Int64), - TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal), + TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("table1_id").SetTypeInfo(NScheme::NTypeIds::Int64), + TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal), }; TestTable.SetName("/Root/Table2").SetPrimaryKey({ "id" }).SetSharding({ "id" }).SetSchema(Schema); TestHelper.CreateTable(TestTable); From e684b85216cbe8505cc1b1e20ec040fadde07b04 Mon Sep 17 00:00:00 2001 From: azevaykin Date: Wed, 11 Sep 2024 13:29:22 +0000 Subject: [PATCH 6/6] SetTypeInfo -> SetType --- ydb/core/kqp/ut/common/columnshard.cpp | 5 + ydb/core/kqp/ut/common/columnshard.h | 2 + ydb/core/kqp/ut/olap/datatime64_ut.cpp | 26 +-- ydb/core/kqp/ut/olap/decimal_ut.cpp | 12 +- ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp | 6 +- ydb/core/kqp/ut/olap/kqp_olap_ut.cpp | 12 +- ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp | 192 +++++++++--------- ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp | 8 +- 8 files changed, 135 insertions(+), 128 deletions(-) diff --git a/ydb/core/kqp/ut/common/columnshard.cpp b/ydb/core/kqp/ut/common/columnshard.cpp index f5f1588cfbce..fa68d4a84ffa 100644 --- a/ydb/core/kqp/ut/common/columnshard.cpp +++ b/ydb/core/kqp/ut/common/columnshard.cpp @@ -165,6 +165,11 @@ namespace NKqp { return str; } + TTestHelper::TColumnSchema& TTestHelper::TColumnSchema::SetType(NScheme::TTypeId typeId) { + TypeInfo = NScheme::TTypeInfo(typeId); + return *this; + } + TString TTestHelper::TColumnTableBase::BuildQuery() const { auto str = TStringBuilder() << "CREATE " << GetObjectType() << " `" << Name << "`"; str << " (" << BuildColumnsStr(Schema) << ", PRIMARY KEY (" << JoinStrings(PrimaryKey, ", ") << "))"; diff --git a/ydb/core/kqp/ut/common/columnshard.h b/ydb/core/kqp/ut/common/columnshard.h index 166ab6c4c755..d1bfa68c3a28 100644 --- a/ydb/core/kqp/ut/common/columnshard.h +++ b/ydb/core/kqp/ut/common/columnshard.h @@ -23,6 +23,8 @@ namespace NKqp { YDB_FLAG_ACCESSOR(Nullable, true); public: TString BuildQuery() const; + + TColumnSchema& SetType(NScheme::TTypeId typeId); }; using TUpdatesBuilder = NColumnShard::TTableUpdatesBuilder; diff --git a/ydb/core/kqp/ut/olap/datatime64_ut.cpp b/ydb/core/kqp/ut/olap/datatime64_ut.cpp index 07ba997d33bf..97e2a2f2fd28 100644 --- a/ydb/core/kqp/ut/olap/datatime64_ut.cpp +++ b/ydb/core/kqp/ut/olap/datatime64_ut.cpp @@ -31,9 +31,9 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64), - TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp64) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64), + TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -59,8 +59,8 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64) + TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -98,8 +98,8 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("datetime").SetTypeInfo(NScheme::NTypeIds::Datetime64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64) + TTestHelper::TColumnSchema().SetName("datetime").SetType(NScheme::NTypeIds::Datetime64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -137,8 +137,8 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("date").SetTypeInfo(NScheme::NTypeIds::Date32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("interval").SetTypeInfo(NScheme::NTypeIds::Interval64) + TTestHelper::TColumnSchema().SetName("date").SetType(NScheme::NTypeIds::Date32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("interval").SetType(NScheme::NTypeIds::Interval64) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -173,10 +173,10 @@ Y_UNIT_TEST_SUITE(KqpDatetime64ColumnShard) { Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).SetComponents({ NKikimrServices::GROUPED_MEMORY_LIMITER }, "CS").Initialize(); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("date32").SetTypeInfo(NScheme::NTypeIds::Date32), - TTestHelper::TColumnSchema().SetName("timestamp64").SetTypeInfo(NScheme::NTypeIds::Timestamp64), - TTestHelper::TColumnSchema().SetName("datetime64").SetTypeInfo(NScheme::NTypeIds::Datetime64), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("date32").SetType(NScheme::NTypeIds::Date32), + TTestHelper::TColumnSchema().SetName("timestamp64").SetType(NScheme::NTypeIds::Timestamp64), + TTestHelper::TColumnSchema().SetName("datetime64").SetType(NScheme::NTypeIds::Datetime64), }; TTestHelper::TColumnTable testTable; diff --git a/ydb/core/kqp/ut/olap/decimal_ut.cpp b/ydb/core/kqp/ut/olap/decimal_ut.cpp index c7486a87748b..151226bd01d6 100644 --- a/ydb/core/kqp/ut/olap/decimal_ut.cpp +++ b/ydb/core/kqp/ut/olap/decimal_ut.cpp @@ -44,9 +44,9 @@ Y_UNIT_TEST_SUITE(KqpDecimalColumnShard) { void PrepareTable1() { Schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("int").SetTypeInfo(NScheme::NTypeIds::Int64), - TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("int").SetType(NScheme::NTypeIds::Int64), + TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal), }; TestTable.SetName("/Root/Table1").SetPrimaryKey({ "id" }).SetSharding({ "id" }).SetSchema(Schema); TestHelper.CreateTable(TestTable); @@ -68,9 +68,9 @@ Y_UNIT_TEST_SUITE(KqpDecimalColumnShard) { void PrepareTable2() { Schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("table1_id").SetTypeInfo(NScheme::NTypeIds::Int64), - TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("table1_id").SetType(NScheme::NTypeIds::Int64), + TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal), }; TestTable.SetName("/Root/Table2").SetPrimaryKey({ "id" }).SetSharding({ "id" }).SetSchema(Schema); TestHelper.CreateTable(TestTable); diff --git a/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp index a750fd195685..c1fcab4be0fd 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_stats_ut.cpp @@ -15,9 +15,9 @@ Y_UNIT_TEST_SUITE(KqpOlapStats) { constexpr size_t size_single_table = 13152; const TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32)}; + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32)}; class TOlapStatsController : public NYDBTest::NColumnShard::TController { public: diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp index f771d2faacd6..635efa2c00b2 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp @@ -2426,10 +2426,10 @@ Y_UNIT_TEST_SUITE(KqpOlap) { TTestHelper testHelper(runnerSettings); Tests::NCommon::TLoggerInit(testHelper.GetRuntime()).Initialize(); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -2458,8 +2458,8 @@ Y_UNIT_TEST_SUITE(KqpOlap) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("value").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("value").SetType(NScheme::NTypeIds::Int32).SetNullable(false), }; TTestHelper::TColumnTable testTable; diff --git a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp index b5b45398e6da..2f154f032ede 100644 --- a/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp @@ -7316,10 +7316,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7348,10 +7348,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7359,7 +7359,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.CreateTable(testTable); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -7372,10 +7372,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7401,10 +7401,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7434,10 +7434,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { const TString tableName = "/Root/ColumnTableTest"; TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7475,10 +7475,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -7611,9 +7611,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; Tests::NCommon::TLoggerInit(testHelper.GetKikimr()).Initialize(); @@ -7632,7 +7632,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -7671,9 +7671,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7700,9 +7700,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7727,9 +7727,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTableStore testTableStore; @@ -7749,7 +7749,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { testHelper.ReadData("SELECT * FROM `/Root/TableStoreTest/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLESTORE `" << testTableStore.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); @@ -7791,8 +7791,8 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), TTestHelper::TColumnSchema().SetName("level").SetTypeInfo({NScheme::NTypeIds::Pg, NPg::TypeDescFromPgTypeName("pgint4")}) }; TTestHelper::TColumnTableStore testTableStore; @@ -7855,9 +7855,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); @@ -7876,18 +7876,18 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32).SetNullable(false) }; TTestHelper::TColumnTable testTable; testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); testHelper.CreateTable(testTable); TVector schemaWithNull = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; { TTestHelper::TUpdatesBuilder tableInserter(testTable.GetArrowSchema(schemaWithNull)); @@ -7911,8 +7911,8 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Uuid).SetNullable(true) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Uuid).SetNullable(true) }; TTestHelper::TColumnTable testTable; testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema); @@ -7924,9 +7924,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7961,9 +7961,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -7988,9 +7988,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -8015,9 +8015,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -8032,7 +8032,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { } testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", "[[1;#;[\"test_res_1\"]]]"); { - schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetTypeInfo(NScheme::NTypeIds::Uint64)); + schema.push_back(TTestHelper::TColumnSchema().SetName("new_column").SetType(NScheme::NTypeIds::Uint64)); auto alterQuery = TStringBuilder() << "ALTER TABLE `" << testTable.GetName() << "` ADD COLUMN new_column Uint64;"; auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); @@ -8060,8 +8060,8 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("value").SetTypeInfo(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("value").SetType(NScheme::NTypeIds::Utf8), }; TTestHelper::TColumnTable testTable; @@ -8094,7 +8094,7 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { auto alterResult = testHelper.GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), EStatus::SUCCESS, alterResult.GetIssues().ToString()); } - schema.back().SetTypeInfo(NScheme::NTypeIds::Uint64); + schema.back().SetType(NScheme::NTypeIds::Uint64); { TTestHelper::TUpdatesBuilder tableInserter(testTable.GetArrowSchema(schema)); @@ -8133,10 +8133,10 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("id_second").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32), - TTestHelper::TColumnSchema().SetName("created_at").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id_second").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32), + TTestHelper::TColumnSchema().SetName("created_at").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -8162,9 +8162,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTable testTable; @@ -8190,9 +8190,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32) }; TTestHelper::TColumnTableStore testTableStore; @@ -8217,11 +8217,11 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Uint64).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Uint64).SetNullable(false) }; for (ui64 i = 0; i < 10000; ++i) { - schema.emplace_back(TTestHelper::TColumnSchema().SetName("column" + ToString(i)).SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(true)); + schema.emplace_back(TTestHelper::TColumnSchema().SetName("column" + ToString(i)).SetType(NScheme::NTypeIds::Int32).SetNullable(true)); } TTestHelper::TColumnTable testTable; @@ -8253,9 +8253,9 @@ Y_UNIT_TEST_SUITE(KqpOlapScheme) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(true), - TTestHelper::TColumnSchema().SetName("resource_id").SetTypeInfo(NScheme::NTypeIds::Utf8).SetNullable(false), - TTestHelper::TColumnSchema().SetName("level").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int32).SetNullable(true), + TTestHelper::TColumnSchema().SetName("resource_id").SetType(NScheme::NTypeIds::Utf8).SetNullable(false), + TTestHelper::TColumnSchema().SetName("level").SetType(NScheme::NTypeIds::Int32).SetNullable(false) }; TTestHelper::TColumnTableStore testTableStore; testTableStore.SetName("/Root/TableStoreTest").SetPrimaryKey({"id"}).SetSchema(schema); @@ -8277,9 +8277,9 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false), - TTestHelper::TColumnSchema().SetName("ui64_type").SetTypeInfo(NScheme::NTypeIds::Uint64).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false), + TTestHelper::TColumnSchema().SetName("ui64_type").SetType(NScheme::NTypeIds::Uint64).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -8302,8 +8302,8 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false), }; TTestHelper::TColumnTable testTable; @@ -8382,8 +8382,8 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("dec").SetTypeInfo(NScheme::NTypeIds::Decimal).SetNullable(false), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false), }; TTestHelper::TColumnTable testTable; @@ -8412,9 +8412,9 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("timestamp").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false), - TTestHelper::TColumnSchema().SetName("timestamp_max").SetTypeInfo(NScheme::NTypeIds::Timestamp).SetNullable(false) + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("timestamp").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false), + TTestHelper::TColumnSchema().SetName("timestamp_max").SetType(NScheme::NTypeIds::Timestamp).SetNullable(false) }; TTestHelper::TColumnTable testTable; @@ -8471,9 +8471,9 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) { TTestHelper testHelper(runnerSettings); TVector schema = { - TTestHelper::TColumnSchema().SetName("id").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("json").SetTypeInfo(NScheme::NTypeIds::Json).SetNullable(true), - TTestHelper::TColumnSchema().SetName("json_doc").SetTypeInfo(NScheme::NTypeIds::JsonDocument).SetNullable(true), + TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("json").SetType(NScheme::NTypeIds::Json).SetNullable(true), + TTestHelper::TColumnSchema().SetName("json_doc").SetType(NScheme::NTypeIds::JsonDocument).SetNullable(true), }; TTestHelper::TColumnTable testTable; diff --git a/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp b/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp index e216410f4689..0af07b0f5a2c 100644 --- a/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp +++ b/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp @@ -1010,8 +1010,8 @@ Y_UNIT_TEST_SUITE(KqpQueryService) { Y_UNIT_TEST(DdlColumnTable) { const TVector schema = { - TTestHelper::TColumnSchema().SetName("Key").SetTypeInfo(NScheme::NTypeIds::Uint64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("Value").SetTypeInfo(NScheme::NTypeIds::String) + TTestHelper::TColumnSchema().SetName("Key").SetType(NScheme::NTypeIds::Uint64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("Value").SetType(NScheme::NTypeIds::String) }; NKikimrConfig::TAppConfig appConfig; @@ -3240,8 +3240,8 @@ Y_UNIT_TEST_SUITE(KqpQueryService) { Tests::NCommon::TLoggerInit(kikimr).Initialize(); TVector schema = { - TTestHelper::TColumnSchema().SetName("Col1").SetTypeInfo(NScheme::NTypeIds::Int64).SetNullable(false), - TTestHelper::TColumnSchema().SetName("Col2").SetTypeInfo(NScheme::NTypeIds::Int32).SetNullable(false), + TTestHelper::TColumnSchema().SetName("Col1").SetType(NScheme::NTypeIds::Int64).SetNullable(false), + TTestHelper::TColumnSchema().SetName("Col2").SetType(NScheme::NTypeIds::Int32).SetNullable(false), }; TTestHelper::TColumnTable testTable1;