This repository has been archived by the owner on Dec 13, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
exampleSqlGo110_test.go
100 lines (84 loc) · 2.16 KB
/
exampleSqlGo110_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// +build go1.10
package cql_test
import (
"context"
"database/sql"
"fmt"
"time"
"github.com/MichaelS11/go-cql-driver"
"github.com/gocql/gocql"
)
func Example_sqlConnector() {
// Example shows how to use OpenDB Connector
// Normal NewConnector to localhost would look like:
// connector := cql.NewConnector("127.0.0.1")
// For testing, need to use additional variables
connector := cql.NewConnector(cql.TestHostValid)
db := sql.OpenDB(connector)
// If you would like change some of the ClusterConfig options
// https://godoc.org/github.com/gocql/gocql#ClusterConfig
// Can do a type cast to get to them
cqlConnector := connector.(*cql.CqlConnector)
cqlConnector.ClusterConfig.Timeout = cql.TimeoutValid
cqlConnector.ClusterConfig.ConnectTimeout = cql.ConnectTimeoutValid
if cql.EnableAuthentication {
passwordAuthenticator := gocql.PasswordAuthenticator{
Username: cql.Username,
Password: cql.Password,
}
cqlConnector.ClusterConfig.Authenticator = passwordAuthenticator
}
ctx, cancel := context.WithTimeout(context.Background(), 55*time.Second)
defer cancel()
rows, err := db.QueryContext(ctx, "select cql_version from system.local")
if err != nil {
fmt.Println("QueryContext error is not nil:", err)
return
}
if !rows.Next() {
fmt.Println("no Next rows")
return
}
dest := make([]interface{}, 1)
destPointer := make([]interface{}, 1)
destPointer[0] = &dest[0]
err = rows.Scan(destPointer...)
if err != nil {
fmt.Println("Scan error is not nil:", err)
return
}
if len(dest) != 1 {
fmt.Println("len dest != 1")
return
}
data, ok := dest[0].(string)
if !ok {
fmt.Println("dest type not string")
return
}
if len(data) < 3 {
fmt.Println("data string len too small")
return
}
if rows.Next() {
fmt.Println("has Next rows")
return
}
err = rows.Close()
if err != nil {
fmt.Println("Close error is not nil:", err)
return
}
err = rows.Err()
if err != nil {
fmt.Println("Err error is not nil:", err)
return
}
err = db.Close()
if err != nil {
fmt.Println("Close error is not nil:", err)
return
}
fmt.Println("received cql_version from system.local")
// output: received cql_version from system.local
}