Skip to content

Commit c282e5e

Browse files
author
HenryAtUber
committed
add one pseudo command get_driver_version
1 parent c536957 commit c282e5e

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

examples/pc_get_driver_version.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright (c) 2020 Uber Technologies, Inc.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a copy
4+
// of this software and associated documentation files (the "Software"), to deal
5+
// in the Software without restriction, including without limitation the rights
6+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
// copies of the Software, and to permit persons to whom the Software is
8+
// furnished to do so, subject to the following conditions:
9+
//
10+
// The above copyright notice and this permission notice shall be included in
11+
// all copies or substantial portions of the Software.
12+
//
13+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
// THE SOFTWARE.
20+
21+
package main
22+
23+
import (
24+
"context"
25+
"database/sql"
26+
"os"
27+
28+
secret "github.com/uber/athenadriver/examples/constants"
29+
drv "github.com/uber/athenadriver/go"
30+
)
31+
32+
func main() {
33+
// 1. Set AWS Credential in Driver Config.
34+
os.Setenv("AWS_SDK_LOAD_CONFIG", "1")
35+
conf, err := drv.NewDefaultConfig(secret.OutputBucket, secret.Region, secret.AccessID, secret.SecretAccessKey)
36+
conf.SetLogging(true)
37+
if err != nil {
38+
panic(err)
39+
return
40+
}
41+
42+
// 2. Open Connection.
43+
dsn := conf.Stringify()
44+
db, _ := sql.Open(drv.DriverName, dsn)
45+
46+
// 3. Query with pseudo command `pc:get_driver_version`
47+
rows, err := db.QueryContext(context.Background(), "pc:get_driver_version")
48+
if err != nil {
49+
panic(err)
50+
}
51+
defer rows.Close()
52+
println(drv.ColsRowsToCSV(rows))
53+
}
54+
55+
/*
56+
Sample Output:
57+
_col0
58+
1.1.5
59+
*/

go/connection.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ func (c *Connection) QueryContext(ctx context.Context, query string, namedArgs [
240240
query = strings.Trim(query[len(pseudoCommand):], " ")
241241
} else if pseudoCommand = PCStopQID; strings.HasPrefix(query, pseudoCommand+" ") {
242242
query = strings.Trim(query[len(pseudoCommand):], " ")
243+
} else if pseudoCommand = PCGetDriverVersion; strings.HasPrefix(query, pseudoCommand) {
244+
return c.getHeaderlessSingleRowResultPage(ctx, driverVersion)
243245
} else {
244246
return nil, fmt.Errorf("pseudo command " + query + "doesn't exist")
245247
}

go/constants.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,8 @@ const PCGetQIDStatus = "get_query_id_status"
103103

104104
// PCStopQID is the pseudo command to stop a query execution id
105105
const PCStopQID = "stop_query_id"
106+
107+
// PCGetDriverVersion is the pseudo command to get the version of athenadriver
108+
const PCGetDriverVersion = "get_driver_version"
109+
110+
const driverVersion = "1.1.5"

0 commit comments

Comments
 (0)