Skip to content

Commit 6991785

Browse files
committed
Use Decimal(22, 9) as Primary Key in Olap (#4716) (cherry-pick from ccdedf8)
1 parent 3a5da67 commit 6991785

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

ydb/core/formats/arrow/converter.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ static bool ConvertData(TCell& cell, const NScheme::TTypeInfo& colType, TMemoryP
3939
cell = TCell(saved.data(), saved.size());
4040
break;
4141
}
42-
case NScheme::NTypeIds::Decimal:
43-
errorMessage = "Decimal conversion is not supported yet";
44-
return false;
4542
default:
4643
break;
4744
}

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5881,7 +5881,7 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) {
58815881
};
58825882

58835883
TTestHelper::TColumnTable testTable;
5884-
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema);
5884+
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id", "dec"}).SetSharding({"id", "dec"}).SetSchema(schema);
58855885
testHelper.CreateTable(testTable);
58865886

58875887
{
@@ -5907,6 +5907,30 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) {
59075907
.AddMember("id").Int64(5)
59085908
.AddMember("dec").Decimal(TString("-nan"))
59095909
.EndStruct();
5910+
builder.AddListItem().BeginStruct()
5911+
.AddMember("id").Int64(6)
5912+
.AddMember("dec").Decimal(TString("1.1"))
5913+
.EndStruct();
5914+
builder.AddListItem().BeginStruct()
5915+
.AddMember("id").Int64(7)
5916+
.AddMember("dec").Decimal(TString("12.1"))
5917+
.EndStruct();
5918+
builder.AddListItem().BeginStruct()
5919+
.AddMember("id").Int64(8)
5920+
.AddMember("dec").Decimal(TString("inf"))
5921+
.EndStruct();
5922+
builder.AddListItem().BeginStruct()
5923+
.AddMember("id").Int64(9)
5924+
.AddMember("dec").Decimal(TString("-inf"))
5925+
.EndStruct();
5926+
builder.AddListItem().BeginStruct()
5927+
.AddMember("id").Int64(10)
5928+
.AddMember("dec").Decimal(TString("2.1"))
5929+
.EndStruct();
5930+
builder.AddListItem().BeginStruct()
5931+
.AddMember("id").Int64(11)
5932+
.AddMember("dec").Decimal(TString("15.1"))
5933+
.EndStruct();
59105934
builder.EndList();
59115935
const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), builder.Build()).GetValueSync();
59125936
UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString());
@@ -5916,6 +5940,13 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) {
59165940
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=3", "[[\"-inf\"]]");
59175941
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=4", "[[\"nan\"]]");
59185942
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=5", "[[\"-nan\"]]");
5943+
testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"10.1\" As Decimal(22,9))", "[[1]]");
5944+
testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"inf\" As Decimal(22,9)) ORDER BY id", "[[2];[8]]");
5945+
testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"-inf\" As Decimal(22,9)) ORDER BY id", "[[3];[9]]");
5946+
// Nan cannot by find.
5947+
testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"nan\" As Decimal(22,9))", "[]");
5948+
testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"-nan\" As Decimal(22,9))", "[]");
5949+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id > 5 ORDER BY dec", "[[\"-inf\"];[\"1.1\"];[\"2.1\"];[\"12.1\"];[\"15.1\"];[\"inf\"]]");
59195950
}
59205951

59215952
Y_UNIT_TEST(TimestampCmpErr) {

ydb/core/tx/columnshard/transactions/operators/schema.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ namespace NKikimr::NColumnShard {
110110
//NTypeIds::Float,
111111
//NTypeIds::Double,
112112
NTypeIds::String,
113-
NTypeIds::Utf8
113+
NTypeIds::Utf8,
114+
NTypeIds::Decimal
114115
};
115116

116117
if (!schema.HasEngine() ||

ydb/core/tx/schemeshard/olap/columns/update.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ namespace NKikimr::NSchemeShard {
151151
case NYql::NProto::Date:
152152
case NYql::NProto::Datetime:
153153
case NYql::NProto::Timestamp:
154+
case NYql::NProto::Decimal:
154155
return true;
155156
case NYql::NProto::Interval:
156-
case NYql::NProto::Decimal:
157157
case NYql::NProto::DyNumber:
158158
case NYql::NProto::Yson:
159159
case NYql::NProto::Json:

0 commit comments

Comments
 (0)