Skip to content

Commit

Permalink
Decimal type in olap (ydb-platform#4701)
Browse files Browse the repository at this point in the history
  • Loading branch information
iddqdex authored and MrLolthe1st committed May 28, 2024
1 parent 9246097 commit 612777b
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 3 deletions.
12 changes: 10 additions & 2 deletions ydb/core/kqp/ut/common/columnshard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,17 @@ namespace NKqp {
TString TTestHelper::TColumnSchema::BuildQuery() const {
TStringBuilder str;
str << Name << ' ';
if (NScheme::NTypeIds::Pg == Type) {
switch (Type) {
case NScheme::NTypeIds::Pg:
str << NPg::PgTypeNameFromTypeDesc(TypeDesc);
} else {
break;
case NScheme::NTypeIds::Decimal: {
TTypeBuilder builder;
builder.Decimal(TDecimalType(22, 9));
str << builder.Build();
break;
}
default:
str << NScheme::GetTypeName(Type);
}
if (!NullableFlag) {
Expand Down
49 changes: 49 additions & 0 deletions ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6652,6 +6652,55 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) {
testHelper.ReadData("SELECT * FROM `/Root/ColumnTableTest` WHERE id=1", TStringBuilder() << "[[1;" << ts.MicroSeconds() << "u;" << ts.MicroSeconds() << "u]]");
}

Y_UNIT_TEST(Decimal) {
TKikimrSettings runnerSettings;
runnerSettings.WithSampleTables = false;

TTestHelper testHelper(runnerSettings);

TVector<TTestHelper::TColumnSchema> schema = {
TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false),
TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false),
};

TTestHelper::TColumnTable testTable;
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id"}).SetSharding({"id"}).SetSchema(schema);
testHelper.CreateTable(testTable);

{
TValueBuilder builder;
builder.BeginList();
builder.AddListItem().BeginStruct()
.AddMember("id").Int64(1)
.AddMember("dec").Decimal(TString("10.1"))
.EndStruct();
builder.AddListItem().BeginStruct()
.AddMember("id").Int64(2)
.AddMember("dec").Decimal(TString("inf"))
.EndStruct();
builder.AddListItem().BeginStruct()
.AddMember("id").Int64(3)
.AddMember("dec").Decimal(TString("-inf"))
.EndStruct();
builder.AddListItem().BeginStruct()
.AddMember("id").Int64(4)
.AddMember("dec").Decimal(TString("nan"))
.EndStruct();
builder.AddListItem().BeginStruct()
.AddMember("id").Int64(5)
.AddMember("dec").Decimal(TString("-nan"))
.EndStruct();
builder.EndList();
const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), builder.Build()).GetValueSync();
UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString());
}
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=1", "[[\"10.1\"]]");
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=2", "[[\"inf\"]]");
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=3", "[[\"-inf\"]]");
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=4", "[[\"nan\"]]");
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=5", "[[\"-nan\"]]");
}

Y_UNIT_TEST(TimestampCmpErr) {
TKikimrSettings runnerSettings;
runnerSettings.WithSampleTables = false;
Expand Down
1 change: 0 additions & 1 deletion ydb/core/tx/schemeshard/olap/columns/update.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,6 @@ namespace NKikimr::NSchemeShard {
switch (typeId) {
case NYql::NProto::Bool:
case NYql::NProto::Interval:
case NYql::NProto::Decimal:
case NYql::NProto::DyNumber:
return false;
default:
Expand Down
4 changes: 4 additions & 0 deletions ydb/public/lib/ydb_cli/common/csv_parser_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ Y_UNIT_TEST_SUITE(YdbCliCsvParserTests) {
CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Double(1.183).Build()}});
CommonTestParams("name", "1.183", {{"$name", TValueBuilder().DyNumber("1.183").Build()}});
CommonTestParams("name", "1.183", {{"$name", TValueBuilder().Decimal(TString("1.183")).Build()}});
CommonTestParams("name", "inf", {{"$name", TValueBuilder().Decimal(TString("inf")).Build()}});
CommonTestParams("name", "-inf", {{"$name", TValueBuilder().Decimal(TString("-inf")).Build()}});
CommonTestParams("name", "nan", {{"$name", TValueBuilder().Decimal(TString("nan")).Build()}});
CommonTestParams("name", "-nan", {{"$name", TValueBuilder().Decimal(TString("-nan")).Build()}});
CommonTestParams("name", "550e8400-e29b-41d4-a716-446655440000", {{"$name", TValueBuilder().Uuid(TUuidValue("550e8400-e29b-41d4-a716-446655440000")).Build()}});
CommonTestParams("name", "\"{\"\"a\"\":10, \"\"b\"\":\"\"string\"\"}\"", {{"$name", TValueBuilder().Json("{\"a\":10, \"b\":\"string\"}").Build()}});
CommonTestParams("name", "строка", {{"$name", TValueBuilder().OptionalUtf8("строка").Build()}});
Expand Down

0 comments on commit 612777b

Please sign in to comment.