Skip to content

Releases: codenotary/immudb

v1.4.1

21 Nov 15:51
@byo byo
Compare
Choose a tag to compare

Release notes

We're pleased to announce new version of immudb: 1.4.1. This is a smaller maintenance release that fixes important issues discovered in the previous 1.4.0 release.

Important issues fixed

Along with this release, the go SDK for immudb comes with fixes to two security vulnerabilities (CVE-2022-36111 and CVE-2022-39199) that we've discovered through an internal security review. Those vulnerabilities only affect the client SDK that is part of the immudb release - for that reason make sure that the most recent go SDK version is used in your application.

More information about those vulnerabilities can be found in those adversaries:

Small improvements

Besides important fixes, this release also comes with improved naming convention related to replication options and an option to reset admin password without knowledge of the previous password. Such password reset is helpful in case the admin password is lost and can also be used to ensure there's a correct admin password set in cloud deployments such as Kubernetes.

Changelog

[v1.4.1] - 2022-11-16

Bug Fixes

  • Change replication-related terms in codebase
  • Change replication-related terms in tests
  • cmd: Rename replication flags to follow consistent convention
  • cmd/immudb: Better description of the --force-admin-password flag
  • cmd/immudb: Fix description of the force-admin-password flag
  • embedded/appendable: fsync parent directory
  • embedded/appendable: fsync parent folder in remote appedable
  • pkg: Rename replication-related fields in GRPC protocol
  • pkg/client: Delay server identity validation
  • pkg/client/cache: Add methods to validate server identity
  • pkg/client/cache: Validate server's identity
  • pkg/server: Remove includeDeactivated flag when querying for users
  • pkg/server/servertest: Add uuid to buffconn server
  • pkg/server/servertest: Fix resetting grpc connection
  • test/perf-test-suite: Avoid dumping immudb logo on perf test results file
  • test/performance-test-suite: Ensure results are shown after proper is finished
  • verification: Additional Linear proof consistency check
  • verification: Recreate linear advance proofs for older servers

Changes

  • pkg/server: Add logs for activities related to users
  • ci: migrate deprecating set-output commands
  • cmd/immudb: Allow resetting sysadmin password
  • docs/security: Be less specific about package version in examples
  • docs/security: Add resources for the linear-fake vulnerability
  • embedded/appendable: sync directories
  • embedded/store: Disable asynchronous AHT generation
  • embedded/store: Remove AHT Wait Hub
  • pkg/client: Document WithDisableIdentityCheck option
  • pkg/client/cache: Describe serverIdentity parameter
  • pkg/client/cache: Limit the hash part of the identity file name
  • pkg/client/state: Cleanup mutex handling in StateService
  • pkg/server: Warn if sysadmin user password was not reset
  • pkg/server: Better warning for unchanged admin password
  • test/performance-test-suite: Add summary to json output

Features

  • ci: fix message and input
  • ci: add runner name to mattermost message header
  • ci: simplify results extraction
  • ci: extract performance tests into separate workflow to be reused
  • ci: add scheduled daily test runs and send results to Mattermost
  • pkg/replication: Disable server's identity check in internal replication

Downloads

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

immudb Binaries

File SHA256
immudb-v1.4.1-darwin-amd64 120966d077c5ffca4bfd6745473a06c0ca219291adc49960108cc476e418cf5a
immudb-v1.4.1-darwin-arm64 d6469914115a58f9462c07b1d5aa0dbb1e777b80477d8baf8108bf51deabdd22
immudb-v1.4.1-freebsd-amd64 05a932c73bbb4305f6f7975a3bdc0f2198f8968776b16b84497584bb2742bc5a
immudb-v1.4.1-linux-amd64 a5ae370d6475026db7df5906ba037dc708b0a8bda52a0adf0d06c3dcdee587f1
immudb-v1.4.1-linux-amd64-fips db4477eb54d0437b9b145dfa9f77b593fc3a149906b0c5cc1c4ed87301786298
immudb-v1.4.1-linux-amd64-static 7b2c31569a513e072cefbdc7cbcf7c36421516230bf388a5156d95a5f3034b02
immudb-v1.4.1-linux-arm64 3d5f8784bdf652d2c067885d19b330d28bf497459b59a9358c0774dbff1f4d6f
immudb-v1.4.1-linux-s390x ee4efbcb850ab56da2fd3ed18226bd9808de404fd69ea425567952492e320e96
immudb-v1.4.1-windows-amd64.exe 707963320c94390ac9f9ce8d20d4f274baf636df789c4a65f3dc1a74bfd7f52c

immuclient Binaries

File SHA256
immuclient-v1.4.1-darwin-amd64 076c4f474e8f57d59ec20016d5f445205b80d16c0a7aebe6ae0b1d07310c5360
immuclient-v1.4.1-darwin-arm64 41bfe74f900e7bbd9cc57b89d3111edf9faa3f5ff4204995e352f02c78fa3c53
immuclient-v1.4.1-freebsd-amd64 286c48668fd772464217f26cfc30772819175e61452d860d44ad6ec04c437c79
immuclient-v1.4.1-linux-amd64 3ab44ad6d956a7f4ecff2da08738227e63cd4816ef7047dc63f671c6536969b7
immuclient-v1.4.1-linux-amd64-fips 75cbdc3614cb345af53e127aaaf4e7633fde4710f1ce1f1191c12b1d7ce4ab0f
immuclient-v1.4.1-linux-amd64-static 1f33880078225f56b253e663fb5d6e8ef1927d4bc9019ad8ef40a1863d99be7e
immuclient-v1.4.1-linux-arm64 30e736810ab08f74e4dbd22b9ddb369b321dde1c65b35879a3ed164c97e5e8a0
immuclient-v1.4.1-linux-s390x 6fe337a5d14511eda8cad40d7ec4f6c483bf5b2811229678833286cfa373a7a0
immuclient-v1.4.1-windows-amd64.exe 6790a7dc306f3669cb824774b45c140c9331b6a83ae8fb10629a7c58c495405d

immuadmin Binaries

File SHA256
immuadmin-v1.4.1-darwin-amd64 caf3308f916d43c79fc14c77c3452013f3580b4e7edfd0fe949219d945d3b245
immuadmin-v1.4.1-darwin-arm64 1a82fef2f16715591da9e74001a8db0d0838ce6e273cf08443e8261f89f6fedb
immuadmin-v1.4.1-freebsd-amd64 42679b08927dcbef84b18eac78391e78c29a5c817e9febf56bc18485ee39c5a5
immuadmin-v1.4.1-linux-amd64 24126f6699b3ae3fe18910c5a4fb45d996bc9237ebb92e91ee2916b8f8379b0c
immuadmin-v1.4.1-linux-amd64-fips b5b457b179384a72a6486a5e82f16f8bfe449b467e31373627f94a736f7d7afb
immuadmin-v1.4.1-linux-amd64-static e68a4fc4640082a67522c9a77f081ee513cc87732900b3f0dd644deda6a58843
immuadmin-v1.4.1-linux-arm64 9cc7d0283b4e7bd58c1daa39ec1c93c9bdaeb7818b11ac5ac88a8d91be3ba658
immuadmin-v1.4.1-linux-s390x 22408bc7d8e0cef8378fcff8b1079bfa574e0336e5ca77f77facf21c67e3f24e
immuadmin-v1.4.1-windows-amd64.exe 2fa628855a0c17aecb5cc675297a1bf217bbf595f40701ed740d6351279f7e2d

v1.4.1-RC1

16 Nov 12:38
@byo byo
Compare
Choose a tag to compare
v1.4.1-RC1 Pre-release
Pre-release

Changelog

[v1.4.1-RC1] - 2022-11-16

Bug Fixes

  • Change replication-related terms in codebase
  • Change replication-related terms in tests
  • cmd: Rename replication flags to follow consistent convention
  • cmd/immudb: Better description of the --force-admin-password flag
  • cmd/immudb: Fix description of the force-admin-password flag
  • embedded/appendable: fsync parent directory
  • embedded/appendable: fsync parent folder in remote appedable
  • pkg: Rename replication-related fields in GRPC protocol
  • pkg/client: Delay server identity validation
  • pkg/client/cache: Add methods to validate server identity
  • pkg/client/cache: Validate server's identity
  • pkg/server: Remove includeDeactivated flag when querying for users
  • pkg/server/servertest: Add uuid to buffconn server
  • pkg/server/servertest: Fix resetting grpc connection
  • test/perf-test-suite: Avoid dumping immudb logo on perf test results file
  • test/performance-test-suite: Ensure results are shown after proper is finished
  • verification: Additional Linear proof consistency check
  • verification: Recreate linear advance proofs for older servers

Changes

  • ci: migrate deprecating set-output commands
  • cmd/immudb: Allow resetting sysadmin password
  • docs/security: Be less specific about package version in examples
  • docs/security: Add resources for the linear-fake vulnerability
  • embedded/appendable: sync directories
  • embedded/store: Disable asynchronous AHT generation
  • embedded/store: Remove AHT Wait Hub
  • pkg/client: Document WithDisableIdentityCheck option
  • pkg/client/cache: Describe serverIdentity parameter
  • pkg/client/cache: Limit the hash part of the identity file name
  • pkg/client/state: Cleanup mutex handling in StateService
  • pkg/server: Warn if sysadmin user password was not reset
  • pkg/server: Better warning for unchanged admin password
  • test/performance-test-suite: Add summary to json output

Features

  • ci: fix message and input
  • ci: add runner name to mattermost message header
  • ci: simplify results extraction
  • ci: extract performance tests into separate workflow to be reused
  • ci: add scheduled daily test runs and send results to Mattermost
  • pkg/replication: Disable server's identity check in internal replication

Downloads

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

immudb Binaries

File SHA256
immudb-v1.4.1-RC1-darwin-amd64 913a13e6502fa69e2a1a5660e1c1f4b0083da20858ecd4006febe2f05abc454a
immudb-v1.4.1-RC1-darwin-arm64 a260a1d9e47ab57dced53dc1c6202a830b9738f6be7159b223266c94974b9e1d
immudb-v1.4.1-RC1-freebsd-amd64 1d566d726e9c459a903d83ae777c1515b52d8bfaccd2d44ce5378b6e56034636
immudb-v1.4.1-RC1-linux-amd64 bcaadfa521cbd8b38d5ead125a3ac00bb263e37b6d0a9e0f8bf7405c48492f51
immudb-v1.4.1-RC1-linux-amd64-fips 176b8a3e53ab3ae69215e7f3eaafaf7def986649c5c30b16f45504a8b5c18247
immudb-v1.4.1-RC1-linux-amd64-static f7ffb591c50cf75ad102f04e7ac9d13186f5a6e87e9123954619a58aaab28052
immudb-v1.4.1-RC1-linux-arm64 1fa1438ccee5ef53c115c2977f0b26fef0e90ac6004d7ce2cfe221212e428132
immudb-v1.4.1-RC1-linux-s390x 55a38e4473d68e1e80ba21148ceed57bef3ed8c9a856da869e064b5fd02f7a4f
immudb-v1.4.1-RC1-windows-amd64.exe 457dc5884aee3fd04895d4da93ec2aa778b6393b7bfb916b5f0653342897ead2

immuclient Binaries

File SHA256
immuclient-v1.4.1-RC1-darwin-amd64 c5c0485e7ef0187034c5e338162e1a287cfbf97ce7849a0d89bfe4c0658d15d0
immuclient-v1.4.1-RC1-darwin-arm64 19e9b343cb12d2801821ca3a7f24f4c8e07fef5232d68e30e5bb7f9d4a940c11
immuclient-v1.4.1-RC1-freebsd-amd64 1338d111eef945a64fcf80eb093aeeac71e8814488a88ac2c7175425513f715f
immuclient-v1.4.1-RC1-linux-amd64 f5e0a5291c052c036707922826f54990e18acaa4d43f574c16ec2404f01e5024
immuclient-v1.4.1-RC1-linux-amd64-fips 46d40a9f416b410a88d21ae7acae1375508df73dd577824bedd2e434e091fe28
immuclient-v1.4.1-RC1-linux-amd64-static 5cac4760b6c4e35512634753fdf78612c2481f05eb408cbe686cc5b5f66a7f5d
immuclient-v1.4.1-RC1-linux-arm64 12ee3dcff73320fea2aa6cf3fc59c2273300662ef61b9ad8e8e7d7de53cea2a3
immuclient-v1.4.1-RC1-linux-s390x 4843734bf3607185c6410268b9ced9800319b95ab3e87cc51de847f97beb27d8
immuclient-v1.4.1-RC1-windows-amd64.exe be8f1ec58b80625b6fe45e4b5a63e8f6e4ed471620d742aef0f812d0983a5544

immuadmin Binaries

File SHA256
immuadmin-v1.4.1-RC1-darwin-amd64 c53bb2d72aab8751a53fcbc999edb22277c8d7506a82c475c46a65c8da935fdb
immuadmin-v1.4.1-RC1-darwin-arm64 6bcc0afeca868485c1e1b87b5072ee18b3cc2e1ba557b159aa1c2a8b21a4e1f8
immuadmin-v1.4.1-RC1-freebsd-amd64 b8c326d302e27d7e0c7c2ed7a06bc9c88cc752bd8ed8b3a8b0a76ff19e679552
immuadmin-v1.4.1-RC1-linux-amd64 a5332af65375b881ef65c4828808e962f985303d5ff168b855c63b2969200497
immuadmin-v1.4.1-RC1-linux-amd64-fips 6ead7189d35149645e44df5c06df73317322930d5b663c4e54f1532c49f3092f
immuadmin-v1.4.1-RC1-linux-amd64-static 458c4136443d8b5366f435dd979b698821954d511cdfc1931d64a5066fba52f6
immuadmin-v1.4.1-RC1-linux-arm64 7dd1a1090dd730680f37aefb6d15fbb29e0a4e87ecc82d1723a25f6264b3eb4e
immuadmin-v1.4.1-RC1-linux-s390x 1034aca0e52e03dadeb3e59dbd22cc58f400d2a301efed401cdfca9a64b73ff1
immuadmin-v1.4.1-RC1-windows-amd64.exe 14959b7ee6e84cad591ce930166dc7ff3529092d2cc7a8c1ec7b641ec95e800c

v1.4.0

12 Oct 15:01
@byo byo
Compare
Choose a tag to compare

Release notes

We're pleased to introduce version 1.4 of immudb, which comes with two major features: FIPS-Compliant Builds and Synchronous Replication. And, of course, we’ve fixed bugs and made other improvements.

FIPS-Compliant Builds

Starting with v1.4.0, immudb can be compiled using the go-boringcrypto fork of the Go compiler, which uses the FIPS 140-2 compliant boringssl library. We now also officially provide FIPS-compliant binaries and Docker images.

What is it? The FIPS 140-2 standard prescribes the design and security requirements for cryptographic modules that may be approved for use by the United States government. FIPS-140 is a collection of computer security standards set by the National Institute of Standards and Technology (NIST) for the United States government. FIPS 140–2 defines the critical security parameters vendors must use for encryption implementations sold to the U.S government.

A detailed information about FIPS-compliant immudb build can be found in immudb's source code repository.

Synchronous Replication

Synchronous replication improves the reliability of data replicated across the immudb nodes in a cluster. When an immudb cluster uses synchronous replication, the primary node waits for sufficient transaction confirmations from replicas before it considers the transaction fully committed and durably stored by multiple nodes. This feature increases data durability by allowing any single node in an immudb cluster—including the primary node—to be lost without causing the database state tracked by the nodes and clients to diverge.

Prior to version 1.4, immudb only supports asynchronous replication. When a cluster is configured to use asynchronous replication, replica nodes can lag behind the primary node, and any given transaction committed on the primary node isn’t guaranteed to be replicated to other nodes within a reasonable time period. Thus, transactions committed to a primary node that have not been replicated can be lost if the primary node is irrecoverably lost. When this occurs, the state of the surviving nodes may diverge from the state computed by the immudb client, because the new primary node elected from the remaining replicas could be missing the most recent commits tracked by the clients.

To get more information about synchronous replication please refer to the documentation on docs.immudb.io.

Replication performance

Due to additional synchronization between nodes, commit throughput with synchronous replication will naturally be slower compared to a single-node cluster. The performance difference will depend on various factors such as the speed of disks, network latency, and the number of followers.

In this release we also worked on improvements to the replication mechanism itself, achieving 17 to 20 times larger TX/s replication throughput than what was available in 1.3.2 release.

SDK Updates

This release also comes with significant updates to immudb SDKs. We've brought brand new .Net SDK; added inline documentation to Go SDK; added inline documentation and increased functionality of Python SDK and Java SDK; and made significant updates to the node.js SDK 1.

Changelog

[v1.4.0] - 2022-10-12

Bug Fixes

  • build: Do not publish official non-dev images on RC tags
  • pkg/client: replace keepAlive context from the original one to the background, avoiding parent expiration
  • build: Use correct binary download links
  • embedded/store: edge-case calculation of precommitted tx
  • embedded/watchers: Fix invariant breakage in watchers
  • embedded/watchers: Fix invariant breakage in watchers
  • pkg/database: any follower can do progress due to its prefech buffer
  • pkg/replication: Do not crash on invalid tx metadata
  • pkg/replication: handle replication already closed case
  • pkg/replication: discard precommitted txs and continue from latest committed one
  • pkg/replication: solve issues when follower diverged from master
  • wmbedded/watchers: Correctly fix the original implementation
  • Makefile: add fips build flag to test/fips
  • Makefile: remove interactive flag from dist/fips command
  • ci: fix regex pattern for fips binaries
  • cmd/immuadmin: set correct data-type for replication-sync-followers flag
  • embedded/store: fix size calculation of precommitted txs
  • embedded/store: Fix checking for closed store when syncing TXs
  • embedded/store: avoid attempts to commit in wrong order
  • embedded/store: expose durable precommitted state
  • embedded/store: include allowPrecommitted into tx reader construction
  • embedded/store: ensure tx is released upon error
  • embedded/store: aht up to precommited tx
  • github: Update github actions after migration of Dockerfile's
  • pkg/database: return master commit state if failing to read follower precommitted one
  • pkg/database: Fix mutex lock in ExportTx
  • pkg/database: set follower states holder when changing replication status
  • pkg/server: add logs when replicator does not start

Changes

  • Rename sync-followers to sync-acks
  • cmd/immuclient: include precommit state when quering status
  • pkg/server: Better error message when validating replication options
  • embedded/watchers: Simplify and document cancellation path
  • embedded/watchers: Simplify mutex locking code
  • embedded/watchers: single-point for init and cleanup
  • pkg/database: wait for tx when a non-existent or non-ready transaction is requested
  • pkg/database: add TODO comment on replication passive waiting
  • pkg/database: simplify follower's wait
  • pkg/replication: Add TX gap metrics
  • pkg/replication: Add basic replication metrics
  • pkg/replication: improve replication logging
  • add dependabot config
  • Add empty line between license header and package
  • Dockerfile.fips: add fips build changes
  • cmd/immuadmin: add new replication flags
  • cmd/immuadmin: revert default replication-master-port
  • cmd/immuadmin: use default immudb port as default value for replication-master-port flag
  • cmd/immuclient: flag replication-sync-enabled to enable sync replication
  • cmd/immudb: deprecate replication-enabled towards replication-is-replica
  • docker: Move main Dockerfile's to build folder
  • docker: Simplify the main Dockerfile
  • embedded/store: resolve pre-committed using clogbuf
  • embedded/store: wip reduce allocations in exportTx
  • embedded/store: mutexless export-tx
  • embedded/store: enhanced tx discarding logic
  • embedded/store: wip load precommitted txs
  • embedded/store: method to dynamically switch to external allowance
  • embedded/store: wip wait for precommitted txs
  • embedded/store: explicit allowPrecommitted and restricted access to precommitted txs
  • embedded/store: minor code simplification
  • embedded/store: possibility to read tx header of precommitted txs
  • embedded/store: support for concurrent replicated precommits
  • embedded/store: tx parsing with sanity checks
  • embedded/store: handle commit case when there is nothing new to commit
  • embedded/store: tolerate partial data or inconsistencies when loading pre-committed txs
  • embedded/store: explanatory comments added
  • embedded/store: waits for durable precommitted txs
  • embedded/store: minor renaming and comment additions
  • embedded/store: add integrity checks when reading precommitted txs
  • pkg/api: currentState endpoint includes precommitted info
  • pkg/api: explicit sync replication setting
  • pkg/api/schema: reformat schema.proto file
  • pkg/database: minor typo in comment
  • pkg/database: sync exportTx
  • pkg/database: improve error comparison
  • pkg/database: follower commit progress without additional waits
  • pkg/database: handle special case related to sql initialization
  • pkg/database: disable automatic sql init on older databases
  • pkg/integration: add synchronous replication integration tests
  • pkg/replication: allowPreCommitted only with sync replication enabled
  • pkg/replication: speed up follower reconnection
  • pkg/replication: use session-based authentication
  • pkg/replication: handling a particular case in an optimized manner
  • pkg/replication: backward compatible replication
  • pkg/replication: check committedTxID from master
  • pkg/replication: wip optimize concurrency in replicators
  • pkg/replication: handle case when follower precommit state is up-to-date but commit state is lies behind
  • pkg/replication: sync replication using follower state
  • pkg/replication: configurable prefetchTxBufferSize and replicationCommitConcurrency
  • pkg/replication: improve error comparison
  • pkg/replication: graceful closing
  • pkg/replication: further progress in sync replication
  • pkg/replication: replicator with backward compatibility mode
  • **pkg/re...
  1. Some SDKs updates will be released a few days after the immudb release.

Read more

v1.4.0-RC2

10 Oct 13:34
@byo byo
Compare
Choose a tag to compare
v1.4.0-RC2 Pre-release
Pre-release

Changelog

[v1.4.0-RC2] - 2022-10-06

Bug Fixes

  • build: Use correct binary download links
  • embedded/store: edge-case calculation of precommitted tx
  • embedded/watchers: Fix invariant breakage in watchers
  • embedded/watchers: Fix invariant breakage in watchers
  • pkg/database: any follower can do progress due to its prefech buffer
  • pkg/replication: Do not crash on invalid tx metadata
  • pkg/replication: handle replication already closed case
  • pkg/replication: discard precommitted txs and continue from latest committed one
  • pkg/replication: solve issues when follower diverged from master
  • wmbedded/watchers: Correctly fix the original implementation

Changes

  • embedded/watchers: Simplify and document cancellation path
  • embedded/watchers: Simplify mutex locking code
  • embedded/watchers: single-point for init and cleanup
  • pkg/database: wait for tx when a non-existent or non-ready transaction is requested
  • pkg/database: add TODO comment on replication passive waiting
  • pkg/database: simplify follower's wait
  • pkg/replication: Add TX gap metrics
  • pkg/replication: Add basic replication metrics
  • pkg/replication: improve replication logging

[v1.4.0-RC1] - 2022-10-04

Bug Fixes

  • Makefile: add fips build flag to test/fips
  • Makefile: remove interactive flag from dist/fips command
  • ci: fix regex pattern for fips binaries
  • cmd/immuadmin: set correct data-type for replication-sync-followers flag
  • embedded/store: fix size calculation of precommitted txs
  • embedded/store: Fix checking for closed store when syncing TXs
  • embedded/store: avoid attempts to commit in wrong order
  • embedded/store: expose durable precommitted state
  • embedded/store: include allowPrecommitted into tx reader construction
  • embedded/store: ensure tx is released upon error
  • embedded/store: aht up to precommited tx
  • github: Update github actions after migration of Dockerfile's
  • pkg/database: return master commit state if failing to read follower precommitted one
  • pkg/database: Fix mutex lock in ExportTx
  • pkg/database: set follower states holder when changing replication status
  • pkg/server: add logs when replicator does not start

Changes

  • add dependabot config
  • Add empty line between license header and package
  • Dockerfile.fips: add fips build changes
  • cmd/immuadmin: add new replication flags
  • cmd/immuadmin: revert default replication-master-port
  • cmd/immuadmin: use default immudb port as default value for replication-master-port flag
  • cmd/immuclient: flag replication-sync-enabled to enable sync replication
  • cmd/immudb: deprecate replication-enabled towards replication-is-replica
  • docker: Move main Dockerfile's to build folder
  • docker: Simplify the main Dockerfile
  • embedded/store: resolve pre-committed using clogbuf
  • embedded/store: wip reduce allocations in exportTx
  • embedded/store: mutexless export-tx
  • embedded/store: enhanced tx discarding logic
  • embedded/store: wip load precommitted txs
  • embedded/store: method to dynamically switch to external allowance
  • embedded/store: wip wait for precommitted txs
  • embedded/store: explicit allowPrecommitted and restricted access to precommitted txs
  • embedded/store: minor code simplification
  • embedded/store: possibility to read tx header of precommitted txs
  • embedded/store: support for concurrent replicated precommits
  • embedded/store: tx parsing with sanity checks
  • embedded/store: handle commit case when there is nothing new to commit
  • embedded/store: tolerate partial data or inconsistencies when loading pre-committed txs
  • embedded/store: explanatory comments added
  • embedded/store: waits for durable precommitted txs
  • embedded/store: minor renaming and comment additions
  • embedded/store: add integrity checks when reading precommitted txs
  • pkg/api: currentState endpoint includes precommitted info
  • pkg/api: explicit sync replication setting
  • pkg/api/schema: reformat schema.proto file
  • pkg/database: minor typo in comment
  • pkg/database: sync exportTx
  • pkg/database: improve error comparison
  • pkg/database: follower commit progress without additional waits
  • pkg/database: handle special case related to sql initialization
  • pkg/database: disable automatic sql init on older databases
  • pkg/integration: add synchronous replication integration tests
  • pkg/replication: allowPreCommitted only with sync replication enabled
  • pkg/replication: speed up follower reconnection
  • pkg/replication: use session-based authentication
  • pkg/replication: handling a particular case in an optimized manner
  • pkg/replication: backward compatible replication
  • pkg/replication: check committedTxID from master
  • pkg/replication: wip optimize concurrency in replicators
  • pkg/replication: handle case when follower precommit state is up-to-date but commit state is lies behind
  • pkg/replication: sync replication using follower state
  • pkg/replication: configurable prefetchTxBufferSize and replicationCommitConcurrency
  • pkg/replication: improve error comparison
  • pkg/replication: graceful closing
  • pkg/replication: further progress in sync replication
  • pkg/replication: replicator with backward compatibility mode
  • pkg/replicator: wip precommitted tx discarding when follower diverged from master
  • pkg/server: explicit sync replication
  • pkg/server: handle admin user creation with sync replication enabled
  • pkg/server: support for systemdb with session-based auth
  • pkg/server: display all replication settings
  • pkg/server: include sync replication settings in options
  • pkg/server: use replication settings

Features

  • cmd/immuadmin: flag to set the number of sync followers
  • cmd/immudb: flag to set the number of sync followers for systemdb and defaultdb
  • embedded/store: functionality to discard precommitted txs
  • embedded/store: core support for sync replication
  • pkg/api: api extensions to support sync replication
  • pkg/database: wip sync replication logic
  • pkg/replication: mode to allow tx discarding on followers
  • pkg/replication: wip replicator with support for sync replication
  • pkg/server: sync replication logic
  • pkg/server: Add ability to inject custom database management object

Downloads

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

immudb Binaries

File SHA256
immudb-v1.4.0-RC2-darwin-amd64 3e4d3cbfa37b93915d8134d25ed1023b23ffa6a149c5bf322b4876806d014eff
immudb-v1.4.0-RC2-darwin-arm64 0b9b164e70b57bbda365850f2ebf74bfc5ae085697bb0ad773643727382957c3
immudb-v1.4.0-RC2-freebsd-amd64 d4510c7bc0b165e51de3bae24d5dfb194b2540acc3930da5b5b164d9c1d5e666
immudb-v1.4.0-RC2-linux-amd64 ce2cc8959dccbfc0135a39bfd7c36658c1953758927d0f5703837f630f40779c
immudb-v1.4.0-RC2-linux-amd64-fips 368273d2457d924cff3eb6fd3928c3f4eb2cb21fc6bfa9d89271628c7d2c8dae
immudb-v1.4.0-RC2-linux-amd64-static 29bfb2f2bf574973686fee95f9747f9a5029178ef3f217fd23e34b9f346d7937
immudb-v1.4.0-RC2-linux-arm64 74fef2616de7508b8fc8a776bbcd7b157369ea2c38b79535b632ff0f5345e363
immudb-v1.4.0-RC2-linux-s390x 2238943a469c472a6efc4f633958c51991ff40e54136c4d7020f727bde279c0d
immudb-v1.4.0-RC2-windows-amd64.exe 6723269e6bde85611e2c1784d679579fc666f24a861a69726c331dd4c63c97fa

immuclient Binaries

File SHA256
immuclient-v1.4.0-RC2-darwin-amd64 8330d88bb96a434470fc587a06bbd6063290240321a40420da692eef8786919c
immuclient-v1.4.0-RC2-darwin-arm64 02f42f2e0c5271257d8f92e40ba4a2a93ed496ca78ecd8358bbb2b45506eddff
immuclient-v1.4.0-RC2-freebsd-amd64 cef95e5b58ef18684dd7934b59325dae1efe5b3f85fedcee37818aedb399b621
immuclient-v1.4.0-RC2-linux-amd64 77eb8275887dcf5a9ff41b2b67734ffda4d75c1c2661670e9edf07bc364197cf
immuclient-v1.4.0-RC2-linux-amd64-fips 8d68d3b17e4fc3b39be0f940ad2452f5b58f2b605f46666f036d9c6a8abdd6ca
immuclient-v1.4.0-RC2-linux-amd64-static 78ad86d5cebbac8a17162724...
Read more

v1.4.0-RC1

04 Oct 14:14
@byo byo
Compare
Choose a tag to compare
v1.4.0-RC1 Pre-release
Pre-release

Changelog

[v1.4.0-RC1] - 2022-10-04

Bug Fixes

  • Makefile: add fips build flag to test/fips
  • Makefile: remove interactive flag from dist/fips command
  • ci: fix regex pattern for fips binaries
  • cmd/immuadmin: set correct data-type for replication-sync-followers flag
  • embedded/store: fix size calculation of precommitted txs
  • embedded/store: Fix checking for closed store when syncing TXs
  • embedded/store: avoid attempts to commit in wrong order
  • embedded/store: expose durable precommitted state
  • embedded/store: include allowPrecommitted into tx reader construction
  • embedded/store: ensure tx is released upon error
  • embedded/store: aht up to precommited tx
  • github: Update github actions after migration of Dockerfile's
  • pkg/database: return master commit state if failing to read follower precommitted one
  • pkg/database: Fix mutex lock in ExportTx
  • pkg/database: set follower states holder when changing replication status
  • pkg/server: add logs when replicator does not start

Changes

  • add dependabot config
  • Add empty line between license header and package
  • Dockerfile.fips: add fips build changes
  • cmd/immuadmin: add new replication flags
  • cmd/immuadmin: revert default replication-master-port
  • cmd/immuadmin: use default immudb port as default value for replication-master-port flag
  • cmd/immuclient: flag replication-sync-enabled to enable sync replication
  • cmd/immudb: deprecate replication-enabled towards replication-is-replica
  • docker: Move main Dockerfile's to build folder
  • docker: Simplify the main Dockerfile
  • embedded/store: resolve pre-committed using clogbuf
  • embedded/store: wip reduce allocations in exportTx
  • embedded/store: mutexless export-tx
  • embedded/store: enhanced tx discarding logic
  • embedded/store: wip load precommitted txs
  • embedded/store: method to dynamically switch to external allowance
  • embedded/store: wip wait for precommitted txs
  • embedded/store: explicit allowPrecommitted and restricted access to precommitted txs
  • embedded/store: minor code simplification
  • embedded/store: possibility to read tx header of precommitted txs
  • embedded/store: support for concurrent replicated precommits
  • embedded/store: tx parsing with sanity checks
  • embedded/store: handle commit case when there is nothing new to commit
  • embedded/store: tolerate partial data or inconsistencies when loading pre-committed txs
  • embedded/store: explanatory comments added
  • embedded/store: waits for durable precommitted txs
  • embedded/store: minor renaming and comment additions
  • embedded/store: add integrity checks when reading precommitted txs
  • pkg/api: currentState endpoint includes precommitted info
  • pkg/api: explicit sync replication setting
  • pkg/api/schema: reformat schema.proto file
  • pkg/database: minor typo in comment
  • pkg/database: sync exportTx
  • pkg/database: improve error comparison
  • pkg/database: follower commit progress without additional waits
  • pkg/database: handle special case related to sql initialization
  • pkg/database: disable automatic sql init on older databases
  • pkg/integration: add synchronous replication integration tests
  • pkg/replication: allowPreCommitted only with sync replication enabled
  • pkg/replication: speed up follower reconnection
  • pkg/replication: use session-based authentication
  • pkg/replication: handling a particular case in an optimized manner
  • pkg/replication: backward compatible replication
  • pkg/replication: check committedTxID from master
  • pkg/replication: wip optimize concurrency in replicators
  • pkg/replication: handle case when follower precommit state is up-to-date but commit state is lies behind
  • pkg/replication: sync replication using follower state
  • pkg/replication: configurable prefetchTxBufferSize and replicationCommitConcurrency
  • pkg/replication: improve error comparison
  • pkg/replication: graceful closing
  • pkg/replication: further progress in sync replication
  • pkg/replication: replicator with backward compatibility mode
  • pkg/replicator: wip precommitted tx discarding when follower diverged from master
  • pkg/server: explicit sync replication
  • pkg/server: handle admin user creation with sync replication enabled
  • pkg/server: support for systemdb with session-based auth
  • pkg/server: display all replication settings
  • pkg/server: include sync replication settings in options
  • pkg/server: use replication settings

Features

  • cmd/immuadmin: flag to set the number of sync followers
  • cmd/immudb: flag to set the number of sync followers for systemdb and defaultdb
  • embedded/store: functionality to discard precommitted txs
  • embedded/store: core support for sync replication
  • pkg/api: api extensions to support sync replication
  • pkg/database: wip sync replication logic
  • pkg/replication: mode to allow tx discarding on followers
  • pkg/replication: wip replicator with support for sync replication
  • pkg/server: sync replication logic
  • pkg/server: Add ability to inject custom database management object

Downloads

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

immudb Binaries

File SHA256
immudb-v1.4.0-RC1-darwin-amd64 e2133e437897911b48ba4b7ec40c5a7a31b10522ce36f4f971d1964576642a59
immudb-v1.4.0-RC1-darwin-arm64 a036f56e5465f5337edb56b45cff5c5ad23a65bb2d46efea536eeda43f9bc856
immudb-v1.4.0-RC1-freebsd-amd64 6eabed369b715bc6f1b5c0b3656a5b72878d664214d65ca2071e2240fbcbc235
immudb-v1.4.0-RC1-linux-amd64 ac2543dc3952abc96199f40aa805ecfac335f7a76788a02e641bed111b35280c
immudb-v1.4.0-RC1-linux-amd64-fips a7842f83df2637118696c8c248977a465413696fa704631d2f1ab355250d307b
immudb-v1.4.0-RC1-linux-amd64-static bc03f2235255311fd52c1a69c99864f7db31a792a6a312c74df9991ac8f05a91
immudb-v1.4.0-RC1-linux-arm64 e548ef5a4976e1925a08c6401688641af1c7da67dce2c401908e921a0d06169a
immudb-v1.4.0-RC1-linux-s390x 04c9b9820e79f52b757fd8ff462e9d65f785bb781a92bfd04c44c7cb2b94f07f
immudb-v1.4.0-RC1-windows-amd64.exe fecba3d6894bdb341de5b0e3c826ddd7cb390026b2e903935c3266d6f4beaa50

immuclient Binaries

File SHA256
immuclient-v1.4.0-RC1-darwin-amd64 ae8977e1b07b923649b0cca1a20680e0501a04605daaf5c64dd9dc2b50478932
immuclient-v1.4.0-RC1-darwin-arm64 ca39fd74a0818719908a7f3c46e8bb19ffc93678c953ae573d1d03b40b1a4965
immuclient-v1.4.0-RC1-freebsd-amd64 c71787595d2da1ead1d6710d31a7859d2b5ef08efe7a9158c3933a1f3d1c4a60
immuclient-v1.4.0-RC1-linux-amd64 295f2457a3e271bdee1db1dc0b8349355661eeddece932c7bd22b44c132c4b88
immuclient-v1.4.0-RC1-linux-amd64-fips f48de7b92695437bd3f7dc7e7ab8589b0dd4e96e4f0877c7e87770349c2d57bf
immuclient-v1.4.0-RC1-linux-amd64-static f3c6f4c08244e8e84bbefcb5f3e053a8612fa63c820015493bca87489773f765
immuclient-v1.4.0-RC1-linux-arm64 695f9c7f9ec5a147265b4489ae2e2282b144338a383d779037c58a8efed380fe
immuclient-v1.4.0-RC1-linux-s390x 4d7f0ff5eade6c0e29adf1467007481c14ed53ab8b606191244f5266683d1483
immuclient-v1.4.0-RC1-windows-amd64.exe 851494f9e7b64356dce80220d41dbdd54954183b46430e77fd03779b60cd49e0

immuadmin Binaries

File SHA256
immuadmin-v1.4.0-RC1-darwin-amd64 4352e28868ac037b4e78478862a20460c88976b6d35562cea1c7e9df19d3810f
immuadmin-v1.4.0-RC1-darwin-arm64 245b9644d1c74b24c612c651b644f87c182946b21877b73631513f8b8d250ac3
immuadmin-v1.4.0-RC1-freebsd-amd64 85c15624f3399570c9254e3e575fbcbdf62...
Read more

v1.3.2

25 Aug 18:09
80fa08f
Compare
Choose a tag to compare

Release notes

Performance was the main focus of this immudb release. The way durability guarantees were implemented until now i.e. fsync was called synchronously as the final commit step, resulted in a lot of overhead for each transaction.

A significant improvement in write performance (up to x10 faster compared to previous immudb release v1.3.1) was achieved by grouping transactions in the last step of the commit process. The gains are greatest when there are fewer key-value entries per transaction and multiple writers are simultaneously working. The cost of the sync operation pays for itself as the number of key-value pairs in each transaction increases, although some noticeable speed can still be achieved (up to x2 compared to previous immudb release v1.3.1).

Read performance was also significantly improved due to the introduction of reusable pools of objects, which reduced allocations needed during query resolution. The gains are quite significant in both single and multi-get operations.

Benchmarking

Stay tuned, benchmarks done using stresser2 tool (https://github.com/codenotary/immudb-tools) will be available soon, we're still collecting some results.

JSON Logging

Logs can also be generated in json format for easier ingestion by logging platforms.
It's quite simple to enable this useful feature, just run immudb with the logformat flag set to json e.g. ./immudb --logformat=json

Go 1.18

immudb binaries and Docker images are now built with Go 1.18.

Changelog

[v1.3.2] - 2022-08-25

Bug Fixes

  • access tls value in global scope within ingress annotations
  • company name in webconsole and other files
  • build: Fix go-acc and goveralls invocations
  • build: update go version to 1.18 in Dockerfiles
  • build/RELEASING.md: Add note about updating playground
  • embedded: use tmp folder for unit test cases
  • embedded/sql: Support single BEGIN statement.
  • embedded/store: Check precommitted state when replicating
  • embedded/store: Optionally preallocate Tx pools
  • embedded/store: Ensure ordering of transaction timestamps
  • embedded/store: Assign blTxID within locked tx state
  • embedded/store: ensure tx is released upon error
  • embedded/store: Improved check for replicated transaction
  • embedded/store: Return correct error on key length exceeded
  • embedded/store: Protect against simultaneous replicators
  • embedded/store: Reduce the amount of allocations for tx object
  • embedded/tools/stress_tool: Fix compilation after recent update to tx holder pool
  • getRandomTable: increase RNG range for table generation
  • github: Remove unnecessary /test/ path when uploading perf results to s3
  • github: Do not use yaml anchors in github workflows
  • pkg/client: Invalid client state after connection refused
  • pkg/client/clienttest: enforce mock client to interface
  • pkg/database: Fix calculation of proof for VerifiableTxByID
  • pkg/database: Correct revision for Scan requirests
  • server: Show info text with a logger
  • servertest: Allow accessing Server object before starting the server
  • stdlib/rows: add colums to row response
  • test/performance: Cleanup test directory

Changes

  • pin google.golang.org/protobuf to v1.27.1 (currently used version for generated code).
  • Introduce separate TxHolder pools
  • update github.com/spf13/viper to v1.12.0.
  • makefile formatting.
  • update build constraint to new & future-proof syntax.
  • format tools.go.
  • deprecate ImmuClient.HealthCheck in favour of ServerInfo.
  • reimplement ImmuClient.HealthCheck using rpc ServerInfo instead of (deprecated) Health.
  • refactor TestServerInfo.
  • Update main go versin to 1.18
  • generate gRPC stubs.
  • ignore schema_grpc.pb.go in coveralls.
  • use go.mod version of github.com/grpc-ecosystem/grpc-gateway when building codegen.
  • regenerate with correct version of protoc-gen-go.
  • ignore schema_grpc.pb.go in code coverage.
  • pin github.com/pseudomuto/protoc-gen-doc to 1.4.1 (currently used version for generated code).
  • Makefile: Update webconsole to 1.0.16
  • build: Update RELEASING.md doc
  • build: Improve generation of build checksums
  • cmd/immuadmin: Add support for max-commit-concurrency option
  • cmd/immuadmin: Add support for read-tx-pool-size option
  • cmd/immudb: Add support for max-sessions command line option
  • database/sql: Delay txholder allocation on VerifiableSQLGet
  • embedded/ahtree: threshold-based sync
  • embedded/ahtree: use bigger default write buffer size
  • embedded/ahtree: improve error handling
  • embedded/ahtree: flushless append
  • embedded/ahtree: improve validations and error handling
  • embedded/ahtree: support newst appendable implementation
  • embedded/ahtree: improve error message consistency
  • embedded/ahtree: minor error message change
  • embedded/appendable: autosync when write buffer is full
  • embedded/appendable: autosync support in multi-appendable
  • embedded/appendable: flush when no more writes are done in appendable
  • embedded/appendable: improve explanatory comment inside sync method
  • embedded/appendable: improve singleapp validation and error handling
  • embedded/appendable: error tolerant seek
  • embedded/appendable: improve validations and error handling
  • embedded/appendable: inmem buffer offset
  • embedded/appendable: wip remoteapp validation
  • embedded/appendable: return io.EOF when offset is out of range
  • embedded/appendable: upgrade mocked and remote appendable based on new flushing assumptions
  • embedded/appendable: auto-sync options
  • embedded/appendable: multi-appendable shared write buffer
  • embedded/htree: improve error handling
  • embedded/sql: Remove unnecessary tx holder buffer from SQLTx
  • embedded/store: Better errors returned during replication error
  • embedded/store: aht options
  • embedded/store: Use dedicated error for replication conflicts
  • embedded/store: sync AHT before tx commit log
  • embedded/store: in-mem clog buffer written when synced
  • embedded/store: wrap internal already closed errors
  • embedded/store: handle appendable already close error
  • embedded/store: Optimize ReadTxHeader method
  • embedded/store: Do not write values if concurrency limit is reached
  • embedded/store: Add dedicated error for tx pool exhaustion
  • embedded/store: add TODO comment
  • embedded/store: parametrize write buffer size
  • embedded/store: wip retryable sync
  • embedded/store: flush-less precommit
  • embedded/store: multi-tx syncs
  • embedded/store: use smaller default buffer size
  • embedded/store: Add txDataReader to process transaction data
  • embedded/store: avoid sync waiting if there are no new transactions
  • embedded/store: improve error comparison with errors.Is(...)
  • embedded/store: wip error declaration
  • embedded/store: Add explicit ReadTxEntry method
  • embedded/store: Add explicit ReadTxHeader
  • embedded/store: Optimize ReadTxEntry method
  • embedded/store: Add txPoolOptions to setup pool parameters upon creation
  • embedded/store: set new default write buffer values
  • embedded/store/txpool: Allocate pool entries separately
  • embedded/store/txpool: Make txPoolOptions members private
  • embedded/tbtree: improve error handling
  • embedded/tbtree: use non-retryable sync
  • embedded/tbtree: define using generic errors towards errors.Is(...) usage
  • embedded/watchers: improve error handling
  • github: Update ACTIONS_SECRETS.md file
  • github: Allow selection of runner to run perf test
  • github: Run perf test suite on pull requests
  • github: Run performance test suite on push to master
  • github: Add simple documentation of PERF_TEST_xxx secrets
  • github: Install qemu using docker/setup-qemu-action
  • github: Allow using multiple runners for perf test suite
  • github: Upload perf results to AWS s3
  • pkg/api: Add tx pool size to GRPC and stored db options
  • pkg/api: milliseconds message type
  • pkg/api: expose aht settings
  • pkg/api: export syncFrequency database parameter
  • pkg/api: deprecate rpc Health in favour of ServerInfo.
  • pkg/database: Add tx pool size to db options
  • pkg/database: Remove txHolder from get operation
  • pkg/database: Do not allocate txholder for history scans
  • pkg/database: allocate tx buffer before doing verified writes
  • pkg/logger: Add memory logger
  • pkg/logger: add json logger
  • pkg/server: simplify ImmuServer.Health.
  • pkg/server: Add pprof option
  • test/performance: Add basic flags to the benchmark process
  • test/performance: Add separate Write KV/s test.
  • test/performance: Split benchmark list and run code
  • test/performance: Move test seed out of configuration
  • test/performance: Move random generator and key tracker to common coode
  • test/performance: Add CPU time / memory stats gathering
  • test/performance: Allow customized name for the benchmark
  • test/performance: Add basic IO stats
  • test/performance: Improve live IO display
  • test/performance: Better logging and output
  • test/performance: Correctly close random data generator

Features

  • revert usages of ServerInfo that would break backwards compatibility.
  • add test for HealthCheck.
  • cmd/immuadmin: expose syncFrequency and WriteBufferSize db parameters
  • cmd/immuclient: add info command to immuclient.
  • pkg/api: expose write buffer parameter
  • pkg/api: improve documentation of ServerInfo.
  • pkg/api: remove ServerInfoResponse.status field.
  • pkg/api: add ServerInfo rpc to deprecate Health.
  • pkg/client: revert WaitForHealthCheck change to...
Read more

v1.3.2-RC1

24 Aug 23:39
b996eae
Compare
Choose a tag to compare
v1.3.2-RC1 Pre-release
Pre-release

Changelog

[v1.3.2-RC1] - 2022-08-24

Bug Fixes

  • access tls value in global scope within ingress annotations
  • company name in webconsole and other files
  • build: Fix go-acc and goveralls invocations
  • build: update go version to 1.18 in Dockerfiles
  • build/RELEASING.md: Add note about updating playground
  • embedded: use tmp folder for unit test cases
  • embedded/sql: Support single BEGIN statement.
  • embedded/store: Check precommitted state when replicating
  • embedded/store: Optionally preallocate Tx pools
  • embedded/store: Ensure ordering of transaction timestamps
  • embedded/store: Assign blTxID within locked tx state
  • embedded/store: ensure tx is released upon error
  • embedded/store: Improved check for replicated transaction
  • embedded/store: Return correct error on key length exceeded
  • embedded/store: Protect against simultaneous replicators
  • embedded/store: Reduce the amount of allocations for tx object
  • embedded/tools/stress_tool: Fix compilation after recent update to tx holder pool
  • getRandomTable: increase RNG range for table generation
  • github: Remove unnecessary /test/ path when uploading perf results to s3
  • github: Do not use yaml anchors in github workflows
  • pkg/client: Invalid client state after connection refused
  • pkg/client/clienttest: enforce mock client to interface
  • pkg/database: Fix calculation of proof for VerifiableTxByID
  • pkg/database: Correct revision for Scan requirests
  • server: Show info text with a logger
  • servertest: Allow accessing Server object before starting the server
  • stdlib/rows: add colums to row response
  • test/performance: Cleanup test directory

Changes

  • pin google.golang.org/protobuf to v1.27.1 (currently used version for generated code).
  • Introduce separate TxHolder pools
  • update github.com/spf13/viper to v1.12.0.
  • makefile formatting.
  • update build constraint to new & future-proof syntax.
  • format tools.go.
  • deprecate ImmuClient.HealthCheck in favour of ServerInfo.
  • reimplement ImmuClient.HealthCheck using rpc ServerInfo instead of (deprecated) Health.
  • refactor TestServerInfo.
  • Update main go versin to 1.18
  • generate gRPC stubs.
  • ignore schema_grpc.pb.go in coveralls.
  • use go.mod version of github.com/grpc-ecosystem/grpc-gateway when building codegen.
  • regenerate with correct version of protoc-gen-go.
  • ignore schema_grpc.pb.go in code coverage.
  • pin github.com/pseudomuto/protoc-gen-doc to 1.4.1 (currently used version for generated code).
  • Makefile: Update webconsole to 1.0.16
  • build: Update RELEASING.md doc
  • build: Improve generation of build checksums
  • cmd/immuadmin: Add support for max-commit-concurrency option
  • cmd/immuadmin: Add support for read-tx-pool-size option
  • cmd/immudb: Add support for max-sessions command line option
  • database/sql: Delay txholder allocation on VerifiableSQLGet
  • embedded/ahtree: threshold-based sync
  • embedded/ahtree: use bigger default write buffer size
  • embedded/ahtree: improve error handling
  • embedded/ahtree: flushless append
  • embedded/ahtree: improve validations and error handling
  • embedded/ahtree: support newst appendable implementation
  • embedded/ahtree: improve error message consistency
  • embedded/ahtree: minor error message change
  • embedded/appendable: autosync when write buffer is full
  • embedded/appendable: autosync support in multi-appendable
  • embedded/appendable: flush when no more writes are done in appendable
  • embedded/appendable: improve explanatory comment inside sync method
  • embedded/appendable: improve singleapp validation and error handling
  • embedded/appendable: error tolerant seek
  • embedded/appendable: improve validations and error handling
  • embedded/appendable: inmem buffer offset
  • embedded/appendable: wip remoteapp validation
  • embedded/appendable: return io.EOF when offset is out of range
  • embedded/appendable: upgrade mocked and remote appendable based on new flushing assumptions
  • embedded/appendable: auto-sync options
  • embedded/appendable: multi-appendable shared write buffer
  • embedded/htree: improve error handling
  • embedded/sql: Remove unnecessary tx holder buffer from SQLTx
  • embedded/store: Better errors returned during replication error
  • embedded/store: aht options
  • embedded/store: Use dedicated error for replication conflicts
  • embedded/store: sync AHT before tx commit log
  • embedded/store: in-mem clog buffer written when synced
  • embedded/store: wrap internal already closed errors
  • embedded/store: handle appendable already close error
  • embedded/store: Optimize ReadTxHeader method
  • embedded/store: Do not write values if concurrency limit is reached
  • embedded/store: Add dedicated error for tx pool exhaustion
  • embedded/store: add TODO comment
  • embedded/store: parametrize write buffer size
  • embedded/store: wip retryable sync
  • embedded/store: flush-less precommit
  • embedded/store: multi-tx syncs
  • embedded/store: use smaller default buffer size
  • embedded/store: Add txDataReader to process transaction data
  • embedded/store: avoid sync waiting if there are no new transactions
  • embedded/store: improve error comparison with errors.Is(...)
  • embedded/store: wip error declaration
  • embedded/store: Add explicit ReadTxEntry method
  • embedded/store: Add explicit ReadTxHeader
  • embedded/store: Optimize ReadTxEntry method
  • embedded/store: Add txPoolOptions to setup pool parameters upon creation
  • embedded/store: set new default write buffer values
  • embedded/store/txpool: Allocate pool entries separately
  • embedded/store/txpool: Make txPoolOptions members private
  • embedded/tbtree: improve error handling
  • embedded/tbtree: use non-retryable sync
  • embedded/tbtree: define using generic errors towards errors.Is(...) usage
  • embedded/watchers: improve error handling
  • github: Update ACTIONS_SECRETS.md file
  • github: Allow selection of runner to run perf test
  • github: Run perf test suite on pull requests
  • github: Run performance test suite on push to master
  • github: Add simple documentation of PERF_TEST_xxx secrets
  • github: Install qemu using docker/setup-qemu-action
  • github: Allow using multiple runners for perf test suite
  • github: Upload perf results to AWS s3
  • pkg/api: Add tx pool size to GRPC and stored db options
  • pkg/api: milliseconds message type
  • pkg/api: expose aht settings
  • pkg/api: export syncFrequency database parameter
  • pkg/api: deprecate rpc Health in favour of ServerInfo.
  • pkg/database: Add tx pool size to db options
  • pkg/database: Remove txHolder from get operation
  • pkg/database: Do not allocate txholder for history scans
  • pkg/database: allocate tx buffer before doing verified writes
  • pkg/logger: Add memory logger
  • pkg/logger: add json logger
  • pkg/server: simplify ImmuServer.Health.
  • pkg/server: Add pprof option
  • test/performance: Add basic flags to the benchmark process
  • test/performance: Add separate Write KV/s test.
  • test/performance: Split benchmark list and run code
  • test/performance: Move test seed out of configuration
  • test/performance: Move random generator and key tracker to common coode
  • test/performance: Add CPU time / memory stats gathering
  • test/performance: Allow customized name for the benchmark
  • test/performance: Add basic IO stats
  • test/performance: Improve live IO display
  • test/performance: Better logging and output
  • test/performance: Correctly close random data generator

Features

  • revert usages of ServerInfo that would break backwards compatibility.
  • add test for HealthCheck.
  • cmd/immuadmin: expose syncFrequency and WriteBufferSize db parameters
  • cmd/immuclient: add info command to immuclient.
  • pkg/api: expose write buffer parameter
  • pkg/api: improve documentation of ServerInfo.
  • pkg/api: remove ServerInfoResponse.status field.
  • pkg/api: add ServerInfo rpc to deprecate Health.
  • pkg/client: revert WaitForHealthCheck change to maintain backwards-compatibility.
  • pkg/client: implement ImmuClient.ServerInfo.
  • pkg/server: implement ImmuServer.ServerInfo.

Downloads

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

immudb Binaries

File SHA256
immudb-v1.3.2-RC1-darwin-amd64 9c8373eb161e27f1e3e887725167bb58c37b9e395b102e50ba52efff1cf1a5f9
immudb-v1.3.2-RC1-darwin-arm64 5017bc5a24776d4f952a53cabe12efe0f9f90fb23fc21fe7f9cd7d6feabfe76e
immudb-v1.3.2-RC1-freebsd-amd64 5925e6ea56bc070904ca1755aba8889e84b4baf225376b22126594fcfd1000b3
immudb-v1.3.2-RC1-linux-amd64 832fd0bbe3ce1d83dca47b814cecdf9161f63362d0e7c1c8601d5bb30eb56101
immudb-v1.3.2-RC1-linux-amd64-static 8eb21972c3d89a7e365da23d254a2fa62bc09b2ef3d1a1b9d44113306129f4cf
immudb-v1.3.2-RC1-linux-arm64 cb8e63b556b59dbeac822a5f3d190077a68bacfce46fe166256767e7eced0e79
[immudb-v1.3.2-RC1-linux-...
Read more

v1.3.1

30 Jun 15:24
@byo byo
Compare
Choose a tag to compare

Release notes

Let us introduce another immudb release: 1.3.1. This time we focused mostly on stability and bug fixing, however some small features still managed to slip through into our changelog.

Reworked documentation structure

The documentation hosted on https://docs.immudb.io/ gained a brand new menu structure making it much cleaner for newcomers and much easier to navigate by more experienced immudb users. Make sure to check it out and remember that your feedback here is always very welcome.

S3 compatibility

One of the most important issues we've started observing was the incompatibility with various S3 storage implementations. Based on our internal tests and community feedback we managed to greatly improve support 3rd party S3 service providers such as elest.io.

SQL Snapshot leak fixes

When performing read operations on immudb, an internal snapshot of B-tree is created. We found few places (mostly in case of query errors) that would result in snapshots not being freed once the SQL operation is finished. Immudb has internal limit of active open snapshots at a time thus such leaked snapshots were causing significant issues during application development.

Idempotent NOW() function

The NOW() function available in SQL is now idempotent within a single transaction. Before it was returning the exact time when the NOW() function was called. The new implementation guarantees that it always returns the time when the current transaction was started.

Experimental support for OFFSET

The new OFFSET keyword can be used in SQL statements to instruct the server that it should skip some initial set of entries. Similarly, the GRPC methods for scanning KV entries got additional offset parameter. Internally offsets are implemented by skipping initial entries from the result on the server side thus it may come with performance penalty when the value of such offset is large.

Changelog

[v1.3.1] - 2022-06-30

Bug Fixes

  • embedded/store: filter evaluation after valRef resolution
  • README: Update readme to show examples for 1.3.0 version
  • cmd/immuadmin: use StreamChunkSize as max chunk size during tx replication
  • cmd/immudb: include metrics endpoint related flags
  • embedded/remotestorage: Fix invalid comment
  • embedded/remotestorage/s3: Correctly url decode entry names
  • embedded/remotestorage/s3: Simplify the code for scan
  • embedded/remotestorage/s3: Avoid using HEAD requests
  • embedded/remotestorage/s3: Fix s3 object name validation
  • embedded/sql: Use defer to cleanup unclosed readers on error
  • embedded/sql: Fix snapshot leak on query initialization failure
  • embedded/sql: Properly close readers in joint row reader
  • embedded/sql: Fix reader leaks during initialization failures
  • embedded/sql: Fix snapshot leaks in union readers
  • embedded/sql: ensure timestamp is evaluated with microsecond precision
  • pkg/client: ensure connection is closed and session can be re-established
  • pkg/database: Do not panic if incorrect number of pk values is given to VerifiableSQLGet
  • pkg/server: Fix remote storage test after recent changes
  • pkg/server/sessions: Avoid deadlock when closing session manager
  • pkg/server/sessions: Session manager test fixes
  • pkg/server/sessions: Handle short buffer read when generating session id
  • pkg/server/sessions: Correctly start session guard
  • pkg/server/sessions: Use strong random source for session ID

Changes

  • embedded/store: offset handling at keyreader
  • Update dependencies
  • build: Update RELEASING.md file
  • embedded/remotestorage: Improve error reporting
  • embedded/remotestorage: More detailed errors
  • embedded/remotestorage: Improve testing of remotestorage
  • embedded/remotestorage/s3: Improved s3 object name checks
  • embedded/sql: Do not return error from conditional and limit readers
  • embedded/sql: fixed-timed tx
  • github: Update push action
  • github: Run tests with minio service
  • github: On macOS run client only test on pull requests
  • github: Run coverage tests with minio enabled
  • github: Update minimal supported go version to 1.15
  • pkg/client: Better detection of tests that require external immudb
  • pkg/server: Add missing copyright headers
  • pkg/server/session: Move options normalization into options struct
  • pkg/server/sessions: Improve options handling
  • pkg/server/sessions: Add MaxSessions option
  • pkg/server/sessions: Simplify session handling code
  • remotestorage: Add prometheus metrics for remote storage kind
  • tools: Remove old stream tool

Features

  • embedded/sql: offset clause
  • embedded/store: offset in key scanning
  • pkg/api: offset attribute in scan and zscan endpoints

Downloads

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

Immudb Binaries

File SHA256
immudb-v1.3.1-darwin-amd64 be0c602551f801e3971360a6146d7d3edfd5d226381b95e5e1411c04f6662bfe
immudb-v1.3.1-darwin-arm64 c3c60ad8842f27765480c0ff21ed948e827f912fe75f97ac99a21b99116cd490
immudb-v1.3.1-freebsd-amd64 447021f9bc00b1ad08fd5f76550bc6240f18a762164178b8afa9197e6254df85
immudb-v1.3.1-linux-amd64 731d8de18e3d32e102a8aad70fd47234b46b2da0c5d8e04d33032af7624f37a5
immudb-v1.3.1-linux-amd64-static b0e22d11bfe3c1c4d05e37c22f30f1dc4072320e6b70f6db76f21a485d789075
immudb-v1.3.1-linux-arm64 8da9ca4bdb478eee408f5a37d8af9ab56e0f468476e959051cfdbf1cedd905ae
immudb-v1.3.1-linux-s390x 14e6ade9a657b333de52010ae4fcd714a2e48e9f38aecd965a22f6349814758e
immudb-v1.3.1-windows-amd64.exe 1396d0c61d215bcdbf43605808a5a81f419689f0e626a2f5b1b456e8dcc302e4

Immuclient Binaries

File SHA256
immuclient-v1.3.1-darwin-amd64 ce167f3b4569ab5fb4872120281211f9febf442a9443c03ddded38c8f14a62ac
immuclient-v1.3.1-darwin-arm64 16790e1ca4789c8bbb1ace95501915c17f1713e4e2d6d3a7d532054042ebdfe4
immuclient-v1.3.1-freebsd-amd64 e2f5d6c8e46ade303383c9a8d4094cc4fea0e3b7120bd6eac3ee135a5c5f45fe
immuclient-v1.3.1-linux-amd64 015aa7eb91fc011562db27a2b0172cf64f318dbf21e7588fedef43e5f62d1ee4
immuclient-v1.3.1-linux-amd64-static 526f942a711ccf644b402d7ad3599a32f00bbbd826bbc046cc2720aa61fc3686
immuclient-v1.3.1-linux-arm64 71314a0528df3d692f8789ade535f19db7e25319e377d8d0c32236dac4e6b4bf
immuclient-v1.3.1-linux-s390x 3d24102b76572931e91b1b06d35ae355cbc4c57fe669972096d0377f782f1fa4
immuclient-v1.3.1-windows-amd64.exe 233cb79db6c4317860138848aeb41fe5cb6ad2adaceeccc0e5ec4e0e8c17874c

Immuadmin Binaries

File SHA256
immuadmin-v1.3.1-darwin-amd64 a62b8942bb7fa9bde7b4905869ccf451ddd28ec477e1ad5d920a39f59afedff1
immuadmin-v1.3.1-darwin-arm64 ad3025ce49baec3008379648d760a2b2f93811a7f460132cfcd9ef5634a39ab0
immuadmin-v1.3.1-freebsd-amd64 bf935f03102eca534e466e3329f0434443bb41940b6590525a4d7796967ba2d1
immuadmin-v1.3.1-linux-amd64 3c5e343b408ff9600004022d02900b63e89bb888677ad843ec47cca7713bc431
immuadmin-v1.3.1-linux-amd64-static 135648491f5bc60c38733c270f0c448734f7406280da0aeadd60f4a71d3fb3e7
immuadmin-v1.3.1-linux-arm64 8c158fe6097a481276b71bec1777185e57f43fd6f16fd79cb78f9fe0ef397297
immuadmin-v1.3.1-linux-s390x 855f792bdc594551bf2e044e52b38f60fddc831684e2e5a5213138ec441952a4
immuadmin-v1.3.1-windows-amd64.exe 078e0f8b4d6cf4eca79e44a9df1b9b9869da22f24cb57d1f024f17d0bed08805

v1.3.1-RC1

30 Jun 09:11
@byo byo
Compare
Choose a tag to compare
v1.3.1-RC1 Pre-release
Pre-release

Changelog

[v1.3.1-RC1] - 2022-06-30

Bug Fixes

  • README: Update readme to show examples for 1.3.0 version
  • cmd/immuadmin: use StreamChunkSize as max chunk size during tx replication
  • cmd/immudb: include metrics endpoint related flags
  • embedded/remotestorage: Fix invalid comment
  • embedded/remotestorage/s3: Correctly url decode entry names
  • embedded/remotestorage/s3: Simplify the code for scan
  • embedded/remotestorage/s3: Avoid using HEAD requests
  • embedded/remotestorage/s3: Fix s3 object name validation
  • embedded/sql: Use defer to cleanup unclosed readers on error
  • embedded/sql: Fix snapshot leak on query initialization failure
  • embedded/sql: Properly close readers in joint row reader
  • embedded/sql: Fix reader leaks during initialization failures
  • embedded/sql: Fix snapshot leaks in union readers
  • embedded/sql: ensure timestamp is evaluated with microsecond precision
  • pkg/client: ensure connection is closed and session can be re-established
  • pkg/database: Do not panic if incorrect number of pk values is given to VerifiableSQLGet
  • pkg/server: Fix remote storage test after recent changes
  • pkg/server/sessions: Avoid deadlock when closing session manager
  • pkg/server/sessions: Session manager test fixes
  • pkg/server/sessions: Handle short buffer read when generating session id
  • pkg/server/sessions: Correctly start session guard
  • pkg/server/sessions: Use strong random source for session ID

Changes

  • Update dependencies
  • build: Update RELEASING.md file
  • embedded/remotestorage: Improve error reporting
  • embedded/remotestorage: More detailed errors
  • embedded/remotestorage: Improve testing of remotestorage
  • embedded/remotestorage/s3: Improved s3 object name checks
  • embedded/sql: Do not return error from conditional and limit readers
  • embedded/sql: fixed-timed tx
  • github: Update push action
  • github: Run tests with minio service
  • github: On macOS run client only test on pull requests
  • github: Run coverage tests with minio enabled
  • github: Update minimal supported go version to 1.15
  • pkg/client: Better detection of tests that require external immudb
  • pkg/server: Add missing copyright headers
  • pkg/server/session: Move options normalization into options struct
  • pkg/server/sessions: Improve options handling
  • pkg/server/sessions: Add MaxSessions option
  • pkg/server/sessions: Simplify session handling code
  • remotestorage: Add prometheus metrics for remote storage kind
  • tools: Remove old stream tool

Downloads

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

Immudb Binaries

File SHA256
immudb-v1.3.1-RC1-darwin-amd64 a06254ce724fe9be3374c88664d0a27cd732a0eae0aa58451fe4d04f05f43c44
immudb-v1.3.1-RC1-darwin-arm64 45c996fca79126d409ba1e9520cf3f6172c04142916741643583fed77f840fca
immudb-v1.3.1-RC1-freebsd-amd64 aa5c35695d84b38e2f086ffde50558e9f8a958cc2ea8ce46b21dd44969aba969
immudb-v1.3.1-RC1-linux-amd64 2a7b1f28fd0e7bb9e5531a0efb2f0fc7c9c6ea0159053ca7878d5d82019e56bd
immudb-v1.3.1-RC1-linux-amd64-static bc459e15c8ea5722f9724c29566fb65c49f7894af2fc8e33a51ebcdb710a007c
immudb-v1.3.1-RC1-linux-arm64 797822fc74a8137278c0de376966d9cfe239451920e68f102e1c77a3bcada40c
immudb-v1.3.1-RC1-linux-s390x 058e02a0e86fbce1609ed99792553f45bb7e2355f698137574d53fe201356a49
immudb-v1.3.1-RC1-windows-amd64.exe d22b6f3db757997dca1f55500547dc989c700f1e795cc695e54f75545167750b

Immuclient Binaries

File SHA256
immuclient-v1.3.1-RC1-darwin-amd64 dd5fd916b1ca62593cf99dcc868485c32d32ff09f6a1d0215013bb9906470a0b
immuclient-v1.3.1-RC1-darwin-arm64 e80590acfc4bd3c31802caecf5317351cc65dcaf9758fa2c31a1bccf63006736
immuclient-v1.3.1-RC1-freebsd-amd64 513e3cff2f8dbde3c416eb3a6dc44c4c7d03c2eb5fd9505917f49e1c1aadff53
immuclient-v1.3.1-RC1-linux-amd64 b97cba3d4b5b124b5df21e6847469d440cdf35d8ca78f5ad00b4e431fa9f832d
immuclient-v1.3.1-RC1-linux-amd64-static b0b6bc7f68557b6192cce4328f6ab7398ef4dd4ca55a6aafb909c7eb69dfc5fd
immuclient-v1.3.1-RC1-linux-arm64 18a6a72394e07e3e6fb25507ead0698bdcf12f8bff79dd23fd29a9167fc971a0
immuclient-v1.3.1-RC1-linux-s390x d95107808813e430474489e2e7c3302c2e46972595c92afaed22a16e42c9435a
immuclient-v1.3.1-RC1-windows-amd64.exe e1cc8758e76fb8db1b08018e60da8608619faa7806ce10c36b4fdf272b20ae8a

Immuadmin Binaries

File SHA256
immuadmin-v1.3.1-RC1-darwin-amd64 168ec88456844898cba47e9eb6cd848d0f298b9af58956ec4cdd4fc6162f5c0b
immuadmin-v1.3.1-RC1-darwin-arm64 6ef6511c1f4e3bc0ab7d2953aaae228bcb242a207d043a639d18fbf2ead1382a
immuadmin-v1.3.1-RC1-freebsd-amd64 b56a2c00fad79114369ed13b5dbe1f937b54df475c5596622f7e22eac6d99f86
immuadmin-v1.3.1-RC1-linux-amd64 e057a9eb4744d80039f7f6b55ce7ab74111d67fa5eb933ae53e4500f0d02ea26
immuadmin-v1.3.1-RC1-linux-amd64-static 47e44c628a466e254180647730e856ed7a8b06b34153592d81eae98bb4708d2f
immuadmin-v1.3.1-RC1-linux-arm64 03f049db9313c2cf89fc60fec6f08f6bc16c4f82a7e36073ff1db741f56ee0ab
immuadmin-v1.3.1-RC1-linux-s390x 86c300e376ad02a472540734086c12ca6dbe9d2ad210dcc50934f44ba6ad043f
immuadmin-v1.3.1-RC1-windows-amd64.exe 43dfef022ad6f6d07afbe1ecddfc6663e808c6e97fbe28a10ab7b69c1a4a4662

v1.3.0

23 May 13:53
@byo byo
Compare
Choose a tag to compare

Release notes

We're pleased to announce immudb 1.3. This version brings some new notable changes, a lot of improvements and some bug fixes.

Revision-based queries

In this version we've extended queries on the KV level by adding value revisions. This brings up an easy to use and elegant way to access historical values for keys such as getting the first version (revision 1) or a previous value (revision -1). You can quickly check how it works with newest immuclient by following our updated User quickstart guide or by writing an application using revision using our SDKs.

Initial support for ALTER TABLE

This version also brings the initial support for ALTER TABLE statements in the SQL layer. We've added support for ADD COLUMN and RENAME COLUMN operations.

Temporal SQL queries based on time

When dealing with historical values on the SQL layer, it is now possible to use time expressions next to transaction ids for specifying historical values. Queries such as SELECT * FROM sales SINCE '2022-01-06 11:38' UNTIL '2022-01-06 12:00' are now perfectly valid. You can find more info in the SQL reference.

Catalog queries

Information about the SQL catalog can now be read directly using SQL. For that purpose we've added few built-in functions into our SQL dialect such as DATABASES(). Read more about this feature in the SQL reference

Documentation updates

In this release we also worked on the immudb documentation available at https://docs.mmudb.io/. Next to hundreds of smaller changes, the new menu structure will help finding useful resources. Most notably, the developer documentation is now split between the Key Value and SQL operations.

Other improvements

There are many more features added in this release. Most notably immudb now supports the USE [DATABASE] <dbname> and UNION SELECT SQL statements increasing the SQL compatibility. In addition to that, the Scan operation on the KV layer has now extended set of parameters allowing much greater filtering of scanned results.

Important notes

Starting with 1.3 release, immudb will now return an error if the amount of rows returned from the Scan, TxScan and ZScan will be greater than the allowed maximum (1000). Before it would return the first 1000 entries without reporting the error. We've found out that the previous behavior lead to a very dangerous and hidden bugs if the caller made an assumption that those calls returned all available results if the limit was not given.

To retrieve results larger than 1000 elements, pagination with a proper limit value should be used. This is the same requirement as before however it currently requires explicit limit value.

In order to handle arbitrary result sizes, future releases of immudb will focus on streaming APIs where entries will be retrieved from the server in an incremental way.

Changelog

[v1.3.0] - 2022-05-23

Bug Fixes

  • embedded/sql: return invalid value when using aggregated col selector in temporal queries
  • pkg/client: enhance client-side validations in verified methods
  • cmd/immuclient: Do not crash on login prompt
  • embedded/sql: selector resolution using valuesRowReader
  • embedded/sql: continue stmt execution on handler after changing db in use
  • embedded/sql: increase auto_increment pk once per row
  • embedded/sql: typo in error message
  • embedded/sql: adjust named parameter parsing
  • github: Run sonarcloud code analysis after cove coverate
  • pkg/database: avoid silent returns when the scan limit is reached
  • pkg/database: Fix detection of incorrect revision numbers
  • pkg/database: Correctly interpret negative revision for getAt

Changes

  • Dockerfile: Add EXPOSE 5432 and IMMUDB_PGSQL_SERVER to all immudb images
  • README.md: Switch to github badge
  • build: Update the RELEASING.md documentation
  • cmd/immuclient: Remove unnecessary sleep for set commands
  • cmd/immuclient: Move history command to a separate file
  • cmd/immuclient: Extract separate immuclient options
  • embedded/sql: validate current database as first step
  • embedded/sql: check tx range edge cases
  • embedded/sql: not showing unexistent db name as part of error message
  • embedded/sql: fully non-transactional db creation and selection
  • embedded/sql: re-include ttimestamp conversions in tx periods
  • embedded/sql: de-duplicate error handling
  • embedded/sql: database selection without multidb handler is still transactional
  • embedded/sql: database selection as non-transactional
  • embedded/sql: postpone period evaluation so to support parameters type inference
  • embedded/sql: param substitution in functional datasource
  • embedded/sql: functional-style catalog queries
  • embedded/sql: quoted identifiers
  • embedded/sql: ensure db selection is the last operation
  • embedded/sql: unit testing db selection
  • embedded/sql: include short database selection stmt
  • embedded/sql: ensure context propagation with multiple txs
  • embedded/sql: implicit time expression
  • embedded/sql: functional catalog api
  • embedded/sql: non-functional catalog access
  • embedded/sql: wip grammar extensions to enrich temporal queries
  • embedded/sql: sql tx with context
  • embedded/sql: multi-db handler
  • embedded/sql: detailed error messages
  • embedded/store: minor refactoring time-based tx lookup
  • github: Speedup push github actions
  • grpc: Extend Scan API with endKey, inclusiveSeek, inclusiveEnd
  • pkg/api: extend database creation response to indicate db already existed
  • pkg/database: minor error renaming
  • pkg/database: Rename getAt to getAtTx
  • pkg/database: provide query parameters during resolution
  • pkg/database: Add missing copyright header in scan_test.go
  • pkg/database: contextual sql tx
  • pkg/database: set multi-db handler after db initialization
  • pkg/database: Improved checking of KeyRequest constraints
  • pkg/database: databases catalog query yet unsupported
  • pkg/database: maintain MaxKeyScanLimit for backward compatibility
  • pkg/integration: Add SQL verify tests after ALTER TABLE
  • pkg/integration: Cleanup and restructure SQL tests
  • pkg/server: upgrade database method signature
  • pkg/server: contextual sql tx

Features

  • Add revision number when getting DB entries
  • Calculate revision number when scanning key history
  • api/schema: Add revision-based option to key query
  • cmd/immuclient: Add restore operation
  • cmd/immuclient: Add revision numbers when looking up key history
  • cmd/immuclient: Add support for revision-based get in immuclient
  • cmd/immuclient: Better error messages for invalid revision for restore command
  • embedded/sql: create database if not exists
  • embedded/sql: queries with temporal ranges
  • embedded/sql: temporal row ranges
  • embedded/sql: catalog queries
  • embedded/sql: WIP - UNION operator
  • embedded/sql: Implement ALTER TABLE ADD COLUMN
  • embedded/store: time-based tx lookup
  • embedded/store: ranged key update reading
  • pkg/client: Add revision-based get request on the go client
  • pkg/database: Add revision-based get request on the GRPC level
  • pkg/server: support database creation from sql
  • pkg/server: support database selection from sql stmt

Downloads

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

Immudb Binaries

File SHA256
immudb-v1.3.0-darwin-amd64 4dd1ffe15682edf57b5b3ee539808e140f4a3ae6f544b8b95ad875772c5776d2
immudb-v1.3.0-darwin-arm64 4dd6c91a59fd868b8b641b7557a9ccebf8f458d6ea5c3c3f6baf96e336bbd810
immudb-v1.3.0-freebsd-amd64 27b3533a1e665dbf74298ac76a67b37058974723f1b214e808cd7d511479c23b
immudb-v1.3.0-linux-amd64 1aaab3892cc1f1ef8bd8e5f02e25e09c76d76cd1f10f57397329bc9040e38a9a
immudb-v1.3.0-linux-amd64-static 2f404dd618798ece9b3fc183a623b13c2bb646d914dbb82f56e1a317a47d0239
immudb-v1.3.0-linux-arm64 8192640ecd581fab6630034fe059a48ad7b1fa5fa0f62abdbfc2bbf219cd04ac
immudb-v1.3.0-linux-s390x 03751514079e98aaacd4bfdcfc26bd79a0abe6d0462ff030d2ecc429dc4da970
immudb-v1.3.0-windows-amd64.exe 232ea264f32197288bea374a76ccb002ab24d3fbbff94aae79cbacdf18880701

Immuclient Binaries

File SHA256
immuclient-v1.3.0-darwin-amd64 5e9def61732ef67c9c78c84a41fe377beb00c81a19b098213ed4e3e80c5d9042
[immuclient-v1.3.0-darwin-arm64](https://github.com/vchain-us/immudb/releases/download/v1.3.0/immuclient-v1.3.0-d...
Read more