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

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

commit 290f3145f1c65bedb7c71986546571395f08a46e
Author: Felipe Oliveira Carvalho <[email protected]>
AuthorDate: Thu Apr 10 19:45:17 2025 -0700

    feat(go/adbc/driver/bigquery): Return data about table/view partitioning
---
 go/adbc/driver/bigquery/connection.go | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/go/adbc/driver/bigquery/connection.go 
b/go/adbc/driver/bigquery/connection.go
index f4caeb122..466b9741a 100644
--- a/go/adbc/driver/bigquery/connection.go
+++ b/go/adbc/driver/bigquery/connection.go
@@ -621,6 +621,29 @@ func (c *connectionImpl) getTableSchemaWithFilter(ctx 
context.Context, catalog *
                        metadata["MaterializedView.MaxStaleness"] = 
md.MaxStaleness.String()
                }
        }
+       if md.TimePartitioning != nil {
+               // "DAY", "HOUR", "MONTH", "YEAR"
+               metadata["TimePartitioning.Type"] = 
string(md.TimePartitioning.Type)
+               if md.TimePartitioning.Expiration != 0 {
+                       metadata["TimePartitioning.Expiration"] = 
md.TimePartitioning.Expiration.String()
+               }
+               if md.TimePartitioning.Field != "" {
+                       metadata["TimePartitioning.Field"] = 
md.TimePartitioning.Field
+               }
+       }
+       if md.RangePartitioning != nil {
+               if md.RangePartitioning.Field != "" {
+                       metadata["RangePartitioning.Field"] = 
md.RangePartitioning.Field
+               }
+               if md.RangePartitioning.Range != nil {
+                       metadata["RangePartitioning.Range.Start"] = 
strconv.FormatInt(md.RangePartitioning.Range.Start, 10)
+                       metadata["RangePartitioning.Range.End"] = 
strconv.FormatInt(md.RangePartitioning.Range.End, 10)
+                       metadata["RangePartitioning.Range.Interval"] = 
strconv.FormatInt(md.RangePartitioning.Range.Interval, 10)
+               }
+       }
+       if md.RequirePartitionFilter {
+               metadata["RequirePartitionFilter"] = 
strconv.FormatBool(md.RequirePartitionFilter)
+       }
        labels := ""
        if len(md.Labels) > 0 {
                encodedLabel, err := json.Marshal(md.Labels)

Reply via email to