Skip to content

Commit 6d272ba

Browse files
authored
Decimal type in olap (#4701)
1 parent cc69385 commit 6d272ba

File tree

4 files changed

+63
-3
lines changed

4 files changed

+63
-3
lines changed

ydb/core/kqp/ut/common/columnshard.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,17 @@ namespace NKqp {
133133
TString TTestHelper::TColumnSchema::BuildQuery() const {
134134
TStringBuilder str;
135135
str << Name << ' ';
136-
if (NScheme::NTypeIds::Pg == Type) {
136+
switch (Type) {
137+
case NScheme::NTypeIds::Pg:
137138
str << NPg::PgTypeNameFromTypeDesc(TypeDesc);
138-
} else {
139+
break;
140+
case NScheme::NTypeIds::Decimal: {
141+
TTypeBuilder builder;
142+
builder.Decimal(TDecimalType(22, 9));
143+
str << builder.Build();
144+
break;
145+
}
146+
default:
139147
str << NScheme::GetTypeName(Type);
140148
}
141149
if (!NullableFlag) {

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

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6652,6 +6652,55 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) {
66526652
testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", TStringBuilder() << "[[1;" << ts.MicroSeconds() << "u;" << ts.MicroSeconds() << "u]]");
66536653
}
66546654

6655+
Y_UNIT_TEST(Decimal) {
6656+
TKikimrSettings runnerSettings;
6657+
runnerSettings.WithSampleTables = false;
6658+
6659+
TTestHelper testHelper(runnerSettings);
6660+
6661+
TVector<TTestHelper::TColumnSchema> schema = {
6662+
TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false),
6663+
TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false),
6664+
};
6665+
6666+
TTestHelper::TColumnTable testTable;
6667+
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema);
6668+
testHelper.CreateTable(testTable);
6669+
6670+
{
6671+
TValueBuilder builder;
6672+
builder.BeginList();
6673+
builder.AddListItem().BeginStruct()
6674+
.AddMember("id").Int64(1)
6675+
.AddMember("dec").Decimal(TString("10.1"))
6676+
.EndStruct();
6677+
builder.AddListItem().BeginStruct()
6678+
.AddMember("id").Int64(2)
6679+
.AddMember("dec").Decimal(TString("inf"))
6680+
.EndStruct();
6681+
builder.AddListItem().BeginStruct()
6682+
.AddMember("id").Int64(3)
6683+
.AddMember("dec").Decimal(TString("-inf"))
6684+
.EndStruct();
6685+
builder.AddListItem().BeginStruct()
6686+
.AddMember("id").Int64(4)
6687+
.AddMember("dec").Decimal(TString("nan"))
6688+
.EndStruct();
6689+
builder.AddListItem().BeginStruct()
6690+
.AddMember("id").Int64(5)
6691+
.AddMember("dec").Decimal(TString("-nan"))
6692+
.EndStruct();
6693+
builder.EndList();
6694+
const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), builder.Build()).GetValueSync();
6695+
UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString());
6696+
}
6697+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=1", "[[\"10.1\"]]");
6698+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=2", "[[\"inf\"]]");
6699+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=3", "[[\"-inf\"]]");
6700+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=4", "[[\"nan\"]]");
6701+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=5", "[[\"-nan\"]]");
6702+
}
6703+
66556704
Y_UNIT_TEST(TimestampCmpErr) {
66566705
TKikimrSettings runnerSettings;
66576706
runnerSettings.WithSampleTables = false;

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ namespace NKikimr::NSchemeShard {
155155
switch (typeId) {
156156
case NYql::NProto::Bool:
157157
case NYql::NProto::Interval:
158-
case NYql::NProto::Decimal:
159158
case NYql::NProto::DyNumber:
160159
return false;
161160
default:

ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ Y_UNIT_TEST_SUITE(YdbCliCsvParserTests) {
106106
CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Double(1.183).Build()}});
107107
CommonTestParams("name", "1.183", {{"$name", TValueBuilder().DyNumber("1.183").Build()}});
108108
CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Decimal(TString("1.183")).Build()}});
109+
CommonTestParams("name", "inf", {{"$name", TValueBuilder().Decimal(TString("inf")).Build()}});
110+
CommonTestParams("name", "-inf", {{"$name", TValueBuilder().Decimal(TString("-inf")).Build()}});
111+
CommonTestParams("name", "nan", {{"$name", TValueBuilder().Decimal(TString("nan")).Build()}});
112+
CommonTestParams("name", "-nan", {{"$name", TValueBuilder().Decimal(TString("-nan")).Build()}});
109113
CommonTestParams("name", "550e8400-e29b-41d4-a716-446655440000", {{"$name", TValueBuilder().Uuid(TUuidValue("550e8400-e29b-41d4-a716-446655440000")).Build()}});
110114
CommonTestParams("name", "\"{\"\"a\"\":10, \"\"b\"\":\"\"string\"\"}\"", {{"$name", TValueBuilder().Json("{\"a\":10, \"b\":\"string\"}").Build()}});
111115
CommonTestParams("name", "строка", {{"$name", TValueBuilder().OptionalUtf8("строка").Build()}});

0 commit comments

Comments
 (0)