This is an automated email from the ASF dual-hosted git repository.

felipecrv pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git


The following commit(s) were added to refs/heads/main by this push:
     new 5819810d3 fix(go/adbc/driver/bigquery): Use DECIMAL and BIGDECIMAL 
defaults if necessary (#3468)
5819810d3 is described below

commit 5819810d36ddb48184b36d5a11de9f87a0ec6686
Author: Jason Lin <[email protected]>
AuthorDate: Mon Sep 22 22:15:06 2025 -0400

    fix(go/adbc/driver/bigquery): Use DECIMAL and BIGDECIMAL defaults if 
necessary (#3468)
---
 go/adbc/driver/bigquery/connection.go | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/go/adbc/driver/bigquery/connection.go 
b/go/adbc/driver/bigquery/connection.go
index 2b4889185..f4314360f 100644
--- a/go/adbc/driver/bigquery/connection.go
+++ b/go/adbc/driver/bigquery/connection.go
@@ -835,17 +835,33 @@ func buildField(schema *bigquery.FieldSchema, level uint) 
(arrow.Field, error) {
        case bigquery.DateTimeFieldType:
                field.Type = arrow.FixedWidthTypes.Timestamp_us
        case bigquery.NumericFieldType:
+               precision := schema.Precision
+               scale := schema.Scale
+               // BigQuery NUMERIC defaults when precision is not explicitly 
specified
+               // https: 
//cloud.google.com/bigquery/docs/reference/standard-sql/data-types#decimal_types
+               if precision == 0 {
+                       precision = 38
+                       scale = 9
+               }
                field.Type = &arrow.Decimal128Type{
-                       Precision: int32(schema.Precision),
-                       Scale:     int32(schema.Scale),
+                       Precision: int32(precision),
+                       Scale:     int32(scale),
                }
        case bigquery.GeographyFieldType:
                // TODO: potentially we should consider using GeoArrow for this
                field.Type = arrow.BinaryTypes.String
        case bigquery.BigNumericFieldType:
+               precision := schema.Precision
+               scale := schema.Scale
+               // BigQuery BIGNUMERIC defaults when precision is not 
explicitly specified
+               // 
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#decimal_types
+               if precision == 0 {
+                       precision = 76
+                       scale = 38
+               }
                field.Type = &arrow.Decimal256Type{
-                       Precision: int32(schema.Precision),
-                       Scale:     int32(schema.Scale),
+                       Precision: int32(precision),
+                       Scale:     int32(scale),
                }
        case bigquery.JSONFieldType:
                field.Type = arrow.BinaryTypes.String

Reply via email to