All Versions
24
Latest Version
2.2
Avg Release Cycle
34 days
Latest Release
389 days ago

Changelog History
Page 1

  • v2.2 Changes

    April 23, 2021

    ๐Ÿ› Bug Fixes

    • โšก๏ธ update Discord invite link
    • readme typo and mascot placement (#693)
    • embedded/store: ensure done message is received
    • pkg/client: delete token file on logout only if the file exists

    ๐Ÿ”„ Changes

    • โž• Add roadmap
    • โž• Add benchmark to README (based on 0.9.x) (#706)
    • โœ‚ remove grpc term from token expiration description
    • embedded/store: check latest indexed tx is not greater than latest committed one
    • embedded/store: defer lock releasing
    • pkg/database: use newly exposed KeyReaderSpec

    ๐Ÿ”‹ Features

    • โž• add token expiration time flag
    • embedded/store: readAsBefore and reset reader
    • pkg/sql: readAsBefore operation
  • v1.2.2 Changes

    January 17, 2022

    ๐Ÿ› Bug Fixes

    • registering connection in order to make possible conn recycling
    • ๐Ÿณ Dockerfile: Add ca-certificates.crt file to immudb image
    • client/file_cache: Fix storing immudb state in file cache
    • embedded/immustore: Avoid deadlock when acquire vLog lock
    • embedded/sql: max key len validations
    • embedded/sql: consider not null flag is on for auto incremental column
    • pkg/server: validate if db is not replica then other replication attributes are not set
    • pkg/stdlib: fix last insert id generation

    ๐Ÿ”„ Changes

    • create code of conduct markdown file (#1051)
    • cmd/immuclient: return actual login error
    • embedded/sql: wip client provided auto-incremental values
    • embedded/sql: wip client provided auto-incremental values
    • embedded/sql: wip client provided auto-incremental values
    • embedded/sql: add first and last insert pks retrivial methods
    • embedded/sql: change column constraints ordering
    • metrics: Add indexer metrics
    • metrics: Add more s3-related metrics
    • pkg/database: pre-validation of duplicated entries in execAll operation
    • pkg/database: temporarily disable execall validations
    • pkg/database: instantiate tx holder only in safe mode
    • pkg/database: self-contained noWait execAll
    • pkg/database: descriptive error messages
    • pkg/replication: delay replication after failure
    • pkg/stdlib: clean connection registration and leftovers

    ๐Ÿ”‹ Features

    • embedded/sql: support for basic insert conflict handling
    • s3: Add support for AWS V4 signatures
  • v1.2.1 Changes

    January 01, 0001

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  fix interactive use database
    • database: Internal consistency check on data reads
    • database/meta: Do not crash on history with deleted items
    • embedded/store: change already closed error message
    • embedded/store: readonly tx entries to ensure no runtime modification
    • embedded/store: reserve 4bytes in buffers for nentries
    • embedded/tbtree: set fixed snapshot ts
    • pkg/database: history skipping not found entries
    • pkg/server/sessions: remove transaction on read conflict error
    • pkg/server/sessions/internal/transactions: transaction is cleared after sqlExec error
    • protobuf: Fix compatibility with 1.1 version
    • sql: Do not panic on error during delete
    • tx: Remove summary from metadata

    ๐Ÿ”„ Changes

    • cmd/immuadmin/command: add super user login hint
    • embedded/sql: support for escaped strings
    • embedded/sql: use sql standard escaping with single quotes
    • embedded/store: prevent value reading of expired entries
    • embedded/store: private readonly metadata is validated when reading data
    • embedded/store: mandatory expiration filter
    • embedded/store: read-only kv metadata for committed entries
    • embedded/store: rw and readonly kv metadata
    • embedded/store: txmetdata placeholder with zero len
    • embedded/store: easily extendable meta attributes
    • embedded/store: reduce attribute code size
    • embedded/store: return data corrupted error when deserialization cannot proceed
    • embedded/store: use fixed time during the lifespan of a tx
    • embedded/store: validations during metadata deserialization
    • embedded/store: improve metadata serialization/deserialization methods
    • embedded/store: dedicated expiration error
    • embedded/store: fix expiration error declaration
    • ๐Ÿ‘‰ makefile: remove windows binaries digital signature
    • pkg/api: use new kvmetadata api
    • pkg/auth: require admin permission to export and replicate txs
    • pkg/client: tx read conflict error is mapped in an CodInFailedSqlTransaction
    • pkg/integration: remove useless compilation tag on tests
    • pkg/server: deprecate GetAuth and WithAuth
    • pkg/server/sessions: tuning sessions params
    • pkg/server/sessions: session timeout set to 2 min
    • pkg/server/sessions: session max inactivity time set to 3m and minor stat collecting fix
    • pkg/server/sessions/internal/transactions: defer only when needed
    • pkg/stdlib: clean tx after rollback
    • pkg/stdlib: fix connection creation
    • server/sessions: modify read conflict error message

    ๐Ÿ”‹ Features

    • embedded/store: logical entries expiration
    • pkg/api: logical entries expiration
    • pkg/client: expirable set
    • pkg/stdlib: expose tx on std lib
  • v1.2.0 Changes

    December 13, 2021

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  fix interactive use database
    • database: Internal consistency check on data reads
    • database/meta: Do not crash on history with deleted items
    • embedded/store: change already closed error message
    • embedded/store: readonly tx entries to ensure no runtime modification
    • embedded/store: reserve 4bytes in buffers for nentries
    • embedded/tbtree: set fixed snapshot ts
    • pkg/database: history skipping not found entries
    • pkg/server/sessions: remove transaction on read conflict error
    • pkg/server/sessions/internal/transactions: transaction is cleared after sqlExec error
    • protobuf: Fix compatibility with 1.1 version
    • sql: Do not panic on error during delete
    • tx: Remove summary from metadata

    ๐Ÿ”„ Changes

    • cmd/immuadmin/command: add super user login hint
    • embedded/sql: support for escaped strings
    • embedded/sql: use sql standard escaping with single quotes
    • embedded/store: prevent value reading of expired entries
    • embedded/store: private readonly metadata is validated when reading data
    • embedded/store: mandatory expiration filter
    • embedded/store: read-only kv metadata for committed entries
    • embedded/store: rw and readonly kv metadata
    • embedded/store: txmetdata placeholder with zero len
    • embedded/store: easily extendable meta attributes
    • embedded/store: reduce attribute code size
    • embedded/store: return data corrupted error when deserialization cannot proceed
    • embedded/store: use fixed time during the lifespan of a tx
    • embedded/store: validations during metadata deserialization
    • embedded/store: improve metadata serialization/deserialization methods
    • embedded/store: dedicated expiration error
    • embedded/store: fix expiration error declaration
    • ๐Ÿ‘‰ makefile: remove windows binaries digital signature
    • pkg/api: use new kvmetadata api
    • pkg/auth: require admin permission to export and replicate txs
    • pkg/client: tx read conflict error is mapped in an CodInFailedSqlTransaction
    • pkg/integration: remove useless compilation tag on tests
    • pkg/server: deprecate GetAuth and WithAuth
    • pkg/server/sessions: tuning sessions params
    • pkg/server/sessions: session timeout set to 2 min
    • pkg/server/sessions: session max inactivity time set to 3m and minor stat collecting fix
    • pkg/server/sessions/internal/transactions: defer only when needed
    • pkg/stdlib: clean tx after rollback
    • pkg/stdlib: fix connection creation
    • server/sessions: modify read conflict error message

    ๐Ÿ”‹ Features

    • embedded/store: logical entries expiration
    • pkg/api: logical entries expiration
    • pkg/client: expirable set
    • pkg/stdlib: expose tx on std lib
  • v1.2.0-RC1 Changes

    December 07, 2021

    ๐Ÿ› Bug Fixes

    • โšก๏ธ Update jaswdr/faker to v1.4.3 to fix build on 32-bit systems
    • ๐Ÿ‘‰ Makefile: Fix building immudb for specific os/arch
    • ๐Ÿ‘‰ Makefile: Use correct version of the grpc-gateway package
    • embedded/sql: ensure determinism and no value overlaps distinct rows
    • embedded/sql: fix inserting calculated null values
    • embedded/sql: correct max key length validation based on specified col max length
    • embedded/sql: fix rollback stmt
    • embedded/sql: normalize parameters with lower case identifiers
    • embedded/sql: param substitution in LIKE expression
    • embedded/sql: Use correct statement for subquery
    • embedded/sql: Do not modify value returned by colsBySelector
    • embedded/sql: Fix SELECT * when joining with subquery
    • embedded/sql: distinct row reader with limit argument
    • embedded/store: release lock when tx has a conflict
    • embedded/store: read conflict validation
    • embedded/store: typo in error message
    • pkg/auth: Fix password tests
    • pkg/client: fix database name saving on token service
    • pkg/database: sql exec on provided tx
    • pkg/server: fix keep alive session interceptor
    • โœ… testing: using pointers for job channels
    • webconsole: Fix html of the default missing page.

    ๐Ÿ”„ Changes

    • refining sdk client constructor and add readOnly tx guard
    • ๐Ÿ“š Update build/RELEASING.md documentation.
    • ๐Ÿ›  fix more tests
    • decoupled token service
    • ๐Ÿšš token is handled internally by sdk. Remove useless code
    • โœ‚ remove token service from client options and fix tests
    • cmd/immuadmin/command: fix immuadmin token name on client creation
    • cmd/immuclient: deleteKeys functioin and updates after metadata-related changes
    • cmd/immuclient: temporary disable displaying hash in non-verified methods
    • embeddded/tbtree: leverage snapshot id to identify it's the current unflushed one
    • embedded/multierr: minor code simplification
    • embedded/sql: set INNER as default join type
    • embedded/sql: minor update after rebasing
    • embedded/sql: Alter index key prefixes
    • embedded/sql: wip rw transactions
    • embedded/sql: remove opt_unique rule to ensure proper error message
    • embedded/sql: minor code simplification
    • embedded/sql: kept last snapshot open
    • embedded/sql: Simplify row_reader key selection
    • embedded/sql: Better error messages when (up|in)serting data
    • embedded/sql: standardized datasource aliasing
    • embedded/sql: wip sqlTx
    • embedded/sql: de-duplicate tx attributes using tx header struct
    • embedded/sql: fix nullable values handling
    • embedded/sql: rollback token
    • embedded/sql: set parsing verbose mode when instantiating sql engine
    • embedded/sql: unsafe snapshot without flushing
    • embedded/sql: reusable index entries and ignore deleted index entries
    • embedded/sql: bound stmt execution to a single sqltx
    • embedded/sql: delay index sync until fetching row by its pk
    • embedded/sql: changes on tx closing
    • embedded/sql: leverage metadata for logical deletion
    • embedded/sql: use order type in scanSpecs
    • embedded/sql: cancel non-closed tx
    • embedded/sql: expose Cancel method
    • embedded/sql: wip interactive sqltx
    • embedded/sql: limit row reader
    • embedded/sql: return map with last inserted pks
    • embedded/sql: use int type for limit arg
    • embedded/sql: defer execution of onClose callback
    • embedded/sql: sql engine options and validations
    • embedded/sql: standard count(*)
    • embedded/sql: ddl stmts not counted in updatedRows
    • embedded/sql: method to return sql catalog
    • embedded/sql: non-thread safe tx
    • embedded/sql: use current db from ongoing tx
    • embedded/sql: postponing short-circuit evaluation for safetiness
    • embedded/sql: wip sql tx preparation
    • embedded/store: entryDigest calculation including key len
    • embedded/store: conservative read conflict validation
    • embedded/store: non-thread safe ongoing tx
    • embedded/store: wip tx header versioning
    • embedded/store: expose ExistKeyWithPrefix in OngoingTx
    • embedded/store: set header version at commit time
    • embedded/store: set tx as closed even on failed attempts
    • embedded/store: strengthen tx validations
    • embedded/store: GetWith method accepting filters
    • embedded/store: handle watchersHub closing error
    • embedded/store: remove currentShapshot method
    • embedded/store: tx header version validations and increased max number of entries
    • embedded/store: threadsafe tx
    • embedded/store: filter out entries when filter evals to true
    • embedded/store: ongoing tx api
    • embedded/store: early tx conflict checking
    • embedded/store: simplified ExistKeyWithPrefix in current snapshot
    • embedded/store: reorder tx validations
    • embedded/tbtree: remove ts from snapshot struct
    • embedded/tools: upgrade sql stress tool
    • embedded/tools: update stress_tool after metadata-related changes
    • embedded/tools: upgrade stress tool using write-only txs
    • pkg/api: consider nil case during tx header serialization
    • pkg/api: changes in specs to include new metadata records
    • pkg/api/schema: increase supported types when converting to sql values
    • pkg/client: updates after metadata-related changes
    • pkg/client: avoid useless tokenservice call and add tests
    • pkg/client: check if token is present before injecting it
    • pkg/client: omit deleted flag during value decoding
    • โœ… pkg/client/clienttest: fix immuclient mock
    • pkg/client/tokenservice: handlig error properly on token interceptor and fix leftovers
    • pkg/database: updates after metadata-related changes
    • pkg/database: improve readability of Database interface
    • pkg/database: snapshots should be up to current committed tx
    • pkg/database: revised locking so to ensure gracefully closing
    • pkg/database: implement current functionality with new tx supportt
    • pkg/database: return a specific error in querying
    • pkg/database: enforce verifiableSQLGet param validation
    • pkg/database: use new transaction support
    • pkg/database: limit query len result
    • pkg/errors: invalid database name error converted to immuerror
    • pkg/errors: useDatabase returns notFound code when error
    • pkg/integration: updates after metadata-related changes
    • pkg/server: use upgraded database apis
    • pkg/server: updates after metadata-related changes
    • pkg/server: error when tx are not closed
    • pkg/server/sessions: polish logger call
    • pkg/server/sessions: add sessions counter debug messages
    • pkg/stdlib: general improvements and polishments
    • pkg/stdlib: remove context injection when query or exec
    • pkg/stdlib: improve connection handling and allow ssl mode in connection string
    • pkg/stdlib: fix unit testing
    • pkg/stdlib: handling nil pointers when converting to immudb named params
    • pkg/stdlib: increase pointer values handling and testing
    • stress_tool_sql: add sessions and transaction mode
    • stress_tool_worker_pool: add long running stress tool
    • โœ… test: test backward compatibility with previous release (v1.1.0)
    • tsting: add index compactor in long running stress tool

    ๐Ÿ”‹ Features

    • ๐Ÿš€ helm chart for deploying immudb on kubernetes (#997)
    • embedded/appendable: method for reading short unsigned integer
    • embedded/sql: wip sqltx at engine with autocommit
    • embedded/sql: support for not like
    • embedded/sql: increased expression power in LIKE and IN clauses
    • embedded/sql: null values for secondary indexes
    • embedded/sql: engine as tx executor
    • embedded/sql: support value expression in like pattern
    • embedded/sql: create index if not exists
    • embedded/sql: Detect ambigous selectons on joins
    • embedded/sql: WIP un-restricted upsert
    • embedded/sql: support for IN clause
    • embedded/sql: delete from statement
    • embedded/sql: sql update statement
    • embedded/sql: distinct row reader
    • embedded/store: initial commit towards full tx support
    • embedded/store: wip enhanced tx support
    • embedded/store: included filters in key readers
    • embedded/store: including metadata records
    • embedded/store: conservative tx invalidation
    • embedded/store: functional constraints
    • embedded/store: logical key deletion api
    • embedded/store: keyReader in tx scope
    • embedded/tbtree: read as before returns history count
    • embedded/tbtree: implements ExistKeyWithPrefix in snapshots
    • sql: Add support for IS NULL / IS NOT NULL expressions
    • sql/index-on-nulls: Update on-disk format to support nullable values
    • sql/timestamp: Add timestamp support to embedded/sql
    • sql/timestamp: Add timestamp to protobuf definition
    • sql/timestamp: Add timestamp to stdlib
    • sql/timestamp: Add CAST from varchar and integer to timestamp
  • v1.1.0 Changes

    September 22, 2021

    ๐Ÿ› 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
  • v1.0.5 Changes

    August 02, 2021

    ๐Ÿ› 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
  • v1.0.1 Changes

    June 02, 2021

    ๐Ÿ› Bug Fixes

    • go mod tidy/vendor with statik module (#796)
    • cmd/immuclient: remove warnings on sql commands in interactive mode
    • cmd/immuclient: improve immuclient tx and safetx error message
    • embedded/sql: interprete binary prefix if followed by a quote
    • pkg/server: always create system db (even when auth is off)

    ๐Ÿ”„ Changes

    • ๐Ÿณ enable webconsole in docker image
    • โœ‚ remove mtls evironments var from dockerfile
    • โœจ enhance Makefile so to automatically download latest webconsole if not already present
    • โšก๏ธ README/doc updates (#791)
    • embedded/store: apply synced settings to indexing data
    • embedded/store: sync values once all entries are written
    • pkg/database: retry database selection after registration
    • pkg/database: auto-registration when not present in the catalog

    ๐Ÿ”‹ Features

    • embedded/sql: support NULL syntax
    • pkg/database: enhace table description by adding nullable constraint
    • webconsole: default web console page (#786)
  • v1.0.0 Changes

    May 20, 2021

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  fix windows installer service and missing flags
    • ๐Ÿ›  make prequisites fixes introduced in #726 (#732)
    • tlsConfig is always non-nil
    • โœ… cmd/immuclient/immuclienttest: fix options injection in client test helper (#749)
    • embedded: ensure readers get properly closed
    • embedded/sql: fix selector aliasing
    • embedded/sql: add missing error handling
    • embedded/sql: close reader after loading catalog
    • embedded/sql: prevent side effects in conditional clauses
    • embedded/store: fix issue when resuming indexing
    • embedded/store: notified latest committed tx when opening store
    • embedded/store: fix indexing data race
    • pkg/client: row verification with nullable values
    • pkg/client/cache: fix lock file cache issue on windows
    • pkg/client/cache: clean state file when re-writing old stetes
    • pkg/database: use SQLPrefix when reopening database
    • pkg/database: unwrap parameter before calling sqlexec
    • pkg/pgsql/server: handle data_row message with text format
    • pkg/server: complete error handling
    • pkg/server: disable pgsql server by default and fix previous server tests
    • pkg/sql: columns resolved with aliases
    • pkg/sql: resolve shift/reduce conflict in SELECT stmt

    ๐Ÿ”„ Changes

    • ๐Ÿ›  fix rebase leftovers
    • ๐Ÿ›  fix makefile leftovers
    • bundle webconsole inside dist binaries
    • ๐Ÿ‘Œ improved make dist script
    • ๐Ÿ›  fix acronym uppercase
    • increase coverage and minor fix
    • README SDK description and links (#717)
    • github workflow to run stress_tool (#714)
    • blank line needed after tag or interpreted as comment
    • ๐Ÿ“ฆ move concrete class dblist to database package
    • ๐Ÿ“ฆ dblist interface is moved to database package and extended
    • โž• add pgsql related flags
    • inject immudb user authentication
    • ๐Ÿ›  fix immugw support
    • ๐Ÿ”ฆ expose missing methods to REST (#725)
    • ๐Ÿ‘‰ make roadmap about pgsql wire more explicit (#723)
    • โช revert 3114f927adf4a9b62c4754d42da88173907a3a9f in order to allow insecure connection on grpc server
    • reword wire compatibility
    • cmd/immuclient: add describe, list, exec and query commands to immuclient shell
    • cmd/immuclient: query result rendering
    • cmd/immuclient: render raw values
    • cmd/immudb: add debug info env var details
    • cmd/immudb/command: enabled pgsql server only in command package
    • cmd/immudb/command: restore missing pgsql cmd flag
    • cmd/immudb/command: handle tls configuration errors
    • cmd/immudb/command: remove parsing path option in unix
    • embedded/cache: thread-safe lru-cache
    • embedded/sql: improved nullables
    • embedded/sql: skip tabs
    • embedded/sql: move sql engine under embedded package
    • embedded/sql: safer support for selected database
    • embedded/sql: minor refactoring to expose functionality needed for row verification
    • embedded/sql: case insensitive functions
    • embedded/sql: set 'x' as blob prefix
    • embedded/sql: store non-null values and only col ids on encoded rows
    • embedded/sql: keep one snapshot open and close when releasing
    • embedded/sql: expose functionality needed for row verification
    • embedded/sql: validate table is empty before index creation
    • embedded/sql: resolve query with current snapshot if readers are still open
    • embedded/sql: case insensitive identifiers
    • embedded/store: use specified sync mode also for the incremental hash tree
    • embedded/store: index info to return latest indexed tx
    • embedded/store: use indexer state to terminate indexing goroutine
    • embedded/store: log during compaction
    • embedded/store: pausable indexer
    • embedded/store: commitWith callback using KeyIndex interface
    • embedded/tbree: postpone reader initialization until first read
    • embedded/tbtree: remove dots denoting progress when flushing is not needed
    • embedded/tbtree: make snapshot thread-safe
    • embedded/tbtree: index compaction if there is not opened snapshot, open snapshot if compaction is not in already in progress
    • embedded/watchers: cancellable wait
    • pkg/api: render varchar as quoted strings
    • pkg/api: sql api spec
    • pkg/api: render varchar as quoted string
    • pkg/api: render varchar as raw string value
    • pkg/api: include data needed for row verification
    • pkg/api/schema: Handle tools via modules (#726)
    • pkg/auth: add SQL-related permissions
    • pkg/auth: perm spec for row verification endpoint
    • pkg/client: auto convert numeric values to uint64
    • pkg/client: improved sql API
    • pkg/client: use to fetch current database name
    • pkg/client: remove deprecated operations
    • pkg/client/cache: release lock only if locked file is present, and wait for unlock when already present
    • โœ… pkg/client/clienttest: add VerifiedGetAt mock method
    • pkg/database: add missing copy
    • pkg/database: return mapped row values
    • pkg/database: typed-value proto conversion
    • pkg/database: improved parameters support
    • pkg/database: ensure rowReader get closed upon completion
    • pkg/database: row verification against kv-entries
    • pkg/database: upgrade wait for indexing api
    • pkg/database: towards prepared sql query support
    • pkg/database: make use of UseDatabase operation
    • pkg/database: support index compaction with sql engine in place
    • pkg/database: close sql engine when db gets closed
    • pkg/database: support for nullable values
    • pkg/database: set implicit database using UseDatabase method
    • pkg/database: use store-level snapshots
    • pkg/database: use MaxKeyScanLimit to limit query results
    • pkg/database: upgrade ExecAll to use KeyIndex interface
    • pkg/database: support multi-selected columns
    • pkg/embedded: introduce Snapshot at Store level
    • pkg/pgsql: handle empty response and command complete message
    • pkg/pgsql: fix filename format
    • pkg/pgsql: bind immudb sql engine
    • pkg/pgsql: use options flag to determine if pgsql server need to be launched
    • pkg/pgsql: add pgsql server wire protocol stub
    • pkg/pgsql: handle parameter status and terminate messages
    • pkg/pgsql/client: add jackc/pgx pgsql client for testing purpose
    • pkg/pgsql/server: improve error handling when client message is not recognized
    • pkg/pgsql/server: fix connection upgrade pgsql protocol messages
    • pkg/pgsql/server: handle an ssl connection request if no certificate is present on server
    • pkg/pgsql/server: enforce reserved statements checks
    • pkg/pgsql/server: move sysdb in session constructor
    • pkg/pgsql/server: remove host parameter
    • pkg/pgsql/server: add missing copyright
    • pkg/pgsql/server: default error in simplequery loop has error severity
    • pkg/pgsql/server: protect simple query flow with a mutex
    • pkg/pgsql/server: handle version statement
    • pkg/pgsql/server: limit number of total connections and do not stop server in case of errors
    • pkg/pgsql/server: add debug logging messages, split session handling in multiple files
    • pkg/pgsql/server: minor fixes and leftovers
    • pkg/server: remove tls configuration in server
    • pkg/server: fix db mock
    • pkg/server: use systemdb as a shared catalog store
    • pkg/server: inject sqlserver in main immudb server
    • pkg/server: load systemdb before any other db
    • pkg/server: renamed server reference
    • pkg/server: remove unused options
    • pkg/sql: refactored AggregatedValue and TypedValue interfaces
    • pkg/sql: grammar adjustments to support aggregated columns
    • pkg/sql: swap LIMIT and ORDER BY parse ordering
    • pkg/sql: row reader to support GROUP BY behaviour
    • pkg/sql: make row values externally accessible
    • pkg/sql: support for SUM aggregations
    • pkg/sql: upgrade to new store commit api
    • pkg/sql: unify augmented and grouped row readers
    • pkg/sql: column descriptors in row readers
    • pkg/sql: improve error handling
    • pkg/sql: return ErrNoMoreRows when reading
    • pkg/sql: row reader used to close the snapshot once reading is completed
    • pkg/sql: many internal adjustments related to name binding
    • pkg/sql: alias overriding datasource name
    • pkg/sql: joint column with explicit table reference
    • pkg/sql: joins limited to INNER type and equality comparison against ref table PK
    • pkg/sql: add comment about nested joins
    • pkg/sql: mapping using ids, ordering and renaming support
    • pkg/sql: composite readers
    • pkg/sql: wip multiple readers
    • pkg/sql: catch store indexing errors
    • pkg/sql: add generated sql parser
    • pkg/sql: support multiple spacing between statements
    • pkg/sql: remove offset param
    • pkg/sql: value-less indexed entries
    • pkg/sql: encoded value with pk entry
    • pkg/sql: remove alter column stmt
    • pkg/sql: inmem catalog with table support
    • pkg/sql: inmem catalog
    • pkg/sql: towards catalog encapsulation
    • pkg/sql: primary key supported type validation
    • pkg/sql: use standardized transaction closures
    • pkg/sql: col selector with resolved datasource
    • pkg/sql: case insensitive reserved words
    • pkg/sql: use token IDENTIFIER
    • pkg/sql: improved null value support
    • pkg/sql: order-preserving result set
    • pkg/sql: using new KeyReaderSpec
    • pkg/sql: ensure use snapshot is on the range of committed txs
    • pkg/sql: catalog construct
    • tools/stream: upgrade stream tools dependencies

    ๐Ÿ”จ Code Refactoring

    • pkg/server: tls configuration is moved in command package from server

    ๐Ÿ”‹ Features

    • โœจ enhance database size and number of entries metrics to support multiple databases add CORS middleware to metrics HTTP endpoints (#756)
    • display version at startup (#775)
    • CREATE TABLE IF NOT EXISTS (#738)
    • cmd/immuclient: list and describe tables
    • cmd/immuclient: use 'tables' to display the list of tables within selected database
    • embedded/sql: special case when all selectors are aggregations and there is no matching rows
    • embedded/sql: use snapshot as state method
    • embedded/sql: 'NOT NULL' constraint
    • embedded/sql: arithmetic expressions within where clause
    • embedded/sql: INSERT INTO statement
    • embedded/sql: LIKE operator support
    • embedded/sql: enhanced sql parser to support multi-lined statements
    • embedded/store: uniqueness constraint and de-coupled indexer
    • embedded/store: operation
    • embedded/tools: initial SQL stress tool (#760)
    • pkg/api: sql endpoints for row verification
    • pkg/api: noWait mode for sql statements
    • pkg/client: row verification
    • pkg/client: towards client-side sql support
    • pkg/database: list and describe tables
    • pkg/database: towards sql support
    • pkg/database: row verification endpoint
    • pkg/database: towards integrated sql engine. handling database creation at server level
    • pkg/pgsql: add tls support
    • pkg/pgsql/server: handle nil values
    • pkg/pgsql/server: setup pgsqk error handling
    • pkg/pgsql/server: dblist is injected in pgsql server
    • pkg/server: row verification endpoint
    • pkg/server: initial integration of sql engine
    • pkg/server: expose endpoint
    • pkg/sql: column selector alias support
    • pkg/sql: aggregations without row grouping
    • pkg/sql: towards supporting COUNT, SUM, MIN, MAX and AVG
    • pkg/sql: towards aggregated values support
    • pkg/sql: towards supporting filtered aggregations
    • pkg/sql: towards group by and aggregations support
    • pkg/sql: noWait for indexing mode
    • pkg/sql: improved nullable support
    • pkg/sql: towards GROUP BY support
    • pkg/sql: implements NOW() function
    • pkg/sql: list and describe tables
    • pkg/sql: LIMIT clause to determine max number of returned rows
    • pkg/sql: queries over older data
    • pkg/sql: parameters support
    • pkg/sql: initial parameters support
    • pkg/sql: towards parameter support
    • pkg/sql: support for SELECT * FROM queries
    • pkg/sql: row projection
    • pkg/sql: towards projected rows
    • pkg/sql: auto-commit multi-statement script
    • pkg/sql: subquery aliases
    • pkg/sql: support for WHERE clause
    • pkg/sql: towards row filtering with conditional readers
    • pkg/sql: support for boolean values
    • pkg/sql: index reloading
    • pkg/sql: catalog reloading
    • pkg/sql: ASC/DESC row sorting by any indexed column
    • pkg/sql: implements CREATE INDEX stmt
    • pkg/sql: support of foreign keys of any pk type
    • pkg/sql: multiple joins support
    • pkg/sql: col selector binding
    • pkg/sql: jointRowReader towards supporting joins
    • pkg/sql: seekable, ordered and filtered table scan
    • pkg/sql: ordering in descending mode
    • pkg/sql: towards ordering row scans
    • pkg/sql: towards query resolution with multiple datasources
    • pkg/sql: towards query processing
    • pkg/sql: upsert processing
    • pkg/sql: towards insert into statement processing
    • pkg/sql: table creation with primary key
    • pkg/sql: primary key spec
    • pkg/sql: initial work on sql engine
    • pkg/sql: multi-line scripts
    • pkg/sql: snapshot support
    • pkg/sql: support for comments
    • pkg/sql: support for EXISTS in subquery
    • pkg/sql: support for INNER, LEFT and RIGHT joins
    • pkg/sql: support for parameters
    • pkg/sql: support for system values e.g. TIME
    • pkg/sql: aggregated functions
    • pkg/sql: use colSelector instead of identifiers
    • pkg/sql: expressions parsing
    • pkg/sql: multi-db queries
    • pkg/sql: multi-row insertion
    • pkg/sql: initial support for SELECT statement
    • pkg/sql: transactional support
    • pkg/sql: support for insertions
    • pkg/sql: support table modifications
    • pkg/sql: support index creation
    • pkg/sql: include column specs
    • pkg/sql: partial grammar with multiple statements
    • pkg/sql: initial commit for sql support
  • v0.9.2 Changes

    April 07, 2021

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  fix StreamVerifiedSet and Get and add an (integration) test for them
    • ๐Ÿ›  fix inclusion proofs in StreamVerifiedSet and Get
    • password reader 'inappropriate ioctl for device' from stdin (#658)
    • include AtTx in StreamZScan response
    • embedded: fix data races
    • embedded: use mutex to sync ops at tx lru-cache
    • embedded/store: sync ReadTx operation
    • embedded/store: fix indexing sync and error retrieval
    • embedded/store: ensure waitees get notified when store is restarted
    • embedded/store: remove checking for closed store when fetching any vlog
    • embedded/store: continue indexing once index is replaced with compacted index
    • embedded/store: set delay with duration in ms
    • embedded/store: ensure watchers get notified when indexing is up-to-date
    • embedded/tbtree: release lock when compaction thld was not reached
    • embedded/tbtree: insertion delay while compacting not affecting compaction
    • embedded/tbtree: set lastSnapshot once flushed is completed
    • pkg/auth: add missing stream write methods to permissions
    • pkg/client: fix minor leftover
    • pkg/client: fix security issue: if client local state became corrupted an error is returned
    • pkg/client: ensure dual proof verification is made when there is a previously verified state
    • pkg/database: wrap seekKey with prefix only when seekKey is non-empty
    • pkg/server: use latest snapshot when listing users

    ๐Ÿ”„ Changes

    • โž• add max tx values length guard and remove code duplication
    • ๐Ÿ“ฆ move stream service to a proper package
    • ๐Ÿ‘Œ improve serverside stream error handling
    • โž• add video streamer command
    • renaming stream methods
    • โšก๏ธ updating copyright
    • renaming stream methods, add stubs and stream service factory
    • ๐Ÿ›  fix binary notation
    • ๐Ÿ›  in server store creation max value entry is fixed to 32Mb
    • ๐Ÿคก mocked server uses the inner immudb grpc server and can be gracefully stopped
    • ๐Ÿ‘ set stream supports multiple key values
    • ๐Ÿ›  fixed minimum chunk size at 4096 bytes
    • ๐Ÿ”จ refactor code quality issues
    • increase stream coverage and add a guard if key is present on a stream but no value is found
    • โœ‚ remove fake proveSinceTxBs key send in streamVerifiableSet
    • ๐Ÿ’… polish streams methods and add comments
    • embedded: remove unused cbuffer package
    • embedded: add logger
    • embedded: fix some typos with comments
    • embedded: log indexing notifications
    • embedded: descriptive logs on indexing and already closed errors
    • embedded: add logs into relevant operations
    • embedded: compaction and snapshot handling
    • embedded/appendable: thread-safe multi-appendable
    • embedded/appendable: sync before copying appendable content
    • embedded/appendable: multi-appendable fine-grained locking
    • embedded/store: remove duplicated logging
    • embedded/store: stop indexing while commiting with callback
    • embedded/store: leverage fine-grained locking when reading tx data
    • embedded/store: general improvements on snapshot management
    • embedded/store: log number of transactions yet to be indexed
    • embedded/store: use buffered channel instead of a circular buffer
    • embedded/store: set a limit on indexing iteration
    • embedded/store: set max file size to 2Gb (#649)
    • embedded/store: remove conditional locking before dumping index
    • embedded/store: lock-less readTx
    • embedded/tbtree: terminate reader if prefix won't match any more
    • embedded/tbtree: optimize seek position
    • embedded/tbtree: revert seek key setting
    • embedded/tbtree: sync key-history log during compaction
    • embedded/tbtree: sync before dumping
    • embedded/tbtree: optimize seek position
    • embedded/watchers: broadcasting optimisation
    • embedded/watchers: minor renaming
    • embedded/watchers: accept non-continuous notification
    • pkg/client: add a guard to check for min chunk size
    • pkg/client: add stream service factory on client and increase stream coverage
    • pkg/client: maps server error on client package
    • pkg/client: remove local files tests
    • pkg/client: add GetKeyValuesFromFiles helper method
    • pkg/client: integration test is skipped if immudb server is not present
    • pkg/database: return error while waiting for index to be up to date
    • pkg/database: use in-mem current snapshot in execAll operation
    • pkg/database: leverage lightweight waiting features of embedded store
    • pkg/database: return error while waiting for index to be up to date
    • pkg/database: ensure scan runs over fully up-to-date snapshot
    • pkg/database: illegal state guard is added to verifiable get and getTx methods
    • pkg/server: max recv msg size is set to 32M
    • pkg/server: add a guard to check for min chunk size
    • pkg/server: revert quit chan exposure
    • pkg/server: add server error mapper interceptor
    • pkg/server: add small delay for indexing to be completed
    • pkg/server: exposes Quit chan
    • pkg/stream: remove bufio.reader when not needed
    • pkg/stream: remove duplicated code
    • pkg/stream: add ErrNotEnoughDataOnStream error and ImmuServiceReceiver_StreamMock
    • pkg/stream: renamed stream test package
    • pkg/stream: add a guard to detect ErrNotEnoughDataOnStream on client side
    • pkg/stream: remove bufio and add ventryreceiver unit test
    • pkg/stream: add some comments to mesasge receiver
    • pkg/stream: add more corner cases guards
    • โœ… pkg/stream/streamtest: add dummy file generator
    • tools: fix copyright
    • tools/stream: get stream content directly from immudb
    • tools/stream/benchmark: add stream benchmark command
    • tools/stream/benchmark/streamb: add SinceTx value to getStream

    ๐Ÿ”จ Code Refactoring

    • stream kvreceiver expose Next method to iterate over key values
    • stream receiver implements reader interface
    • ๐Ÿ‘‰ use of explicit messages for stream request
    • pkg/stream: use ParseValue func in zreceiver and remove the redundant readSmallMsg func
    • pkg/stream: refactor receiver to increase simplicity

    ๐Ÿ”‹ Features

    • โž• add flusher to stream data to client
    • โž• add Stream Scan and client stream ServiceFactory
    • โž• Add StreamVerifiedSet and StreamVerifiedGet
    • โž• add client->server stream handler
    • 0๏ธโƒฃ increase default store max value length to 32MB
    • ๐Ÿ”จ refactors and implement server->client stream handler
    • โœ‚ Remove unnecessary dependencies (#665)
    • โž• add support for user, password and database flags in immuclient (#659)
    • chunk size is passed as argument in client and server
    • embedded/store: expose insertion delay while compacting
    • embedded/store: configurable compaction threshold to set the min number of snapshots for a compaction to be done
    • embedded/store: integrate watchers to support indexing synchronicity
    • embedded/store: tx header cache to speed up indexing
    • embedded/tbtree: configurable insertion delay while compaction is in progress
    • embedded/tbtree: automatically set seekKey based on prefixKey when it's not set
    • embedded/watchers: lightweight watching center
    • embedded/watchers: fetchable current state
    • pkg/client: handle illegal state error
    • pkg/database: non-blocking, no history compaction
    • pkg/database: non-blocking index compaction
    • pkg/database: default scan parameters using up-to-date snapshot
    • pkg/server: add signature on stream verifiable methods and tests
    • pkg/stream: add exec all stream