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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions