Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ArrowConfig ¶ added in v1.1.0
type ArrowConfig struct {
UseArrowBatches bool
UseArrowNativeDecimal bool
UseArrowNativeTimestamp bool
// the following are currently not supported
UseArrowNativeComplexTypes bool
UseArrowNativeIntervalTypes bool
}
func (ArrowConfig) DeepCopy ¶ added in v1.1.0
func (arrowConfig ArrowConfig) DeepCopy() ArrowConfig
DeepCopy returns a true deep copy of UserConfig
func (ArrowConfig) WithDefaults ¶ added in v1.1.0
func (ucfg ArrowConfig) WithDefaults() ArrowConfig
type CloudFetchConfig ¶ added in v1.4.0
type CloudFetchConfig struct {
UseCloudFetch bool
MaxDownloadThreads int
MaxFilesInMemory int
MinTimeToExpiry time.Duration
CloudFetchSpeedThresholdMbps float64 // Minimum download speed in MBps before WARN logging (default: 0.1)
HTTPClient *http.Client
}
func (CloudFetchConfig) DeepCopy ¶ added in v1.4.0
func (cfg CloudFetchConfig) DeepCopy() CloudFetchConfig
func (CloudFetchConfig) WithDefaults ¶ added in v1.4.0
func (cfg CloudFetchConfig) WithDefaults() CloudFetchConfig
type Config ¶
type Config struct {
UserConfig
TLSConfig *tls.Config // nil disables TLS
ArrowConfig
PollInterval time.Duration
ClientTimeout time.Duration // max time the http request can last
PingTimeout time.Duration // max time allowed for ping
CanUseMultipleCatalogs bool
DriverName string
DriverVersion string
ThriftProtocol string
ThriftTransport string
ThriftProtocolVersion cli_service.TProtocolVersion
ThriftDebugClientProtocol bool
}
Driver Configurations. Only UserConfig are currently exposed to users
func (*Config) ToEndpointURL ¶
ToEndpointURL generates the endpoint URL from Config that a Thrift client will connect to
type ConfigValue ¶ added in v1.10.0
type ConfigValue[T any] struct { // contains filtered or unexported fields }
ConfigValue represents a configuration value that can be set by client or resolved from server. This implements the config overlay pattern: client > server > default
T is the type of the configuration value (bool, string, int, etc.)
Example usage:
type MyConfig struct {
EnableFeature ConfigValue[bool]
BatchSize ConfigValue[int]
}
// Client explicitly sets value (overrides server)
config.EnableFeature = NewConfigValue(true)
// Client doesn't set value (use server)
config.EnableFeature = ConfigValue[bool]{} // nil/unset
// Resolve value with overlay priority
enabled := config.EnableFeature.Resolve(ctx, serverResolver, defaultValue)
func NewConfigValue ¶ added in v1.10.0
func NewConfigValue[T any](value T) ConfigValue[T]
NewConfigValue creates a ConfigValue with a client-set value. The value will override any server-side configuration.
func ParseBoolConfigValue ¶ added in v1.10.0
func ParseBoolConfigValue(params map[string]string, key string) ConfigValue[bool]
ParseBoolConfigValue parses a string value into a ConfigValue[bool]. Returns unset ConfigValue if the parameter is not present.
Example:
params := map[string]string{"enableFeature": "true"}
value := ParseBoolConfigValue(params, "enableFeature")
// value.IsSet() == true, value.Get() == (true, true)
func ParseIntConfigValue ¶ added in v1.10.0
func ParseIntConfigValue(params map[string]string, key string) ConfigValue[int]
ParseIntConfigValue parses a string value into a ConfigValue[int]. Returns unset ConfigValue if the parameter is not present or invalid.
func ParseStringConfigValue ¶ added in v1.10.0
func ParseStringConfigValue(params map[string]string, key string) ConfigValue[string]
ParseStringConfigValue parses a string value into a ConfigValue[string]. Returns unset ConfigValue if the parameter is not present.
func (ConfigValue[T]) Get ¶ added in v1.10.0
func (cv ConfigValue[T]) Get() (T, bool)
Get returns the client-set value and whether it was set. If not set, returns zero value and false.
func (ConfigValue[T]) IsSet ¶ added in v1.10.0
func (cv ConfigValue[T]) IsSet() bool
IsSet returns true if the client explicitly set this configuration value.
func (ConfigValue[T]) Resolve ¶ added in v1.10.0
func (cv ConfigValue[T]) Resolve( ctx context.Context, serverResolver ServerResolver[T], defaultValue T, ) T
Resolve applies config overlay priority to determine the final value:
Priority 1: Client Config - if explicitly set (overrides server) Priority 2: Server Config - resolved via serverResolver (when client doesn't set) Priority 3: Default Value - used when server unavailable/errors (fail-safe)
Parameters:
- ctx: Context for server requests
- serverResolver: How to fetch from server (can be nil if no server config)
- defaultValue: Fail-safe default when client unset and server unavailable
Returns: The resolved configuration value following overlay priority
func (ConfigValue[T]) ResolveWithContext ¶ added in v1.10.0
func (cv ConfigValue[T]) ResolveWithContext( ctx context.Context, host string, httpClient *http.Client, serverResolver ServerResolver[T], defaultValue T, ) T
ResolveWithContext is a more flexible version that takes host and httpClient. This is the recommended method for production use.
type ServerResolver ¶ added in v1.10.0
type ServerResolver[T any] interface { // Resolve fetches the configuration value from the server. // Returns the value and any error encountered. // On error, the config overlay will fall back to the default value. Resolve(ctx context.Context, host string, httpClient *http.Client) (T, error) }
ServerResolver defines how to fetch a configuration value from the server. Implementations should handle caching, retries, and error handling.
type UserConfig ¶
type UserConfig struct {
Protocol string
Host string // from databricks UI
Port int // from databricks UI
HTTPPath string // from databricks UI
Catalog string
Schema string
Authenticator auth.Authenticator
AccessToken string // from databricks UI
MaxRows int // max rows per page
QueryTimeout time.Duration // Timeout passed to server for query processing
UserAgentEntry string
Location *time.Location
SessionParams map[string]string
RetryWaitMin time.Duration
RetryWaitMax time.Duration
RetryMax int
Transport http.RoundTripper
UseLz4Compression bool
EnableMetricViewMetadata bool
CloudFetchConfig
}
UserConfig is the set of configurations exposed to users
func ParseDSN ¶
func ParseDSN(dsn string) (UserConfig, error)
ParseDSN constructs UserConfig and CloudFetchConfig by parsing DSN string supplied to `sql.Open()`
func (UserConfig) DeepCopy ¶
func (ucfg UserConfig) DeepCopy() UserConfig
DeepCopy returns a true deep copy of UserConfig
func (UserConfig) WithDefaults ¶
func (ucfg UserConfig) WithDefaults() UserConfig
WithDefaults provides default settings for optional fields in UserConfig