github.com/snowflakedb/gosnowflake@v1.9.0/cmd/showparam/showparam.go (about) 1 // Example: Set the session parameter in DSN and verify it 2 package main 3 4 import ( 5 "database/sql" 6 "flag" 7 "fmt" 8 "log" 9 10 sf "github.com/snowflakedb/gosnowflake" 11 ) 12 13 func main() { 14 if !flag.Parsed() { 15 flag.Parse() 16 } 17 18 cfg, err := sf.GetConfigFromEnv([]*sf.ConfigParam{ 19 {Name: "Account", EnvName: "SNOWFLAKE_TEST_ACCOUNT", FailOnMissing: true}, 20 {Name: "User", EnvName: "SNOWFLAKE_TEST_USER", FailOnMissing: true}, 21 {Name: "Password", EnvName: "SNOWFLAKE_TEST_PASSWORD", FailOnMissing: true}, 22 {Name: "Host", EnvName: "SNOWFLAKE_TEST_HOST", FailOnMissing: false}, 23 {Name: "Port", EnvName: "SNOWFLAKE_TEST_PORT", FailOnMissing: false}, 24 {Name: "Protocol", EnvName: "SNOWFLAKE_TEST_PROTOCOL", FailOnMissing: false}, 25 }) 26 if err != nil { 27 log.Fatalf("failed to create Config, err: %v", err) 28 } 29 tmfmt := "MM-DD-YYYY" 30 cfg.Params = map[string]*string{ 31 "TIMESTAMP_OUTPUT_FORMAT": &tmfmt, // session parameter 32 } 33 dsn, err := sf.DSN(cfg) 34 if err != nil { 35 log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err) 36 } 37 38 db, err := sql.Open("snowflake", dsn) 39 if err != nil { 40 log.Fatalf("failed to connect. err: %v", err) 41 } 42 defer db.Close() 43 query := "SHOW PARAMETERS LIKE 'TIMESTAMP_OUTPUT_FORMAT'" 44 rows, err := db.Query(query) // no cancel is allowed 45 if err != nil { 46 log.Fatalf("failed to run a query. %v, err: %v", query, err) 47 } 48 defer rows.Close() 49 50 for rows.Next() { 51 p, err := sf.ScanSnowflakeParameter(rows) 52 if err != nil { 53 log.Fatalf("failed to get result. err: %v", err) 54 } 55 if p.Key != "TIMESTAMP_OUTPUT_FORMAT" { 56 log.Fatalf("failed to get TIMESTAMP_. got: %v", p.Value) 57 } 58 fmt.Printf("fmt: %v\n", p.Value) 59 } 60 if rows.Err() != nil { 61 fmt.Printf("ERROR: %v\n", rows.Err()) 62 return 63 } 64 fmt.Printf("Congrats! You have successfully run %v with Snowflake DB!\n", query) 65 }