All Versions
20
Latest Version
2.2
Avg Release Cycle
33 days
Latest Release
179 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.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

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

    February 08, 2021

    πŸ› Bug Fixes

    • cmd/sservice: fix group creation linux cross command
    • cmd/sservice: fix services management and add permissions guard
    • embedded/history: read history log file to set initial offset
    • embedded/store: mutex on txlog
    • embedded/store: continued indexing
    • embedded/store: fix indexing sync (#621)
    • embedded/store: copy key inside TxEntry constructor
    • embedded/tbtree: use minkey for desc scan
    • embedded/tbtree: prevNode nil comparisson
    • embedded/tbtree: determine entry by provided seekKey
    • embedded/tbtree: fix key history ordering (#619)
    • pkg/client: fix verifiedGetAt
    • pkg/client/auditor: hide auditor password in logs
    • pkg/client/cache: return an error if no state is found
    • pkg/database: check key does not exists in latest state
    • pkg/server: set default settings within DefaultStoreOptions method

    πŸ”„ Changes

    • ⚑️ update acknowledgments
    • cmd/sservice: minor fixes
    • embeddded/tbtree: reduce mem allocs
    • embedded: expose store opts
    • embedded: refactor TxEntry
    • embedded/store: validates targetTx is consistent with proof len
    • embedded/store: sync access to commit and tx logs
    • embedded/store: move TxReader code to its own file
    • embedded/store: renamed reader as KeyReader
    • embedded/store: minor KeyReader renaming
    • embedded/store: adapt after History changes
    • embedded/store: use conditional locking in indexing thread
    • embedded/store/options.go: increase DefaultMaxKeyLen
    • embedded/tbtree: reduce mem consumption
    • embedded/tbtree: offset map per branch
    • embedded/tbtree: change history file extension
    • embedded/tbtree: history log file
    • embedded/tbtree: return ErrOffsetOutOfRange if invalid offset was provided
    • embedded/tbtree: configurable max key length
    • pkg: current db included in signed state
    • pkg: unit testing index cleanup, use selected db
    • pkg/api: include server uuid and db name into state message
    • pkg/api: history limit as int32
    • pkg/api: minor changes in TxScan message
    • pkg/client: bound reference if atTx is provided in VerifiedSetReferenceAt
    • pkg/client: validate returned entries from metadata
    • pkg/client: add state service lock and unlock capabilities
    • pkg/client: set bound on SetReference and ZAdd
    • pkg/client: strip prefix from returned keys in txById and verifiedTxById
    • pkg/client: use indexing specified in GetRequest
    • pkg/database: return empty list if offset is out of range
    • pkg/database: catch NoMoreEntries error and return empty list on scan and zscan operations
    • pkg/database: unsafe read tx inside CommitWith callback
    • pkg/database: initial implementation of ExecAll with CommitWith
    • pkg/server: include uuid and db as result of verifiable operations
    • pkg/server: server mock wrapping default server implementation
    • pkg/server: change server default options. Max key value to 10kb
    • pkg/server: set default max value lenght to 1Mb
    • pkg/server: initialize mts options
    • pkg/server: expose store opts
    • pkg/server: naming conventions
    • pkg/server: use server wrapper to enable post processing of results

    πŸ”‹ Features

    • cmd/immuadmin: db index cleanup
    • embedded: history with offset and limit, key updates counting
    • embedded/appendable: check no closed and flush before copying
    • embedded/appendable: implements Copy function
    • embedded/appendable: flush and seek to start before copying
    • embedded/store: index cleanup
    • embedded/store: TxScan asc/desc order
    • embedded/store: commitWith callback receiving assigned txID
    • embedded/store: allow increasing max value size after creation time
    • embedded/tbtree: HistoryReader to iterate over key updates
    • embedded/tbtree: complete history implementation
    • embedded/tbtree: full dump using copy on history log
    • embedded/tbtree: full dump of current snapshot
    • pkg: index cleanup service
    • pkg/client: add verifiedGetSince
    • pkg/client: implementation of TxScan operation
    • pkg/client: add state file locker
    • pkg/database: TxScan implementation
    • pkg/database: support for free and bound references
    • pkg/database: history with offset and limit
    • pkg/database: KeyRequest retrieves key at a specific tx or since a given tx
    • pkg/server: sign new state within verifiable operations
    • pkg/server: use exposed synced mode
  • v0.9.0 Changes

    January 07, 2021

    πŸ› Bug Fixes

    • βœ‚ remove badger metrics and fix stats command
    • cmd/immuadmin/command: fix immuadmin stats (#592)
    • pkg/database: enable scan on fresh snapshot
    • pkg/server: shutdown handlers and metrics server are moved in start method

    πŸ”„ Changes

    • removing audit-signature and add serverSigningPubKey
    • βœ‚ remove print tree method
    • βͺ restore inmemory_cache test
    • cmd/immuadmin: temporary disable stats functionality
    • pkg/api: upgrade rest endpoints
    • pkg/client: implement missing methods in immuclient mock
    • pkg/server: temporary remove proactive corruption checker (#595)

    πŸ”‹ Features

    • βž• add signature verification with a submitted public key
  • v0.9.0-RC2 Changes

    December 29, 2020

    πŸ› Bug Fixes

    • cmd/immuadmin/command: fix unit tests
    • cmd/immuclient: fix unit tests
    • embedded/tbtree: sync GetTs to prevent data races
    • pkg/api: change order of validations when checking state signature

    πŸ”„ Changes

    • adapt coverage to the new server implementation
    • πŸ›  fix immuserver mock
    • cmd/immuadmin: disable stats and removed print tree command
    • cmd/immuclient: print verified label when executing safereference
    • pkg/client: update service mock to new API
    • pkg/database: add input validations during verifiable set
    • pkg/database: implements History using lock-based operation

    ♻️ Code Refactoring

    • βœ… uniform server and client tests
    • improving buffconn server with splitting start method in initialization and start

    πŸ”‹ Features

    • embedded/store: implements lock-based History without requiring snapshot creation
    • pkg/client: update auditor implementation to new server API
    • pkg/client: implementation of client-side verifiedZAdd
    • pkg/client: implements VerifiedSetReference
    • pkg/database: implementation of verifiableZAdd
    • pkg/database: implementation of VerifiableSetReference
  • v0.9.0-RC1 Changes

    December 22, 2020

    πŸ› Bug Fixes

    • cmd/immuclient: print referenced key
    • cmd/immuclient: print referenced key
    • embedded/store: fix race condition
    • embedded/store: fix race condition
    • embedded/store: contemplate bad-formated proof
    • embedded/tbtree: fix issue when initialKey is greater than keys
    • pkg/common: fix leftover in index wrapper
    • pkg/database: lookup for referenced key when atTx is non-zero
    • pkg/database: working scan and zscan without pagination
    • pkg/database: add cyclic references validation during resolution
    • pkg/database: use EncodeReference in ExecAllIOps
    • pkg/database: referenced key lookup when atTx is non-zero
    • pkg/database: adjust execAll method
    • pkg/databse: encoding of reference and zadd

    πŸ”„ Changes

    • πŸ†• new proto definitions
    • proof proto definition
    • datatype conversion methods
    • inject store reader inside zscan
    • βœ… partial fix of scan test
    • βœ‚ remove badger and merkletree dependencies
    • api/schema: removed consistency method
    • cmd: adjusted commandline tools
    • cmd/immuclient: add verified operations
    • cmd/immuclient: add support for safe operations
    • database: implements ByIndex operation
    • database: implements safeByIndex operation
    • database: several fixes and unit testing adaptation
    • database: contemplates the case not previously verified tx
    • database: implements safeSet operation
    • embedded: rename as SnapshotSince
    • embedded/htree: minor changes in proof struct
    • embedded/htree: internal linear proof renaming
    • embedded/store: minor proof renaming
    • embedded/store: return ErrTxNotFound when attemping to read non-existent tx
    • embedded/store: add tx constructor with entries
    • embedded/store: return txMetadata when tx on commit
    • embedded/store: allow empty values and don't attempt to store in vlog
    • embedded/store: adjustments on store reader
    • embedded/store: add snapshotAt and adjust based on it
    • embedded/store: wrap keyNotFound index error
    • embedded/store: change tx proof method signature
    • embedded/store: add method to retrieve tx metadata
    • embedded/store: minor changes in proof struct
    • pkg: rename to ReferenceRequest
    • pkg: rename to CurrentState
    • pkg: several minor changes
    • pkg: rename to sinceTx
    • pkg/api: rename to Entry and ZEntry and embedded Reference
    • pkg/api: several improvements on grpc api
    • pkg/api: add copyright notice
    • pkg/api: new proof messages
    • pkg/api: add vLen property to TxEntry
    • pkg/api: new server proto definition
    • pkg/api: remove digest data type
    • pkg/auth: adjust permissions based on new api
    • pkg/client: minor renaming to improve readability
    • pkg/client: adjusted client providers
    • pkg/client: add safe method alises for backwards familiarity
    • pkg/client: adjusted golang client
    • pkg/database: fixed methods with prefix mgmt, including scan
    • pkg/database: minor adjustments
    • pkg/database: mutex for reusable txs
    • pkg/database: return functionality not yet implemented for VerifiableSetReference
    • pkg/database: remove ambiguity in references
    • pkg/database: zscan order with tx after key
    • pkg/database: wait for indexing on execAll
    • pkg/database: delay locking until indexing is done
    • pkg/database: get from snapshot or directly from store
    • pkg/database: add sinceTx to reference and make it handle key prefixes
    • pkg/database: fix get/set with prefix wrapping/unwrapping
    • pkg/database: implements new DB api using embedded storage
    • pkg/ring: remove ring pkg
    • pkg/server: partial use of embedded storage
    • pkg/server: return number of tx as db size
    • pkg/server: prevent logging request details
    • pkg/server: getBatch operation
    • pkg/server: implements history operation
    • pkg/server: proof construction in safeget operation
    • pkg/server: adjusted state signer
    • pkg/server: adjusted UUID handler
    • pkg/server: remove in-memory option
    • pkg/server: disable proactive corruption checker
    • pkg/server: disable cc
    • pkg/server: adapt implementation to new api
    • pkg/server: adapt to new database implementation
    • pkg/server: comment unimplemented GetReference method
    • pkg/store: moved package
    • pkg/tbree: reader with descOrder
    • server: implements safeGet
    • server/api: minor changes in Item element

    ♻️ Code Refactoring

    • pkg/server: add database interface and inject in server package
    • pkg/server: move database to new package

    πŸ”‹ Features

    • partial implementation of safeGet
    • βž• add store reader, scan and sorted sets
    • embedded: inclusiveSeek point when reading
    • embedded: add Get operation without the need of a snapshot
    • embedded/tbtree: use seek and prefix
    • pkg/client: add GetSince method
    • pkg/client: implements latest server API
    • pkg/database: complete set and get reference methods
    • pkg/database: uniform implementation for set, references, zadd, scan and zscan operations
    • pkg/database: add execAllOps
    • pkg/database: support for seekable scanning
    • pkg/database: consistent reference handling, prevent cyclic references
    • pkg/database: verify reference upon key resolution
    • pkg/server: expose store options