v1.5.0
Release notes
We are excited to introduce immudb 1.5, which has several new features: MVCC: Multi-Version Concurrency Control, Data Retention, Performance Improvements, Float64 data-type and Document Data Model APIs. In addition to fixing bugs, we enhanced the overall experience.
MVCC: Multi-Version Concurrency Control
Detection of conflicts is automatic when multiple transactions are processed concurrently. MVCC in conjunction with snapshots provides a lock-free and optimistic approach to ensuring data consistency.
Data Retention
Data retention refers to the practice of keeping data for a specific period of time before deleting it. This practice is commonly used in various industries and organizations to comply with legal and regulatory requirements, as well as to manage storage space and maintain data integrity.
One of the primary benefits of data retention is its ability to help maintain disk space. By setting a retention period, organizations can automatically delete data that is no longer needed, freeing up disk space for new data. This can be particularly useful for organizations that deal with large amounts of data, such as those in the financial or healthcare industries, where storing vast amounts of data can be costly.
To get more information about data retention please refer to the documentation on docs.immudb.io.
Performance Improvements
Indexing
Concurrent bulk indexing makes indexing faster than ever. It simultaneously indexes all entries within a single transaction. Moreover, multiple transactions can be indexed at once.
Transaction logs
As of this release, values can be stored in the same transactions logs as headers. When this mode is enabled, transaction commits may be speed up by up to 60%, but data retention will not be supported. The setting can only be set at the time of database creation, but a replica can have a different setting.
To further speed up transaction processing, file preallocation can also be enabled. On Linux, fdata_sync will be used when this setting is enabled. As a result of enabling file preallocation and embedded values mode in our initial evaluations, transaction throughput was increased by up to 100% (in comparison with the previous immudb release v1.4.1).
Float64 data-type
It is now possible to use double-precision floating-point data types with SQL according to IEEE-754 64-bit floating-point specification.
Document Data Model API
The document-data model provides simple yet powerful storage. It is possible to store and retrieve documents represented as JSON documents based on conditions that relate to indexed fields.
Changelog
[v1.5.0] - 2023-06-20
Bug Fixes
- embedded/store: handle replication of empty values
Changes
- embedded/document: naming validations
- embedded/document: allow hyphen in doc naming
- embedded/document: collection and field naming validations
- embedded/store: embedded values and prealloc disabled by default
[v1.5.0-RC1] - 2023-06-16
Bug Fixes
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.immuclient to reduce vulnerabilities
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.rndpass to reduce vulnerabilities
- build/Dockerfile.full to reduce vulnerabilities
- modify tests for new object db initialisation
- build/Dockerfile.full to reduce vulnerabilities
- build/Dockerfile.rndpass to reduce vulnerabilities
- table id generation
- build/Dockerfile.immuclient to reduce vulnerabilities
- docs: bump golang.org/x/net to 0.7.0 in docs and test pkg
- embedded/ahtree: correct calculation of payload offset
- embedded/appendable: proper closing of non-required chunks
- embedded/document: support nil docs
- embedded/document: proper column renaming
- embedded/document: assign correct revision number
- embedded/document: close readers before updating document
- embedded/document: id field conversion
- embedded/document: proper handling of deleted documents
- embedded/document: validate doc is properly initialized
- embedded/document: validate doc is properly initialized
- embedded/sql: do not force columns to have max key length when unspecified
- embedded/sql: include explicit close into sqlTx options
- embedded/sql: multi-row conflict handling
- embedded/sql: implicit conversion within expressions
- embedded/sql: consider 0 as no limit
- embedded/sql: parsing of exists stmt
- embedded/sql: like operator supporting null values
- embedded/sql: crash when RowReader.Read() returns error
- embedded/sql: proper handling of parameters in row readers
- embedded/store: force snapshot to include mandatory mvcc changes
- embedded/store: ensure snapshot is closed for read-only txs
- embedded/store: integrity checks covering empty values
- embedded/store: avoid dead-lock when exporting tx with external commit allowance mode
- embedded/tbtree: fix error comparison
- embedded/tbtree: rollback to the most recent snapshot when insertion fails
- embedded/tbtree: fix snapshot getKeyWithPrefix
- embedded/tbtree: proper kv validation
- embedded/tbtree: fix snapshot getKeyWithPrefix
- go.mod: bump go version to 1.17 in go.mod
- helm: set securityContext and podSecurityContext at correct location
- pkg/api: create collection endpoint with path parameter
- pkg/api: fix and implement LIKE and NOT_LIKE operator when querying documents
- pkg/client: ensure ticker is properly stopped
- pkg/client: return error when verifiedGet operation fails
- pkg/database: read-only document API for replicas
- pkg/database: skip eof error during scan
- pkg/database: read from err channel
- pkg/database: wrap propagated context
- pkg/database: fix truncation and contemplate entry-less txs
- pkg/replicator: check stream is properly initialized
- pkg/server: do not set trailer metadata when replication is done with bidirectional streamming
- pkg/server: ensure error propagation when sending headers
- pkg/server: use grpc interceptors with grpc proxy
- pkg/server: request explicit close when creating a rw sql tx
- pkg/server: ensure tx is closed upon error
- pkg/server: close document readers before cancelling txs
- pkg/server: thread-safe doc reader during session handling
- pkg/stream: handle the case when message fits in a single chunk
- pkg/truncator: adjust plan logic and contemplate empty txs
- pkg/verification: document comparison with proto equals
- push.yml: update min go version
Changes
- Add reformatting of protobuf file on build/codegen
- rename DocumentBulkInsert to DocumentInsertMany
- Update build/RELEASING.md file
- allow multiple order by clauses
- replace schemav2 with protomodel in truncator test
- handle no more doc error inside response in search
- use sys/unix package
- remove docker test provider
- update document with id if not nil
- use gosec action
- add updatecollection api
- copy document catalogue when truncating db
- add DocumentFindOneAndUpdate api
- wait for immudb to get initialized
- add test case for uncommitted tx not increasing table count
- pass transaction to upsert function
- check invalid search id in search request
- add monotically increasing number to doc id generation
- add document audit api
- change DocumentFindOneAndUpdate to DocumentUpdate
- return sql reader on document search
- add order by clause in search
- use sql statement for delete than raw query
- add ReadN method to document reader
- add documentReader iterator to read documents
- remove initial swagger support
- exclude generated code from coverage
- exclude generated code from coverage
- add unique search id for paginated readers
- fix TestFloatSupport test case
- simplified codegen
- fix tests
- change DeleteTableStmt to DropTableStmt
- generate proto requests for DocumentDelete api
- return ErrNoMoreDocuments instead of sql.ErrNoMoreRows
- add DocumentDelete api
- add default size for document reader lru cache
- add lru cache for paginated readers
- fix merge issues
- add pagination support when fetching documents
- fix failing verification test
- increase test coverage for document engine
- add bulk insert api
- TruncateDatabase endpoint should use the same ongoing Truncator if present
- address review comment
- add go-acc and goveralls to ext-tools folder
- delete columns on table deletion
- check for column before adding index on collection update
- add option for non unique indexes on collection
- ci: improve notifications
- cmd/immuadmin: flag to specify the usage of embedded values
- cmd/immuadmin: add truncate cmd to immuadmin
- cmd/immuadmin: modify truncation settings schema
- deps: bump golang.org/x/crypto
- deps: bump github.com/jaswdr/faker from 1.4.3 to 1.16.0
- deps: bump securego/gosec from 2.14.0 to 2.15.0
- deps: bump github.com/codenotary/immudb
- deps: bump github.com/influxdata/influxdb-client-go/v2
- deps: bump github.com/golang/protobuf from 1.5.2 to 1.5.3
- deps: bump github.com/rogpeppe/go-internal from 1.8.0 to 1.9.0
- deps: bump github.com/lib/pq from 1.10.7 to 1.10.9
- deps: bump github.com/lib/pq from 1.10.2 to 1.10.7
- deps: bump golang.org/x/net from 0.8.0 to 0.9.0
- deps: bump github.com/rs/xid from 1.3.0 to 1.5.0
- deps: bump github.com/stretchr/testify from 1.8.0 to 1.8.2
- deps: bump aws-actions/configure-aws-credentials from 1 to 2
- deps: bump github.com/spf13/cobra from 1.2.1 to 1.6.1
- deps: bump github.com/grpc-ecosystem/grpc-gateway/v2
- deps: bump google.golang.org/grpc from 1.46.2 to 1.54.0
- deps: bump github.com/spf13/viper from 1.12.0 to 1.15.0
- embedded/ahtree: add inline comments
- embedded/appendable: fsync freebsd
- embedded/appendable: automatic file creation only when appending
- embedded/appendable: use fdatasync when file is preallocated
- embedded/appendable: file syncing per os
- embedded/appendable: support file preallocation
- embedded/appendable: file syncing using fdatasync when available
- embedded/appendable: minor improvements reading files
- embedded/appendable: metadats with putBool
- embedded/document: remove dead-code
- embedded/document: add float support for doc engine
- embedded/document: raw document validation
- embedded/document: improve error handling
- embedded/document: transactional collection update
- embedded/document: support null values in indexed attributes
- embedded/document: retrieval of raw document
- embedded/document: move source code into dedicated files
- embedded/document: use onclose callback to close the tx
- embedded/document: return struct when auditing document history
- embedded/document: add test to ensure key ordering in document during serialization
- embedded/document: blob type not yet supported
- embedded/document: catch key alredy exists error
- embedded/document: catch tx read conflict error
- embedded/document: translate table already exists error
- embedded/document: minor var renaming
- embedded/document: fix query stmt generator and add tests
- embedded/document: leverage sqlengine lazy index contraint evaluation
- embedded/document: binary serialization of doc payload
- embedded/document: use query limit when searching
- embedded/document: wip continue with improvements
- embedded/document: wip continue with improvements
- embedded/document: wip continue with improvements
- embedded/document: wip improvements
- embedded/document: add collection deletion api support
- embedded/document: minor code simplification
- embedded/document: add variable length support for multiple types
- embedded/document: ensure order by clauses are used when deleting and updating
- embedded/document: improve error messages
- embedded/document: minor code adjustments
- embedded/document: transactional collection and document creation
- embedded/document: improve error messages
- embedded/document: possibility to specify desc order when querying document history
- embedded/document: add tests for blob type
- embedded/document: avoid public dependency on sql
- embedded/document: add test cases for collection on doc engine
- embedded/document: change querier from BinBoolExp to CmpBoolExp
- embedded/document: transactional document creation
- embedded/document: add document id generation
- embedded/document: typo in error message
- embedded/htree: allow creation of empty hash trees
- embedded/object: add document abstraction
- embedded/object: add collection/database statements
- embedded/sql: use read-only txs whenever possible
- embedded/sql: make sql engine generic for object store
- embedded/sql: limit and offset boundary validation
- embedded/sql: minor numeric type adjustments
- embedded/sql: implicit conversion support in limit and offset clauses
- embedded/sql: simplified sql tx
- embedded/sql: return closed sql txs
- embedded/sql: implicit conversion from varchar to int and float types
- embedded/sql: upgraded row reader
- embedded/sql: ddl stmts register catalog mutation
- embedded/sql: snapshot reuse improvements
- embedded/sql: lazy index contraint validation
- embedded/sql: WIP singledb sql engine
- embedded/sql: transient context
- embedded/sql: validate total key length at index creation time
- embedded/sql: extend max key length to 512
- embedded/sql: cancellable row reader
- embedded/store: add in-line documentation for store options
- embedded/store: validate Eh only when integrity checks are not disabled
- embedded/store: addition of a cache for values
- embedded/store: consume all tx content even if integrity checks are disabled
- embedded/store: optional integrity checking when reading values
- embedded/store: validate Eh only when integrity checks are not disabled
- embedded/store: inline comments
- embedded/store: fix typo in inline comment
- embedded/store: validate gets using filters
- embedded/store: MVCC read-set with boundaries
- embedded/store: context propagation
- embedded/store: mvcc validation only if another tx was processed
- embedded/store: minor changes after rebasing from master
- embedded/store: simplified dualproof implementation
- embedded/store: skipIntegrityCheck parameter when reading data
- embedded/store: minor code improvement
- embedded/store: add min limit for truncation frequency
- embedded/store: use syncSnapshot to validate ongoing txs
- embedded/store: unify Read and ReadBetween
- embedded/store: transient context
- embedded/store: tx header is returned when fully committed
- embedded/store: api upgrade
- embedded/store: set ctx as first argument
- embedded/store: readValueAt and exportTx improvements
- embedded/store: update ReadBetween
- embedded/store: contextualized transactions
- embedded/store: inline comments
- embedded/store: snapshot reuse improvements
- embedded/store: set smaller default value for indexing bulk size
- embedded/store: wip mvcc validations
- embedded/store: simplified indexer initialization
- embedded/store: multi-tx unsafe mvcc
- embedded/store: set tx as closed upon cancellation
- embedded/store: wip mvcc validations
- embedded/store: set ctx as first argument
- embedded/store: embedded meta attribute required if version is greater than 1
- embedded/store: set embedded values mode as default one
- embedded/store: backward compatible embedded value mode
- embedded/store: optional integrity checking when reading values
- embedded/store: preallocate tx header log files
- embedded/store: wip mvcc validations
- embedded/store: handle eof when reading last committed tx
- embedded/store: support preallocated files when reading tx data
- embedded/store: wip preallocated clog
- embedded/store: option to prealloc files
- embedded/store: optional integrity checking
- embedded/store: further in-line documentation
- embedded/store: make truncation validation tolerate entryless txs
- embedded/store: allow tx without entries as long as it contains metadata
- embedded/store: add hashValue as fixed 32 byte size
- embedded/store: add test for TxOptions
- embedded/store: add min limit for truncation frequency
- embedded/store: multi-tx bulk indexing
- embedded/store: fix default vlog cache size and add validation for hash when reading from cache
- embedded/store: safe key copy for mvcc validation
- embedded/store: improve log messages when discarding precommitted transactions
- embedded/store: mvcc validations
- embedded/store: fix rebase issue with readValueAt for vlogcache
- embedded/store: multi-timed bulk insertions
- embedded/store: clog file size adjustment only when preallocation is disabled
- embedded/store: added more in-line comments
- embedded/store: file preallocation not enabled by default
- embedded/store: propagate context usage
- embedded/tbtree: parametrize snapshot creation specs
- embedded/tbtree: in-line documentation
- embedded/tbtree: initialize tbtree with a non-mutated leaf
- embedded/tbtree: getWithPrefix
- embedded/tbtree: remove unnecessary kv sorting
- embedded/tbtree: add in-line documentation
- embedded/tbtree: minor code improvements
- embedded/tbtree: rollback not needed as updates are made in a copy
- embedded/tbtree: add in-line comments
- embedded/tbtree: wip reduce allocs while updating inner node
- embedded/tbtree: optimized bulk insertion
- embedded/tbtree: optimize snapshot renewal
- embedded/tbtree: wip optimized insertion
- embedded/tbtree: variable renaming after rebasing
- embedded/tools: upgrade embedded tools with transient context
- embedded/watchers: return context error upon cancellation
- embedded/watchers: set ctx as first arg
- embedded/watchers: use context instead of cancellation channel
- package/database: bunch of fixes and improvements in document engine
- pkg: add more tests admin truncate command
- pkg/api: expose db setting to enable file preallocation
- pkg/api: use ErrrIs/ErrorContains in error checks
- pkg/api: rename idFieldName to documentIdFieldName
- pkg/api: annotate required fields
- pkg/api: use of path parameters for document-related endpoints
- pkg/api: expose new store indexing options
- pkg/api: document update with path parameter
- pkg/api: document api improvements
- pkg/api: remove bool from tx metadata conversion
- pkg/api: document api improvements
- pkg/api: snapshot reuse attributes
- pkg/api: search api improvements
- pkg/api: return txID when inserting or updating documents
- pkg/api: expose MVCC read-set settings
- pkg/api: remove unsupported attribute from response messages
- pkg/api: revert changes in swagger spec
- pkg/api: re-generated httpclient with DeleteDocument endpoint
- pkg/api: singular document path for audit and proof endpoints
- pkg/api: manual adjustments post-code generation
- pkg/api: expose replication settings for skipping integrity checks and indexing
- pkg/api: swagger gen
- pkg/api: value cache settings exposed
- pkg/api: annotate primitive types as required
- pkg/api: endpoint renaming
- pkg/api: cleaner session id header
- pkg/api: minor proof request renaming
- pkg/api: authorization in swagger spec
- pkg/api: re-generated httpclient
- pkg/api: expose support for unsafe mvcc transactions
- pkg/api: expose embeddedValue database setting
- pkg/api: remove generated httpclient
- pkg/api: buch of implementation improvements
- pkg/api: revised document and authentication apis
- pkg/api: annotated required message fields
- pkg/api: add tx metadata conversion
- pkg/api: re-generated httpclient
- pkg/api: change retention period in TruncateDatabase message to int64
- pkg/auth: add document update permissions
- pkg/client: minor renaming in tx options
- pkg/client: move heartbeater.go to pkg/client
- pkg/client/cache: improve test coverage
- pkg/database: upgrade after rebasing
- pkg/database: remove object store db initialisation
- pkg/database: upgraded reader specs
- pkg/database: add document query struct to abstract request query
- pkg/database: change objectEngine to documentEngine
- pkg/database: add mvcc test for truncation, parse retention period using duration
- pkg/database: add more tests for truncation
- pkg/database: add document store db initialisation
- pkg/database: updated APIs with schema updates
- pkg/database: implement GetCollection API
- pkg/database: remove search through first query
- pkg/database: add query parser for object to generate sql expression
- pkg/database: fix truncation deletion point checks in test
- pkg/database: add search document api implementation for object store
- pkg/database: create document/collection from schemav2 requests
- pkg/database: context propagation
- pkg/database: minor document renaming
- pkg/database: add and implement object db interface
- pkg/database: add DocumentUpdate api
- pkg/database: minor code aligments
- pkg/database: add object store
- pkg/database: context propagation from server to embedded layer
- pkg/database: proper calculation of source tx
- pkg/database: create txs with default options
- pkg/database: hard limit on page size
- pkg/database: check encoded value is consistent with raw document
- pkg/database: document verfication
- pkg/database: use _obj to hold raw document payload
- pkg/database: snapshot reuse changes
- pkg/database: add document engine abstraction
- pkg/integration: exportTx benchmarking
- pkg/replication: replicator using bidirectional streaming
- pkg/replication: improve options validation
- pkg/replication: skip integrity check when exporting transactions
- pkg/replication: context propagation
- pkg/replication: wip stream replication - only async replication working
- pkg/server: multi-grpc request context propagation
- pkg/server: added inline comments
- pkg/server: set default replication settings
- pkg/server: context propagation from grpc api to embedded package
- pkg/server: upgrades after rebasing from master
- pkg/server: upgrade to new insecure credentials api
- pkg/server: log error when closing document reader
- pkg/server: support snapshot reuse
- pkg/server: close all paginated readers on close of session
- pkg/server: integrate document functions with server apis
- pkg/server: add pagination test for document search
- pkg/server: ensure document reader is closed when swithing pages
- pkg/server: minor code reuse
- pkg/server: add test successful load/unload of db with truncator
- pkg/store: skipIntegrityChecks parameter when reading data
- pkg/stream: handle eof when sending data
- pkg/truncator: return error if expiration time hasn't been met
- pkg/truncator: add context to Truncate method
- pkg/truncator: refactor truncator process
- pkg/verfication: document verification methods
- pkg/verification: strengthen proof validations
- pkg/verification: minor renaming
- pkg/verification: document verification using embedded identifier
- pkg/verification: use proto serialization
- test/objects: add tests to create collections
- test/objects: use httpexpect
- test/objects: add more tests to create collection
- test/perf: fix version value for flag
- test/perf: add immudb version to influxdb data
- test/perf: add runner to results for influxdb
- test/perf-tests: remove runner check
- test/perf-tests: use proxy on benchmark runner
- test/performance: call cleanup method
- test/performance-test-suite: fix replica directory path
- test/performance-test-suite: add sync benchmarks
- test/performance-test-suite: changed server concrete implementation
- test/performance-test-suite: replicas are able to communicate with primary
- test/performance-test-suite: send results to influxdb
- test/performance-test-suite: extract json from results
- test/performance-test-suite: add influxdb host and toke arguments
- test/performance-test-suite: use temp folders for primary, replicas and clients
- truncator: add more coverage for truncator
Features
- add vlog truncation functionality
- ci: change notification
- embedded/document: count documents
- embedded/object: add object store to embedded pkg
- embedded/sql: Initial float support
- embedded/sql: limit and offset as expressions
- embedded/sql: sql transaction creation with options
- embedded/sql: short casting syntax
- embedded/sql: wip unsafe and optimized mvcc
- embedded/sql: implicit type conversion of numeric types
- embedded/store: tx creation with options
- embedded/store: expose GetWithPrefixAndFilters
- embedded/store: embeddable values
- embedded/store: unsafe mvcc mode
- embedded/store: embedded values option
- embedded/store: read-only transactions
- embedded/store: GetWithPrefixAndFilters
- embedded/tbtree: multi-timed bulk insertions
- pkg/api: document proof endpoint
- pkg/api: improved replace documents endpoint
- pkg/api: keepOpen parameter to instruct server to maintain a document reader in memory
- pkg/api: count documents endpoint
- pkg/client: optional tx options are now available during the creation process
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.5.0-darwin-amd64 | 173b65e435c39c3ad05ba5836362ce20d189b5cfc324652927ab2afcddd317c0 |
immudb-v1.5.0-darwin-arm64 | ac4382aa077e887b289337b11b6cbe634ccabcc4bd3df5baf0fc01eff1e4d70f |
immudb-v1.5.0-freebsd-amd64 | 958652cd7405b8575d48827ab566ea0a2b6ca077a0ce784ac4693898def6aac2 |
immudb-v1.5.0-linux-amd64 | f75d5738e8a9802793c0027b262075d2e309a3b56f7c6bea707a5e853009f4d9 |
immudb-v1.5.0-linux-amd64-fips | 2c7da74a00bbf7aa1880abe7c8b5b57c82c905823a33627c4df010d6a031b054 |
immudb-v1.5.0-linux-amd64-static | 6b2cf661cd53864dd964ecd68951cb52772b30514f5bc7915684bf6b4e8d285c |
immudb-v1.5.0-linux-arm64 | cb0ea6e504d0e6b83c09368a89dc05c0affd449becc09c30fd247aca040364b7 |
immudb-v1.5.0-linux-s390x | 32a286126d6510be250746f6a5437e9731ea1e9895b2042d4e156ee9e1db8f12 |
immudb-v1.5.0-windows-amd64.exe | 694ef41e3cbf563962fb9002ddbb7eead7f8229aeca862ca8baca01372d076ac |
immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.5.0-darwin-amd64 | 828624252c317df11ae66b76fe927d0596779f670f561ddbb51683d1ce7d8303 |
immuclient-v1.5.0-darwin-arm64 | 779b3053fb6974836e66a2259f32c6cb1cfd62b84ba11969eab1faedbb66e40b |
immuclient-v1.5.0-freebsd-amd64 | efb075bb17ac5d895432f3ea5d5c0b249a372537676d823ad8e92f49236fd030 |
immuclient-v1.5.0-linux-amd64 | 04634a92dc23ec44dd605af60b620900d5c41040e8c7f3ee1779dc7b1ee736f3 |
immuclient-v1.5.0-linux-amd64-fips | 05b987815a04f4fa82b03fa2327c04ddb0f1d260a39f4f25b923d6bb36dcc236 |
immuclient-v1.5.0-linux-amd64-static | 72add649eb9d7ad0c704669919e18f0136ac3ae279ea78ec21ca5ef920283015 |
immuclient-v1.5.0-linux-arm64 | 2477d4c9ca5d18b872d4274b7f8fcccf0154c6fe690daf42a7cf84ca6e1214de |
immuclient-v1.5.0-linux-s390x | 73d694054420012af2b45fd5ef41d4ed27140ce47d69958be6256c80c7af157e |
immuclient-v1.5.0-windows-amd64.exe | dbdffb4e31ab013ffaae4cca4c5c75c43403bdfa5b82a069d96d8c20599df2fd |
immuadmin Binaries
File | SHA256 |
---|---|
immuadmin-v1.5.0-darwin-amd64 | 81726288fc62acb437cd38605fecdf224aeb0c2970be92dd435f43503118cc76 |
immuadmin-v1.5.0-darwin-arm64 | 3a671f6d3f3dd5a32488a13364688e008e53621a934aa4e3945cac2cf78873af |
immuadmin-v1.5.0-freebsd-amd64 | 8d4933cc9a14b5cd8447acdae35a0a20fbbc42e87eff7b0b5952460d787e664f |
immuadmin-v1.5.0-linux-amd64 | ef182d3b9223f33b1a5c096eef6ad5265feecd34453033333c70ef07e99d7113 |
immuadmin-v1.5.0-linux-amd64-fips | ca64142fd4ecb1c4052834275198af3cafdfa1af2df8a3ad5003c80e5b41648a |
immuadmin-v1.5.0-linux-amd64-static | 7ed8233390b179d5ab536aedb2f912be962233908288821ad22e7cba14d6d257 |
immuadmin-v1.5.0-linux-arm64 | e6d50077f792c9b62c1f70dd00b9c8d2394311f7f248743a2702966c03c402b3 |
immuadmin-v1.5.0-linux-s390x | 4c67d2e197e0215603847fe67ebcc09a24d03ea01574663ef5f33456cf1e214f |
immuadmin-v1.5.0-windows-amd64.exe | 8a747bb5759d2d6737936f7eb545e5b524b4eda5acf90ab526d26b487a74b722 |