github.com/snowflakedb/gosnowflake@v1.9.0/cmd/distributedfetch/distributedfetch.go (about) 1 package main 2 3 import ( 4 "database/sql" 5 "flag" 6 "fmt" 7 "log" 8 9 sf "github.com/snowflakedb/gosnowflake" 10 ) 11 12 func main() { 13 defer printExampleDescription() 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 dsn, err := sf.DSN(cfg) 30 if err != nil { 31 log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err) 32 } 33 34 db, err := sql.Open("snowflake", dsn) 35 if err != nil { 36 log.Fatalf("failed to connect. %v, err: %v", dsn, err) 37 } 38 defer db.Close() 39 40 sf.GetLogger().SetLogLevel("debug") 41 42 query := "SELECT 1 FROM TABLE(GENERATOR(ROWCOUNT=>10000000))" 43 rows, err := db.Query(query) // no cancel is allowed 44 if err != nil { 45 log.Fatalf("failed to run a query. %v, err: %v", query, err) 46 } 47 defer rows.Close() 48 var v int 49 for rows.Next() { 50 err := rows.Scan(&v) 51 if err != nil { 52 log.Fatalf("failed to get result. err: %v", err) 53 } 54 if v != 1 { 55 log.Fatalf("failed to get 1. got: %v", v) 56 } 57 } 58 if rows.Err() != nil { 59 fmt.Printf("ERROR: %v\n", rows.Err()) 60 return 61 } 62 63 sf.GetLogger().SetLogLevel("error") 64 } 65 66 func printExampleDescription() { 67 fmt.Printf(` 68 Logs should present links from which particular chunks has been downloaded. 69 Also, notice logs like "decoded <number> rows" from multiple goroutines (the number after log level), as chunks are downloaded in parallel. 70 `) 71 }