Skip to content

Commit 2fc2f71

Browse files
authored
read decimals from csv (#5983)
1 parent 808e65b commit 2fc2f71

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

ydb/core/formats/arrow/converter.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ static bool ConvertData(TCell& cell, const NScheme::TTypeInfo& colType, TMemoryP
4848
static arrow::Status ConvertColumn(const NScheme::TTypeInfo colType, std::shared_ptr<arrow::Array>& column, std::shared_ptr<arrow::Field>& field) {
4949
switch (colType.GetTypeId()) {
5050
case NScheme::NTypeIds::Decimal:
51-
return arrow::Status::TypeError("Cannot convert Decimal type");
51+
return arrow::Status::OK();
5252
case NScheme::NTypeIds::JsonDocument: {
5353
const static TSet<arrow::Type::type> jsonDocArrowTypes{ arrow::Type::BINARY, arrow::Type::STRING };
5454
if (!jsonDocArrowTypes.contains(column->type()->id())) {

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

+30
Original file line numberDiff line numberDiff line change
@@ -7055,6 +7055,36 @@ Y_UNIT_TEST_SUITE(KqpOlapTypes) {
70557055
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id > 5 ORDER BY dec", "[[\"-inf\"];[\"1.1\"];[\"2.1\"];[\"12.1\"];[\"15.1\"];[\"inf\"]]");
70567056
}
70577057

7058+
Y_UNIT_TEST(DecimalCsv) {
7059+
TKikimrSettings runnerSettings;
7060+
runnerSettings.WithSampleTables = false;
7061+
7062+
TTestHelper testHelper(runnerSettings);
7063+
7064+
TVector<TTestHelper::TColumnSchema> schema = {
7065+
TTestHelper::TColumnSchema().SetName("id").SetType(NScheme::NTypeIds::Int64).SetNullable(false),
7066+
TTestHelper::TColumnSchema().SetName("dec").SetType(NScheme::NTypeIds::Decimal).SetNullable(false),
7067+
};
7068+
7069+
TTestHelper::TColumnTable testTable;
7070+
testTable.SetName("/Root/ColumnTableTest").SetPrimaryKey({"id", "dec"}).SetSharding({"id", "dec"}).SetSchema(schema);
7071+
testHelper.CreateTable(testTable);
7072+
7073+
{
7074+
TStringBuilder builder;
7075+
builder << "1, 10.1" << Endl;
7076+
builder << "6, 1.1" << Endl;
7077+
builder << "7, 12.1" << Endl;
7078+
builder << "10, 2" << Endl;
7079+
builder << "11, 15.1" << Endl;
7080+
const auto result = testHelper.GetKikimr().GetTableClient().BulkUpsert(testTable.GetName(), EDataFormat::CSV, builder).GetValueSync();
7081+
UNIT_ASSERT_C(result.IsSuccess() , result.GetIssues().ToString());
7082+
}
7083+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id=1", "[[\"10.1\"]]");
7084+
testHelper.ReadData("SELECT id FROM `/Root/ColumnTableTest` WHERE dec=CAST(\"10.1\" As Decimal(22,9))", "[[1]]");
7085+
testHelper.ReadData("SELECT dec FROM `/Root/ColumnTableTest` WHERE id > 5 ORDER BY dec", "[[\"1.1\"];[\"2\"];[\"12.1\"];[\"15.1\"]]");
7086+
}
7087+
70587088
Y_UNIT_TEST(TimestampCmpErr) {
70597089
TKikimrSettings runnerSettings;
70607090
runnerSettings.WithSampleTables = false;

0 commit comments

Comments
 (0)