@@ -185,6 +185,56 @@ Y_UNIT_TEST(PgConvertNumericDecimal128Scale5) {
185
185
checkResult<false >(expected, result, &reader, numeric_out);
186
186
}
187
187
188
+ Y_UNIT_TEST (PgConvertNumericDecimal128BigScale3) {
189
+ TArenaMemoryContext arena;
190
+
191
+ int32_t precision = 20 ;
192
+ int32_t scale = 3 ;
193
+ std::shared_ptr<arrow::DataType> type (new arrow::Decimal128Type (precision, scale));
194
+ arrow::Decimal128Builder builder (type);
195
+
196
+ const char * expected[] = {
197
+ " 36893488147419103.245" , " -36893488147419103.245" , nullptr
198
+ };
199
+
200
+ ARROW_OK (builder.Append (arrow::Decimal128::FromString (" 36893488147419103.245" ).ValueOrDie ()));
201
+ ARROW_OK (builder.Append (arrow::Decimal128::FromString (" -36893488147419103.245" ).ValueOrDie ()));
202
+ ARROW_OK (builder.AppendNull ());
203
+
204
+ std::shared_ptr<arrow::Array> array;
205
+ ARROW_OK (builder.Finish (&array));
206
+
207
+ auto result = PgDecimal128ConvertNumeric (array, precision, scale);
208
+
209
+ NYql::NUdf::TStringBlockReader<arrow::BinaryType, true > reader;
210
+ checkResult<false >(expected, result, &reader, numeric_out);
211
+ }
212
+
213
+ /* Y_UNIT_TEST(PgConvertNumericDecimal128BigScale6) {
214
+ TArenaMemoryContext arena;
215
+
216
+ int32_t precision = 24;
217
+ int32_t scale = 5;
218
+ std::shared_ptr<arrow::DataType> type(new arrow::Decimal128Type(precision, scale));
219
+ arrow::Decimal128Builder builder(type);
220
+
221
+ const char* expected[] = {
222
+ "3623458934881474191.03245", "-3623458934881474191.03245", nullptr
223
+ };
224
+
225
+ ARROW_OK(builder.Append(arrow::Decimal128::FromString("3623458934881474191.03245").ValueOrDie()));
226
+ ARROW_OK(builder.Append(arrow::Decimal128::FromString("-3623458934881474191.03245").ValueOrDie()));
227
+ ARROW_OK(builder.AppendNull());
228
+
229
+ std::shared_ptr<arrow::Array> array;
230
+ ARROW_OK(builder.Finish(&array));
231
+
232
+ auto result = PgDecimal128ConvertNumeric(array, precision, scale);
233
+
234
+ NYql::NUdf::TStringBlockReader<arrow::BinaryType, true> reader;
235
+ checkResult<false>(expected, result, &reader, numeric_out);
236
+ }*/
237
+
188
238
Y_UNIT_TEST (PgConvertNumericInt) {
189
239
TArenaMemoryContext arena;
190
240
0 commit comments