Skip to content

[Go] list of potential enhancements, missing features and missing docs #69

@amoeba

Description

@amoeba

Note: This issue was originally created as apache/arrow-adbc#1974 by cocoa-xu and was later copied here as part of migrating active development of the BigQuery Go driver to adbc-drivers/bigquery.

What feature or improvement would you like to see?

This todo list contains a number of potential enhancements, missing features and missing docs that I collected from the preliminary implementation of the BigQuery Go driver apache/arrow-adbc#1722. Some of these may be implemented together in a single PR, while some others may need a bit more work to achieve.

Also, some of these features could be hard/impossible to implement with current BigQuery API or due to some other limitations in BigQuery.

bigquery.QueryConfig

When doing a query, a *bigquery.Query is needed and it contains the query and the query options/configurations. Some of these configurable items (in bigquery.QueryConfig) are not implemented yet:

  • TableDefinitions
  • TimePartitioning
  • RangePartitioning
  • Clustering
  • Labels
  • DestinationEncryptionConfig
  • SchemaUpdateOptions
  • ConnectionProperties

Parameters is implemented but I forgot to remove it from the mini todo list in the statement.go.

ADBC callbacks/features

  • implement ExecuteSchema
  • implement ReadPartition
  • implement ExecutePartitions
  • implement Substrait execution
  • implement GetInfo, GetTableSchema and other functions for BigQuery's AdbcConnection and AdbcStatement
  • implemented transactions
  • implements driverbase.DbObjectsEnumerator
    • GetObjectsCatalogs
    • GetObjectsDbSchemas
    • GetObjectsTables

Missing Types

From BigQuery to Arrow

  • bigquery.IntervalFieldType
  • bigquery.RangeFieldType
  • bigquery.GeographyFieldType, this one is returned as strings for now. But we can potentially consider using GeoArrow for this.

From Arrow to BigQuery

  • arrow.DURATION, I'm not sure which SQL DataType would be a good representation for it. DATETIME could be a potential one for it if we count from 0001-01-01T00:00:00.000000Z
  • arrow.INTERVAL_MONTHS
  • arrow.INTERVAL_DAY_TIME
  • arrow.INTERVAL_MONTH_DAY_NANO, DATETIME could be a potential fit for all interval types, but the issue is there're no rules on how many days should be in a month.
  • arrow.RUN_END_ENCODED
  • arrow.SPARSE_UNION
  • arrow.DENSE_UNION
  • arrow.DICTIONARY
  • arrow.MAP

Docs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions