dbsql

package module
v1.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 13, 2026 License: Apache-2.0 Imports: 38 Imported by: 37

README

Databricks SQL Driver for Go

Description

This repo contains a Databricks SQL Driver for Go's database/sql package. It can be used to connect and query Databricks clusters and SQL Warehouses.

Documentation

See doc.go for full documentation or the Databrick's documentation for SQL Driver for Go.

Usage

import (
  "context"
  "database/sql"
  _ "github.com/databricks/databricks-sql-go"
)

db, err := sql.Open("databricks", "token:********@********.databricks.com:443/sql/1.0/endpoints/********")
if err != nil {
  panic(err)
}
defer db.Close()


rows, err := db.QueryContext(context.Background(), "SELECT 1")
defer rows.Close()

Additional usage examples are available here.

Connecting with DSN (Data Source Name)

The DSN format is:

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?param=value

The token:[your token]@ prefix authenticates with a personal access token (PAT). For other authentication types, omit the prefix and use the authType, clientID/clientSecret, or accessToken parameters described below.

Supported connection parameters

Optional parameters can be appended to the DSN as ?param=value&param=value:

Parameter Description Default
catalog Sets the initial catalog name in the session
schema Sets the initial schema name in the session
maxRows Max rows fetched per network request 100000
timeout Server-side query execution timeout, in seconds no timeout
userAgentEntry Identifies your application (partners/ISVs). Format: <isv-name+product-name>
useCloudFetch Enables Cloud Fetch to fetch large results in parallel via cloud storage true
maxDownloadThreads Number of concurrent Cloud Fetch download goroutines 10
authType Authentication type. One of Pat, OauthM2M, OauthU2M inferred from params
accessToken Personal access token. Used when authType=Pat
clientID Service principal client ID. Used with OAuth M2M
clientSecret Service principal client secret. Used with OAuth M2M

Any parameter not listed above (e.g. ansi_mode, timezone) is passed through as a session parameter.

For example, to set a query timeout and max rows per request:

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?timeout=1000&maxRows=1000
Cloud Fetch

Cloud Fetch (enabled by default) increases the performance of extracting large query results by fetching data in parallel via cloud storage (more info here). You can set the number of concurrently fetching goroutines with maxDownloadThreads:

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?useCloudFetch=true&maxDownloadThreads=3

To disable Cloud Fetch (e.g., when handling smaller datasets or to avoid additional overhead), append useCloudFetch=false:

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?useCloudFetch=false
Authenticating with OAuth (client ID and secret)

To authenticate with OAuth machine-to-machine (M2M) credentials instead of a personal access token, leave the token:...@ prefix off the DSN and pass the service principal's clientID and clientSecret as query parameters:

[Workspace hostname]:[Port number][Endpoint HTTP Path]?authType=OauthM2M&clientID=[your client ID]&clientSecret=[your client secret]

The authType=OauthM2M parameter is optional — supplying clientID and clientSecret is enough to select OAuth M2M authentication.

To authenticate interactively with OAuth user-to-machine (U2M) credentials (opens a browser login flow), set authType=OauthU2M with no token or client credentials:

[Workspace hostname]:[Port number][Endpoint HTTP Path]?authType=OauthU2M
Setting the user agent

To identify your application (e.g. for partners/ISVs), append a userAgentEntry query parameter with the format <isv-name+product-name>:

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?userAgentEntry=[your-isv-name+product-name]
Telemetry Configuration (Optional)

The driver includes optional telemetry to help improve performance and reliability. Telemetry is disabled by default and requires explicit opt-in.

Opt-in to telemetry (respects server-side feature flags):

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?enableTelemetry=true

Opt-out of telemetry (explicitly disable):

token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?enableTelemetry=false

What data is collected:

  • ✅ Query latency and performance metrics
  • ✅ Error codes (not error messages)
  • ✅ Feature usage (CloudFetch, LZ4, etc.)
  • ✅ Driver version and environment info

What is NOT collected:

  • ❌ SQL query text
  • ❌ Query results or data values
  • ❌ Table/column names
  • ❌ User identities or credentials

Telemetry has < 1% performance overhead and uses circuit breaker protection to ensure it never impacts your queries. For more details, see telemetry/DESIGN.md and telemetry/TROUBLESHOOTING.md.

Connecting with a new Connector

You can also connect with a new connector object. For example:

import (
"database/sql"
  _ "github.com/databricks/databricks-sql-go"
)

connector, err := dbsql.NewConnector(
  dbsql.WithServerHostname(<Workspace hostname>),
  dbsql.WithPort(<Port number>),
  dbsql.WithHTTPPath(<Endpoint HTTP Path>),
  dbsql.WithAccessToken(<your token>)
)
if err != nil {
  log.Fatal(err)
}
db := sql.OpenDB(connector)
defer db.Close()

View doc.go or connector.go to understand all the functional options available when creating a new connector object.

Develop

Lint

We use golangci-lint as the lint tool. If you use vs code, just add the following settings:

{
    "go.lintTool": "golangci-lint",
    "go.lintFlags": [
        "--fast"
    ]
}
Unit Tests
go test

Issues

If you find any issues, feel free to create an issue or send a pull request directly.

Contributing

See CONTRIBUTING.md

License

Apache 2.0

Documentation

Overview

Package dbsql implements the go driver to Databricks SQL

Usage

Clients should use the database/sql package in conjunction with the driver:

import (
	"database/sql"

	_ "github.com/databricks/databricks-sql-go"
)

func main() {
	db, err := sql.Open("databricks", "token:<token>@<hostname>:<port>/<endpoint_path>")

	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()
}

Connection via DSN (Data Source Name)

Use sql.Open() to create a database handle via a data source name string:

db, err := sql.Open("databricks", "<dsn_string>")

The DSN format is:

token:[my_token]@[hostname]:[port]/[endpoint http path]?param=value

Supported optional connection parameters can be specified in param=value and include:

  • catalog: Sets the initial catalog name in the session
  • schema: Sets the initial schema name in the session
  • maxRows: Sets up the max rows fetched per request. Default is 100000
  • timeout: Adds timeout (in seconds) for the server query execution. Default is no timeout
  • userAgentEntry: Used to identify partners. Set as a string with format <isv-name+product-name>
  • useCloudFetch: Used to enable cloud fetch for the query execution. Default is true
  • maxDownloadThreads: Sets up the max number of concurrent workers for cloud fetch. Default is 10
  • useArrowNativeDecimal: Returns DECIMAL columns as native Arrow decimal128 (via GetArrowBatches); when scanned through database/sql they are returned as lossless strings. Default is false
  • authType: Specifies the desired authentication type. Valid values are: Pat, OauthM2M, OauthU2M
  • accessToken: Personal access token. Required if authType set to Pat
  • clientID: Specifies the client ID to use with OauthM2M
  • clientSecret: Specifies the client secret to use with OauthM2M

Supported optional session parameters can be specified in param=value and include:

  • ansi_mode: (Boolean string). Session statements will adhere to rules defined by ANSI SQL specification.
  • timezone: (e.g. "America/Los_Angeles"). Sets the timezone of the session

Connection via new connector object

Use sql.OpenDB() to create a database handle via a new connector object created with dbsql.NewConnector():

import (
	"database/sql"
	dbsql "github.com/databricks/databricks-sql-go"
)

func main() {
	connector, err := dbsql.NewConnector(
		dbsql.WithServerHostname(<hostname>),
		dbsql.WithPort(<port>),
		dbsql.WithHTTPPath(<http_path>),
		dbsql.WithAccessToken(<my_token>)
	)
	if err != nil {
		log.Fatal(err)
	}

	db := sql.OpenDB(connector)
	defer db.Close()
	...
}

Supported functional options include:

  • WithServerHostname(<hostname> string): Sets up the server hostname. The hostname can be prefixed with "http:" or "https:" to specify a protocol to use. Mandatory
  • WithPort(<port> int): Sets up the server port. Mandatory
  • WithAccessToken(<my_token> string): Sets up the Personal Access Token. Mandatory
  • WithHTTPPath(<http_path> string): Sets up the endpoint to the warehouse. Mandatory
  • WithInitialNamespace(<catalog> string, <schema> string): Sets up the catalog and schema name in the session. Optional
  • WithMaxRows(<max_rows> int): Sets up the max rows fetched per request. Default is 100000. Optional
  • WithSessionParams(<params_map> map[string]string): Sets up session parameters including "timezone" and "ansi_mode". Optional
  • WithTimeout(<timeout> Duration). Adds timeout (in time.Duration) for the server query execution. Default is no timeout. Optional
  • WithUserAgentEntry(<isv-name+product-name> string). Used to identify partners. Optional
  • WithCloudFetch (bool). Used to enable cloud fetch for the query execution. Default is true. Optional
  • WithMaxDownloadThreads (<num_threads> int). Sets up the max number of concurrent workers for cloud fetch. Default is 10. Optional
  • WithAuthenticator (<authenticator> auth.Authenticator). Sets up authentication. Required if neither access token or client credentials are provided.
  • WithClientCredentials(<clientID> string, <clientSecret> string). Sets up Oauth M2M authentication.

Query cancellation and timeout

Cancelling a query via context cancellation or timeout is supported.

// Set up context timeout
ctx, cancel := context.WithTimeout(context.Background(), 30 * time.Second)
defer cancel()

// Execute query. Query will be cancelled after 30 seconds if still running
res, err := db.ExecContext(ctx, "CREATE TABLE example(id int, message string)")

CorrelationId and ConnId

Use the driverctx package under driverctx/ctx.go to add CorrelationId and ConnId to the context. CorrelationId and ConnId makes it convenient to parse and create metrics in logging.

**Connection Id** Internal id to track what happens under a connection. Connections can be reused so this would track across queries.

**Query Id** Internal id to track what happens under a query. Useful because the same query can be used with multiple connections.

**Correlation Id** External id, such as request ID, to track what happens under a request. Useful to track multiple connections in the same request.

ctx := dbsqlctx.NewContextWithCorrelationId(context.Background(), "workflow-example")

Logging

Use the logger package under logger.go to set up logging (from zerolog). By default, logging level is `warn`. If you want to disable logging, use `disabled`. The user can also utilize Track() and Duration() to custom log the elapsed time of anything tracked.

import (
	dbsqllog "github.com/databricks/databricks-sql-go/logger"
	dbsqlctx "github.com/databricks/databricks-sql-go/driverctx"
)

func main() {
	// Optional. Set the logging level with SetLogLevel()
	if err := dbsqllog.SetLogLevel("debug"); err != nil {
		log.Fatal(err)
	}

	// Optional. Set logging output with SetLogOutput()
	// Default is os.Stderr. If running in terminal, logger will use ConsoleWriter to prettify logs
	dbsqllog.SetLogOutput(os.Stdout)

	// Optional. Set correlation id with NewContextWithCorrelationId
	ctx := dbsqlctx.NewContextWithCorrelationId(context.Background(), "workflow-example")

	// Optional. Track time spent and log elapsed time
	msg, start := logger.Track("Run Main")
	defer log.Duration(msg, start)

	db, err := sql.Open("databricks", "<dsn_string>")
	...
}

The result log may look like this:

{"level":"debug","connId":"01ed6545-5669-1ec7-8c7e-6d8a1ea0ab16","corrId":"workflow-example","queryId":"01ed6545-57cc-188a-bfc5-d9c0eaf8e189","time":1668558402,"message":"Run Main elapsed time: 1.298712292s"}

Programmatically Retrieving Connection and Query Id

Use the driverctx package under driverctx/ctx.go to add callbacks to the query context to receive the connection id and query id.

import (
	"github.com/databricks/databricks-sql-go/driverctx"
)

func main() {

	...

	qidCallback := func(id string) {
		fmt.Println("query id: " + id)
	}

	connIdCallback := func(id string) {
		fmt.Println("connection id: " + id)
	}

	ctx := context.Background()
	ctx = driverctx.NewContextWithQueryIdCallback(ctx, qidCallback)
	ctx = driverctx.NewContextWithConnIdCallback(ctx, connIdCallback)

	rows, err1 := db.QueryContext(ctx, `select * from sometable`)

	...

}

Query parameters

Passing parameters to a query is supported when run against servers with version DBR 14.1.

// Named parameters:
p := dbsql.Parameter{Name: "p_bool", Value: true},
rows, err := db.QueryContext(ctx, `select * from sometable where condition=:p_bool`,dbsql.Parameter{Name: "p_bool", Value: true})

// Positional parameters - both `dbsql.Parameter` and plain values can be used:
rows, err := db.Query(`select *, ? from sometable where field=?`,dbsql.Parameter{Value: "123.456"}, "another parameter")

For complex types, you can specify the SQL type using the dbsql.Parameter type field. If this field is set, the value field MUST be set to a string.

Please note that named and positional parameters cannot be used together in the single query.

Staging Ingestion

The Go driver now supports staging operations. In order to use a staging operation, you first must update the context with a list of folders that you are allowing the driver to access.

ctx := driverctx.NewContextWithStagingInfo(context.Background(), []string{"staging/"})

After doing so, you can execute staging operations using this context using the exec context.

_, err1 := db.ExecContext(ctx, `PUT 'staging/file.csv' INTO '/Volumes/main/staging_test/e2etests/file.csv' OVERWRITE`)

Errors

There are three error types exposed via dbsql/errors

DBDriverError - An error in the go driver. Example: unimplemented functionality, invalid driver state, errors processing a server response, etc.

DBRequestError - An error that is caused by an invalid request. Example: permission denied, invalid http path or other connection parameter, resource not available, etc.

DBExecutionError - Any error that occurs after the SQL statement has been accepted such as a SQL syntax error, missing table, etc.

Each type has a corresponding sentinel value which can be used with errors.Is() to determine if one of the types is present in an error chain.

DriverError
RequestError
ExecutionError

Example usage:

import (
	fmt
	errors
	dbsqlerr "github.com/databricks/databricks-sql-go/errors"
)

func main() {
	...
	_, err := db.ExecContext(ogCtx, `Select id from range(100)`)
	if err != nil {
		if errors.Is(err, dbsqlerr.ExecutionError) {
			var execErr dbsqlerr.DBExecutionError
			if ok := errors.As(err, &execError); ok {
					fmt.Printf("%s, corrId: %s, connId: %s, queryId: %s, sqlState: %s, isRetryable: %t, retryAfter: %f seconds",
					execErr.Error(),
					execErr.CorrelationId(),
					execErr.ConnectionId(),
					execErr.QueryId(),
					execErr.SqlState(),
				    execErr.IsRetryable(),
					execErr.RetryAfter().Seconds(),
				)
			}
		}
		...
	}
	...
}

See the documentation for dbsql/errors for more information.

Retrieving Arrow Batches

The driver supports the ability to retrieve Apache Arrow record batches. To work with record batches it is necessary to use sql.Conn.Raw() to access the underlying driver connection to retrieve a driver.Rows instance. The driver exposes two public interfaces for working with record batches from the rows sub-package:

type Rows interface {
	GetArrowBatches(context.Context) (ArrowBatchIterator, error)
}

type ArrowBatchIterator interface {
	// Retrieve the next arrow.Record.
	// Will return io.EOF if there are no more records
	Next() (arrow.Record, error)

	// Return true if the iterator contains more batches, false otherwise.
	HasNext() bool

	// Release any resources in use by the iterator.
	Close()
}

The driver.Rows instance retrieved using Conn.Raw() can be converted to a Databricks Rows instance via a type assertion, then use GetArrowBatches() to retrieve a batch iterator. If the ArrowBatchIterator is not closed it will leak resources, such as the underlying connection. Calling code must call Release() on records returned by DBSQLArrowBatchIterator.Next().

Example usage:

import (
	...
	dbsqlrows "github.com/databricks/databricks-sql-go/rows"
)

func main() {
	...
	db := sql.OpenDB(connector)
	defer db.Close()

	conn, _ := db.Conn(context.BackGround())
	defer conn.Close()

	query := `select * from main.default.taxi_trip_data`

	var rows driver.Rows
	var err error
	err = conn.Raw(func(d interface{}) error {
		rows, err = d.(driver.QueryerContext).QueryContext(ctx, query, nil)
		return err
	})

	if err != nil {
		log.Fatalf("unable to run the query. err: %v", err)
	}
	defer rows.Close()

	batches, err := rows.(dbsqlrows.Rows).GetArrowBatches(context.BackGround())
	if err != nil {
		log.Fatalf("unable to get arrow batches. err: %v", err)
	}

	var iBatch, nRows int
	for batches.HasNext() {
		b, err := batches.Next()
		if err != nil {
			log.Fatalf("Failure retrieving batch. err: %v", err)
		}

		log.Printf("batch %v: nRecords=%v\n", iBatch, b.NumRows())
		iBatch += 1
		nRows += int(b.NumRows())
		b.Release()
	}
	log.Printf("NRows: %v\n", nRows)
}

Supported Data Types

==================================

Databricks Type --> Golang Type

==================================

BOOLEAN --> bool

TINYINT --> int8

SMALLINT --> int16

INT --> int32

BIGINT --> int64

FLOAT --> float32

DOUBLE --> float64

VOID --> nil

STRING --> string

DATE --> time.Time

TIMESTAMP --> time.Time

DECIMAL(p,s) --> sql.RawBytes

BINARY --> sql.RawBytes

ARRAY<elementType> --> sql.RawBytes

STRUCT --> sql.RawBytes

MAP<keyType, valueType> --> sql.RawBytes

INTERVAL (year-month) --> string

INTERVAL (day-time) --> string

For ARRAY, STRUCT, and MAP types, sql.Scan can cast sql.RawBytes to JSON string, which can be unmarshalled to Golang arrays, maps, and structs. For example:

type structVal struct {
		StringField string `json:"string_field"`
		ArrayField  []int  `json:"array_field"`
}
type row struct {
	arrayVal  []int
	mapVal    map[string]int
	structVal structVal
}
res := []row{}

for rows.Next() {
	r := row{}
	tempArray := []byte{}
	tempStruct := []byte{}
	tempMap := []byte{}
	if err := rows.Scan(&tempArray, &tempMap, &tempStruct); err != nil {
		log.Fatal(err)
	}
	if err := json.Unmarshal(tempArray, &r.arrayVal); err != nil {
		log.Fatal(err)
	}
	if err := json.Unmarshal(tempMap, &r.mapVal); err != nil {
		log.Fatal(err)
	}
	if err := json.Unmarshal(tempStruct, &r.structVal); err != nil {
		log.Fatal(err)
	}
	res = append(res, r)
}

May generate the following row:

{arrayVal:[1,2,3] mapVal:{"key1":1} structVal:{"string_field":"string_val","array_field":[4,5,6]}}

Index

Constants

This section is empty.

Variables

View Source
var DriverVersion = "1.14.0" // update version before each release

Functions

func NewConnector

func NewConnector(options ...ConnOption) (driver.Connector, error)

NewConnector creates a connection that can be used with `sql.OpenDB()`. This is an easier way to set up the DB instead of having to construct a DSN string.

func SerializeQueryTags added in v1.11.0

func SerializeQueryTags(tags map[string]string) string

SerializeQueryTags converts a map of query tags to the wire format string. The format is comma-separated key:value pairs (e.g., "team:engineering,app:etl").

Escaping rules (consistent with Python and NodeJS connectors):

  • Keys: only backslashes are escaped
  • Values: backslashes, colons, and commas are escaped with a leading backslash
  • Empty string values result in just the key being emitted (no colon)

Returns empty string if the map is nil or empty.

The implementation lives in internal/querytags so the execution backends can share it without importing this package; this remains the public entry point.

func Succeeded added in v1.5.0

func Succeeded(response *http.Response) bool

Types

type ConnOption added in v1.6.0

type ConnOption func(*config.Config)

func WithAccessToken added in v0.2.0

func WithAccessToken(token string) ConnOption

WithAccessToken sets up the Personal Access Token. Mandatory for now.

func WithArrowNativeDecimal added in v1.13.1

func WithArrowNativeDecimal(useNativeDecimal bool) ConnOption

WithArrowNativeDecimal controls whether DECIMAL columns are returned as native Arrow decimal128 values. Default is false, in which case the server returns DECIMAL columns as strings.

When enabled, DECIMAL columns retrieved via GetArrowBatches carry the native arrow.Decimal128 type. When scanned through the standard database/sql Rows interface, DECIMAL values are returned as lossless, scale-applied strings to avoid the precision loss that a float64 would introduce.

See https://github.com/databricks/databricks-sql-go/issues/274.

func WithAuthenticator added in v1.3.0

func WithAuthenticator(authr auth.Authenticator) ConnOption

WithAuthenticator sets up the Authentication. Mandatory if access token is not provided.

func WithClientCredentials added in v1.5.0

func WithClientCredentials(clientID, clientSecret string) ConnOption

Setup of Oauth M2m authentication

func WithCloudFetch added in v1.4.0

func WithCloudFetch(useCloudFetch bool) ConnOption

WithCloudFetch sets up the use of cloud fetch for query execution. Default is false.

func WithEnableMetricViewMetadata added in v1.10.0

func WithEnableMetricViewMetadata(enable bool) ConnOption

WithEnableMetricViewMetadata enables metric view metadata support. Default is false. When enabled, adds spark.sql.thriftserver.metadata.metricview.enabled=true to session configuration.

func WithExternalToken added in v1.10.0

func WithExternalToken(tokenFunc func() (string, error)) ConnOption

WithExternalToken sets up authentication using an external token function (passthrough)

func WithFederatedTokenProvider added in v1.10.0

func WithFederatedTokenProvider(baseProvider tokenprovider.TokenProvider) ConnOption

WithFederatedTokenProvider sets up authentication using token federation It wraps the base provider and automatically handles token exchange if needed

func WithFederatedTokenProviderAndClientID added in v1.10.0

func WithFederatedTokenProviderAndClientID(baseProvider tokenprovider.TokenProvider, clientID string) ConnOption

WithFederatedTokenProviderAndClientID sets up SP-wide token federation

func WithHTTPPath added in v0.2.0

func WithHTTPPath(path string) ConnOption

WithHTTPPath sets up the endpoint to the warehouse. Mandatory.

func WithInitialNamespace added in v0.2.0

func WithInitialNamespace(catalog, schema string) ConnOption

Sets the initial catalog name and schema name in the session. Use <select * from foo> instead of <select * from catalog.schema.foo>

func WithMaxDownloadThreads added in v1.4.0

func WithMaxDownloadThreads(numThreads int) ConnOption

WithMaxDownloadThreads sets up maximum download threads for cloud fetch. Default is 10.

func WithMaxRows added in v0.2.0

func WithMaxRows(n int) ConnOption

WithMaxRows sets up the max rows fetched per request. Default is 10000

func WithPort added in v0.2.0

func WithPort(port int) ConnOption

WithPort sets up the server port. Mandatory.

func WithQueryTags added in v1.11.0

func WithQueryTags(tags map[string]string) ConnOption

WithQueryTags sets session-level query tags from a map. Tags are serialized and passed as QUERY_TAGS in the session configuration. All queries in the session will carry these tags unless overridden at the statement level. This is the preferred way to set session-level query tags, as it handles serialization and escaping automatically (consistent with the statement-level API).

func WithRetries added in v1.1.0

func WithRetries(retryMax int, retryWaitMin time.Duration, retryWaitMax time.Duration) ConnOption

WithRetries sets up retrying logic. Sane defaults are provided. Negative retryMax will disable retry behavior By default retryWaitMin = 1 * time.Second By default retryWaitMax = 30 * time.Second By default retryMax = 4

func WithServerHostname added in v0.2.0

func WithServerHostname(host string) ConnOption

WithServerHostname sets up the server hostname. Mandatory.

func WithSessionParams added in v0.2.0

func WithSessionParams(params map[string]string) ConnOption

Session parameters are passed directly in TOpenSessionReq.Configuration during session creation.

func WithSkipTLSHostVerify added in v1.5.6

func WithSkipTLSHostVerify() ConnOption

WithSkipTLSHostVerify disables the verification of the hostname in the TLS certificate. WARNING: When this option is used, TLS is susceptible to machine-in-the-middle attacks. Please only use this option when the hostname is an internal private link hostname

func WithStaticToken added in v1.10.0

func WithStaticToken(token string) ConnOption

WithStaticToken sets up authentication using a static token

func WithTimeout added in v0.2.0

func WithTimeout(n time.Duration) ConnOption

WithTimeout adds timeout for the server query execution. Default is no timeout.

func WithTokenProvider added in v1.10.0

func WithTokenProvider(provider tokenprovider.TokenProvider) ConnOption

WithTokenProvider sets up authentication using a custom token provider

func WithTransport added in v1.4.0

func WithTransport(t http.RoundTripper) ConnOption

WithTransport sets up the transport configuration to be used by the httpclient.

func WithUserAgentEntry added in v0.2.0

func WithUserAgentEntry(entry string) ConnOption

Used to identify partners. Set as a string with format <isv-name+product-name>.

type Parameter added in v1.5.0

type Parameter struct {
	Name  string
	Type  SqlType
	Value any
}

type SqlType added in v1.5.0

type SqlType int
const (
	SqlUnkown SqlType = iota
	SqlString
	SqlDate
	SqlTimestamp
	SqlFloat
	SqlDecimal
	SqlDouble
	SqlInteger
	SqlBigInt
	SqlSmallInt
	SqlTinyInt
	SqlBoolean
	SqlIntervalMonth
	SqlIntervalDay
	SqlVoid
)

func (SqlType) String added in v1.5.0

func (s SqlType) String() string

Directories

Path Synopsis
pat
examples module
arrrowbatches command
browser_oauth_federation command
Example: Browser OAuth (U2M) Authentication
Example: Browser OAuth (U2M) Authentication
catalog command
cloudfetch command
createdrop command
error command
ipcstreams command
oauth command
parameters command
query_tags command
queryrow command
queryrows command
staging command
timeout command
timezone command
token_federation command
Example: Token Provider Authentication
Example: Token Provider Authentication
workflow command
internal
agent
Package agent detects whether the Go SQL driver is being invoked by an AI coding agent by checking for well-known environment variables that agents set in their spawned shell processes.
Package agent detects whether the Go SQL driver is being invoked by an AI coding agent by checking for well-known environment variables that agents set in their spawned shell processes.
backend
Package backend defines the execution-backend abstraction for the databricks-sql-go driver.
Package backend defines the execution-backend abstraction for the databricks-sql-go driver.
backend/thrift
Package thrift is the Thrift/HiveServer2 implementation of backend.Backend.
Package thrift is the Thrift/HiveServer2 implementation of backend.Backend.
debuglog
Package debuglog is the step-level debug tracer for the databricks-sql-go SEA/kernel integration.
Package debuglog is the step-level debug tracer for the databricks-sql-go SEA/kernel integration.
querytags
Package querytags holds the query-tag wire serialization shared by the public dbsql API and the execution backends.
Package querytags holds the query-tag wire serialization shared by the public dbsql API and the execution backends.
retry
Package retry provides shared HTTP retry/backoff helpers for transient object-storage failures (S3 SlowDown, 5xx, etc.).
Package retry provides shared HTTP retry/backoff helpers for transient object-storage failures (S3 SlowDown, 5xx, etc.).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL