Skip to content

Commit 8b6d1a4

Browse files
committed
Update driver to work without dataset
For running management queries on a bigquery instance, ie. create/delete datasets, we need the bigquery driver to work with connection-strings where we don't provide the dataset. This diff solves that with minimal changes, to keep the fork not deviate too much from the OSS driver.
1 parent 299ce22 commit 8b6d1a4

12 files changed

+113
-525
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@
1313

1414
# Dependency directories (remove the comment below to include it)
1515
# vendor/
16+
17+
.idea/

adaptor.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package bigquery
22

33
import (
44
"database/sql/driver"
5-
"gorm.io/driver/bigquery/adaptor"
5+
"reflect"
6+
7+
"github.com/scaledata/bigquery/adaptor"
68
"gorm.io/gorm"
79
"gorm.io/gorm/schema"
8-
"reflect"
910
)
1011

1112
type bigQuerySchemaAdaptor struct {

bigquery.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ package bigquery
33
import (
44
"database/sql"
55
"fmt"
6-
"gorm.io/driver/bigquery/adaptor"
7-
_ "gorm.io/driver/bigquery/driver"
6+
"reflect"
7+
"regexp"
8+
"strings"
9+
10+
"github.com/scaledata/bigquery/adaptor"
11+
_ "github.com/scaledata/bigquery/driver"
812
"gorm.io/gorm"
913
"gorm.io/gorm/clause"
1014
"gorm.io/gorm/logger"
1115
"gorm.io/gorm/migrator"
1216
"gorm.io/gorm/schema"
13-
"reflect"
14-
"regexp"
15-
"strings"
1617
)
1718

1819
type Dialector struct {

callbacks.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package bigquery
22

33
import (
4-
"gorm.io/driver/bigquery/adaptor"
4+
"github.com/scaledata/bigquery/adaptor"
55
"gorm.io/gorm"
66
"gorm.io/gorm/callbacks"
77
)

driver/columns.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import (
55
"encoding/json"
66

77
"cloud.google.com/go/bigquery"
8-
"gorm.io/driver/bigquery/adaptor"
8+
9+
"github.com/scaledata/bigquery/adaptor"
910
)
1011

1112
type bigQuerySchema interface {

driver/driver.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func configFromUri(uri string) (*bigQueryConfig, error) {
6666
return nil, fmt.Errorf("invalid prefix, expected bigquery:// got: %s", uri)
6767
}
6868

69-
if u.Path == "" {
69+
if u.Hostname() == "" {
7070
return nil, invalidConnectionStringError(uri)
7171
}
7272

@@ -75,9 +75,15 @@ func configFromUri(uri string) (*bigQueryConfig, error) {
7575
return nil, invalidConnectionStringError(uri)
7676
}
7777

78+
// Check if dataset was provided
79+
datasetName := ""
80+
if len(fields) >= 1 {
81+
datasetName = fields[len(fields)-1]
82+
}
83+
7884
config := &bigQueryConfig{
7985
projectID: u.Hostname(),
80-
dataSet: fields[len(fields)-1],
86+
dataSet: datasetName,
8187
scopes: getScopes(u.Query()),
8288
endpoint: u.Query().Get("endpoint"),
8389
disableAuth: u.Query().Get("disable_auth") == "true",

driver/rows.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package driver
22

33
import (
44
"database/sql/driver"
5-
"google.golang.org/api/iterator"
6-
"gorm.io/driver/bigquery/adaptor"
75
"io"
6+
7+
"github.com/scaledata/bigquery/adaptor"
8+
"google.golang.org/api/iterator"
89
)
910

1011
type bigQueryRows struct {

driver/source.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package driver
22

33
import (
4-
"cloud.google.com/go/bigquery"
54
"errors"
6-
"gorm.io/driver/bigquery/adaptor"
75
"io"
6+
7+
"cloud.google.com/go/bigquery"
8+
9+
"github.com/scaledata/bigquery/adaptor"
810
)
911

1012
type bigQuerySource interface {

driver/statement.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package driver
22

33
import (
4-
"cloud.google.com/go/bigquery"
54
"context"
65
"database/sql/driver"
76
"errors"
7+
8+
"cloud.google.com/go/bigquery"
89
"github.com/sirupsen/logrus"
9-
"gorm.io/driver/bigquery/adaptor"
10+
11+
"github.com/scaledata/bigquery/adaptor"
1012
)
1113

1214
type bigQueryStatement struct {

go.mod

+33-16
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,38 @@
1-
module gorm.io/driver/bigquery
1+
module github.com/scaledata/bigquery
22

3-
go 1.16
3+
go 1.19
44

55
require (
6-
cloud.google.com/go/bigquery v1.42.0
7-
cloud.google.com/go/iam v0.5.0 // indirect
8-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
9-
github.com/googleapis/gax-go/v2 v2.6.0 // indirect
10-
github.com/jinzhu/now v1.1.5 // indirect
11-
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
12-
github.com/sirupsen/logrus v1.9.0
13-
github.com/stretchr/testify v1.8.0
14-
golang.org/x/net v0.7.0 // indirect
15-
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect
16-
google.golang.org/api v0.99.0
17-
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a // indirect
18-
google.golang.org/grpc v1.50.1 // indirect
19-
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
6+
cloud.google.com/go/bigquery v1.12.0
7+
github.com/sirupsen/logrus v1.6.0
8+
github.com/stretchr/testify v1.4.0
9+
google.golang.org/api v0.32.0
2010
gorm.io/gorm v1.24.0
2111
)
12+
13+
require (
14+
cloud.google.com/go v0.68.0 // indirect
15+
github.com/davecgh/go-spew v1.1.1 // indirect
16+
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
17+
github.com/golang/protobuf v1.4.2 // indirect
18+
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
19+
github.com/jinzhu/inflection v1.0.0 // indirect
20+
github.com/jinzhu/now v1.1.4 // indirect
21+
github.com/jstemmer/go-junit-report v0.9.1 // indirect
22+
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
23+
github.com/pmezard/go-difflib v1.0.0 // indirect
24+
go.opencensus.io v0.22.4 // indirect
25+
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
26+
golang.org/x/mod v0.3.0 // indirect
27+
golang.org/x/net v0.0.0-20200927032502-5d4f70055728 // indirect
28+
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 // indirect
29+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
30+
golang.org/x/text v0.3.3 // indirect
31+
golang.org/x/tools v0.0.0-20201011145850-ed2f50202694 // indirect
32+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
33+
google.golang.org/appengine v1.6.6 // indirect
34+
google.golang.org/genproto v0.0.0-20201009135657-4d944d34d83c // indirect
35+
google.golang.org/grpc v1.32.0 // indirect
36+
google.golang.org/protobuf v1.25.0 // indirect
37+
gopkg.in/yaml.v2 v2.2.2 // indirect
38+
)

0 commit comments

Comments
 (0)