Go Client History

For a full list of releases, see github. Downloads are available on the downloads page.

5.3.0 / 2023-12-11

Apache Calcite Avatica Go 5.3.0 includes a few bug fixes and dependency updates.

Contributors to this release: Egor Riashin, Francis Chuang (Release Manager), Parag Jain

Features and bug fixes

  • Update docker release script to use rc tag in vote email links
  • Bump golang.org/x/net from 0.0.0-20220725212005-46097bf591d3 to 0.7.0
  • [CALCITE-5754] Fix open statements leak
  • [CALCITE-5753] Propagate user and pwd to connection info
  • [CALCITE-5752] Don’t register connection again on session reset
  • [CALCITE-5758] Initialize connector info map to prevent panic
  • [CALCITE-5792] Update dependencies to latest version
  • Bump golang.org/x/net from 0.11.0 to 0.17.0
  • [CALCITE-6139] Avatica-Go sends the same offset for the FetchRequest
  • [CALCITE-6153] Recompile protobuf messages to Avatica 1.24.0
  • [CALCITE-6154] Upgrade protobuf library to 1.31.0
  • [CALCITE-6155] Add additional rel/ tag to avatica-go release script


  • [CALCITE-5586] Replace boostport/hbase-phoenix-all-in-one docker image with f21global/hbase-phoenix-all-in-one
  • [CALCITE-5853] Use HBase Phoenix images from GitHub container registry
  • [CALCITE-5854] Test against Go 1.19 and 1.20
  • [CALCITE-6151] Test against Go 1.20 and 1.21
  • [CALCITE-6152] Test against Avatica 1.24.0

Web site and documentation

  • Add JIRA instructions to release howto
  • [CALCITE-5353] Document new procedure for requesting JIRA accounts and becoming a contributor

5.2.0 / 2022-10-13

Apache Calcite Avatica Go 5.2.0 is a maintenance release of Avatica Go with some dependency updates, bug fixes and a new minor feature. This release supports Go 1.18 and 1.19, which are currently the versions supported and maintained by the Go team.

The xinsnake/go-http-digest-auth-client digest authentication client has been replaced with icholy/digest as the former has been deprecated and is no longer maintained.

The driver.SessionResetter has also been implemented, allowing stale connections to the server to be purged and reset.

Contributors to this release: Francis Chuang, Guozhong Li

Features and bug fixes

  • [CALCITE-5072] Index out of range when calling rows.Next()
  • Add Apache license header to website publication Github workflows
  • [CALCITE-5077] ResetSession implements driver.SessionResetter
  • [CALCITE-4147] Rename “master” branch to “main”
  • [CALCITE-5234] Remove witch / live-reload support for development
  • [CALCITE-5237] Upgrade dependencies and regenerate protobufs
  • [CALCITE-5312] Replace http digest auth library with github.com/icholy/digest
  • [CALCITE-5317] Remove redundant type declarations
  • [CALCITE-5318] Replace deprecated ioutil methods with io and os equivalents
  • [CALCITE-5319] Remove DualStack dial option in HTTP client as it is deprecated and enabled by default
  • [CALCITE-5320] Switch from deprecated_first_frame_max_size to first_frame_max_size protobuf member for setting the first frame max size
  • [CALCITE-5322] Remove deprecated build tags
  • [CALCITE-5323] Do not copy lock handle in statement
  • [CALCITE-5324] Cancel context in tests
  • Make directory safe for git in docker release script
  • [CALCITE-5325] Display errors when failing release guidelines check using docker release script
  • Add missing license headers to files


  • [CALCITE-5235] Run Github Actions tests using docker and upgrade Go
  • [CALCITE-5236] Test against Avatica 1.22 by default in docker-compose.yml

Web site and documentation

  • [CALCITE-3129] Automate website builds
  • Push website only if there are changes
  • Link Go reference to the latest version of the documentation
  • Fix formatting in documentation

5.1.0 / 2022-03-27

Apache Calcite Avatica Go 5.1.0 is a maintenance release of Avatica Go with some dependency updates and bug fixes. This release supports Go 1.17 and 1.18, which are currently the versions supported and maintained by the Go team.

The protobuf library github.com/golang/protobuf was replaced by google.golang.org/protobuf, which is the successor and replacement for the former. In addition, the golang.org/x/xerrors package has been replaced with the standard library’s built-in errors package as the features in the experimental xerrors package have been available in the standard library’s errors package since Go 1.13.

Contributors to this release: Francis Chuang, Josiah Goodson

Features and bug fixes

  • [CALCITE-4174] avatica-go should handle complex/long URLs
  • [CALCITE-5057] Switch from github.com/golang/protobuf to google.golang.org/protobuf
  • [CALCITE-5058] Upgrade dependencies and tidy go.mod
  • [CALCITE-5063] Replace golang.org/x/xerrors package with errors package in stdlib


5.0.0 / 2020-07-16

Apache Calcite Avatica Go 5.0.0 is a major release of Avatica Go with a number of improvements and a breaking change. As Go modules has been available since Go 1.11 (3 versions back as of writing), users of this library should install it using Go modules as support for dep has been removed.

This release also introduces the batching query string parameter in the DSN, which allows updates to the server using a prepared statement to be batched together and executed once Close() is called on the statement.

Breaking change for connection metadata (CALCITE-3248): Previously, it is possible to set the HTTP username and password using the username and password parameters in the query string of the DSN. These parameters were confusing and didn’t signal the intent and effect of the parameters in addition to clashing with the avaticaUser and avaticaPassword parameters. The username and password parameters have now been removed as CALCITE-3248 implements the Connector interface via the NewConnector() method, which allows the driver to be instantiated with a custom HTTP client. Subsequently, it is now possible to set up the driver with a custom HTTP client and decorate it with the WithDigestAuth(), WithBasicAuth(), WithKerberosAuth() and WithAdditionalHeaders() methods.

Features and bug fixes

  • [CALCITE-3248] Add Connector implementation and remove username and password query string parameters from DSN (Tino Rusch)
  • [CALCITE-3253] Check server address exists before returning it in an Avatica response error (Tino Rusch)
  • [CALCITE-3264] Add catch-all type for unknown types in all adapters instead of panicking (Tino Rusch)
  • [CALCITE-3275] Add nil checks to error parsing (Tino Rusch)
  • [CALCITE-2499] Drop support for dep
  • [CALCITE-3320] Use transitional x/xerrors package when working with errors
  • [CALCITE-3903] Upgrade protobuf generation dependencies and regenerate avatica protobufs
  • [CALCITE-3905] Upgrade gokrb5 to v8
  • [CALCITE-3906] Pin witch version in tools.go file
  • [CALCITE-4067] Add support for ExecuteBatchRequest in prepared statement (chenhualin)
  • [CALCITE-3359] Update dependencies
  • [CALCITE-4078] Move import path from v4 to v5 for 5.0.0 release


Web site and documentation

  • Clean up documentation and remove references to dep

4.0.0 / 2019-05-16

Apache Calcite Avatica Go 4.0.0 is a major release of Avatica Go with a number of improvements and a breaking change. This release supports using both dep and Go modules for package management. As Go modules will be turned on by default in Go 1.13.0 (estimated to be released in September/October 2019), it is highly recommended that users of this package start migrating to using Go modules to ease the transition.

Breaking change for Phoenix (CALCITE-2763): In Apache Phoenix, null and empty strings are equivalent. For some background on why this is the case, see PHOENIX-947. In version 3 of Avatica-Go and below, null and empty strings are returned as an empty string "" to the client. This prevented database/sql’s built in NullString type from working correctly. From 4.0.0 onwards, null and empty strings will be returned as a nil. This allows the usage of the sql.NullString type.

Features and bug fixes

  • [CALCITE-2723] Generate SHA512 digest for releases
  • [CALCITE-2724] Exclude .md files from import path check in release script to avoid false positives
  • [CALCITE-2579] Implement live reloading of tests when source files change during development
  • [CALCITE-2763] Fix handling of nils (nulls) when executing queries and scanning query results with empty strings and other null types
  • [CALCITE-2775] Update dependencies and regenerate protobufs
  • [CALCITE-3024] Update dependencies (April 26 2019)
  • [CALCITE-3032] Simplify docker-compose.yml for running tests and development mode, change release process to use a docker container to build in a clean environment and include automation for uploading and promoting releases
  • [CALCITE-3026] Move import paths from v3 to v4 to prepare for 4.0.0 release
  • [CALCITE-3042] Fix bug in docker release script that prevents releases from being promoted correctly and incorrect variable substitution in vote email


  • [CALCITE-2771] Test against Avatica HSQLDB 1.13.0
  • [CALCITE-3025] Update travis configuration and docker-compose to test against Go 1.12 and run tests using dep in Go 1.11 and Go 1.12
  • [CALCITE-3035] Test against Avatica HSQLDB 1.14.0
  • [CALCITE-3044] Test against Avatica HSQLDB 1.15.0 and simplify Alpine dependencies

Web site and documentation

  • [CALCITE-2774] Improve release documentation and explicitly include all steps for making a release
  • [CALCITE-3033] Move release process to separate HOWTO document so that it’s consistent with how the avatica docs are structured

3.2.0 / 2018-09-18

Apache Calcite Avatica Go 3.2.0 is a minor release of Avatica Go with fixes to the import paths after enabling support for Go modules.

The 3.1.0 release contained a bug where packages within the library used the "github.com/apache/calcite-avatica-go" import path rather than the "github.com/apache/calcite-avatica-go/v3" import path. This resulted in an issue where 2 versions of the library are being used at the same time, causing some programs to not build.

The Calcite team recommends consumers of the Avatica Go library to not use the 3.1.0 release and ensure that the 3.2.0 release is being used.

Features and bug fixes

  • [CALCITE-2536] Update release script to check that import paths within the library point to the correct version
  • [CALCITE-2545] Fix incorrect import paths within the library to point to the correct version: github.com/apache/calcite-avatica-go/v3
  • [CALCITE-2544] Replace the golang.org/x/net/context package with the context package in the standard library
  • [CALCITE-2547] Update all dependencies to their latest versions
  • [CALCITE-2550] Update release script to build tarballs with filenames in the format: apache-calcite-avatica-go-x.x.x-src.tar.gz

3.1.0 / 2018-09-10

Apache Calcite Avatica Go 3.1.0 is a minor release of Avatica Go with support for Go modules. We recommend using the latest stable version of Go.

Go 1.11 along with Go modules support was released at the end of August 2018. Go modules will become the official package management solution for Go projects. As the Go team currently supports both Go 1.11 and Go 1.10, the Gopkg.toml and Gopkg.lock files are still available for those using dep for package management. We plan to remove support for dep when Go 1.12 is released in early 2019, so we encourage users to upgrade to Go 1.11 and use Go modules where possible.

Features and bug fixes

  • [CALCITE-2333] Stop releasing zip archives
  • [CALCITE-2367] Remove the satori/go.uuid package as it is unmaintained and replace it with hashicorp/go-uuid which is already a transitive dependency (Kenneth Shaw)
  • [CALCITE-2372] Test against Apache Phoenix 4.14.0
  • [CALCITE-2493] Update all dependencies to their latest versions
  • [CALCITE-2335] Add support for Go modules (available since Go 1.11) and test against Go 1.11
  • [CALCITE-2500] Test against Avatica 1.12.0 and Apache Phoenix 5.0.0 and regenerate protobuf definitions
  • Fix release script
  • [CALCITE-2513] Fix dockerfile so that Go modules work correctly when running tests using docker-compose
  • [CALCITE-2531] Update release script to only include files in source control
  • [CALCITE-2533] Allow user to select signing key when signing releases using release script
  • [CALCITE-2532] Update release script to check ending copyright year in NOTICE file
  • [CALCITE-2534] Update release script to check that AVATICA_VER are the same in both gen-protobuf.sh and gen-protobuf.bat
  • Fix 3.1.0 release annoucement filename

Web site and documentation

  • [CALCITE-2335] Update documentation and release instructions to include support for Go modules.

3.0.0 / 2018-04-27

Apache Calcite Avatica Go 3.0.0 is the first release since the Go driver has been donated to the Apache Software foundation. We recommend using the latest stable version of Go.

Features and bug fixes

  • [CALCITE-1240] Intial import of the original Boostport/avatica code-base into the apache/calcite-avatica-go repository
  • [CALCITE-1938] Releasing the first release of Calcite Avatica Go under the Apache Software Foundation
  • Remove go-cleanhttp dependency
  • Support for Avatica HSQLDB backend and move Apache Phoenix support into adapter
  • Add bash script to automate releases with checks to alert on files without the Apache license header
  • Replace gopher.png test fixture with Calcite logo

Web site and documentation

Past releases

Prior to release 3.0.0, the Avatica Go client was developed by Boostport.

Please refer to the Boostport/avatica Github repository for previous releases of the Avatica Go client.