Skip to content

Commit 3a5da67

Browse files
committed
cherry-pick 6d272ba (Decimal type in olap)
1 parent 82d69fe commit 3a5da67

File tree

4 files changed

+64
-2
lines changed

4 files changed

+64
-2
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,17 @@ namespace NKqp {
6868

6969

7070
TString TTestHelper::TColumnSchema::BuildQuery() const {
71-
auto str = TStringBuilder() << Name << " " << NScheme::GetTypeName(Type);
71+
auto str = TStringBuilder() << Name << " ";
72+
switch (Type) {
73+
case NScheme::NTypeIds::Decimal: {
74+
TTypeBuilder builder;
75+
builder.Decimal(TDecimalType(22, 9));
76+
str << builder.Build();
77+
break;
78+
}
79+
default:
80+
str << NScheme::GetTypeName(Type);
81+
}
7282
if (!NullableFlag) {
7383
str << " NOT NULL";
7484
}

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

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

5872+
Y_UNIT_TEST(Decimal) {
5873+
TKikimrSettings runnerSettings;
5874+
runnerSettings.WithSampleTables = false;
5875+
5876+
TTestHelper testHelper(runnerSettings);
5877+
5878+
TVector<TTestHelper::TColumnSchema> schema = {
5879+
TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false),
5880+
TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false),
5881+
};
5882+
5883+
TTestHelper::TColumnTable testTable;
5884+
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema);
5885+
testHelper.CreateTable(testTable);
5886+
5887+
{
5888+
TValueBuilder builder;
5889+
builder.BeginList();
5890+
builder.AddListItem().BeginStruct()
5891+
.AddMember("id").Int64(1)
5892+
.AddMember("dec").Decimal(TString("10.1"))
5893+
.EndStruct();
5894+
builder.AddListItem().BeginStruct()
5895+
.AddMember("id").Int64(2)
5896+
.AddMember("dec").Decimal(TString("inf"))
5897+
.EndStruct();
5898+
builder.AddListItem().BeginStruct()
5899+
.AddMember("id").Int64(3)
5900+
.AddMember("dec").Decimal(TString("-inf"))
5901+
.EndStruct();
5902+
builder.AddListItem().BeginStruct()
5903+
.AddMember("id").Int64(4)
5904+
.AddMember("dec").Decimal(TString("nan"))
5905+
.EndStruct();
5906+
builder.AddListItem().BeginStruct()
5907+
.AddMember("id").Int64(5)
5908+
.AddMember("dec").Decimal(TString("-nan"))
5909+
.EndStruct();
5910+
builder.EndList();
5911+
const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), builder.Build()).GetValueSync();
5912+
UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString());
5913+
}
5914+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=1", "[[\"10.1\"]]");
5915+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=2", "[[\"inf\"]]");
5916+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=3", "[[\"-inf\"]]");
5917+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=4", "[[\"nan\"]]");
5918+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=5", "[[\"-nan\"]]");
5919+
}
5920+
58725921
Y_UNIT_TEST(TimestampCmpErr) {
58735922
TKikimrSettings runnerSettings;
58745923
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
@@ -131,7 +131,6 @@ namespace NKikimr::NSchemeShard {
131131
switch (typeId) {
132132
case NYql::NProto::Bool:
133133
case NYql::NProto::Interval:
134-
case NYql::NProto::Decimal:
135134
case NYql::NProto::DyNumber:
136135
return false;
137136
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)