Skip to content

v1.1.0

Compare
Choose a tag to compare
@byo byo released this 22 Sep 11:22
· 2131 commits to master since this release

Immudb 1.1.0 highlights

This release of immudb comes with many new features and improvements. The most important ones are highlighted below.

Follower replication

Immudb follower replication is now stable. This enables configuring a cluster of immudb nodes where follower replicas replicate transactions committed on the leader node.

S3 storage backend

S3 storage backend is now marked stable. With the S3 backend, immudb automatically uploads the data into an S3-compatible server reducing the amount of data stored locally.

Much improved SQL backend

Following new features were added to the SQL backend:

  • Multi-column indexes
  • Multi-column primary keys
  • Unique indexes
  • Support for negative values in INTEGER columns and calculations using negative values
  • Huge improvements of query optimization with indexes
  • AUTO_INCREMENT primary key

Improved docker images

New release comes with changes to how our docker images are built.

The main codenotary/immudb image is now built using a scratch base to reduce the image size and increase its security.

There are two more versions of the immudb image - one based on debian (codenotary/immudb:1.1.0-bulllseye-small) and one based on almalinux (codenotary/immudb:1.1.0-almalinux-8-minimal).

Important notes

Breaking changes on the SQL layer

This release is using completely new format for storing SQL data. This change was necessary to support new features but it is not compatible with the old format.
After upgrading to immudb 1.1.0, the old data will not be available through the SQL interface even though immudb still contains the low-level KV representation of those entries. If you need to migrate the old data to the new format, please contact us on our discord channel.

Go version support

Starting with the next release our official builds and docker images will be compiled and tested using go 1.17. In order to support older systems where go 1.17 is not easily available, we are providing statically-linked binaries. We also ensure that binaries can be manually compiled with older go versions down to 1.13 (excluding tests).

Changelog

[v1.1.0] - 2021-09-22

Bug Fixes

  • Minor updates to build/RELEASING.md
  • Update Dockerfile.alma maintainer field
  • CI: Fix building and releasing almalinux images
  • Dockerfile: Fix compiling version information in docker images
  • Dockerfile.rndpass: Fix building rndpass docker image
  • embedded/sql: suffix endKey when scan over all entries
  • embedded/sql: in-mem catalog rollback and syncing fixes
  • embedded/sql: exclude length from maxKey
  • embedded/sql: return error when joint table doest not exist
  • embedded/sql: support edge case of table with just an auto-increment column
  • embedded/sql: limit auto-increment to single-column pks
  • embedded/sql: take into account table aliasing during range calculations
  • embedded/sql: improve error handling and parameters validation
  • embedded/sql: adjust selector ranges calculation
  • embedded/sql: consider boolean type in maxKeyVal
  • embedded/sql: set type any to nil parameters
  • embedded/sql: fix table aliasing with implicit selectors
  • embedded/sql: enforce ordering by grouping column
  • embedded/store: fix constraint condition
  • embedded/store: error handling when setting offset fails
  • pkg: improve signature verification during audit
  • pkg/stdlib: fix driver connection releasing

Changes

  • Update RELEASING.md with documentation step.
  • remove wip warning for fully implemented features
  • Add documentation badge to README.md
  • Add documentation link at the beginning of README.md
  • Add documentation link to command line help outputs
  • Update codenotary maintainer info
  • Remove experimental S3 warning from README
  • CI: Build almalinux-based immudb image
  • CI: Explicitly require bash in gh action building docker images
  • CI: Use buildkit when building docker images
  • Dockerfile: Build a debian-based image for immudb next to the scratch one
  • Dockerfile: Use scratch as a base for immudb image
  • Dockerfile: Remove unused IMMUDB_DBNAME env var
  • Dockerfile: Update base docker images
  • Makefile: More explicit webconsole version
  • Makefile: Add darwin/amd64 target
  • build.md: Add info about removing webconsole/dist folder
  • cmd/immuadmin: remove replication flag shortcut
  • cmd/immuadmin: parse all db flags when preparing settings
  • cmd/immuadmin: improve flag description and rollback args spec
  • cmd/immuclient: display number of updated rows as result of sql exec
  • cmd/immudb: use common replication prefix
  • docker: Update generation of docker tags
  • embedded: leverage kv constraint to enforce upsert over auto-incremental pk requires row to already exist
  • embedded/multierr: enhace multi error implementation
  • embedded/sql: fix primary key supported types error message
  • embedded/sql: get rid of limited joint implementation
  • embedded/sql: ignore null values when encoding row
  • embedded/sql: include constraint only when insert occurs without auto_incremental pk
  • embedded/sql: wip scan optimizations based on query condition and sorting
  • embedded/sql: partial progress on selector range calculation
  • embedded/sql: partial progress on selector range calculation
  • embedded/sql: expose primary key index id
  • embedded/sql: leverage endKey to optimize indexing scanning
  • embedded/sql: minor code refactoring
  • embedded/sql: mark catalog as mutated when using auto incremental pk
  • embedded/sql: fix max key length validation
  • embedded/sql: catalog loading requires up to date data store indexing
  • embedded/sql: optional parenthesis when specifying single-column index
  • embedded/sql: disable TIMESTAMP data-type
  • embedded/sql: move index selection closer to data source in query statements
  • embedded/sql: optimize integer key mapping
  • embedded/sql: use plain big-endian encoding for integer values
  • embedded/sql: include support for int64 parameters
  • embedded/sql: minor refactoring to simplify code
  • embedded/sql: minor code simplification
  • embedded/sql: use int64 as value holder for INTEGER type
  • embedded/sql: add further validations when encoding values as keys
  • embedded/sql: move index spec closer to ds
  • embedded/sql: reserve byte to support multi-ordered indexes
  • embedded/sql: index prefix function
  • embedded/sql: use Cols as a replacement for ColsByID
  • embedded/sql: changed identifiers length in catalog
  • embedded/sql: validate non-null pk when decoding index entry
  • embedded/sql: limit upsert to tables without secondary indexes
  • embedded/sql: remove join constraints
  • embedded/sql: convert unmapIndexedRow into unmapRow with optional indexed value
  • embedded/tbtree: typo in log message
  • embedded/tbtree: compaction doesn't need snapshots to be closed
  • embedded/tbtree: return kv copies
  • embedded/tbtree: adjust seekKey based on prefix even when a value is set
  • embedded/tools: update sql stress tool with exec summary
  • pkg/api: changed db identifiers type
  • pkg/api: use fresh id in proto message
  • pkg/api: use a map for holding latest auto-incremental pks
  • pkg/api: use int64 as value holder for INTEGER type
  • pkg/api: use follower naming for replication credentials
  • pkg/api: include updated rows and last inserted pks in sql exec result
  • pkg/api: delete deprecated clean operation
  • pkg/client: changed db identifiers type
  • pkg/client: move unit testing to integration package to avoid circular references
  • pkg/database: warn about data migration needed
  • pkg/database: minor refactoring coding conventions
  • pkg/database: remove active replication options from database
  • pkg/database: create sql db instance if not present
  • pkg/database: minor adjustments based on multi-column indexing
  • pkg/database: update integration to exec summary
  • pkg/database: display as unique if there is a single-column index
  • pkg/database: include updated rows and last inserted pks in sql exec result
  • pkg/database: warn about data migration needed
  • pkg/database: minor renaming after rebase
  • pkg/pgsql/server: adds pgsql server maxMsgSize 32MB limit
  • pkg/pgsql/server: add a guard on payload message len
  • pkg/replication: handle disconnection only within a single thread
  • pkg/replication: use new context for each client connection
  • pkg/replication: use info log level for network failures
  • pkg/server: followers management
  • pkg/server: validate replication settings
  • pkg/server: nil tlsConfig on default options
  • pkg/server: change max concurrency per database to 30
  • pkg/server: changed default db file size and make it customizable at db creation time
  • pkg/server: use replica wording
  • pkg/stdLib: implementing golang standard sql interfaces
  • pkg/stdlib: remove pinger interface implementation and increase code coverage
  • pkg/stdlib: increase code coverage and fix blob results scan
  • pkg/stdlib: immuclient options identifier(uri) is used to retrieve cached connections
  • pkg/stdlib: simplified and hardened uri handling

Features

  • Dockerfile for almalinux based image
  • cmd/immuadmin: add replication flags
  • cmd/immuadmin: add flag to exclude commit time
  • embedded/multierr: implement stardard error Is & As methods
  • embedded/sql: wip unique multi-column indexes
  • embedded/sql: inner join with joint table and subqueries
  • embedded/sql: towards more powerful joins
  • embedded/sql: value expressions in row specs
  • embedded/sql: switch to signed INTEGER
  • embedded/sql: exec summary containing number of updated/inserted rows and last inserted pk per table
  • embedded/sql: max length on variable sized types as requirement for indexing
  • embedded/sql: multi-column primary keys
  • embedded/sql: use explicitelly specified index as preffered one
  • embedded/sql: expose scanSpecs when resolving a query
  • embedded/sql: wip unique multi-column indexing
  • embedded/sql: support index spec in joins
  • embedded/sql: wip auto-incremental integer primary keys
  • embedded/store: parameterized commit time
  • embedded/store: leverage endKey from tbtree key reader
  • embedded/tbtree: include endKey to instruct scan termination
  • pkg/database: row verification with composite primary keys
  • pkg/follower: follower replication
  • pkg/pgsql/server: add support for flush message
  • pkg/replication: initial active replication capabilities
  • pkg/server: upgrade db settings to include or exclude commit time
  • pkg/server: initial support for active replication of user created databases
  • pkg/server: systemdb and defaultdb follower replication

Downloads

Docker image
https://hub.docker.com/r/codenotary/immudb

Immudb Binaries

File SHA256
immudb-v1.1.0-darwin-amd64 8582905f0eeaec452c43f2431235a1a47c4d331e28a1bc99dd391add355ab262
immudb-v1.1.0-darwin-arm64 c6bb78b4e1655b1251e3830e3b2ca8e21ff4d3a4ae794e42853fa91c07a323c9
immudb-v1.1.0-freebsd-amd64 a375e7c7201a952ba6b5b94f0c85f46a31ea2a58192284fbb81f625a3b47a9c7
immudb-v1.1.0-linux-amd64 bcf9de31caae18bdede62a3d806eca3c510abca5f97f7a21ffde42862686bfc6
immudb-v1.1.0-linux-amd64-static b5c0d1ce21941e90feb1e28653c9626a1c459b5a4e001b8f9354bf8a0b5ecb5d
immudb-v1.1.0-linux-arm64 54aeed6aff93d5a35bac8ca9f2976832424e36e8fbe4d185338f0f12f8b7c8a5
immudb-v1.1.0-linux-s390x 418a32efb81662c91c19a6a780c3e801525a033b7a89b280d17efdcf711842f1
immudb-v1.1.0-windows-amd64.exe 85e760c7fff22687a43447f51dd6e7e33dd7a5d84187fdca4dd00edfb0cbfba9

Immuclient Binaries

File SHA256
immuclient-v1.1.0-darwin-amd64 31a84ac0299c35ddf5d32e77a68c2787c2329c0292a1f7896e3458a7603d51a1
immuclient-v1.1.0-darwin-arm64 703e9bc38b1fe697ddf1c191a3d9a5fae00a328db3cc87d49a354a8845f4d7c4
immuclient-v1.1.0-freebsd-amd64 db8b72f6f249f8fac5d02ac8be9d8341e9c9bd66393393d9399c0cd456c5d76f
immuclient-v1.1.0-linux-amd64 ec3080c80eb1322166e2978e3d41018691c136b05045c45761a19cd33ef41153
immuclient-v1.1.0-linux-amd64-static e033e7a67c2b084bd66fd148bc34f3910aa33a4bca35b6022b8adfd8553965d4
immuclient-v1.1.0-linux-arm64 f6e4bf7eb6b016d52915ff1c1005f0b5cfe3eb5592719bde88f74f988c395eba
immuclient-v1.1.0-linux-s390x 094b42098d96b85f177c8f67eab4a1acb202b7d2d89639a9dce8e88e166b83d8
immuclient-v1.1.0-windows-amd64.exe 1b229a02684649d4a958ce35deefea17cfa4dd409cb4e0541f20022db065a54e

Immuadmin Binaries

File SHA256
immuadmin-v1.1.0-darwin-amd64 8c4f54d668566b805ee04cc6b7615c871aa48c037cebc8fd6a29c6481e803070
immuadmin-v1.1.0-darwin-arm64 7ddc6c17e7bae695181a83b6bd87c99d8074f56c03092a12d3c3ecefc95186b2
immuadmin-v1.1.0-freebsd-amd64 b23ed395d5c667c3f12db663593f319f35eca78ae8675eaaad0118c23107487a
immuadmin-v1.1.0-linux-amd64 68023cda445139daf3ace0be4c31453f235b969fc748efc2e9dfda03e1fe592a
immuadmin-v1.1.0-linux-amd64-static 20c53b1e394b056f643abcdbeec1b6ca2d62cb77151ac902abb2a47aa3d8d07f
immuadmin-v1.1.0-linux-arm64 be0e22cdc9ba4cf6315959161efb73df733b5ba8ad940bcab5cee0c5ce837003
immuadmin-v1.1.0-linux-s390x b70a0d1789a579dc7b241cdea4f44a1d9fa469a019cc330c9c696e9b28dc53d9
immuadmin-v1.1.0-windows-amd64.exe f021e01f0c9af7481b637e51b320fda89f254e7fe27d9973bc337375eef6afd1