All Versions
39
Latest Version
Avg Release Cycle
28 days
Latest Release
1090 days ago
Changelog History
Page 3
Changelog History
Page 3
-
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
-
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
-
v0.8.1 Changes
December 08, 2020๐ Bug Fixes
- file ext removal
- ๐ fix batchOps permission and clean sv ones
- โ add permissions for the new CountAll gRPC method
- ๐ appID parsing from filename
- appendable extensions without dot
- โช restore current offset after reading compressed data
- ๐ encode metadata numeric fields with 64bits
- consider the case when key was not yet inserted
- ๐ set fileSize after reading values from metadata
- ๐ read metadata before reading
- pass compression settings into newly created single-file appendable
- compression with bigger values
- compression with multiple-files
- return EOF when data cannot be fully read from appendables
- set new appendable id when changing current appendable
- โ๏ธ typos
- avoid duplicate index insertion in zAdd batch operation transaction
- ๐ fix batchOps tests and minors fix for zAdd sorted set key generation
- embedded: set correct offset while reading node
- embedded/store: use verificatication methods for dual proof evaluation
- embedded/store: release tx before linear proof generation
- embedded/tools: catch ErrNoMoreEntries when iterating over txs (#569)
- pkg: handle expired token error
- pkg/client: token service is not mandatory for setup a client
- pkg/client: handle rootservice error inside constructor
- pkg/store: fixes issue #532 (#549)
- pkg/store: fix bug on lexicographical read of multiple sets
- pkg/store: move separator at the beginning of a keyset
- pkg/store: fix scan and add tests for pagination
- pkg/store: scan item now contains immudb index, not badger timestamp
- pkg/store: fix key set generation. index reference flag (0,1 bit) is put at the end of the key to mantain lexicographical properties
- pkg/store: in reference based command key is optional if index is provided. Increase code coverage
- pkg/store: fix reverse history pagination
๐ Changes
- error naming
- include github stars over time chart (#509)
- ๐ fix naming conventions
- export uwrap and wrap value method to be used in nimmu
- ๐ link to immuchallenge repo (#528)
- ๐ fix typo in cmd help (#541)
- renaming set key generation method
- โ remove *sv methods
- โก๏ธ update readme with SDKs urls (#506)
- ๐ move set and get batch in a separate file
- ๐ fix naming conventions and typos
- โ increase testing timeout
- โ add setBatch, getBatch, setBatchOps method in mock client
- โ unit testing
- close appendable hash tree on close
- ๐ print commiting status after sync
- root method without error
- cbuffer pkg
- cbuffer pkg
- ๐ use constants for field len
- simplify linear proof
- โ remove verification during indexing
- unify kv hash calculation
- LinearProof verification
- minor code change
- multierror handling on close func
- multierror handling on close func
- error naming
- ๐ improved comprehensibility of the immudb configuration file
- unify options for appendables
- unify naming
- ๐ move options validations to options file
- minor changes in append operation
- hash tree construction
- advances in hash tree and proof construction
- ๐ make spec read fields public
- ๐ฒ implement commit log for btree and improved reduced dump
- txi commit file ext
- 0๏ธโฃ aof as default file ext
- ๐ sync also applies to index
- panic if set key fails
- panic when close returns an error
- ๐ validate clog size after setting fileSize from metadata
- index file extensions
- return after auto mode
- mode as required flag
- ๐ renamed to IndexInfo
- random and monotonic keys
- split code into files, index options exposed for external config
- ๐ support for historical value tracing
- ๐ changes on historical value tracing
- validate hvalue when reading value from vlog
- ๐ newTx method using store values
- check for non-duplication within same tx
- when txInclusion is true then txLinking is made as well
- options validation
- close index when closing store
- โ add VERSION to metadata section
- time-based flushing
- renaming batchOps in ops and SetBatchOps in ExecAllOps
- solved concurrency issues
- ๐ changes to solve and improve concurrency
- copy on insert and fresh snapshots
- when compression is enabled, each append takes place into a single file
- set fileSize based on initial value set at creation time
- ๐ change max value length to 64Mb
- return partially written number of bytes when write is not completed
- ๐ฆ reorg appendable packages
- ๐ moved stress_tool under tools folder
- ๐ renamed filesize flag
- ๐ use channels for communicating data offsets
- close txlog after completion
- random key-value generation in stress tool
- kv alloc inside tx prep
- ๐ parallel IO non-exclusive yet synchorinized with store closing
- open with appendables to facilitate parallel IO
- spec parallel IO in stress tool
- appendale with path
- preparing for parallel IO
- โก๏ธ optimized hashtree generation
- minor internal change on commit tx method
- time only considering commit time
- ๐จ don't print dots if printAfter is 0
- ๐จ don't print dots if printAfter is 0
- minor typo in error message
- preparing for concurrency optimization
- minor changes in stress tool
- ๐ฒ close commit log file
- return EOF when available content is less than buffer size
- ๐ make key-value struct public
- โ add more batchOps tests, fixing naming typo
- ๐ fix immudb consistency diagram
- do not store hvalue in index
- โ add more tests and remove code duplications
- ๐ initial commit with functional implementation
- embedded/store: sleep indexing thread until there are entries to be indexed
- embedded/store: internal changes to use innerhash for proof generation
- embedded/store: permit immediate snapshot renewals
- embedded/store: sleep binary linking thread until txs are committed (#572)
- embedded/store: return ErrNoMoreEntries when all tx has been read
- embedded/store: use embedded reusable built-at-once hash tree
- embedded/store: add data consistency validation during dual proof construction
- embedded/store: pre-allocated tx pool used for indexing and proofs
- embedded/store: pre-allocated tx pool used with dual proof
- embedded/store: changed defaults
- pkg/api/schema: increase code readability
- pkg/auth: fix get batch permissions
- pkg/client: client exposes structured values conversion tools
- pkg/client: fix comment
- โ pkg/client/clienttest: add mock service client constructor
- โ pkg/client/clienttest: add inclusion, consistency, byIndex mock methods
- โ pkg/client/clienttest: add missing method inside service client mock
- pkg/client/timestamp: fix naming convention
- pkg/server: remove ScanSV test
- pkg/server: add database name server validator
- pkg/store: add consistency check on zadd and safezadd index reference method and tests
- pkg/store: fix comments in test
- pkg/store: move reference code to a dedicated file
- server: enhance namings related audit report notification
๐จ Code Refactoring
- batch ops produces monotonic ts sequences, index is mandatory if reference key is already persisted
- pkg/client: decoupled immuclient from rootService
- pkg/store: get resolve reference only by key
- pkg/store: add set separator. Fixes #51
๐ Features
- inclusion and consistency verification algorithms
- ๐ง configurable max incomming msg size (#526)
- ๐ extend sorted set to support multiple equals key
- getReference is exposed throught gRPC server and in SDK
- ๐ client supports paginated scan, zscan, history
- โจ enhance auditor to publish tampering details at a specified URL (optional)
- ๐ฐ payload and digest lru caches
- replay missing binary linking entries
- binary linking in-memory integration
- root returns number of entries
- dual proof construction and verification
- towards linear and dual proofs
- dual proof and liearProof against target accumulative linear hash
- dual cryptographic linking
- store accumulative linear hash into mutable hash tree
- towards dual cryprographic linking
- โ add ZScan pagination
- consistency proof
- multierr custom error wrapping multiple errors when closing the store
- several improvements, data by index
- towards persistent storage of mutable hash tree
- ongoing implementation of appendable hash tree
- โ add sync method
- TxReader starts from a txID
- IndexInfo to return up to which tx was indexed and error status of indexing task
- โ add interactive mode for get/set key values
- โ add method for reading value of a key within a tx
- โก๏ธ retrieve the list of ts at which a key was updated
- โก๏ธ key updates tracing to support historical reading
- back btree with multi-appendables
- โ add read numeric values
- ๐ initial indexing
- towards k-indexing
- โ add flag to stress_tool to specify if values are random or fixed
- โ add lzw compression format
- โ Add awesome-go badge (#554)
- data compression
- towards data compression capabilities
- ๐ set compression setting into value logs
- towards data compression capabilities
- ๐ store immutable settings into metadata section
- โ add log file sizes and number of openned files per log type flags
- enable file mgmt settings
- multi-file appendables
- โ add metadata to appendables
- ๐ include full tx validation and fixed sync issue
- full committed tx verification against input kv data
- โ add key and value length params in stress tool
- ๐ parallel IO support
- โก๏ธ optimized for concurrent committers
- โ added concurrent committers to stress tool
- โ add cryptographic linking verification of transactions
- โ add method to retrieve number of committed txs
- ๐ export sync mode config
- โ add batchOps reference operation
- โ add history pagination
- โ add reverse zscan and reverse history pagination
- rearrange badges on README (#555)
- ๐ data compression support by stress tool
- โ add atomic operations method
- ๐ฆ expose CountAll through gRPC
- embedded/htree: reusable build-at-once hash tree
- embedded/store: add Alh method to get last committed tx ID and alh (#570)
- pkg/client: sdk support index reference resolving)
- pkg/client: add SetAll operation for simple multi-kv atomic insertion (#556)
- pkg/client: sdk support execAllOps
- pkg/client/auditor: enhance auditor to always send audit notification (even when no tampering was detected) if a notification URL is specified
- pkg/store: reference support index resolution
- pkg/store: sorted sets support multiple equal keys with same score
- server: add --audit-databases optional auditor flag
โช Reverts
- โ chore: increase testing timeout