Skip to content

Commit bfdb873

Browse files
committed
allow pg type info without type desc in local db redo logic KIKIMR-19144
1 parent 8789983 commit bfdb873

11 files changed

+37
-52
lines changed

ydb/core/scheme_types/scheme_raw_type_value.h

+1-14
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,7 @@ class TRawTypeValue
2727

2828
TRawTypeValue(TArrayRef<const char> ref, NScheme::TTypeInfo vtype)
2929
: TRawTypeValue((void*)ref.data(), ref.size(), vtype)
30-
{
31-
}
32-
33-
TRawTypeValue(const void* buf, ui32 bufSize, NScheme::TTypeId typeId)
34-
: TRawTypeValue(buf, bufSize, NScheme::TTypeInfo(typeId))
35-
{
36-
}
37-
38-
TRawTypeValue(TArrayRef<const char> ref, NScheme::TTypeId typeId)
39-
: TRawTypeValue((void*)ref.data(), ref.size(), NScheme::TTypeInfo(typeId))
40-
{
41-
}
30+
{}
4231

4332
const void* Data() const { return Buffer; }
4433
ui32 Size() const { return BufferSize; }
@@ -52,8 +41,6 @@ class TRawTypeValue
5241

5342
TString ToString() const {
5443
TStringBuilder builder;
55-
// TODO: support pg types
56-
Y_ENSURE(ValueType.GetTypeId() != NScheme::NTypeIds::Pg);
5744
builder << "(type:" << ValueType.GetTypeId();
5845
if (!IsEmpty()) {
5946
builder << ", value:" << TString((const char*)Buffer, BufferSize).Quote();

ydb/core/scheme_types/scheme_type_info.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ class TTypeInfo {
1313
: TypeId(typeId)
1414
, TypeDesc(typeDesc)
1515
{
16-
if (TypeId == NTypeIds::Pg) {
17-
Y_VERIFY(TypeDesc);
18-
} else {
16+
if (TypeId != NTypeIds::Pg) {
1917
Y_VERIFY(!TypeDesc);
2018
}
2119
}

ydb/core/tablet_flat/flat_cxx_database.h

+18-18
Original file line numberDiff line numberDiff line change
@@ -24,64 +24,64 @@ class TTypeValue : public TRawTypeValue {
2424
{}
2525

2626
TTypeValue(const ui64& value, NScheme::TTypeId type = NScheme::NTypeIds::Uint64)
27-
: TRawTypeValue(&value, sizeof(value), type)
27+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
2828
{}
2929

3030
TTypeValue(const i64& value, NScheme::TTypeId type = NScheme::NTypeIds::Int64)
31-
: TRawTypeValue(&value, sizeof(value), type)
31+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
3232
{}
3333

3434
TTypeValue(const ui32& value, NScheme::TTypeId type = NScheme::NTypeIds::Uint32)
35-
: TRawTypeValue(&value, sizeof(value), type)
35+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
3636
{}
3737

3838
TTypeValue(const i32& value, NScheme::TTypeId type = NScheme::NTypeIds::Int32)
39-
: TRawTypeValue(&value, sizeof(value), type)
39+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
4040
{}
4141

4242
TTypeValue(const ui16& value, NScheme::TTypeId type = NScheme::NTypeIds::Date)
43-
: TRawTypeValue(&value, sizeof(value), type)
43+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
4444
{}
4545

4646
TTypeValue(const ui8& value, NScheme::TTypeId type = NScheme::NTypeIds::Byte)
47-
: TRawTypeValue(&value, sizeof(value), type)
47+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
4848
{}
4949

5050
TTypeValue(const bool& value, NScheme::TTypeId type = NScheme::NTypeIds::Bool)
51-
: TRawTypeValue(&value, sizeof(value), type)
51+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
5252
{}
5353

5454
TTypeValue(const double& value, NScheme::TTypeId type = NScheme::NTypeIds::Double)
55-
: TRawTypeValue(&value, sizeof(value), type)
55+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
5656
{}
5757

5858
template <typename ElementType>
5959
TTypeValue(const TVector<ElementType> &value, NScheme::TTypeId type = NScheme::NTypeIds::String)
60-
: TRawTypeValue(value.empty() ? (const ElementType*)0xDEADBEEFDEADBEEF : value.data(), value.size() * sizeof(ElementType), type)
60+
: TRawTypeValue(value.empty() ? (const ElementType*)0xDEADBEEFDEADBEEF : value.data(), value.size() * sizeof(ElementType), NScheme::TTypeInfo(type))
6161
{}
6262

6363
TTypeValue(const TActorId& value, NScheme::TTypeId type = NScheme::NTypeIds::ActorId)
64-
: TRawTypeValue(&value, sizeof(value), type)
64+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
6565
{}
6666

6767
TTypeValue(const std::pair<ui64, ui64>& value, NScheme::TTypeId type = NScheme::NTypeIds::PairUi64Ui64)
68-
: TRawTypeValue(&value, sizeof(value), type)
68+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
6969
{}
7070

7171
TTypeValue(const std::pair<ui64, i64>& value, NScheme::TTypeId type = NScheme::NTypeIds::Decimal)
72-
: TRawTypeValue(&value, sizeof(value), type)
72+
: TRawTypeValue(&value, sizeof(value), NScheme::TTypeInfo(type))
7373
{}
7474

7575
TTypeValue(const TString& value, NScheme::TTypeId type = NScheme::NTypeIds::Utf8)
76-
: TRawTypeValue(value.data(), value.size(), type)
76+
: TRawTypeValue(value.data(), value.size(), NScheme::TTypeInfo(type))
7777
{}
7878

7979
TTypeValue(const TBuffer& value, NScheme::TTypeId type = NScheme::NTypeIds::String)
80-
: TRawTypeValue(value.Empty() ? (const char*)0xDEADBEEFDEADBEEF : value.Data(), value.Size(), type)
80+
: TRawTypeValue(value.Empty() ? (const char*)0xDEADBEEFDEADBEEF : value.Data(), value.Size(), NScheme::TTypeInfo(type))
8181
{}
8282

8383
TTypeValue(const TStringBuf& value, NScheme::TTypeId type = NScheme::NTypeIds::String)
84-
: TRawTypeValue(value.empty() ? (const char*)0xDEADBEEFDEADBEEF : value.data(), value.size(), type)
84+
: TRawTypeValue(value.empty() ? (const char*)0xDEADBEEFDEADBEEF : value.data(), value.size(), NScheme::TTypeInfo(type))
8585
{}
8686

8787
explicit TTypeValue(const TRawTypeValue& rawTypeValue)
@@ -235,7 +235,7 @@ template <NScheme::TTypeId ValType>
235235
class TConvertTypeValue : public TRawTypeValue {
236236
public:
237237
TConvertTypeValue(const TRawTypeValue& value)
238-
: TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? 0 : ValType)
238+
: TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? NScheme::TTypeInfo(0) : NScheme::TTypeInfo(ValType))
239239
{}
240240

241241
template <typename ValueType> static typename NSchemeTypeMapper<ValType>::Type ConvertFrom(ValueType value) {
@@ -248,7 +248,7 @@ template <>
248248
class TConvertTypeValue<NScheme::NTypeIds::String> : public TRawTypeValue {
249249
public:
250250
TConvertTypeValue(const TRawTypeValue& value)
251-
: TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? 0 : NScheme::NTypeIds::String)
251+
: TRawTypeValue(value.Data(), value.Size(), value.IsEmpty() ? NScheme::TTypeInfo(0) : NScheme::TTypeInfo(NScheme::NTypeIds::String))
252252
{}
253253

254254
static typename NSchemeTypeMapper<NScheme::NTypeIds::String>::Type ConvertFrom(const TString& value) {
@@ -505,7 +505,7 @@ struct TConvertValue<TColumnType, TRawTypeValue, TStringBuf> {
505505
TRawTypeValue Value;
506506

507507
TConvertValue(TStringBuf value)
508-
: Value(value.data(), value.size(), TColumnType::ColumnType)
508+
: Value(value.data(), value.size(), NScheme::TTypeInfo(TColumnType::ColumnType))
509509
{
510510
static_assert(TColumnType::ColumnType == NScheme::NTypeIds::String
511511
|| TColumnType::ColumnType == NScheme::NTypeIds::Utf8,

ydb/core/tablet_flat/flat_database.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ void TDatabase::Update(ui32 table, ERowOp rop, TRawVals key, TArrayRef<const TUp
308308
if (auto got = annex->Place(table, op.Tag, raw)) {
309309
ModifiedRefs[index] = got.Ref;
310310
const auto payload = NUtil::NBin::ToRef(ModifiedRefs[index]);
311-
op.Value = TRawTypeValue(payload, op.Value.Type());
311+
op.Value = TRawTypeValue(payload, NScheme::TTypeInfo(op.Value.Type()));
312312
op.Op = ELargeObj::Extern;
313313
}
314314
}

ydb/core/tablet_flat/flat_executor_db_mon.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class TExecutor::TTxExecutorDbMon : public TTransactionBase<TExecutor> {
8686
vals.emplace_back();
8787
TBuffer& buf = vals.back();
8888
buf.Assign(reinterpret_cast<const char*>(&v), sizeof(v));
89-
key.emplace_back(buf.Data(), buf.Size(), type);
89+
key.emplace_back(buf.Data(), buf.Size(), NScheme::TTypeInfo(type));
9090
break;
9191
}
9292
case NScheme::NTypeIds::Uint64:
@@ -95,7 +95,7 @@ class TExecutor::TTxExecutorDbMon : public TTransactionBase<TExecutor> {
9595
vals.emplace_back();
9696
TBuffer& buf = vals.back();
9797
buf.Assign(reinterpret_cast<const char*>(&v), sizeof(v));
98-
key.emplace_back(buf.Data(), buf.Size(), type);
98+
key.emplace_back(buf.Data(), buf.Size(), NScheme::TTypeInfo(type));
9999
break;
100100
}
101101
case NScheme::NTypeIds::String:
@@ -104,7 +104,7 @@ class TExecutor::TTxExecutorDbMon : public TTransactionBase<TExecutor> {
104104
vals.emplace_back();
105105
TBuffer& buf = vals.back();
106106
buf.Assign(val.data(), val.size());
107-
key.emplace_back(buf.Data(), buf.Size(), type);
107+
key.emplace_back(buf.Data(), buf.Size(), NScheme::TTypeInfo(type));
108108
break;
109109
}
110110
default:

ydb/core/tablet_flat/flat_executor_ut.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ Y_UNIT_TEST_SUITE(TFlatTableReschedule) {
665665
TVector<NTable::TTag> tags;
666666
tags.push_back(TRowsModel::ColumnValueId);
667667
TVector<TRawTypeValue> key;
668-
key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId);
668+
key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId));
669669
NTable::TRowState row;
670670
auto ready = txc.DB.Select(TRowsModel::TableId, key, tags, row);
671671
if (ready == NTable::EReady::Page) {
@@ -1317,7 +1317,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorResourceProfile) {
13171317
if (!req.Keys.empty()) {
13181318
for (auto val : req.Keys) {
13191319
ui64 key1 = val;
1320-
TRawTypeValue key[] = {TRawTypeValue(&key1, sizeof(key1), NScheme::NTypeIds::Int64)};
1320+
TRawTypeValue key[] = {TRawTypeValue(&key1, sizeof(key1), NScheme::TTypeInfo(NScheme::NTypeIds::Int64))};
13211321
NTable::TTag tags[] = {TRowsModel::ColumnKeyId};
13221322
NTable::TRowState row;
13231323
txc.DB.Select(TRowsModel::TableId, {key, 1}, {tags, 1}, row);
@@ -2128,7 +2128,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorCompressedSelectRows) {
21282128
TVector<NTable::TTag> tags;
21292129
tags.push_back(TRowsModel::ColumnValueId);
21302130
TVector<TRawTypeValue> key;
2131-
key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId);
2131+
key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId));
21322132

21332133
for (keyId = 1000000; keyId < 1000512; ++keyId) {
21342134
NTable::TRowState row;
@@ -2776,7 +2776,7 @@ Y_UNIT_TEST_SUITE(TFlatTableExecutorKeepEraseMarkers) {
27762776
TVector<NTable::TTag> tags;
27772777
tags.push_back(TRowsModel::ColumnValueId);
27782778
TVector<TRawTypeValue> key;
2779-
key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId);
2779+
key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId));
27802780

27812781
for (keyId = 100; keyId <= 400; keyId += 100) {
27822782
NTable::TRowState row;
@@ -5012,7 +5012,7 @@ Y_UNIT_TEST_SUITE(TFlatTableSnapshotWithCommits) {
50125012
TVector<NTable::TTag> tags;
50135013
tags.push_back(TRowsModel::ColumnValueId);
50145014
TVector<TRawTypeValue> key;
5015-
key.emplace_back(&keyId, sizeof(keyId), NScheme::TInt64::TypeId);
5015+
key.emplace_back(&keyId, sizeof(keyId), NScheme::TTypeInfo(NScheme::TInt64::TypeId));
50165016

50175017
for (keyId = 1; keyId <= 104; ++keyId) {
50185018
NTable::TRowState row;

ydb/core/tablet_flat/flat_redo_player.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ namespace NRedo {
263263
Y_VERIFY(maxSz >= sizeof(TValue), "Buffer to small");
264264
const TValue* vp = (const TValue*)buf;
265265
Y_VERIFY(maxSz >= sizeof(TValue) + vp->Size, "Value size execeeds the buffer size");
266-
val = vp->IsNull() ? TRawTypeValue() : TRawTypeValue(vp + 1, vp->Size, vp->TypeId);
266+
val = vp->IsNull() ? TRawTypeValue() : TRawTypeValue(vp + 1, vp->Size, NScheme::TTypeInfo(vp->TypeId));
267267
return sizeof(TValue) + vp->Size;
268268
}
269269

@@ -286,7 +286,7 @@ namespace NRedo {
286286
const TUpdate* up = (const TUpdate*)buf;
287287
Y_VERIFY(maxSz >= sizeof(TUpdate) + up->Val.Size, "Value size execeeds the buffer size");
288288
bool null = TCellOp::HaveNoPayload(up->CellOp) || up->Val.IsNull();
289-
uo = TUpdateOp(up->Tag, up->CellOp, null ? TRawTypeValue() : TRawTypeValue(up + 1, up->Val.Size, up->Val.TypeId));
289+
uo = TUpdateOp(up->Tag, up->CellOp, null ? TRawTypeValue() : TRawTypeValue(up + 1, up->Val.Size, NScheme::TTypeInfo(up->Val.TypeId)));
290290

291291
Y_VERIFY(up->CellOp == ELargeObj::Inline || (up->CellOp == ELargeObj::Extern && up->Val.Size == sizeof(ui32)));
292292

ydb/core/tablet_flat/test/libs/rows/rows.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ namespace NTest {
5353

5454
TRawTypeValue Raw() const
5555
{
56-
return { Cell.Data(), Cell.Size(), Type };
56+
return { Cell.Data(), Cell.Size(), NScheme::TTypeInfo(Type) };
5757
}
5858

5959
NTable::TTag Tag = Max<TTag>();

ydb/core/tablet_flat/test/libs/rows/tool.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ namespace NTest {
6666
for (auto &value: *tagged) {
6767
auto * const info = ColFor(value);
6868

69-
TRawTypeValue raw(value.Cell.AsRef(), value.Type);
69+
TRawTypeValue raw(value.Cell.AsRef(), NScheme::TTypeInfo(value.Type));
7070

7171
if (info->IsKey()) {
7272
Y_VERIFY(value.Op == ECellOp::Set || value.Op == ECellOp::Null);

ydb/core/tablet_flat/ut/flat_test_db_helpers.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct TFakeTableCell {
3333
void Set(const TRawTypeValue& v) {
3434
if (!v.IsEmpty()) {
3535
Buf = TString((const char*)v.Data(), v.Size());
36-
Val = TRawTypeValue(Buf.data(), Buf.size(), v.Type());
36+
Val = TRawTypeValue(Buf.data(), Buf.size(), v.TypeInfo());
3737
} else {
3838
Val = TRawTypeValue();
3939
}
@@ -72,7 +72,7 @@ inline TFakeTableCell FromVal(NScheme::TTypeId t, i64 val) {
7272
break;
7373
}
7474

75-
c.Set(TRawTypeValue(&val, sz, t));
75+
c.Set(TRawTypeValue(&val, sz, NScheme::TTypeInfo(t)));
7676
return c;
7777
}
7878

@@ -88,7 +88,7 @@ inline TFakeTableCell FromVal(NScheme::TTypeId, std::nullptr_t) {
8888

8989
inline TFakeTableCell FromVal(NScheme::TTypeId t, TString val) {
9090
TFakeTableCell c;
91-
c.Set(TRawTypeValue(val.data(), val.size(), t));
91+
c.Set(TRawTypeValue(val.data(), val.size(), NScheme::TTypeInfo(t)));
9292
return c;
9393
}
9494

ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ struct TTxReadRow : public ITransaction {
6868

6969
bool Execute(TTransactionContext& txc, const TActorContext&) override {
7070
TVector<TRawTypeValue> rawKey;
71-
rawKey.emplace_back(&Key, sizeof(Key), NScheme::TInt64::TypeId);
71+
rawKey.emplace_back(&Key, sizeof(Key), NScheme::TTypeInfo(NScheme::TInt64::TypeId));
7272

7373
TVector<NTable::TTag> tags;
7474
tags.push_back(KeyColumnId);

0 commit comments

Comments
 (0)