Skip to content

Commit d468e6d

Browse files
authored
Add decimal comparison kernels (#8271)
1 parent f807bc5 commit d468e6d

File tree

14 files changed

+170
-15
lines changed

14 files changed

+170
-15
lines changed

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_equals.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ void RegisterEquals(TKernelFamilyMap& kernelFamilyMap) {
302302

303303
AddNumericComparisonKernels<TEqualsOp>(*family);
304304
AddDateComparisonKernels<TDiffDateEqualsOp>(*family);
305+
AddDecimalComparisonKernels<TDecimalEquals>(*family);
305306
RegisterStringKernelEquals(*family);
306307

307308
kernelFamilyMap["Equals"] = std::move(family);

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ void RegisterGreater(TKernelFamilyMap& kernelFamilyMap) {
299299

300300
AddNumericComparisonKernels<TGreaterOp>(*family);
301301
AddDateComparisonKernels<TDiffDateGreaterOp>(*family);
302+
AddDecimalComparisonKernels<TDecimalGreater>(*family);
302303
RegisterStringKernelGreater(*family);
303304

304305
kernelFamilyMap["Greater"] = std::move(family);

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_greater_or_equal.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ void RegisterGreaterOrEqual(TKernelFamilyMap& kernelFamilyMap) {
299299

300300
AddNumericComparisonKernels<TGreaterOrEqualOp>(*family);
301301
AddDateComparisonKernels<TDiffDateGreaterOrEqualOp>(*family);
302+
AddDecimalComparisonKernels<TDecimalGreaterOrEqual>(*family);
302303
RegisterStringKernelGreaterOrEqual(*family);
303304

304305
kernelFamilyMap["GreaterOrEqual"] = std::move(family);

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.cpp

+9-12
Original file line numberDiff line numberDiff line change
@@ -296,21 +296,18 @@ std::shared_ptr<arrow::compute::ScalarKernel> TDecimalKernel::MakeArrowKernel(co
296296

297297
MKQL_ENSURE(*dataType1->GetDataSlot() == NUdf::EDataSlot::Decimal, "Require decimal");
298298
MKQL_ENSURE(*dataType2->GetDataSlot() == NUdf::EDataSlot::Decimal, "Require decimal");
299-
MKQL_ENSURE(*dataResultType->GetDataSlot() == NUdf::EDataSlot::Decimal, "Require decimal");
300299

301300
auto decimalType1 = static_cast<TDataDecimalType*>(dataType1);
302301
auto decimalType2 = static_cast<TDataDecimalType*>(dataType2);
303-
auto decimalResultType = static_cast<TDataDecimalType*>(dataResultType);
304302

305303
MKQL_ENSURE(decimalType1->GetParams() == decimalType2->GetParams(), "Require same precision/scale");
306-
MKQL_ENSURE(decimalType1->GetParams() == decimalResultType->GetParams(), "Require same precision/scale");
307304

308305
ui8 precision = decimalType1->GetParams().first;
309306
MKQL_ENSURE(precision >= 1&& precision <= 35, TStringBuilder() << "Wrong precision: " << (int)precision);
310307

311308
auto k = std::make_shared<arrow::compute::ScalarKernel>(std::vector<arrow::compute::InputType>{
312309
GetPrimitiveInputArrowType(NUdf::EDataSlot::Decimal), GetPrimitiveInputArrowType(NUdf::EDataSlot::Decimal)
313-
}, GetPrimitiveOutputArrowType(NUdf::EDataSlot::Decimal), Exec);
310+
}, GetPrimitiveOutputArrowType(*dataResultType->GetDataSlot()), Exec);
314311
k->null_handling = arrow::compute::NullHandling::INTERSECTION;
315312
k->init = [precision](arrow::compute::KernelContext*, const arrow::compute::KernelInitArgs&) {
316313
auto state = std::make_unique<TDecimalKernel::TKernelState>();
@@ -713,7 +710,8 @@ arrow::Status ExecDecimalScalarArrayOptImpl(const arrow::compute::ExecBatch& bat
713710

714711
arrow::Status ExecDecimalScalarScalarOptImpl(arrow::compute::KernelContext* kernelCtx,
715712
const arrow::compute::ExecBatch& batch, arrow::Datum* res,
716-
TPrimitiveDataTypeGetter typeGetter, TUntypedBinaryScalarOptFuncPtr func) {
713+
TPrimitiveDataTypeGetter typeGetter, TPrimitiveDataScalarGetterWithMemPool scalarGetter,
714+
TUntypedBinaryScalarOptFuncPtr func) {
717715
MKQL_ENSURE(batch.values.size() == 2, "Expected 2 args");
718716
const auto& arg1 = batch.values[0];
719717
const auto& arg2 = batch.values[1];
@@ -722,9 +720,9 @@ arrow::Status ExecDecimalScalarScalarOptImpl(arrow::compute::KernelContext* kern
722720
} else {
723721
const auto val1Ptr = GetStringScalarValue(*arg1.scalar());
724722
const auto val2Ptr = GetStringScalarValue(*arg2.scalar());
725-
std::shared_ptr<arrow::Buffer> buffer(ARROW_RESULT(arrow::AllocateBuffer(16, kernelCtx->memory_pool())));
726-
auto resDatum = arrow::Datum(std::make_shared<TPrimitiveDataType<NYql::NDecimal::TInt128>::TScalarResult>(buffer));
727-
if (!func(val1Ptr.data(), val2Ptr.data(), buffer->mutable_data())) {
723+
void* resMem;
724+
auto resDatum = scalarGetter(&resMem, kernelCtx->memory_pool());
725+
if (!func(val1Ptr.data(), val2Ptr.data(), resMem)) {
728726
*res = arrow::MakeNullScalar(typeGetter());
729727
} else {
730728
*res = resDatum.scalar();
@@ -736,7 +734,7 @@ arrow::Status ExecDecimalScalarScalarOptImpl(arrow::compute::KernelContext* kern
736734

737735
arrow::Status ExecDecimalBinaryOptImpl(arrow::compute::KernelContext* kernelCtx,
738736
const arrow::compute::ExecBatch& batch, arrow::Datum* res,
739-
TPrimitiveDataTypeGetter typeGetter,
737+
TPrimitiveDataTypeGetter typeGetter, TPrimitiveDataScalarGetterWithMemPool scalarGetter,
740738
size_t outputSizeOf,
741739
TUntypedBinaryScalarOptFuncPtr scalarScalarFunc,
742740
TUntypedBinaryArrayOptFuncPtr scalarArrayFunc,
@@ -747,7 +745,7 @@ arrow::Status ExecDecimalBinaryOptImpl(arrow::compute::KernelContext* kernelCtx,
747745
const auto& arg2 = batch.values[1];
748746
if (arg1.is_scalar()) {
749747
if (arg2.is_scalar()) {
750-
return ExecDecimalScalarScalarOptImpl(kernelCtx, batch, res, typeGetter, scalarScalarFunc);
748+
return ExecDecimalScalarScalarOptImpl(kernelCtx, batch, res, typeGetter, scalarGetter, scalarScalarFunc);
751749
} else {
752750
return ExecDecimalScalarArrayOptImpl(batch, res, scalarArrayFunc);
753751
}
@@ -769,8 +767,7 @@ arrow::Status ExecDecimalScalarImpl(arrow::compute::KernelContext* kernelCtx,
769767
const auto valPtr = GetPrimitiveScalarValuePtr(*arg.scalar());
770768
std::shared_ptr<arrow::Buffer> buffer(ARROW_RESULT(arrow::AllocateBuffer(16, kernelCtx->memory_pool())));
771769
auto resDatum = arrow::Datum(std::make_shared<TPrimitiveDataType<NYql::NDecimal::TInt128>::TScalarResult>(buffer));
772-
const auto resPtr = GetPrimitiveScalarValueMutablePtr(*resDatum.scalar());
773-
func(valPtr, resPtr);
770+
func(valPtr, buffer->mutable_data());
774771
*res = resDatum.scalar();
775772
}
776773

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_impl.h.txt

+51-3
Original file line numberDiff line numberDiff line change
@@ -942,6 +942,7 @@ inline std::shared_ptr<arrow::ArrayData> CopyTz(const std::shared_ptr<arrow::Arr
942942

943943
using TPrimitiveDataTypeGetter = std::shared_ptr<arrow::DataType>(*)();
944944
using TPrimitiveDataScalarGetter= arrow::Datum(*)();
945+
using TPrimitiveDataScalarGetterWithMemPool = arrow::Datum(*)(void** result, arrow::MemoryPool*);
945946
using TUntypedBinaryScalarFuncPtr = void(*)(const void*, const void*, void*);
946947
using TUntypedBinaryArrayFuncPtr = void(*)(const void*, const void*, void*, int64_t length, int64_t offset1, int64_t offset2);
947948
using TUntypedBinaryScalarOptFuncPtr = bool(*)(const void*, const void*, void*);
@@ -1023,7 +1024,7 @@ arrow::Status ExecBinaryOptImpl(arrow::compute::KernelContext* kernelCtx,
10231024

10241025
arrow::Status ExecDecimalBinaryOptImpl(arrow::compute::KernelContext* kernelCtx,
10251026
const arrow::compute::ExecBatch& batch, arrow::Datum* res,
1026-
TPrimitiveDataTypeGetter typeGetter,
1027+
TPrimitiveDataTypeGetter typeGetter, TPrimitiveDataScalarGetterWithMemPool scalarGetter,
10271028
size_t outputSizeOf,
10281029
TUntypedBinaryScalarOptFuncPtr scalarScalarFunc,
10291030
TUntypedBinaryArrayOptFuncPtr scalarArrayFunc,
@@ -1032,7 +1033,7 @@ arrow::Status ExecDecimalBinaryOptImpl(arrow::compute::KernelContext* kernelCtx,
10321033

10331034
arrow::Status ExecDecimalUnaryImpl(arrow::compute::KernelContext* kernelCtx,
10341035
const arrow::compute::ExecBatch& batch, arrow::Datum* res,
1035-
TPrimitiveDataTypeGetter typeGetter,
1036+
TPrimitiveDataTypeGetter typeGetter,
10361037
TUntypedUnaryScalarFuncPtr scalarFunc, TUntypedUnaryArrayFuncPtr arrayFunc);
10371038

10381039
template<typename TInput1, bool Tz1, typename TInput2, bool Tz2, typename TOutput, EPropagateTz PropagateTz,
@@ -1664,6 +1665,12 @@ struct TDecimalKernelExecs
16641665
using TInput2 = NYql::NDecimal::TInt128;
16651666
using TOutput = NYql::NDecimal::TInt128;
16661667

1668+
static arrow::Datum ScalarGetter(void** result, arrow::MemoryPool* memory_pool) {
1669+
std::shared_ptr<arrow::Buffer> buffer(ARROW_RESULT(arrow::AllocateBuffer(16, memory_pool)));
1670+
*result = buffer->mutable_data();
1671+
return arrow::Datum(std::make_shared<TPrimitiveDataType<NYql::NDecimal::TInt128>::TScalarResult>(buffer));
1672+
}
1673+
16671674
template<ui8 precision>
16681675
static arrow::Status ExecImpl(arrow::compute::KernelContext* kernelCtx, const arrow::compute::ExecBatch& batch, arrow::Datum* res) {
16691676
auto scalarScalarFunc = &TBinaryKernelOptExecsImpl<TInput1, TInput2, TOutput, TFuncInstance<precision>>::ScalarScalarCoreOpt;
@@ -1672,7 +1679,7 @@ struct TDecimalKernelExecs
16721679
auto arrayArrayFunc = &TBinaryKernelOptExecsImpl<TInput1, TInput2, TOutput, TFuncInstance<precision>>::ArrayArrayCoreOpt;
16731680

16741681
return ExecDecimalBinaryOptImpl(kernelCtx, batch, res,
1675-
&GetPrimitiveDataType<TOutput>,
1682+
&GetPrimitiveDataType<TOutput>, &ScalarGetter,
16761683
sizeof(TOutput),
16771684
(TUntypedBinaryScalarOptFuncPtr)scalarScalarFunc,
16781685
(TUntypedBinaryArrayOptFuncPtr)scalarArrayFunc,
@@ -1709,5 +1716,46 @@ void AddBinaryDecimalKernels(TKernelFamilyBase& owner) {
17091716
owner.Adopt(argTypes, returnType, std::move(kernel));
17101717
}
17111718

1719+
template<class TFuncInstance>
1720+
struct TDecimalComparisonKernelExecs
1721+
{
1722+
using TInput1 = NYql::NDecimal::TInt128;
1723+
using TInput2 = NYql::NDecimal::TInt128;
1724+
using TOutput = bool;
1725+
1726+
static arrow::Datum ScalarGetter(void** resMem, arrow::MemoryPool*) {
1727+
auto result = MakeDefaultScalarDatum<TOutput>();
1728+
*resMem = GetPrimitiveScalarValueMutablePtr(*result.scalar());
1729+
return result;
1730+
}
1731+
1732+
static arrow::Status Exec(arrow::compute::KernelContext* kernelCtx, const arrow::compute::ExecBatch& batch, arrow::Datum* res) {
1733+
auto scalarScalarFunc = &TBinaryKernelOptExecsImpl<TInput1, TInput2, TOutput, TFuncInstance>::ScalarScalarCoreOpt;
1734+
auto scalarArrayFunc = &TBinaryKernelOptExecsImpl<TInput1, TInput2, TOutput, TFuncInstance>::ScalarArrayCoreOpt;
1735+
auto arrayScalarFunc = &TBinaryKernelOptExecsImpl<TInput1, TInput2, TOutput, TFuncInstance>::ArrayScalarCoreOpt;
1736+
auto arrayArrayFunc = &TBinaryKernelOptExecsImpl<TInput1, TInput2, TOutput, TFuncInstance>::ArrayArrayCoreOpt;
1737+
1738+
return ExecDecimalBinaryOptImpl(kernelCtx, batch, res,
1739+
&GetPrimitiveDataType<TOutput>, &ScalarGetter,
1740+
sizeof(TOutput),
1741+
(TUntypedBinaryScalarOptFuncPtr)scalarScalarFunc,
1742+
(TUntypedBinaryArrayOptFuncPtr)scalarArrayFunc,
1743+
(TUntypedBinaryArrayOptFuncPtr)arrayScalarFunc,
1744+
(TUntypedBinaryArrayOptFuncPtr)arrayArrayFunc);
1745+
}
1746+
};
1747+
1748+
template<class TFunc>
1749+
void AddDecimalComparisonKernels(TKernelFamilyBase& owner) {
1750+
auto type1 = NUdf::GetDataTypeInfo(NUdf::EDataSlot::Decimal).TypeId;
1751+
auto type2 = type1;
1752+
auto returnType = NUdf::GetDataTypeInfo(NUdf::EDataSlot::Bool).TypeId;
1753+
std::vector<NUdf::TDataTypeId> argTypes({ type1, type2 });
1754+
1755+
using Execs = TDecimalComparisonKernelExecs<TFunc>;
1756+
auto kernel = std::make_unique<TDecimalKernel>(owner, argTypes, returnType, &Execs::Exec, TKernel::ENullMode::Default);
1757+
owner.Adopt(argTypes, returnType, std::move(kernel));
1758+
}
1759+
17121760
}
17131761
}

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ void RegisterLess(TKernelFamilyMap& kernelFamilyMap) {
299299

300300
AddNumericComparisonKernels<TLessOp>(*family);
301301
AddDateComparisonKernels<TDiffDateLessOp>(*family);
302+
AddDecimalComparisonKernels<TDecimalLess>(*family);
302303
RegisterStringKernelLess(*family);
303304

304305
kernelFamilyMap["Less"] = std::move(family);

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_less_or_equal.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ void RegisterLessOrEqual(TKernelFamilyMap& kernelFamilyMap) {
299299

300300
AddNumericComparisonKernels<TLessOrEqualOp>(*family);
301301
AddDateComparisonKernels<TDiffDateLessOrEqualOp>(*family);
302+
AddDecimalComparisonKernels<TDecimalLessOrEqual>(*family);
302303
RegisterStringKernelLessOrEqual(*family);
303304

304305
kernelFamilyMap["LessOrEqual"] = std::move(family);

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_not_equals.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ void RegisterNotEquals(TKernelFamilyMap& kernelFamilyMap) {
302302

303303
AddNumericComparisonKernels<TNotEqualsOp>(*family);
304304
AddDateComparisonKernels<TDiffDateNotEqualsOp>(*family);
305+
AddDecimalComparisonKernels<TDecimalNotEquals>(*family);
305306
RegisterStringKernelNotEquals(*family);
306307

307308
kernelFamilyMap["NotEquals"] = std::move(family);

ydb/library/yql/tests/sql/dq_file/part18/canondata/result.json

+22
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,28 @@
570570
}
571571
],
572572
"test.test[blocks-date_sub_scalar--Results]": [],
573+
"test.test[blocks-decimal_comparison--Analyze]": [
574+
{
575+
"checksum": "84e84352daef0d01b5fc6884ec3ebf29",
576+
"size": 3719,
577+
"uri": "https://{canondata_backend}/1924537/081e3ea5ef34a4fe33a8e971e47d53ea3a5151a4/resource.tar.gz#test.test_blocks-decimal_comparison--Analyze_/plan.txt"
578+
}
579+
],
580+
"test.test[blocks-decimal_comparison--Debug]": [
581+
{
582+
"checksum": "050cf26dbe07c6d9cacb0446ed018c90",
583+
"size": 2343,
584+
"uri": "https://{canondata_backend}/1923547/eaec090e24c98f865902b418cc92d70420b05c0b/resource.tar.gz#test.test_blocks-decimal_comparison--Debug_/opt.yql_patched"
585+
}
586+
],
587+
"test.test[blocks-decimal_comparison--Plan]": [
588+
{
589+
"checksum": "84e84352daef0d01b5fc6884ec3ebf29",
590+
"size": 3719,
591+
"uri": "https://{canondata_backend}/1924537/081e3ea5ef34a4fe33a8e971e47d53ea3a5151a4/resource.tar.gz#test.test_blocks-decimal_comparison--Plan_/plan.txt"
592+
}
593+
],
594+
"test.test[blocks-decimal_comparison--Results]": [],
573595
"test.test[blocks-filter_partial_expr--Analyze]": [
574596
{
575597
"checksum": "e8f201d2a8a9bec0b35c5b959be1c92a",

ydb/library/yql/tests/sql/hybrid_file/part4/canondata/result.json

+14
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,20 @@
489489
"uri": "https://{canondata_backend}/1920236/24fc177ad15ffb34261b5dbf2e1c5c96c4ad7faf/resource.tar.gz#test.test_blocks-date_sub_interval_scalar--Plan_/plan.txt"
490490
}
491491
],
492+
"test.test[blocks-decimal_comparison--Debug]": [
493+
{
494+
"checksum": "2d5a263433c13ff6f5d31cefd40bcc96",
495+
"size": 4161,
496+
"uri": "https://{canondata_backend}/1130705/7b1ee13c4da21e2ddff70372802eda23a04da498/resource.tar.gz#test.test_blocks-decimal_comparison--Debug_/opt.yql_patched"
497+
}
498+
],
499+
"test.test[blocks-decimal_comparison--Plan]": [
500+
{
501+
"checksum": "e65c86ba6e55033fe5f47711b65bba6d",
502+
"size": 4093,
503+
"uri": "https://{canondata_backend}/1784826/2b2e157f3cee0db3cfdb7f3fc538c5f30f0b593e/resource.tar.gz#test.test_blocks-decimal_comparison--Plan_/plan.txt"
504+
}
505+
],
492506
"test.test[blocks-distinct_pure_all--Debug]": [
493507
{
494508
"checksum": "a368ba0efe31dc0503d90694682eb845",

ydb/library/yql/tests/sql/sql2yql/canondata/result.json

+14
Original file line numberDiff line numberDiff line change
@@ -3779,6 +3779,13 @@
37793779
"uri": "https://{canondata_backend}/1942100/4770669c24007543908dd55606255f269883b26e/resource.tar.gz#test_sql2yql.test_blocks-date_top_sort_/sql.yql"
37803780
}
37813781
],
3782+
"test_sql2yql.test[blocks-decimal_comparison]": [
3783+
{
3784+
"checksum": "8ca5e73502f650d4d05eb9770ffbf4a0",
3785+
"size": 4678,
3786+
"uri": "https://{canondata_backend}/1923547/4867af26e59d2b50038b167d59c2026bb3dd66b3/resource.tar.gz#test_sql2yql.test_blocks-decimal_comparison_/sql.yql"
3787+
}
3788+
],
37823789
"test_sql2yql.test[blocks-decimal_op_decimal]": [
37833790
{
37843791
"checksum": "7b42147f7c8462d1ffa32e88ba91d961",
@@ -23316,6 +23323,13 @@
2331623323
"uri": "https://{canondata_backend}/1942100/4770669c24007543908dd55606255f269883b26e/resource.tar.gz#test_sql_format.test_blocks-date_top_sort_/formatted.sql"
2331723324
}
2331823325
],
23326+
"test_sql_format.test[blocks-decimal_comparison]": [
23327+
{
23328+
"checksum": "95016b817141a7fbfd888700217463bc",
23329+
"size": 751,
23330+
"uri": "https://{canondata_backend}/1923547/4867af26e59d2b50038b167d59c2026bb3dd66b3/resource.tar.gz#test_sql_format.test_blocks-decimal_comparison_/formatted.sql"
23331+
}
23332+
],
2331923333
"test_sql_format.test[blocks-decimal_op_decimal]": [
2332023334
{
2332123335
"checksum": "078fae170f284e83ac9c9c64fc31c788",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
in Input input_decimal.txt
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
USE plato;
2+
3+
SELECT
4+
cs_ext_list_price == cs_ext_tax,
5+
cs_ext_list_price != cs_ext_tax,
6+
cs_ext_list_price < cs_ext_tax,
7+
cs_ext_list_price <= cs_ext_tax,
8+
cs_ext_list_price > cs_ext_tax,
9+
cs_ext_list_price >= cs_ext_tax,
10+
11+
cs_ext_tax == decimal("26.91", 7, 2),
12+
cs_ext_tax != decimal("26.91", 7, 2),
13+
cs_ext_tax < decimal("26.91", 7, 2),
14+
cs_ext_tax <= decimal("26.91", 7, 2),
15+
cs_ext_tax > decimal("26.91", 7, 2),
16+
cs_ext_tax >= decimal("26.91", 7, 2),
17+
18+
decimal("26.91", 7, 2) == cs_ext_tax,
19+
decimal("26.91", 7, 2) != cs_ext_tax,
20+
decimal("26.91", 7, 2) < cs_ext_tax,
21+
decimal("26.91", 7, 2) <= cs_ext_tax,
22+
decimal("26.91", 7, 2) > cs_ext_tax,
23+
decimal("26.91", 7, 2) >= cs_ext_tax,
24+
FROM Input;
25+

ydb/library/yql/tests/sql/yt_native_file/part18/canondata/result.json

+28
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,34 @@
559559
"uri": "https://{canondata_backend}/1937429/45b62dc8690b9f212c440cd9ce32dca44fce59af/resource.tar.gz#test.test_blocks-date_sub_scalar--Results_/results.txt"
560560
}
561561
],
562+
"test.test[blocks-decimal_comparison--Debug]": [
563+
{
564+
"checksum": "46ccbaf4cf38b691676a35ea4d4855e1",
565+
"size": 3155,
566+
"uri": "https://{canondata_backend}/1917492/da22d39eebcd6438bf5ab5dc9689cc84e25a7dd7/resource.tar.gz#test.test_blocks-decimal_comparison--Debug_/opt.yql"
567+
}
568+
],
569+
"test.test[blocks-decimal_comparison--Peephole]": [
570+
{
571+
"checksum": "55ff6bdfa515195d6ac7a9e586d8677d",
572+
"size": 3434,
573+
"uri": "https://{canondata_backend}/1917492/da22d39eebcd6438bf5ab5dc9689cc84e25a7dd7/resource.tar.gz#test.test_blocks-decimal_comparison--Peephole_/opt.yql"
574+
}
575+
],
576+
"test.test[blocks-decimal_comparison--Plan]": [
577+
{
578+
"checksum": "4578f9a1b54bf43aa6ebe0c94d50b4c1",
579+
"size": 4059,
580+
"uri": "https://{canondata_backend}/1777230/4826a2658ee004e3149897383e92334eabb6d44d/resource.tar.gz#test.test_blocks-decimal_comparison--Plan_/plan.txt"
581+
}
582+
],
583+
"test.test[blocks-decimal_comparison--Results]": [
584+
{
585+
"checksum": "fd2449ec9567e2361e2012c579cc2509",
586+
"size": 23918,
587+
"uri": "https://{canondata_backend}/1917492/da22d39eebcd6438bf5ab5dc9689cc84e25a7dd7/resource.tar.gz#test.test_blocks-decimal_comparison--Results_/results.txt"
588+
}
589+
],
562590
"test.test[blocks-filter_partial_expr--Debug]": [
563591
{
564592
"checksum": "074405dc3a47b47ba5b6d4f37ed07c8e",

0 commit comments

Comments
 (0)