diff options
author | monster <monster@ydb.tech> | 2023-08-28 11:49:46 +0300 |
---|---|---|
committer | monster <monster@ydb.tech> | 2023-08-28 12:13:12 +0300 |
commit | bfdb8734c1c53000f3c653c2c9218c3cca1f952e (patch) | |
tree | 1a56a681119bf074aa22172d6795586feadcabdf | |
parent | 8789983bf63ecc98f1aeff067b25a8785b15f9f7 (diff) | |
download | ydb-bfdb8734c1c53000f3c653c2c9218c3cca1f952e.tar.gz |
allow pg type info without type desc in local db redo logic KIKIMR-19144
-rw-r--r-- | ydb/core/scheme_types/scheme_raw_type_value.h | 15 | ||||
-rw-r--r-- | ydb/core/scheme_types/scheme_type_info.h | 4 | ||||
-rw-r--r-- | ydb/core/tablet_flat/flat_cxx_database.h | 36 | ||||
-rw-r--r-- | ydb/core/tablet_flat/flat_database.cpp | 2 | ||||
-rw-r--r-- | ydb/core/tablet_flat/flat_executor_db_mon.cpp | 6 | ||||
-rw-r--r-- | ydb/core/tablet_flat/flat_executor_ut.cpp | 10 | ||||
-rw-r--r-- | ydb/core/tablet_flat/flat_redo_player.h | 4 | ||||
-rw-r--r-- | ydb/core/tablet_flat/test/libs/rows/rows.h | 2 | ||||
-rw-r--r-- | ydb/core/tablet_flat/test/libs/rows/tool.h | 2 | ||||
-rw-r--r-- | ydb/core/tablet_flat/ut/flat_test_db_helpers.h | 6 | ||||
-rw-r--r-- | ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp | 2 |
11 files changed, 37 insertions, 52 deletions
diff --git a/ydb/core/scheme_types/scheme_raw_type_value.h b/ydb/core/scheme_types/scheme_raw_type_value.h index 04b1d1f667..bfab9eae71 100644 --- a/ydb/core/scheme_types/scheme_raw_type_value.h +++ b/ydb/core/scheme_types/scheme_raw_type_value.h @@ -27,18 +27,7 @@ public: TRawTypeValue(TArrayRef<const char> ref, NScheme::TTypeInfo vtype) : TRawTypeValue((void*)ref.data(), ref.size(), vtype) - { - } - - TRawTypeValue(const void* buf, ui32 bufSize, NScheme::TTypeId typeId) - : TRawTypeValue(buf, bufSize, NScheme::TTypeInfo(typeId)) - { - } - - TRawTypeValue(TArrayRef<const char> ref, NScheme::TTypeId typeId) - : TRawTypeValue((void*)ref.data(), ref.size(), NScheme::TTypeInfo(typeId)) - { - } + {} const void* Data() const { return Buffer; } ui32 Size() const { return BufferSize; } @@ -52,8 +41,6 @@ public: TString ToString() const { TStringBuilder builder; - // TODO: support pg types - Y_ENSURE(ValueType.GetTypeId() != NScheme::NTypeIds::Pg); builder << "(type:" << ValueType.GetTypeId(); if (!IsEmpty()) { builder << ", value:" << TString((const char*)Buffer, BufferSize).Quote(); diff --git a/ydb/core/scheme_types/scheme_type_info.h b/ydb/core/scheme_types/scheme_type_info.h index 86e8b1cedd..7c81c863ab 100644 --- a/ydb/core/scheme_types/scheme_type_info.h +++ b/ydb/core/scheme_types/scheme_type_info.h @@ -13,9 +13,7 @@ public: : TypeId(typeId) , TypeDesc(typeDesc) { - if (TypeId == NTypeIds::Pg) { - Y_VERIFY(TypeDesc); - } else { + if (TypeId != NTypeIds::Pg) { Y_VERIFY(!TypeDesc); } } diff --git a/ydb/core/tablet_flat/flat_cxx_database.h b/ydb/core/tablet_flat/flat_cxx_database.h index 2d06c684a5..f3127438d5 100644 --- a/ydb/core/tablet_flat/flat_cxx_database.h +++ b/ydb/core/tablet_flat/flat_cxx_database.h @@ -24,64 +24,64 @@ public: {} TTypeValue(const ui64& value, NScheme::TTypeId type = NScheme::NTypeIds::Uint64) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const i64& value, NScheme::TTypeId type = NScheme::NTypeIds::Int64) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const ui32& value, NScheme::TTypeId type = NScheme::NTypeIds::Uint32) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const i32& value, NScheme::TTypeId type = NScheme::NTypeIds::Int32) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const ui16& value, NScheme::TTypeId type = NScheme::NTypeIds::Date) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const ui8& value, NScheme::TTypeId type = NScheme::NTypeIds::Byte) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const bool& value, NScheme::TTypeId type = NScheme::NTypeIds::Bool) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const double& value, NScheme::TTypeId type = NScheme::NTypeIds::Double) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} template <typename ElementType> TTypeValue(const TVector<ElementType> &value, NScheme::TTypeId type = NScheme::NTypeIds::String) - : TRawTypeValue(value.empty() ? (const ElementType*)0xDEADBEEFDEADBEEF : value.data(), value.size() * sizeof(ElementType), type) + : TRawTypeValue(value.empty() ? (const ElementType*)0xDEADBEEFDEADBEEF : value.data(), value.size() * sizeof(ElementType), NScheme::TTypeInfo(type)) {} TTypeValue(const TActorId& value, NScheme::TTypeId type = NScheme::NTypeIds::ActorId) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const std::pair<ui64, ui64>& value, NScheme::TTypeId type = NScheme::NTypeIds::PairUi64Ui64) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const std::pair<ui64, i64>& value, NScheme::TTypeId type = NScheme::NTypeIds::Decimal) - : TRawTypeValue(&value, sizeof(value), type) + : TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type)) {} TTypeValue(const TString& value, NScheme::TTypeId type = NScheme::NTypeIds::Utf8) - : TRawTypeValue(value.data(), value.size(), type) + : TRawTypeValue(value.data(), value.size(), NScheme::TTypeInfo(type)) {} TTypeValue(const TBuffer& value, NScheme::TTypeId type = NScheme::NTypeIds::String) - : TRawTypeValue(value.Empty() ? (const char*)0xDEADBEEFDEADBEEF : value.Data(), value.Size(), type) + : TRawTypeValue(value.Empty() ? (const char*)0xDEADBEEFDEADBEEF : value.Data(), value.Size(), NScheme::TTypeInfo(type)) {} TTypeValue(const TStringBuf& value, NScheme::TTypeId type = NScheme::NTypeIds::String) - : TRawTypeValue(value.empty() ? (const char*)0xDEADBEEFDEADBEEF : value.data(), value.size(), type) + : TRawTypeValue(value.empty() ? (const char*)0xDEADBEEFDEADBEEF : value.data(), value.size(), NScheme::TTypeInfo(type)) {} explicit TTypeValue(const TRawTypeValue& rawTypeValue) @@ -235,7 +235,7 @@ template <NScheme::TTypeId ValType> class TConvertTypeValue : public TRawTypeValue { public: TConvertTypeValue(const TRawTypeValue& value) - : TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? 0 : ValType) + : TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? NScheme::TTypeInfo(0) : NScheme::TTypeInfo(ValType)) {} template <typename ValueType> static typename NSchemeTypeMapper<ValType>::Type ConvertFrom(ValueType value) { @@ -248,7 +248,7 @@ template <> class TConvertTypeValue<NScheme::NTypeIds::String> : public TRawTypeValue { public: TConvertTypeValue(const TRawTypeValue& value) - : TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? 0 : NScheme::NTypeIds::String) + : TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? NScheme::TTypeInfo(0) : NScheme::TTypeInfo(NScheme::NTypeIds::String)) {} static typename NSchemeTypeMapper<NScheme::NTypeIds::String>::Type ConvertFrom(const TString& value) { @@ -505,7 +505,7 @@ struct TConvertValue<TColumnType, TRawTypeValue, TStringBuf> { TRawTypeValue Value; TConvertValue(TStringBuf value) - : Value(value.data(), value.size(), TColumnType::ColumnType) + : Value(value.data(), value.size(), NScheme::TTypeInfo(TColumnType::ColumnType)) { static_assert(TColumnType::ColumnType == NScheme::NTypeIds::String || TColumnType::ColumnType == NScheme::NTypeIds::Utf8, diff --git a/ydb/core/tablet_flat/flat_database.cpp b/ydb/core/tablet_flat/flat_database.cpp index 585b8617d1..cb460c2a5b 100644 --- a/ydb/core/tablet_flat/flat_database.cpp +++ b/ydb/core/tablet_flat/flat_database.cpp @@ -308,7 +308,7 @@ void TDatabase::Update(ui32 table, ERowOp rop, TRawVals key, TArrayRef<const TUp if (auto got = annex->Place(table, op.Tag, raw)) { ModifiedRefs[index] = got.Ref; const auto payload = NUtil::NBin::ToRef(ModifiedRefs[index]); - op.Value = TRawTypeValue(payload, op.Value.Type()); + op.Value = TRawTypeValue(payload, NScheme::TTypeInfo(op.Value.Type())); op.Op = ELargeObj::Extern; } } diff --git a/ydb/core/tablet_flat/flat_executor_db_mon.cpp b/ydb/core/tablet_flat/flat_executor_db_mon.cpp index 50b8e7c32f..4f779591d4 100644 --- a/ydb/core/tablet_flat/flat_executor_db_mon.cpp +++ b/ydb/core/tablet_flat/flat_executor_db_mon.cpp @@ -86,7 +86,7 @@ public: vals.emplace_back(); TBuffer& buf = vals.back(); buf.Assign(reinterpret_cast<const char*>(&v), sizeof(v)); - key.emplace_back(buf.Data(), buf.Size(), type); + key.emplace_back(buf.Data(), buf.Size(), NScheme::TTypeInfo(type)); break; } case NScheme::NTypeIds::Uint64: @@ -95,7 +95,7 @@ public: vals.emplace_back(); TBuffer& buf = vals.back(); buf.Assign(reinterpret_cast<const char*>(&v), sizeof(v)); - key.emplace_back(buf.Data(), buf.Size(), type); + key.emplace_back(buf.Data(), buf.Size(), NScheme::TTypeInfo(type)); break; } case NScheme::NTypeIds::String: @@ -104,7 +104,7 @@ public: vals.emplace_back(); TBuffer& buf = vals.back(); buf.Assign(val.data(), val.size()); - key.emplace_back(buf.Data(), buf.Size(), type); + key.emplace_back(buf.Data(), buf.Size(), NScheme::TTypeInfo(type)); break; } default: diff --git a/ydb/core/tablet_flat/flat_executor_ut.cpp b/ydb/core/tablet_flat/flat_executor_ut.cpp index 4154c87d36..3506dd29ba 100644 --- a/ydb/core/tablet_flat/flat_executor_ut.cpp +++ b/ydb/core/tablet_flat/flat_executor_ut.cpp @@ -665,7 +665,7 @@ Y_UNIT_TEST_SUITE(TFlatTableReschedule) { TVector<NTable::TTag> tags; tags.push_back(TRowsModel::ColumnValueId); TVector<TRawTypeValue> key; - key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId); + key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId)); NTable::TRowState row; auto ready = txc.DB.Select(TRowsModel::TableId, key, tags, row); if (ready == NTable::EReady::Page) { @@ -1317,7 +1317,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorResourceProfile) { if (!req.Keys.empty()) { for (auto val : req.Keys) { ui64 key1 = val; - TRawTypeValue key[] = {TRawTypeValue(&key1, sizeof(key1), NScheme::NTypeIds::Int64)}; + TRawTypeValue key[] = {TRawTypeValue(&key1, sizeof(key1), NScheme::TTypeInfo(NScheme::NTypeIds::Int64))}; NTable::TTag tags[] = {TRowsModel::ColumnKeyId}; NTable::TRowState row; txc.DB.Select(TRowsModel::TableId, {key, 1}, {tags, 1}, row); @@ -2128,7 +2128,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorCompressedSelectRows) { TVector<NTable::TTag> tags; tags.push_back(TRowsModel::ColumnValueId); TVector<TRawTypeValue> key; - key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId); + key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId)); for (keyId = 1000000; keyId < 1000512; ++keyId) { NTable::TRowState row; @@ -2776,7 +2776,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorKeepEraseMarkers) { TVector<NTable::TTag> tags; tags.push_back(TRowsModel::ColumnValueId); TVector<TRawTypeValue> key; - key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId); + key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId)); for (keyId = 100; keyId <= 400; keyId += 100) { NTable::TRowState row; @@ -5012,7 +5012,7 @@ Y_UNIT_TEST_SUITE(TFlatTableSnapshotWithCommits) { TVector<NTable::TTag> tags; tags.push_back(TRowsModel::ColumnValueId); TVector<TRawTypeValue> key; - key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId); + key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId)); for (keyId = 1; keyId <= 104; ++keyId) { NTable::TRowState row; diff --git a/ydb/core/tablet_flat/flat_redo_player.h b/ydb/core/tablet_flat/flat_redo_player.h index 4662f972a7..16ced4c523 100644 --- a/ydb/core/tablet_flat/flat_redo_player.h +++ b/ydb/core/tablet_flat/flat_redo_player.h @@ -263,7 +263,7 @@ namespace NRedo { Y_VERIFY(maxSz >= sizeof(TValue), "Buffer to small"); const TValue* vp = (const TValue*)buf; Y_VERIFY(maxSz >= sizeof(TValue) + vp->Size, "Value size execeeds the buffer size"); - val = vp->IsNull() ? TRawTypeValue() : TRawTypeValue(vp + 1, vp->Size, vp->TypeId); + val = vp->IsNull() ? TRawTypeValue() : TRawTypeValue(vp + 1, vp->Size, NScheme::TTypeInfo(vp->TypeId)); return sizeof(TValue) + vp->Size; } @@ -286,7 +286,7 @@ namespace NRedo { const TUpdate* up = (const TUpdate*)buf; Y_VERIFY(maxSz >= sizeof(TUpdate) + up->Val.Size, "Value size execeeds the buffer size"); bool null = TCellOp::HaveNoPayload(up->CellOp) || up->Val.IsNull(); - uo = TUpdateOp(up->Tag, up->CellOp, null ? TRawTypeValue() : TRawTypeValue(up + 1, up->Val.Size, up->Val.TypeId)); + uo = TUpdateOp(up->Tag, up->CellOp, null ? TRawTypeValue() : TRawTypeValue(up + 1, up->Val.Size, NScheme::TTypeInfo(up->Val.TypeId))); Y_VERIFY(up->CellOp == ELargeObj::Inline || (up->CellOp == ELargeObj::Extern && up->Val.Size == sizeof(ui32))); diff --git a/ydb/core/tablet_flat/test/libs/rows/rows.h b/ydb/core/tablet_flat/test/libs/rows/rows.h index 8a16aa4c66..f30ee173b6 100644 --- a/ydb/core/tablet_flat/test/libs/rows/rows.h +++ b/ydb/core/tablet_flat/test/libs/rows/rows.h @@ -53,7 +53,7 @@ namespace NTest { TRawTypeValue Raw() const { - return { Cell.Data(), Cell.Size(), Type }; + return { Cell.Data(), Cell.Size(), NScheme::TTypeInfo(Type) }; } NTable::TTag Tag = Max<TTag>(); diff --git a/ydb/core/tablet_flat/test/libs/rows/tool.h b/ydb/core/tablet_flat/test/libs/rows/tool.h index ac746d3702..60eadeaef6 100644 --- a/ydb/core/tablet_flat/test/libs/rows/tool.h +++ b/ydb/core/tablet_flat/test/libs/rows/tool.h @@ -66,7 +66,7 @@ namespace NTest { for (auto &value: *tagged) { auto * const info = ColFor(value); - TRawTypeValue raw(value.Cell.AsRef(), value.Type); + TRawTypeValue raw(value.Cell.AsRef(), NScheme::TTypeInfo(value.Type)); if (info->IsKey()) { Y_VERIFY(value.Op == ECellOp::Set || value.Op == ECellOp::Null); diff --git a/ydb/core/tablet_flat/ut/flat_test_db_helpers.h b/ydb/core/tablet_flat/ut/flat_test_db_helpers.h index 7c8c87159b..e13669af32 100644 --- a/ydb/core/tablet_flat/ut/flat_test_db_helpers.h +++ b/ydb/core/tablet_flat/ut/flat_test_db_helpers.h @@ -33,7 +33,7 @@ public: void Set(const TRawTypeValue& v) { if (!v.IsEmpty()) { Buf = TString((const char*)v.Data(), v.Size()); - Val = TRawTypeValue(Buf.data(), Buf.size(), v.Type()); + Val = TRawTypeValue(Buf.data(), Buf.size(), v.TypeInfo()); } else { Val = TRawTypeValue(); } @@ -72,7 +72,7 @@ inline TFakeTableCell FromVal(NScheme::TTypeId t, i64 val) { break; } - c.Set(TRawTypeValue(&val, sz, t)); + c.Set(TRawTypeValue(&val, sz, NScheme::TTypeInfo(t))); return c; } @@ -88,7 +88,7 @@ inline TFakeTableCell FromVal(NScheme::TTypeId, std::nullptr_t) { inline TFakeTableCell FromVal(NScheme::TTypeId t, TString val) { TFakeTableCell c; - c.Set(TRawTypeValue(val.data(), val.size(), t)); + c.Set(TRawTypeValue(val.data(), val.size(), NScheme::TTypeInfo(t))); return c; } diff --git a/ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp b/ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp index e74d3cfd80..f06c5a4718 100644 --- a/ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp +++ b/ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp @@ -68,7 +68,7 @@ struct TTxReadRow : public ITransaction { bool Execute(TTransactionContext& txc, const TActorContext&) override { TVector<TRawTypeValue> rawKey; - rawKey.emplace_back(&Key, sizeof(Key), NScheme::TInt64::TypeId); + rawKey.emplace_back(&Key, sizeof(Key), NScheme::TTypeInfo(NScheme::TInt64::TypeId)); TVector<NTable::TTag> tags; tags.push_back(KeyColumnId); |