-
Notifications
You must be signed in to change notification settings - Fork 173
Description
We are still having issues with decimals even with high precision enabled. Consider the following scenarios:
CREATE OR REPLACE TABLE PUBLIC.NUMBERTEST_ALLPRECISION1
(
COL18 NUMBER(18,0),COL19 NUMBER(19,0),COL20 NUMBER(20,0),COL21 NUMBER(21,0),COL22 NUMBER(22,0),COL23 NUMBER(23,0),COL24 NUMBER(24,0),COL25 NUMBER(25,0),COL26 NUMBER(26,0),COL27 NUMBER(27,0),COL28 NUMBER(28,0),COL29 NUMBER(29,0),COL30 NUMBER(30,0),COL31 NUMBER(31,0),COL32 NUMBER(32,0),COL33 NUMBER(33,0),COL34 NUMBER(34,0),COL35 NUMBER(35,0),COL36 NUMBER(36,0),COL37 NUMBER(37,0),COL38 NUMBER(38,0)
);
INSERT INTO NUMBERTEST_ALLPRECISION1
(
COL18,COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35, COL36, COL37, COL38
)
VALUES
(
999999999999999999, 9999999999999999999, 99999999999999999999, 999999999999999999999, 9999999999999999999999, 99999999999999999999999, 999999999999999999999999, 9999999999999999999999999, 99999999999999999999999999, 999999999999999999999999999, 9999999999999999999999999999, 99999999999999999999999999999, 999999999999999999999999999999, 9999999999999999999999999999999, 99999999999999999999999999999999, 999999999999999999999999999999999, 9999999999999999999999999999999999, 99999999999999999999999999999999999, 999999999999999999999999999999999999, 9999999999999999999999999999999999999,99999999999999999999999999999999999999
);
When this table is queried, the error from https://github.com/apache/arrow/blob/2628d495ca99a892dca50019f4e72f087dc5aac7/go/arrow/compute/internal/kernels/numeric_cast.go#L230 is hit, because COL18 has a precision+scale value of less than 19 (per https://github.com/apache/arrow/blob/c49e24273160ac1ce195f02dbd14acd7d0f6945e/go/arrow/compute/internal/kernels/helpers.go#L701).
The other scenario is:
CREATE OR REPLACE TABLE PUBLIC.NUMBERTEST_ALLPRECISION1
(
COL18 NUMBER(18,2),COL19 NUMBER(19,2),COL20 NUMBER(20,2),COL21 NUMBER(21,2),COL22 NUMBER(22,02),COL23 NUMBER(23,02),COL24 NUMBER(24,02),COL25 NUMBER(25,02),COL26 NUMBER(26,02),COL27 NUMBER(27,02),COL28 NUMBER(28,02),COL29 NUMBER(29,02),COL30 NUMBER(30,02),COL31 NUMBER(31,02),COL32 NUMBER(32,02),COL33 NUMBER(33,02),COL34 NUMBER(34,02),COL35 NUMBER(35,02),COL36 NUMBER(36,02),COL37 NUMBER(37,02),COL38 NUMBER(38,02)
);
INSERT INTO NUMBERTEST_ALLPRECISION1
(
COL18,COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35, COL36, COL37, COL38
)
VALUES
(
9999999999999999.99, 99999999999999999.99, 999999999999999999.99, 9999999999999999999.99, 99999999999999999999.99, 999999999999999999999.99, 9999999999999999999999.99, 99999999999999999999999.99, 999999999999999999999999.99, 9999999999999999999999999.99, 99999999999999999999999999.99, 999999999999999999999999999.99, 9999999999999999999999999999.99, 99999999999999999999999999999.99, 999999999999999999999999999999.99, 9999999999999999999999999999999.99, 99999999999999999999999999999999.99, 999999999999999999999999999999999.99, 9999999999999999999999999999999999.99, 99999999999999999999999999999999999.99,999999999999999999999999999999999999.99
);
When this table is queried, https://github.com/apache/arrow/blob/c49e24273160ac1ce195f02dbd14acd7d0f6945e/go/arrow/compute/internal/kernels/helpers.go#L592 is hit and cannot return values.