This is an automated email from the ASF dual-hosted git repository.
curth pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new d4163d94c feat(go/adbc/driver/snowflake): add support for a client
config file (#2197)
d4163d94c is described below
commit d4163d94ce50d91b649fb50fe33d58e772bf0c54
Author: davidhcoe <[email protected]>
AuthorDate: Tue Oct 1 21:54:59 2024 -0400
feat(go/adbc/driver/snowflake): add support for a client config file (#2197)
Adds a new option to set a client config file to set
https://github.com/snowflakedb/gosnowflake/blob/a26ac8a1b9a0dda854ac5db9c2c145f79d5ac4c0/doc.go#L130
as a driver option.
---------
Co-authored-by: David Coe <[email protected]>
---
docs/source/driver/snowflake.rst | 4 ++++
go/adbc/driver/snowflake/driver.go | 2 ++
go/adbc/driver/snowflake/driver_test.go | 14 ++++++++++++++
go/adbc/driver/snowflake/snowflake_database.go | 4 ++++
4 files changed, 24 insertions(+)
diff --git a/docs/source/driver/snowflake.rst b/docs/source/driver/snowflake.rst
index cd33b3646..260254ee9 100644
--- a/docs/source/driver/snowflake.rst
+++ b/docs/source/driver/snowflake.rst
@@ -446,6 +446,10 @@ These options map 1:1 with the Snowflake `Config object
<https://pkg.go.dev/gith
disabled by setting this to ``true``. Value should be either ``true``
or ``false``.
+``adbc.snowflake.sql.client_option.config_file``
+ Specifies the location of the client configuration JSON file. See the
+ [Snowflake Go
docs](https://github.com/snowflakedb/gosnowflake/blob/a26ac8a1b9a0dda854ac5db9c2c145f79d5ac4c0/doc.go#L130)
for more details.
+
``adbc.snowflake.sql.client_option.tracing``
Set the logging level
diff --git a/go/adbc/driver/snowflake/driver.go
b/go/adbc/driver/snowflake/driver.go
index 5dd29ab43..cc1f9c80b 100644
--- a/go/adbc/driver/snowflake/driver.go
+++ b/go/adbc/driver/snowflake/driver.go
@@ -93,6 +93,8 @@ const (
OptionDisableTelemetry =
"adbc.snowflake.sql.client_option.disable_telemetry"
// snowflake driver logging level
OptionLogTracing = "adbc.snowflake.sql.client_option.tracing"
+ // snowflake driver client logging config file
+ OptionClientConfigFile = "adbc.snowflake.sql.client_option.config_file"
// When true, the MFA token is cached in the credential manager. True
by default
// on Windows/OSX, false for Linux
OptionClientRequestMFAToken =
"adbc.snowflake.sql.client_option.cache_mfa_token"
diff --git a/go/adbc/driver/snowflake/driver_test.go
b/go/adbc/driver/snowflake/driver_test.go
index e56ce179a..d4a12a6cd 100644
--- a/go/adbc/driver/snowflake/driver_test.go
+++ b/go/adbc/driver/snowflake/driver_test.go
@@ -2144,3 +2144,17 @@ func (suite *SnowflakeTests)
TestChangeDatabaseAndGetObjects() {
_, err2 := suite.cnxn.GetObjects(suite.ctx, adbc.ObjectDepthAll,
&newCatalog, &cfg.Schema, &getObjectsTable, nil, nil)
suite.NoError(err2)
}
+
+func (suite *SnowflakeTests) TestGetSetClientConfigFile() {
+ file := "fileNameJustForTest.json"
+ options := map[string]string{
+ driver.OptionClientConfigFile: file,
+ }
+ getSetDB, ok := suite.db.(adbc.GetSetOptions)
+ suite.True(ok)
+ err := suite.db.SetOptions(options)
+ suite.NoError(err)
+ result, err := getSetDB.GetOption(driver.OptionClientConfigFile)
+ suite.NoError(err)
+ suite.True(file == result)
+}
diff --git a/go/adbc/driver/snowflake/snowflake_database.go
b/go/adbc/driver/snowflake/snowflake_database.go
index 581d9733e..ed203d85b 100644
--- a/go/adbc/driver/snowflake/snowflake_database.go
+++ b/go/adbc/driver/snowflake/snowflake_database.go
@@ -125,6 +125,8 @@ func (d *databaseImpl) GetOption(key string) (string,
error) {
return adbc.OptionValueDisabled, nil
case OptionLogTracing:
return d.cfg.Tracing, nil
+ case OptionClientConfigFile:
+ return d.cfg.ClientConfigFile, nil
case OptionUseHighPrecision:
if d.useHighPrecision {
return adbc.OptionValueEnabled, nil
@@ -415,6 +417,8 @@ func (d *databaseImpl) SetOptions(cnOptions
map[string]string) error {
}
case OptionLogTracing:
d.cfg.Tracing = v
+ case OptionClientConfigFile:
+ d.cfg.ClientConfigFile = v
case OptionUseHighPrecision:
switch v {
case adbc.OptionValueEnabled: