Skip to content

Commit c62d3a9

Browse files
authored
Merge 6991785 into 82d69fe
2 parents 82d69fe + 6991785 commit c62d3a9

File tree

6 files changed

+98
-7
lines changed

6 files changed

+98
-7
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/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: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5869,6 +5869,86 @@ 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", "dec"}).SetSharding({"id", "dec"}).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.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();
5934+
builder.EndList();
5935+
const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), builder.Build()).GetValueSync();
5936+
UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString());
5937+
}
5938+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=1", "[[\"10.1\"]]");
5939+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=2", "[[\"inf\"]]");
5940+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=3", "[[\"-inf\"]]");
5941+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=4", "[[\"nan\"]]");
5942+
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\"]]");
5950+
}
5951+
58725952
Y_UNIT_TEST(TimestampCmpErr) {
58735953
TKikimrSettings runnerSettings;
58745954
runnerSettings.WithSampleTables = false;

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 & 2 deletions
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:
@@ -152,9 +151,9 @@ namespace NKikimr::NSchemeShard {
152151
case NYql::NProto::Date:
153152
case NYql::NProto::Datetime:
154153
case NYql::NProto::Timestamp:
154+
case NYql::NProto::Decimal:
155155
return true;
156156
case NYql::NProto::Interval:
157-
case NYql::NProto::Decimal:
158157
case NYql::NProto::DyNumber:
159158
case NYql::NProto::Yson:
160159
case NYql::NProto::Json:

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)