Skip to content

Commit 1ba9bec

Browse files
authored
Merge pull request #634 from Baumanar/master
Fix for failing test for AWS keyspace
2 parents f25b303 + c81e147 commit 1ba9bec

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

database/cassandra/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ system_schema table which comes with 3.X
2626
| `sslkey` | | Key file location. The file must contain PEM encoded data. |
2727
| `sslrootcert` | | The location of the root certificate file. The file must contain PEM encoded data. |
2828
| `sslmode` | | Whether or not to use SSL (disable\|require\|verify-ca\|verify-full) |
29+
| `disable-host-lookup`| false | Disable initial host lookup. |
2930

3031
`timeout` is parsed using [time.ParseDuration(s string)](https://golang.org/pkg/time/#ParseDuration)
3132

database/cassandra/cassandra.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ func (c *Cassandra) Open(url string) (database.Driver, error) {
156156
}
157157
}
158158

159+
if len(u.Query().Get("disable-host-lookup")) > 0 {
160+
if flag, err := strconv.ParseBool(u.Query().Get("disable-host-lookup")); err != nil && flag {
161+
cluster.DisableInitialHostLookup = true
162+
} else if err != nil {
163+
return nil, err
164+
}
165+
}
166+
159167
session, err := cluster.CreateSession()
160168
if err != nil {
161169
return nil, err
@@ -228,16 +236,26 @@ func (c *Cassandra) Run(migration io.Reader) error {
228236
}
229237

230238
func (c *Cassandra) SetVersion(version int, dirty bool) error {
231-
query := `TRUNCATE "` + c.config.MigrationsTable + `"`
232-
if err := c.session.Query(query).Exec(); err != nil {
233-
return &database.Error{OrigErr: err, Query: []byte(query)}
239+
// DELETE instead of TRUNCATE because AWS Keyspaces does not support it
240+
// see: https://docs.aws.amazon.com/keyspaces/latest/devguide/cassandra-apis.html
241+
squery := `SELECT version FROM "` + c.config.MigrationsTable + `"`
242+
dquery := `DELETE FROM "` + c.config.MigrationsTable + `" WHERE version = ?`
243+
iter := c.session.Query(squery).Iter()
244+
var previous int
245+
for iter.Scan(&previous) {
246+
if err := c.session.Query(dquery, previous).Exec(); err != nil {
247+
return &database.Error{OrigErr: err, Query: []byte(dquery)}
248+
}
249+
}
250+
if err := iter.Close(); err != nil {
251+
return &database.Error{OrigErr: err, Query: []byte(squery)}
234252
}
235253

236254
// Also re-write the schema version for nil dirty versions to prevent
237255
// empty schema version for failed down migration on the first migration
238256
// See: https://github.com/golang-migrate/migrate/issues/330
239257
if version >= 0 || (version == database.NilVersion && dirty) {
240-
query = `INSERT INTO "` + c.config.MigrationsTable + `" (version, dirty) VALUES (?, ?)`
258+
query := `INSERT INTO "` + c.config.MigrationsTable + `" (version, dirty) VALUES (?, ?)`
241259
if err := c.session.Query(query, version, dirty).Exec(); err != nil {
242260
return &database.Error{OrigErr: err, Query: []byte(query)}
243261
}

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ require (
99
github.com/apache/arrow/go/arrow v0.0.0-20211013220434-5962184e7a30 // indirect
1010
github.com/aws/aws-sdk-go v1.17.7
1111
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.4 // indirect
12-
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 // indirect
1312
github.com/cenkalti/backoff/v4 v4.0.2
1413
github.com/cockroachdb/cockroach-go/v2 v2.1.1
1514
github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369 // indirect
@@ -21,7 +20,7 @@ require (
2120
github.com/gabriel-vasile/mimetype v1.4.0 // indirect
2221
github.com/go-sql-driver/mysql v1.5.0
2322
github.com/gobuffalo/here v0.6.0
24-
github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4
23+
github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556
2524
github.com/gofrs/uuid v4.0.0+incompatible // indirect
2625
github.com/google/go-github/v35 v35.2.0
2726
github.com/gorilla/mux v1.7.4 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,8 +436,8 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe
436436
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
437437
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
438438
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
439-
github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4 h1:vF83LI8tAakwEwvWZtrIEx7pOySacl2TOxx6eXk4ePo=
440-
github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0=
439+
github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556 h1:N/MD/sr6o61X+iZBAT2qEUF023s4KbA8RWfKzl0L6MQ=
440+
github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY=
441441
github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
442442
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
443443
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=

0 commit comments

Comments
 (0)