Releases: scylladb/gocqlx
Release v3.0.1
What's Changed
- Update migration error messages by @jackphilippi in #285
- Add option to add ALLOW FILTERING to the update query by @sylwiaszunejko in #290
- feat(migrate): add
Pending
function for pending migrations by @JustSamuel in #286 - Bump scylladb/gocql version to v1.14.4 by @sylwiaszunejko in #291
New Contributors
- @jackphilippi made their first contribution in #285
- @JustSamuel made their first contribution in #286
Full Changelog: v3.0...v3.0.1
Release v3.0
This major release introduces significant changes. We have switched from gocql/gocql
to scylladb/gocql
and replaced the Unsafe
mechanism with the Strict
mechanism to ensure compatibility with the default behavior of gocql. These two changes are breaking changes, which is why this release is classified as a major update. Additionally, several smaller fixes and features have been added.
What's Changed
- Adding batch wrapper on query builder by @mariosttass in #239
- Improve cmd/schemagen by @iwittkau in #262
- Bump scylla version and add a linter to the CI by @sylwiaszunejko in #271
- Update golangci-lint in Makefile and CI and turn it on in CI by @dkropachev in #273
- Switch to scylladb/gocql by @dkropachev in #274
- Add additional methods to Batch similar to what exists on Queryx by @dkropachev in #275
- Marshal missing UDT fields as null instead of failing by @sylwiaszunejko in #269
- Replace Unsafe with Strict mechanism by @sylwiaszunejko in #276
- Switch to use scylla image instead of scylla version, to be able to target enterprise by @dkropachev in #277
- Release v3 - change v2 suffix to v3 by @sylwiaszunejko in #279
New Contributors
- @mariosttass made their first contribution in #239
- @izenhaim made their first contribution in #263
- @iwittkau made their first contribution in #262
- @sylwiaszunejko made their first contribution in #271
- @dkropachev made their first contribution in #273
Full Changelog: v2.8.0...v3.0
Release 2.8.0
The release adds support for schemagen to generate structs in table model, as well as username/password authentication to schemagen.
What's Changed
- Force metadata retrieval for CAS queries by @Drahflow in #221
- Fix typo in test by @Bobochka in #223
- fix using timeout order in select stmt by @YeminLi in #229
- update documentation with examples of non-persisted fields by @slycrel in #226
- queryx: add note to ExecCAS docs by @kevinbarbour in #231
- Update GH actions by @mrwormhole in #233
- add user password authentication to schemagen by @niklassemmler in #236
- Structs tables by @pavle995 in #212
New Contributors
- @YeminLi made their first contribution in #229
- @slycrel made their first contribution in #226
- @kevinbarbour made their first contribution in #231
- @mrwormhole made their first contribution in #233
- @niklassemmler made their first contribution in #236
- @pavle995 made their first contribution in #212
Full Changelog: v2.7.0...v2.8.0
Release 2.7.0
What's Changed
- migrate: add CallbackRegister::Find by @mmatczuk in #210
- dbutil: RewriteTable add possibility to skip rows by @mmatczuk in #211
- Added test database name flag by @spolischook in #209
- Make qb.DESC of type qb.Order, not bool by @Drahflow in #218
- avoid DATA RACE if reusing query builder by @tehsphinx in #220
- Add TupleNamed for two-sided range-queries on tuples by @Drahflow in #219
New Contributors
- @spolischook made their first contribution in #209
- @Drahflow made their first contribution in #218
- @tehsphinx made their first contribution in #220
Full Changelog: v2.6.0...v2.7.0
Release 2.6.0
This release adds automatic support for gocql.UnsetValue
.
This is a special value representing not set
i.e. not resulting in any change to the existing value.
This is great for PATCHING entities, you can have a single prepared statement that can be reused to update any combination of the fields.
Example:
The following example upserts Operation
not changing the Fee
field.
// Insert operation with empty fee.
insertQuery = insertOperation.Query(session).
WithBindTransformer(gocqlx.UnsetEmptyTransformer).
BindStruct(Operation{
ID: "2",
ClientID: "42",
Type: "Input",
PaymentID: "1",
Fee: nil,
})
if err := insertQuery.ExecRelease(); err != nil {
t.Fatal("ExecRelease() failed:", err)
}
Also, the bind transformer can be set globally for the whole application.
// Set default transformer to avoid setting it for each query.
gocqlx.DefaultBindTransformer = gocqlx.UnsetEmptyTransformer
What's Changed
- qb: add named limit and per partition limit clauses by @N1cOs in #208
- queryx: unset empty values by @N1cOs in #206
New Contributors
Full Changelog: v2.5.0...v2.6.0
Release 2.5.0
Schemagen 🥇
This release adds schemagen
tool that generates goclqx table
models based on database schema.
Example:
Running the following command for examples
keyspace:
$GOBIN/schemagen -cluster="127.0.0.1:9042" -keyspace="examples" -output="models" -pkgname="models"
Generates models/models.go
as follows:
// Code generated by "gocqlx/cmd/schemagen"; DO NOT EDIT.
package models
import "github.com/scylladb/gocqlx/v2/table"
// Table models.
var (
Playlists = table.New(table.Metadata{
Name: "playlists",
Columns: []string{
"album",
"artist",
"id",
"song_id",
"title",
},
PartKey: []string{
"id",
},
SortKey: []string{
"title",
"album",
"artist",
},
})
Songs = table.New(table.Metadata{
Name: "songs",
Columns: []string{
"album",
"artist",
"data",
"id",
"tags",
"title",
},
PartKey: []string{
"id",
},
SortKey: []string{},
})
)
Installation
go get -u "github.com/scylladb/gocqlx/v2/cmd/schemagen"
What's Changed
- GetCAS: check if the query has a build error before trying to execute it by @ok32 in #187
- Correctly state in the GetQuery comment that it gets by primary key by @alfa-alex in #190
- Update godoc badge link by @quenbyako in #193
- qb: add support for USING TIMEOUT clause by @mmatczuk in #195
- schemagen cli by @Bobochka in #201
- schemagen refactoring by @mmatczuk in #203
New Contributors
- @ok32 made their first contribution in #187
- @alfa-alex made their first contribution in #190
- @quenbyako made their first contribution in #193
- @Bobochka made their first contribution in #201
Full Changelog: v2.4.0...v2.5.0
Release 2.4.0
This release adds support for embedding migration files inside binary with go:embed
.
It requires go 1.16+.
Example:
Embed all cql files in your migration directory.
//go:embed *.cql
var Files embed.FS
Pass the FS to migration function.
if err := migrate.FromFS(context.Background(), session, cql.Files); err != nil {
// handle error
}
The migrate.Migrate function is now deprecated.
Release 2.3.0
This release:
- Adds
dbutil
packages that will contain auxiliary tools built on top of gocqlx and its sub packages - Adds
dbutil.RewriteTable
a generalization oftable.RewriteRows
that can clone a table and apply a data transformation for each row - Adds
migrate.CallbackRegister
to simplify usage of migration callback - Adds support for in CQL file callbacks with a CQL comment
-- CALL MyCallbackName;
INSERT INTO bar (id) VALUES (1);
-- CALL MyCallbackName;
INSERT INTO bar (id) VALUES (2);
See the complete example in migrate/example dir.
Release 2.2.0
This release:
- Adds
InsertBuilder
andSelectAll
functions to table module - Adds
RewriteRows
function to table module, it sequentially rewrites all data in a table, this is useful for updating TTLs on small or medium sized tables - Migrates CI from Travis to GH actions
2.1.0
This release adds Query
and QueryContext
functions to query builder and table modules.
It simplifies query creation, instead of
stmt, names := qb.Select("cluster").Columns("id").ToCql()
q := gocqlx.Query(session.Query(stmt), names)
one can now write
q := qb.Select("cluster").Columns("id").Query(session)