Skip to content

go/adbc/driver/snowflake: improved support for decimal128 types #1242

@davidhcoe

Description

@davidhcoe

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions