aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormonster <monster@ydb.tech>2023-08-28 11:49:46 +0300
committermonster <monster@ydb.tech>2023-08-28 12:13:12 +0300
commitbfdb8734c1c53000f3c653c2c9218c3cca1f952e (patch)
tree1a56a681119bf074aa22172d6795586feadcabdf
parent8789983bf63ecc98f1aeff067b25a8785b15f9f7 (diff)
downloadydb-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.h15
-rw-r--r--ydb/core/scheme_types/scheme_type_info.h4
-rw-r--r--ydb/core/tablet_flat/flat_cxx_database.h36
-rw-r--r--ydb/core/tablet_flat/flat_database.cpp2
-rw-r--r--ydb/core/tablet_flat/flat_executor_db_mon.cpp6
-rw-r--r--ydb/core/tablet_flat/flat_executor_ut.cpp10
-rw-r--r--ydb/core/tablet_flat/flat_redo_player.h4
-rw-r--r--ydb/core/tablet_flat/test/libs/rows/rows.h2
-rw-r--r--ydb/core/tablet_flat/test/libs/rows/tool.h2
-rw-r--r--ydb/core/tablet_flat/ut/flat_test_db_helpers.h6
-rw-r--r--ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp2
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);