v1.0.5
Changelog
[v1.0.5] - 2021-08-02
Bug Fixes
- bind psql port to the same IP address as grpc interface (#867)
- Update crypto, sys dependencies
- consistent reads of recently written data
- embedded/ahtree: fix the full revert corner case
- embedded/store: Truncate aht before commit
- embedded/store: Don't fail to open on corrupted commit log
- embedded/store: revert change so to prevent nil assigments
- embedded/store: handle missing error case during commit phase
- embedded/store: use reserved concurrency slot for indexing
- embedded/tbtree: ensure clog is the last one being synced
- embedded/tbtree: garbage-less nodes log
- embedded/tbtree: use padding to ensure stored snapshots are named following lex order
- embedded/tbtree: flush logs containing compacted index
- embedded/tbtree: ensure proper data flushing and syncing
- pkg/client/auditor: fix and enhance state signature verification
- pkg/pgsql/server: fix boolean and blob extended query handling
- pkg/pgsql/server: hardened bind message parsing and fix leftovers
- pkg/pgsql/server/fmessages: use a variable size reader to parse fe messages
- pkg/server: initialize db settings if not present
- pkg/server: lock userdata map read
- s3: Use remote storage for index
- s3: Use remote storage for new databases
- sql/engine: Harden DecodeValue
- store/indexer: Ensure indexer state lock is always unlocked
Changes
- Better logging when opening databases
- increased coverage handling failure branches (#861)
- remove unused interceptors and add missing error code prefixes
- move sqlutils package to schema
- group user methods in a dedicated file
- Update dependencies
- appendable: Expose validation functions of appendable options
- appendable/multiapp: Introduce appendableLRUCache
- appendable/multiapp: Add hooks to the MultiFileAppender implementation
- cmd/immuclient: fix panic in immuclient cli mode
- cmd/immuclient: update error comparisson
- embedded: col descriptor with attributes
- embedded/ahtree: minor changes towards code redabilitiy
- embedded/ahtree: minor refactoring improving readability
- embedded/ahtree: auto-truncate partially written commit log
- embedded/cache: Add Pop and Replace methods to LRUCache.
- embedded/sql: initial type specialization in place
- embedded/sql: dump catalog with a different database name
- embedded/sql: Remove linter warnings
- embedded/sql: explicit catalog reloading upon failed operations
- embedded/sql: parameters type inference working with aggregations
- embedded/sql: towards non-blocking sql initialization
- embedded/sql: remove public InferParameters operations from sql statements
- embedded/sql: several adjustments and completion in type inference functions
- embedded/sql: cancellable wait for catalog
- embedded/sql: expose InferParameters function in RowReader interface
- embedded/sql: type specialization
- embedded/sql: validate either named or unnamed parameters are used within the same stmt
- embedded/store: tx metatada serialization/deserialization
- embedded/store: minor code simplification
- embedded/store: validate replicated tx against current store
- embedded/store: minor refactoring improving readability
- embedded/store: edge-case validation with first tx
- embedded/store: auto-truncate partially written commit log
- embedded/tbtree: nodes and commit prefix renaming
- embedded/tbtree: auto-truncate partially written commit log
- embedded/tbtree: use setOffset for historical data overwriting
- embedded/tbtree: enable snapshot generation while compaction is in progress
- embedded/tbtree: expose current number of snapshots
- embedded/tbtree: full snapshot recovery
- embedded/tbtree: warn if an error is raised while discarding snapshots
- pkg/api: kept simple db creation api to guarantee backward compatibility
- pkg/api: kept same attribute id in TxEntry message
- pkg/api: fix typo inside a comment
- pkg/api: comment on deprecated and not yet supported operations
- pkg/api: remove information not required to cryptographically prove entries
- pkg/auth: list of supported operations in maintenance mode
- pkg/database: support the case where database tx is not the initial one due to migration
- pkg/database: sql operations after catalog is created
- pkg/database: single-store databases
- pkg/database: method to retrieve row cursor based on a sql query stament
- pkg/database: no wait for indexing during tx replication
- pkg/database: use fixed database name
- pkg/database: sql catalog reloading on replica
- pkg/database: migrate systemdb catalog to fixed database naming
- pkg/database: internal method renaming
- pkg/database: sql catalog per database. migration from shared catalog store when required
- pkg/database: replace fixed naming with current database
- pkg/database: replace fixing naming with current database
- pkg/database: expose catalog loading operation
- pkg/database: catalog reloading by replicas
- pkg/database: parameter inference for parsed statements
- pkg/database: re-construct sql engine once catalog is ready
- pkg/database: wait for sql engine initialization before closing
- pkg/database: add IsReplica method
- pkg/database: gracefully stop by cancelling sql initialization
- pkg/database: log when a database is sucessfully opened
- pkg/database: log warning about WIP feature when using replication capabilities
- pkg/errors: immuerrors use an internal map to determine code from the message
- pkg/errors: add more error codes and add Cod prefix to codes var names
- pkg/errors: fix user operations error codes with pgsql official ones, increase coverage
- pkg/errors: add comments
- pkg/pgsql: increase server coverage
- pkg/pgsql/server: protect parameters description message from int16 overflown
- pkg/pgsql/server: increase code coverage
- pkg/pgsql/server: handle positional parameters
- pkg/pgsql/server: add max parameters value size guard and move error package in a higher level to avoid cycle deps
- pkg/pgsql/server: add bind message negative value size guards
- pkg/pgsql/server: handle empty statements
- pkg/pgsql/server: hardened INTEGER parameters conversion
- pkg/pgsql/server: increase multi inserts tests number in simple and extended query
- pkg/pgsql/server: some polishments in the state machine
- pkg/pgsql/server: simplify query machine
- pkg/pgsql/server: add a guard to check max message size and handle default case in parsing format codes in bind messages
- pkg/pgsql/server/fmessages: uniform malformed bind messages
- pkg/server: systemdb renaming
- pkg/server: disable user mgmt operations in maintenance mode
- pkg/server: move userdata lock in the inner method getLoggedInUserDataFromUsername
- pkg/server: minor updates after rebasing
- pkg/server: remove duplicated property
- pkg/server: minor adjustments after rebasing from master branch
- pkg/server: fix typo in error message
- pkg/server: remove methods moved to user file
- pkg/stream: inject immu errors
- pkg/stream: fix namings on stream api objects
- pkg/stream: use io.Reader interface
- pkg/stream: use wrapped errors
Features
- immuclient running as auditor - replace "prometheus-port" and "prometheus-host" CLI flags with "audit-monitoring-host" and "audit-monitoring-port" (int) and start a single HTTP server which exposes all the needed endpoints (GET /metrics, /initz, /readyz, /livez and /version)
- add /healthz and /version endpoints for immudb and immuclient auditor
- add immudb error package
- appendable: Add remote s3 backend
- cmd/immuadmin: update database command
- cmd/immuadmin: upgrade database creation with settings
- cmd/immuadmin: add flag to create database as a replica
- cmd/immuclient: upgrade database creation with settings
- embedded/sql: support for named positional parameters
- embedded/sql: towards leveraging readers for type inference
- embedded/sql: catalog dumping
- embedded/sql: adding method to infer typed parameters from sql statements
- embedded/sql: support for unnamed parameters
- embedded/store: WIP replicatedCommit
- embedded/store: passive waiting for transaction commit
- embedded/store: tx export and commit replicated
- pkg/api: enhanced createDatabase endpoint to specify database replication
- pkg/api: new endpoint to update database settings
- pkg/api: endpoints for exporting and replicating txs
- pkg/client: replica creation and replication API
- pkg/client: implements update database settings operation
- pkg/client: deprecate CleanIndex operation
- pkg/database: suppport runtime replication settings changes
- pkg/database: implement passive wait for committed tx
- pkg/database: parameters type inference exposed in database package
- pkg/database: db as replica and replication operations
- pkg/error: add improved error handling
- pkg/pgsql/server: add extended query messages and inner logic
- pkg/server: initial handling of database replication settings
- pkg/server: replicas and replication endpoints
- pkg/server: implements update database settings endpoint
- pkg/server: leverage maintenance mode to recover systemdb and defaultdb databases
- pkg/server: stream of committed txs
- pkg/server: enable simultaneous replication of systemdb and defaultdb
- pkg/stream: readFully method to read complete payload transmitted into chunks
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
Immudb Binaries
| File | SHA256 |
|---|---|
| immudb-v1.0.5-darwin-amd64 | abf81f267102b4b177e460c67f570611971fe4d00f7e1b96fcffe96360cf8aed |
| immudb-v1.0.5-freebsd-amd64 | 0be8bce9e0d04f7264ed80b0b26c5b7e76ecc10ffcfe85af89b073f752adb1e1 |
| immudb-v1.0.5-linux-amd64 | 24b5a9d9300d59f2469372a5f728406c8fcfd82616364e42f6e43ce4058bf3f6 |
| immudb-v1.0.5-linux-amd64-static | 1009b417768ad3cb4bfad035ae887d7816afbc7914ea38de9d08fb02091a0fce |
| immudb-v1.0.5-linux-arm64 | c38c1ad212d0d897295a1ae5ef8d1b3ce0ce3f76b52726ad18c4e8fa2f6cec28 |
| immudb-v1.0.5-linux-s390x | 69af5b53fd14ff0edfec3d439d1d7446ae579412456ad2c18c380479479810b9 |
| immudb-v1.0.5-windows-amd64.exe | b37c12b0120a85bb732bd835e60dff83ccd0313d9cdf09a045e7d57f77a9f496 |
Immuclient Binaries
| File | SHA256 |
|---|---|
| immuclient-v1.0.5-darwin-amd64 | e01b1d0128eb5a7493c740b9e106ae14ea299a887f81ed218db972ff56700fd3 |
| immuclient-v1.0.5-freebsd-amd64 | a06fd1e1fa57141d4a560bb856db71d1f7035b20928a59b29c47ac609ae8add1 |
| immuclient-v1.0.5-linux-amd64 | 3e02c58259f093ee6adf4687d7d462a6012b08f7488446675bd49df4da53cfa1 |
| immuclient-v1.0.5-linux-amd64-static | 0d8b32a18607f1317fcc15a369ae923810858c57a9d140e54bd5c4f3de9fd3ff |
| immuclient-v1.0.5-linux-arm64 | 4c40242c4249211f960d8c4c56986f62136a5cd1214cc3c5f5ab72c3d7fe403d |
| immuclient-v1.0.5-linux-s390x | 299c16a37d652d4cf78efbb2ea1296412a53f4f1c4726e8526a46eb68ec44752 |
| immuclient-v1.0.5-windows-amd64.exe | 3f93580e40f401ebaf4df4e3c5a13831a87fc8a0b810419e3ebf7dbca912d2d3 |
Immuadmin Binaries
| File | SHA256 |
|---|---|
| immuadmin-v1.0.5-darwin-amd64 | f16851853b8d88cf6a2c5552063e96e0437f8e61e308bcd91bd1e51b73de327f |
| immuadmin-v1.0.5-freebsd-amd64 | 78d5ff27ce85cf21bf855bb9104d029a4ac9e5d9c8f2e02aca287f1feeb6003c |
| immuadmin-v1.0.5-linux-amd64 | 8b49d6060ea067fac4fe40898c4ecdc1ba0bdf8f38c3bef23b2b8fd53294ff4f |
| immuadmin-v1.0.5-linux-amd64-static | a054e590b18dc9aebc48bfdb1a435225ec368a280269ea4573debb955d67df37 |
| immuadmin-v1.0.5-linux-arm64 | 063739cb1f02a5ccd159aa51ab1d627e94ceda0d207818a427135c132bb6afb0 |
| immuadmin-v1.0.5-linux-s390x | 83d788cc57ea7e3cb249204fe25532af4ae004a8e15e96bab97f11cce20db7b4 |
| immuadmin-v1.0.5-windows-amd64.exe | b91397e84dfe58014f4142d62fdab12cc465ac678cd447e15f61680714e74cbb |