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