Full Code of codenotary/immudb for AI

master 10d2dd17549b cached
1017 files
7.0 MB
1.9M tokens
9325 symbols
1 requests
Download .txt
Showing preview only (7,502K chars total). Download the full file or copy to clipboard to get everything.
Repository: codenotary/immudb
Branch: master
Commit: 10d2dd17549b
Files: 1017
Total size: 7.0 MB

Directory structure:
gitextract_tb5jme5f/

├── .chglog/
│   ├── CHANGELOG.tpl.md
│   └── config.yml
├── .codeclimate.yml
├── .dockerignore
├── .editorconfig
├── .github/
│   ├── ACTIONS_SECRETS.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature-request.md
│   ├── dependabot.yaml
│   └── workflows/
│       ├── codeql.yml
│       ├── performance.yml
│       ├── pull.yml
│       ├── push-dev.yml
│       ├── push.yml
│       └── stress.yml
├── .gitignore
├── .golangci.yml
├── .pre-commit-config.yaml
├── ACKNOWLEDGEMENTS.md
├── BUILD.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── build/
│   ├── Dockerfile
│   ├── Dockerfile.alma
│   ├── Dockerfile.full
│   ├── Dockerfile.immuadmin
│   ├── Dockerfile.immuclient
│   ├── Dockerfile.rndpass
│   ├── RELEASING.md
│   ├── e2e/
│   │   └── Dockerfile
│   ├── fips/
│   │   ├── Dockerfile
│   │   ├── Dockerfile.build
│   │   ├── Dockerfile.immuadmin
│   │   ├── Dockerfile.immuclient
│   │   └── check-fips.sh
│   ├── gen-downloads-md.sh
│   └── xgo/
│       ├── Dockerfile
│       └── build.sh
├── cmd/
│   ├── cmdtest/
│   │   ├── random.go
│   │   └── stdout_collector.go
│   ├── docs/
│   │   └── man/
│   │       ├── generate.go
│   │       └── generate_test.go
│   ├── helper/
│   │   ├── color_unix.go
│   │   ├── color_unix_test.go
│   │   ├── color_windows.go
│   │   ├── config.go
│   │   ├── config_pathmanager_unix.go
│   │   ├── config_pathmanager_windows.go
│   │   ├── config_test.go
│   │   ├── detached.go
│   │   ├── detached_test.go
│   │   ├── error.go
│   │   ├── size.go
│   │   ├── size_test.go
│   │   ├── table_printer.go
│   │   ├── table_printer_test.go
│   │   ├── terminal.go
│   │   └── terminal_test.go
│   ├── immuadmin/
│   │   ├── command/
│   │   │   ├── backup.go
│   │   │   ├── backup_test.go
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   ├── commandline.go
│   │   │   ├── commandline_test.go
│   │   │   ├── database.go
│   │   │   ├── database_test.go
│   │   │   ├── hot_backup.go
│   │   │   ├── hot_backup_test.go
│   │   │   ├── init.go
│   │   │   ├── init_test.go
│   │   │   ├── login.go
│   │   │   ├── login_errors_test.go
│   │   │   ├── login_test.go
│   │   │   ├── root.go
│   │   │   ├── serverconfig.go
│   │   │   ├── serverconfig_test.go
│   │   │   ├── stats/
│   │   │   │   ├── controller.go
│   │   │   │   ├── controller_test.go
│   │   │   │   ├── metrics.go
│   │   │   │   ├── metricsloader.go
│   │   │   │   ├── show.go
│   │   │   │   ├── show_test.go
│   │   │   │   ├── statstest/
│   │   │   │   │   └── statsResponse.go
│   │   │   │   ├── ui.go
│   │   │   │   └── ui_test.go
│   │   │   ├── stats.go
│   │   │   ├── stats_test.go
│   │   │   ├── testdata/
│   │   │   │   ├── 1-10.backup
│   │   │   │   ├── 1-13.backup
│   │   │   │   ├── 10-11.backup
│   │   │   │   ├── 12-14.backup
│   │   │   │   └── 14-15_modified.backup
│   │   │   ├── user.go
│   │   │   └── user_test.go
│   │   ├── fips/
│   │   │   └── fips.go
│   │   └── immuadmin.go
│   ├── immuclient/
│   │   ├── audit/
│   │   │   ├── auditagent.go
│   │   │   ├── auditagent_test.go
│   │   │   ├── auditor.go
│   │   │   ├── auditor_test.go
│   │   │   ├── executable.go
│   │   │   ├── executable_test.go
│   │   │   ├── init.go
│   │   │   ├── init_test.go
│   │   │   ├── metrics.go
│   │   │   ├── metrics_test.go
│   │   │   ├── utils.go
│   │   │   └── utils_test.go
│   │   ├── cli/
│   │   │   ├── cli.go
│   │   │   ├── cli_test.go
│   │   │   ├── currentstatus.go
│   │   │   ├── currentstatus_test.go
│   │   │   ├── getcommands.go
│   │   │   ├── getcommands_test.go
│   │   │   ├── login.go
│   │   │   ├── login_test.go
│   │   │   ├── misc.go
│   │   │   ├── misc_test.go
│   │   │   ├── recommend.go
│   │   │   ├── recommend_test.go
│   │   │   ├── references.go
│   │   │   ├── references_test.go
│   │   │   ├── register.go
│   │   │   ├── register_test.go
│   │   │   ├── scanners.go
│   │   │   ├── scanners_test.go
│   │   │   ├── server_info.go
│   │   │   ├── setcommands.go
│   │   │   ├── setcommands_test.go
│   │   │   ├── sql.go
│   │   │   ├── sql_test.go
│   │   │   ├── unixcmds.go
│   │   │   └── unixcmds_test.go
│   │   ├── command/
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   ├── commandline.go
│   │   │   ├── commandline_test.go
│   │   │   ├── currentstatus.go
│   │   │   ├── currentstatus_test.go
│   │   │   ├── getcommands.go
│   │   │   ├── getcommands_test.go
│   │   │   ├── init.go
│   │   │   ├── init_test.go
│   │   │   ├── login.go
│   │   │   ├── login_test.go
│   │   │   ├── misc.go
│   │   │   ├── misc_test.go
│   │   │   ├── references.go
│   │   │   ├── references_test.go
│   │   │   ├── root.go
│   │   │   ├── scanners.go
│   │   │   ├── scanners_test.go
│   │   │   ├── server_info.go
│   │   │   ├── server_info_test.go
│   │   │   ├── setcommands.go
│   │   │   ├── setcommands_test.go
│   │   │   ├── sql.go
│   │   │   ├── tamperproofing.go
│   │   │   └── tamperproofing_test.go
│   │   ├── fips/
│   │   │   └── fips.go
│   │   ├── immuc/
│   │   │   ├── currentstatus.go
│   │   │   ├── currentstatus_errors_test.go
│   │   │   ├── currentstatus_test.go
│   │   │   ├── getcommands.go
│   │   │   ├── getcommands_errors_test.go
│   │   │   ├── getcommands_test.go
│   │   │   ├── history.go
│   │   │   ├── history_test.go
│   │   │   ├── init.go
│   │   │   ├── init_errors_test.go
│   │   │   ├── init_test.go
│   │   │   ├── login.go
│   │   │   ├── login_errors_test.go
│   │   │   ├── login_test.go
│   │   │   ├── misc.go
│   │   │   ├── misc_errors_test.go
│   │   │   ├── misc_test.go
│   │   │   ├── options.go
│   │   │   ├── options_test.go
│   │   │   ├── print.go
│   │   │   ├── references.go
│   │   │   ├── references_errors_test.go
│   │   │   ├── references_test.go
│   │   │   ├── scanners.go
│   │   │   ├── scanners_errors_test.go
│   │   │   ├── scanners_test.go
│   │   │   ├── server_info.go
│   │   │   ├── server_info_test.go
│   │   │   ├── setcommands.go
│   │   │   ├── setcommands_errors_test.go
│   │   │   ├── setcommands_test.go
│   │   │   └── sql.go
│   │   ├── immuclient.go
│   │   ├── immuclienttest/
│   │   │   └── helper.go
│   │   └── service/
│   │       ├── configs/
│   │       │   ├── immuclient.toml.freebsd.dist.go
│   │       │   ├── immuclient.toml.linux.dist.go
│   │       │   └── immuclient.toml.windows.dist.go
│   │       └── constants/
│   │           ├── freebsd.dist.go
│   │           ├── linux.dist.go
│   │           └── windows.dist.go
│   ├── immudb/
│   │   ├── command/
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   ├── commandline.go
│   │   │   ├── commandline_test.go
│   │   │   ├── immudbcmdtest/
│   │   │   │   ├── immuServerMock.go
│   │   │   │   ├── immuServerMock_test.go
│   │   │   │   └── manpageservice.go
│   │   │   ├── init.go
│   │   │   ├── parse_options.go
│   │   │   ├── root.go
│   │   │   ├── root_test.go
│   │   │   ├── service/
│   │   │   │   ├── commandline.go
│   │   │   │   ├── commandline_test.go
│   │   │   │   ├── config/
│   │   │   │   │   ├── immudb.toml.freebsd.dist.go
│   │   │   │   │   ├── immudb.toml.linux.dist.go
│   │   │   │   │   └── immudb.toml.windows.dist.go
│   │   │   │   ├── constant.go
│   │   │   │   ├── constants/
│   │   │   │   │   ├── freebsd.dist.go
│   │   │   │   │   ├── linux.dist.go
│   │   │   │   │   └── windows.dist.go
│   │   │   │   ├── service.go
│   │   │   │   ├── service_test.go
│   │   │   │   └── servicetest/
│   │   │   │       ├── commandline.go
│   │   │   │       ├── configservice.go
│   │   │   │       ├── daemon.go
│   │   │   │       ├── server.go
│   │   │   │       └── sservice.go
│   │   │   ├── tls_config.go
│   │   │   └── tls_config_test.go
│   │   ├── fips/
│   │   │   └── fips.go
│   │   └── immudb.go
│   ├── immutest/
│   │   ├── command/
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   └── init.go
│   │   ├── immutest.go
│   │   └── immutest_test.go
│   ├── sservice/
│   │   ├── constant.go
│   │   ├── manpageservice.go
│   │   ├── manpageservice_test.go
│   │   ├── option.go
│   │   ├── option_test.go
│   │   ├── sservice.go
│   │   ├── sservice_freebsd.go
│   │   ├── sservice_unix.go
│   │   ├── sservice_unix_test.go
│   │   ├── sservice_windows.go
│   │   └── sservice_windows_test.go
│   └── version/
│       ├── cmd.go
│       └── cmd_test.go
├── codecov.yml
├── configs/
│   ├── immuadmin.toml
│   ├── immuclient.toml
│   ├── immudb.toml
│   └── immutest.toml
├── docs/
│   └── security/
│       ├── PROOFS.md
│       └── vulnerabilities/
│           └── linear-fake/
│               ├── Dockerfile
│               ├── README.md
│               ├── docker-compose.yml
│               ├── go/
│               │   ├── go.mod
│               │   ├── go.sum
│               │   └── main.go
│               ├── python/
│               │   ├── .gitignore
│               │   ├── Pipfile
│               │   └── main.py
│               └── server/
│                   ├── data_generation/
│                   │   └── state_values_generation_test.go
│                   ├── go.mod
│                   ├── go.sum
│                   ├── go_client_test.go
│                   ├── main.go
│                   ├── server.go
│                   └── state_values.go
├── embedded/
│   ├── ahtree/
│   │   ├── ahtree.go
│   │   ├── ahtree_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── verification.go
│   │   └── verification_test.go
│   ├── appendable/
│   │   ├── appendable.go
│   │   ├── fileutils/
│   │   │   ├── fileutils.go
│   │   │   ├── fileutils_darwin.go
│   │   │   ├── fileutils_freebsd.go
│   │   │   ├── fileutils_linux.go
│   │   │   ├── fileutils_unix_nonlinux.go
│   │   │   └── fileutils_windows.go
│   │   ├── metadata.go
│   │   ├── metadata_test.go
│   │   ├── mocked/
│   │   │   ├── mocked.go
│   │   │   └── mocked_test.go
│   │   ├── multiapp/
│   │   │   ├── appendable_cache.go
│   │   │   ├── appendable_cache_test.go
│   │   │   ├── metrics.go
│   │   │   ├── multi_app.go
│   │   │   ├── multi_app_test.go
│   │   │   ├── options.go
│   │   │   └── options_test.go
│   │   ├── reader.go
│   │   ├── reader_test.go
│   │   ├── remoteapp/
│   │   │   ├── chunk_state.go
│   │   │   ├── chunk_state_test.go
│   │   │   ├── chunked_process.go
│   │   │   ├── chunked_process_test.go
│   │   │   ├── errors.go
│   │   │   ├── metrics.go
│   │   │   ├── options.go
│   │   │   ├── options_test.go
│   │   │   ├── remote_app.go
│   │   │   ├── remote_app_test.go
│   │   │   ├── remote_storage_reader.go
│   │   │   └── remote_storage_reader_test.go
│   │   └── singleapp/
│   │       ├── options.go
│   │       ├── options_test.go
│   │       ├── single_app.go
│   │       └── single_app_test.go
│   ├── cache/
│   │   ├── cache.go
│   │   └── cache_test.go
│   ├── document/
│   │   ├── document_id.go
│   │   ├── document_id_test.go
│   │   ├── document_reader.go
│   │   ├── engine.go
│   │   ├── engine_test.go
│   │   ├── errors.go
│   │   ├── errors_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── type_conversions.go
│   │   └── type_conversions_test.go
│   ├── errors.go
│   ├── htree/
│   │   ├── htree.go
│   │   └── htree_test.go
│   ├── logger/
│   │   ├── file.go
│   │   ├── file_test.go
│   │   ├── json.go
│   │   ├── json_test.go
│   │   ├── log_file_writer.go
│   │   ├── log_file_writer_test.go
│   │   ├── logger.go
│   │   ├── logger_test.go
│   │   ├── memory.go
│   │   ├── memory_test.go
│   │   ├── simple.go
│   │   └── simple_test.go
│   ├── multierr/
│   │   ├── multierr.go
│   │   └── multierr_test.go
│   ├── remotestorage/
│   │   ├── memory/
│   │   │   ├── memory.go
│   │   │   └── memory_test.go
│   │   ├── remote_storage.go
│   │   └── s3/
│   │       ├── metrics.go
│   │       ├── s3.go
│   │       ├── s3_test.go
│   │       └── s3_with_minio_test.go
│   ├── sql/
│   │   ├── aggregated_values.go
│   │   ├── aggregated_values_test.go
│   │   ├── catalog.go
│   │   ├── catalog_test.go
│   │   ├── cond_row_reader.go
│   │   ├── cond_row_reader_test.go
│   │   ├── distinct_row_reader.go
│   │   ├── distinct_row_reader_test.go
│   │   ├── dummy_data_source_test.go
│   │   ├── dummy_row_reader_test.go
│   │   ├── engine.go
│   │   ├── engine_test.go
│   │   ├── file_sort.go
│   │   ├── functions.go
│   │   ├── functions_test.go
│   │   ├── grouped_row_reader.go
│   │   ├── grouped_row_reader_test.go
│   │   ├── implicit_conversion.go
│   │   ├── implicit_conversion_test.go
│   │   ├── joint_row_reader.go
│   │   ├── joint_row_reader_test.go
│   │   ├── json_type.go
│   │   ├── limit_row_reader.go
│   │   ├── limit_row_reader_test.go
│   │   ├── num_operator.go
│   │   ├── num_operator_test.go
│   │   ├── offset_row_reader.go
│   │   ├── offset_row_reader_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── parser.go
│   │   ├── parser_test.go
│   │   ├── proj_row_reader.go
│   │   ├── row_reader.go
│   │   ├── row_reader_test.go
│   │   ├── sort_reader.go
│   │   ├── sort_reader_test.go
│   │   ├── sql_grammar.y
│   │   ├── sql_parser.go
│   │   ├── sql_tx.go
│   │   ├── sql_tx_options.go
│   │   ├── stmt.go
│   │   ├── stmt_test.go
│   │   ├── timestamp.go
│   │   ├── timestamp_test.go
│   │   ├── type_conversion.go
│   │   ├── union_row_reader.go
│   │   ├── union_row_reader_test.go
│   │   ├── values_row_reader.go
│   │   └── values_row_reader_test.go
│   ├── store/
│   │   ├── immustore.go
│   │   ├── immustore_test.go
│   │   ├── indexer.go
│   │   ├── indexer_test.go
│   │   ├── key_reader.go
│   │   ├── key_reader_test.go
│   │   ├── kv_metadata.go
│   │   ├── kv_metadata_test.go
│   │   ├── metadata.go
│   │   ├── ongoing_tx.go
│   │   ├── ongoing_tx_keyreader.go
│   │   ├── ongoing_tx_options.go
│   │   ├── ongoing_tx_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── precommit_buffer.go
│   │   ├── precommit_buffer_test.go
│   │   ├── preconditions.go
│   │   ├── tx.go
│   │   ├── tx_metadata.go
│   │   ├── tx_metadata_test.go
│   │   ├── tx_reader.go
│   │   ├── tx_reader_test.go
│   │   ├── tx_test.go
│   │   ├── txpool.go
│   │   ├── txpool_test.go
│   │   ├── verification.go
│   │   └── verification_test.go
│   ├── tbtree/
│   │   ├── consistency_error_test.go
│   │   ├── history_reader.go
│   │   ├── history_reader_test.go
│   │   ├── metrics.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── reader.go
│   │   ├── reader_test.go
│   │   ├── snapshot.go
│   │   ├── snapshot_test.go
│   │   ├── tbtree.go
│   │   └── tbtree_test.go
│   ├── tools/
│   │   ├── bitflip.py
│   │   ├── stress_tool/
│   │   │   └── stress_tool.go
│   │   └── stress_tool_sql/
│   │       └── stress_tool_sql.go
│   └── watchers/
│       ├── watchers.go
│       └── watchers_test.go
├── ext-tools/
│   ├── buf
│   ├── go-acc
│   └── goveralls
├── go.mod
├── go.sum
├── helm/
│   ├── .gitignore
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── Makefile
│   ├── templates/
│   │   ├── NOTES.txt
│   │   ├── _helpers.tpl
│   │   ├── configmap.yaml
│   │   ├── ingress.yaml
│   │   ├── secret.yaml
│   │   ├── service.yaml
│   │   ├── statefulset.yaml
│   │   └── tests/
│   │       └── test-connection.yaml
│   └── values.yaml
├── img/
│   └── images.MD
├── pkg/
│   ├── api/
│   │   ├── openapi/
│   │   │   └── apidocs.swagger.json
│   │   ├── proto/
│   │   │   ├── authorization.proto
│   │   │   └── documents.proto
│   │   ├── protomodel/
│   │   │   ├── authorization.pb.go
│   │   │   ├── authorization.pb.gw.go
│   │   │   ├── authorization_grpc.pb.go
│   │   │   ├── docs.md
│   │   │   ├── documents.pb.go
│   │   │   ├── documents.pb.gw.go
│   │   │   └── documents_grpc.pb.go
│   │   └── schema/
│   │       ├── database_protoconv.go
│   │       ├── docs.md
│   │       ├── errors.go
│   │       ├── linear_inclusion_enhancer.go
│   │       ├── metadata.go
│   │       ├── metadata_test.go
│   │       ├── ops.go
│   │       ├── ops_test.go
│   │       ├── pattern_test.go
│   │       ├── patterns.go
│   │       ├── preconditions.go
│   │       ├── row_value.go
│   │       ├── row_value_test.go
│   │       ├── schema.pb.go
│   │       ├── schema.pb.gw.go
│   │       ├── schema.proto
│   │       ├── schema.swagger.json
│   │       ├── schema_grpc.pb.go
│   │       ├── sql.go
│   │       ├── sql_exec_result.go
│   │       ├── sql_test.go
│   │       ├── state.go
│   │       ├── unexpected_type.go
│   │       └── unexpected_type_test.go
│   ├── auth/
│   │   ├── auth.go
│   │   ├── auth_type.go
│   │   ├── clientinterceptors.go
│   │   ├── clientinterceptors_test.go
│   │   ├── errors.go
│   │   ├── passwords.go
│   │   ├── passwords_test.go
│   │   ├── permissions.go
│   │   ├── permissions_test.go
│   │   ├── serverinterceptors.go
│   │   ├── serverinterceptors_test.go
│   │   ├── tokenkeys.go
│   │   ├── tokenkeys_test.go
│   │   ├── tokens.go
│   │   ├── tokens_test.go
│   │   ├── user.go
│   │   └── user_test.go
│   ├── cert/
│   │   └── cert.go
│   ├── client/
│   │   ├── auditor/
│   │   │   ├── auditor.go
│   │   │   ├── auditor_test.go
│   │   │   ├── monitoring_server.go
│   │   │   └── monitoring_server_test.go
│   │   ├── cache/
│   │   │   ├── cache.go
│   │   │   ├── common.go
│   │   │   ├── common_test.go
│   │   │   ├── errors.go
│   │   │   ├── file_cache.go
│   │   │   ├── file_cache_test.go
│   │   │   ├── history_file_cache.go
│   │   │   ├── history_file_cache_test.go
│   │   │   ├── inmemory_cache.go
│   │   │   └── inmemory_cache_test.go
│   │   ├── client.go
│   │   ├── client_test.go
│   │   ├── clienttest/
│   │   │   ├── homedir_mock.go
│   │   │   ├── immuServiceClient_mock.go
│   │   │   ├── immuclient_mock.go
│   │   │   ├── immuclient_mock_test.go
│   │   │   ├── password_reader_mock.go
│   │   │   ├── terminal_reader_mock.go
│   │   │   └── token_service_mock.go
│   │   ├── errors/
│   │   │   ├── errors.go
│   │   │   └── meta.go
│   │   ├── errors.go
│   │   ├── get_options.go
│   │   ├── get_options_test.go
│   │   ├── heartbeater.go
│   │   ├── homedir/
│   │   │   ├── homedir.go
│   │   │   └── homedir_test.go
│   │   ├── illegal_state_handler_interceptor.go
│   │   ├── mtls_options.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── session.go
│   │   ├── session_id_injector_interceptor.go
│   │   ├── session_test.go
│   │   ├── signature_verifier_interceptor.go
│   │   ├── sql.go
│   │   ├── sql_test.go
│   │   ├── state/
│   │   │   ├── immudb_uuid_provider.go
│   │   │   ├── immudb_uuid_provider_test.go
│   │   │   ├── state_provider.go
│   │   │   ├── state_service.go
│   │   │   └── state_service_test.go
│   │   ├── stream_replication.go
│   │   ├── stream_test.go
│   │   ├── streams.go
│   │   ├── streams_integration_test.go
│   │   ├── streams_verified_integration_test.go
│   │   ├── streams_zscan_and_history_integration_test.go
│   │   ├── timestamp/
│   │   │   ├── default.go
│   │   │   ├── timestamp_test.go
│   │   │   └── tsgenerator.go
│   │   ├── timestamp_service.go
│   │   ├── timestamp_service_test.go
│   │   ├── token_interceptor.go
│   │   ├── tokenservice/
│   │   │   ├── errors.go
│   │   │   ├── file.go
│   │   │   ├── inmemory.go
│   │   │   ├── inmemory_test.go
│   │   │   ├── token_service.go
│   │   │   └── token_service_test.go
│   │   ├── transaction.go
│   │   ├── tx_options.go
│   │   ├── types.go
│   │   └── types_test.go
│   ├── database/
│   │   ├── all_ops.go
│   │   ├── all_ops_test.go
│   │   ├── database.go
│   │   ├── database_test.go
│   │   ├── db_manager.go
│   │   ├── db_manager_test.go
│   │   ├── dboptions.go
│   │   ├── dboptions_test.go
│   │   ├── document_database.go
│   │   ├── document_database_test.go
│   │   ├── errors.go
│   │   ├── instrumented_rwmutex.go
│   │   ├── instrumented_rwmutex_test.go
│   │   ├── lazy_db.go
│   │   ├── meta.go
│   │   ├── protoconv.go
│   │   ├── protoconv_test.go
│   │   ├── reference.go
│   │   ├── reference_test.go
│   │   ├── replica_test.go
│   │   ├── scan.go
│   │   ├── scan_test.go
│   │   ├── sorted_set.go
│   │   ├── sorted_set_test.go
│   │   ├── sql.go
│   │   ├── sql_test.go
│   │   ├── truncator.go
│   │   ├── truncator_test.go
│   │   └── types.go
│   ├── errors/
│   │   ├── error.go
│   │   ├── errors_test.go
│   │   ├── grpc_status.go
│   │   ├── grpc_status_test.go
│   │   ├── map.go
│   │   ├── map_test.go
│   │   ├── meta.go
│   │   └── wrapped.go
│   ├── fs/
│   │   ├── copy.go
│   │   ├── copy_test.go
│   │   ├── tar.go
│   │   ├── tar_test.go
│   │   ├── zip.go
│   │   └── zip_test.go
│   ├── helpers/
│   │   ├── semaphore/
│   │   │   └── semaphore.go
│   │   └── slices/
│   │       └── slices.go
│   ├── immuos/
│   │   ├── filepath.go
│   │   ├── filepath_test.go
│   │   ├── ioutil.go
│   │   ├── ioutil_test.go
│   │   ├── os.go
│   │   ├── os_test.go
│   │   ├── user.go
│   │   └── user_test.go
│   ├── integration/
│   │   ├── auditor_test.go
│   │   ├── client_test.go
│   │   ├── database_creation_test.go
│   │   ├── database_runtime_test.go
│   │   ├── error_test.go
│   │   ├── follower_replication_test.go
│   │   ├── fuzzing/
│   │   │   └── grpc_fuzz_test.go
│   │   ├── replication/
│   │   │   ├── docker.go
│   │   │   ├── docker_test.go
│   │   │   ├── server.go
│   │   │   ├── suite.go
│   │   │   └── synchronous_replication_test.go
│   │   ├── server_recovery_test.go
│   │   ├── session_test.go
│   │   ├── signature_verifier_interceptor_test.go
│   │   ├── sql/
│   │   │   └── sql_test.go
│   │   ├── sql_types_test.go
│   │   ├── stream/
│   │   │   ├── stream_replication_test.go
│   │   │   ├── stream_test.go
│   │   │   ├── streams_verified_test.go
│   │   │   └── streams_zscan_and_history_test.go
│   │   ├── tx/
│   │   │   ├── transaction_test.go
│   │   │   └── tx_entries_test.go
│   │   └── verification_long_linear_proof_test.go
│   ├── pgsql/
│   │   ├── errors/
│   │   │   ├── errors.go
│   │   │   └── errors_test.go
│   │   ├── pgschema/
│   │   │   ├── resolvers_test.go
│   │   │   └── table_resolvers.go
│   │   └── server/
│   │       ├── bmessages/
│   │       │   ├── authentication_cleartext_password.go
│   │       │   ├── authentication_ok.go
│   │       │   ├── bind_complete.go
│   │       │   ├── command_complete.go
│   │       │   ├── data_row.go
│   │       │   ├── empty_query_response.go
│   │       │   ├── error_response.go
│   │       │   ├── error_response_opt.go
│   │       │   ├── error_response_test.go
│   │       │   ├── parameter_description.go
│   │       │   ├── parameter_status.go
│   │       │   ├── parse_complete.go
│   │       │   ├── ready_for_query.go
│   │       │   └── row_description.go
│   │       ├── cert/
│   │       │   ├── ca-cert.pem
│   │       │   ├── ca-cert.srl
│   │       │   ├── ca-key.pem
│   │       │   ├── server-cert.pem
│   │       │   ├── server-ext.cnf
│   │       │   ├── server-key.pem
│   │       │   └── server-req.pem
│   │       ├── fmessages/
│   │       │   ├── bind.go
│   │       │   ├── bind_test.go
│   │       │   ├── describe.go
│   │       │   ├── execute.go
│   │       │   ├── execute_test.go
│   │       │   ├── flush.go
│   │       │   ├── fmessages_test/
│   │       │   │   └── payload.go
│   │       │   ├── parse.go
│   │       │   ├── parse_test.go
│   │       │   ├── password_message.go
│   │       │   ├── query.go
│   │       │   ├── string_reader.go
│   │       │   ├── sync.go
│   │       │   └── terminate.go
│   │       ├── initialize_session.go
│   │       ├── message.go
│   │       ├── message_test.go
│   │       ├── options.go
│   │       ├── pgmeta/
│   │       │   └── pg_type.go
│   │       ├── pgsql_integration_test.go
│   │       ├── query_machine.go
│   │       ├── query_machine_test.go
│   │       ├── request_handler.go
│   │       ├── server.go
│   │       ├── server_test.go
│   │       ├── session.go
│   │       ├── session_test.go
│   │       ├── ssl_handshake.go
│   │       ├── ssl_handshake_test.go
│   │       ├── stmts_handler.go
│   │       ├── types.go
│   │       ├── types_test.go
│   │       └── version.go
│   ├── replication/
│   │   ├── delayer.go
│   │   ├── metrics.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── replicator.go
│   │   └── replicator_test.go
│   ├── server/
│   │   ├── access_log_interceptor.go
│   │   ├── access_log_interceptor_test.go
│   │   ├── authorization_operations.go
│   │   ├── corruption_checker.go
│   │   ├── corruption_checker_test.go
│   │   ├── db_dummy_closed.go
│   │   ├── db_dummy_closed_test.go
│   │   ├── db_operations.go
│   │   ├── db_options.go
│   │   ├── db_options_test.go
│   │   ├── db_runtime_test.go
│   │   ├── documents_operations.go
│   │   ├── documents_operations_test.go
│   │   ├── error_mapper_interceptor.go
│   │   ├── errors.go
│   │   ├── errors_test.go
│   │   ├── keepAlive.go
│   │   ├── keep_alive_session_interceptor.go
│   │   ├── metrics.go
│   │   ├── metrics_funcs.go
│   │   ├── metrics_funcs_test.go
│   │   ├── metrics_test.go
│   │   ├── multidb_handler.go
│   │   ├── multidb_handler_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── pid.go
│   │   ├── pid_test.go
│   │   ├── remote_storage.go
│   │   ├── remote_storage_test.go
│   │   ├── request_metadata_interceptor.go
│   │   ├── server.go
│   │   ├── server_test.go
│   │   ├── servertest/
│   │   │   ├── server.go
│   │   │   └── server_mock.go
│   │   ├── service.go
│   │   ├── service_test.go
│   │   ├── session.go
│   │   ├── session_auth_interceptor.go
│   │   ├── sessions/
│   │   │   ├── errors.go
│   │   │   ├── internal/
│   │   │   │   └── transactions/
│   │   │   │       ├── errors.go
│   │   │   │       ├── transactions.go
│   │   │   │       └── transactions_test.go
│   │   │   ├── manager.go
│   │   │   ├── manager_test.go
│   │   │   ├── options.go
│   │   │   ├── options_test.go
│   │   │   ├── session.go
│   │   │   └── session_test.go
│   │   ├── sever_current_state_test.go
│   │   ├── sql.go
│   │   ├── sql_test.go
│   │   ├── state_signer.go
│   │   ├── state_signer_test.go
│   │   ├── stream_replication.go
│   │   ├── stream_replication_test.go
│   │   ├── stream_test.go
│   │   ├── streams.go
│   │   ├── transaction.go
│   │   ├── transaction_test.go
│   │   ├── truncator.go
│   │   ├── truncator_test.go
│   │   ├── types.go
│   │   ├── types_test.go
│   │   ├── user.go
│   │   ├── user_test.go
│   │   ├── uuid.go
│   │   ├── uuid_test.go
│   │   ├── webserver.go
│   │   └── webserver_test.go
│   ├── signer/
│   │   ├── ecdsa.go
│   │   ├── ecdsa_test.go
│   │   └── signer.go
│   ├── stdlib/
│   │   ├── connection.go
│   │   ├── connection_test.go
│   │   ├── connector.go
│   │   ├── connector_test.go
│   │   ├── driver.go
│   │   ├── driver_test.go
│   │   ├── errors.go
│   │   ├── immuConnector.go
│   │   ├── rows.go
│   │   ├── rows_test.go
│   │   ├── sql_test.go
│   │   ├── tx.go
│   │   ├── tx_test.go
│   │   ├── uri.go
│   │   └── uri_test.go
│   ├── stream/
│   │   ├── errors.go
│   │   ├── execall_receiver.go
│   │   ├── execall_receiver_test.go
│   │   ├── execall_sender.go
│   │   ├── execall_sender_test.go
│   │   ├── execall_streamer.go
│   │   ├── factory.go
│   │   ├── kvparser.go
│   │   ├── kvparser_test.go
│   │   ├── kvreceiver.go
│   │   ├── kvsender.go
│   │   ├── kvsender_test.go
│   │   ├── kvstreamer.go
│   │   ├── meta.go
│   │   ├── receiver.go
│   │   ├── receiver_test.go
│   │   ├── sender.go
│   │   ├── sender_test.go
│   │   ├── streamer.go
│   │   ├── streamtest/
│   │   │   ├── err_reader.go
│   │   │   ├── receiver.go
│   │   │   ├── sender.go
│   │   │   └── stream.go
│   │   ├── types.go
│   │   ├── types_test.go
│   │   ├── ventryparser.go
│   │   ├── ventryparser_test.go
│   │   ├── ventryreceiver.go
│   │   ├── ventryreceiver_test.go
│   │   ├── ventrysender.go
│   │   ├── ventrysender_test.go
│   │   ├── ventrystreamer.go
│   │   ├── zStreamer.go
│   │   ├── zparser.go
│   │   ├── zparser_test.go
│   │   ├── zreceiver.go
│   │   ├── zreceiver_test.go
│   │   ├── zsender.go
│   │   └── zsender_test.go
│   ├── streamutils/
│   │   ├── files.go
│   │   └── files_test.go
│   ├── truncator/
│   │   ├── truncator.go
│   │   └── truncator_test.go
│   └── verification/
│       ├── verification.go
│       └── verification_test.go
├── sonar-project.properties
├── swagger/
│   ├── default/
│   │   └── index.html
│   ├── swagger.go
│   ├── swagger_default.go
│   ├── swagger_default_test.go
│   ├── swagger_test.go
│   └── swaggeroverrides.js
├── test/
│   ├── client_test.expected.bkp
│   ├── data_long_linear_proof/
│   │   ├── aht/
│   │   │   ├── commit/
│   │   │   │   └── 00000000.di
│   │   │   └── tree/
│   │   │       └── 00000000.sha
│   │   ├── commit/
│   │   │   └── 00000000.txi
│   │   ├── index/
│   │   │   ├── commit/
│   │   │   │   └── 00000000.ri
│   │   │   ├── history/
│   │   │   │   └── 00000000.hx
│   │   │   └── nodes/
│   │   │       └── 00000000.n
│   │   ├── tx/
│   │   │   └── 00000000.tx
│   │   └── val_0/
│   │       └── 00000000.val
│   ├── data_v1.1.0/
│   │   ├── defaultdb/
│   │   │   ├── aht/
│   │   │   │   ├── commit/
│   │   │   │   │   └── 00000000.di
│   │   │   │   └── tree/
│   │   │   │       └── 00000000.sha
│   │   │   ├── commit/
│   │   │   │   └── 00000000.txi
│   │   │   ├── index/
│   │   │   │   ├── commit/
│   │   │   │   │   └── 00000000.ri
│   │   │   │   ├── history/
│   │   │   │   │   └── 00000000.hx
│   │   │   │   └── nodes/
│   │   │   │       └── 00000000.n
│   │   │   ├── tx/
│   │   │   │   └── 00000000.tx
│   │   │   └── val_0/
│   │   │       └── 00000000.val
│   │   ├── immudb.identifier
│   │   └── systemdb/
│   │       ├── aht/
│   │       │   ├── commit/
│   │       │   │   └── 00000000.di
│   │       │   └── tree/
│   │       │       └── 00000000.sha
│   │       ├── commit/
│   │       │   └── 00000000.txi
│   │       ├── index/
│   │       │   ├── commit/
│   │       │   │   └── 00000000.ri
│   │       │   ├── history/
│   │       │   │   └── 00000000.hx
│   │       │   └── nodes/
│   │       │       └── 00000000.n
│   │       ├── tx/
│   │       │   └── 00000000.tx
│   │       └── val_0/
│   │           └── 00000000.val
│   ├── document_storage_tests/
│   │   ├── documents_tests/
│   │   │   ├── actions/
│   │   │   │   ├── create_collections.go
│   │   │   │   ├── create_index.go
│   │   │   │   ├── get_collections.go
│   │   │   │   ├── insert_documents.go
│   │   │   │   ├── search_documents.go
│   │   │   │   └── session.go
│   │   │   ├── create_collections_test.go
│   │   │   ├── create_indexes_test.go
│   │   │   ├── delete_collections_test.go
│   │   │   ├── go.mod
│   │   │   ├── go.sum
│   │   │   ├── insert_documents_test.go
│   │   │   ├── models/
│   │   │   │   ├── collections.go
│   │   │   │   ├── documents.go
│   │   │   │   ├── index.go
│   │   │   │   ├── search.go
│   │   │   │   └── user.go
│   │   │   └── session_test.go
│   │   └── documents_tests_deprecated/
│   │       ├── auth_test.go
│   │       ├── collections_test.go
│   │       ├── create_collections_test.go
│   │       ├── documents_test.go
│   │       ├── documents_test_utils.go
│   │       ├── go.mod
│   │       ├── go.sum
│   │       ├── login_test.go
│   │       ├── testall.sh
│   │       └── utils.go
│   ├── e2e/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── replication/
│   │   │   ├── replic.sh
│   │   │   └── run.sh
│   │   ├── requirements.txt
│   │   ├── runtests.py
│   │   ├── runtests.sh
│   │   └── t0.patch
│   ├── immudb.toml
│   ├── mtls_certs/
│   │   ├── ca-chain.cert.pem
│   │   ├── ca.cert.pem
│   │   └── ca.key.pem
│   ├── performance-test-suite/
│   │   ├── README.md
│   │   ├── cmd/
│   │   │   └── perf-test/
│   │   │       └── main.go
│   │   └── pkg/
│   │       ├── benchmarks/
│   │       │   ├── benchmark.go
│   │       │   ├── format.go
│   │       │   ├── format_test.go
│   │       │   ├── hwstats.go
│   │       │   ├── hwstats_test.go
│   │       │   ├── keytracker.go
│   │       │   ├── keytracker_test.go
│   │       │   ├── rand.go
│   │       │   ├── rand_test.go
│   │       │   └── writetxs/
│   │       │       └── benchmark.go
│   │       └── runner/
│   │           ├── benchmarks.go
│   │           ├── influxdb_client.go
│   │           ├── processinfo.go
│   │           ├── results.go
│   │           ├── runner.go
│   │           └── systeminfo.go
│   ├── release_perf_test/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── Dockerfile-141
│   │   ├── Dockerfile.tools
│   │   ├── README.md
│   │   ├── docker-compose.yaml
│   │   ├── doctest.sh
│   │   ├── quickie.sh
│   │   ├── runme.sh
│   │   └── startup.sh
│   ├── signer/
│   │   ├── ec1.key
│   │   ├── ec1.pub
│   │   ├── ec3.key
│   │   ├── ec3.pub
│   │   └── unparsable.key
│   └── txscan/
│       └── txscan.go
├── tools/
│   ├── autotest/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── adminlogin.expect
│   │   ├── adminlogin1.expect
│   │   ├── autotest.sh
│   │   ├── envpasswd.sh
│   │   └── login.expect
│   ├── bitflip.py
│   ├── comparison/
│   │   ├── mongodb/
│   │   │   ├── Dockerfile
│   │   │   ├── load.js
│   │   │   └── run.sh
│   │   └── scylladb/
│   │       ├── Dockerfile
│   │       ├── bench.py
│   │       ├── run.sh
│   │       └── schema
│   ├── long_running/
│   │   └── stress_tool_worker_pool.go
│   ├── monitoring/
│   │   └── grafana-dashboard.json
│   ├── mtls/
│   │   ├── .gitignore
│   │   ├── generate.sh
│   │   ├── intermediate_openssl.cnf
│   │   └── openssl.cnf
│   ├── packaging/
│   │   ├── conf/
│   │   │   └── nfpm.yaml
│   │   └── deb/
│   │       ├── control/
│   │       │   └── postinst
│   │       ├── default/
│   │       │   ├── immuclient.ini.dist
│   │       │   ├── immudb
│   │       │   ├── immudb.ini.dist
│   │       │   ├── immugw
│   │       │   └── immugw.ini.dist
│   │       ├── init.d/
│   │       │   ├── immudb
│   │       │   └── immugw
│   │       ├── man/
│   │       │   ├── immuclient.1
│   │       │   ├── immudb.1
│   │       │   └── immugw.1
│   │       └── systemd/
│   │           ├── immudb.service
│   │           └── immugw.service
│   ├── rndpass/
│   │   └── startup.sh
│   └── testing/
│       ├── stress_tool_sql.go
│       └── stress_tool_test_kv/
│           ├── README.md
│           └── stress_tool_kv.go
├── tools.go
└── webconsole/
    ├── .gitignore
    ├── default/
    │   └── missing/
    │       └── index.html
    ├── webconsole.go
    ├── webconsole_default.go
    ├── webconsole_default_test.go
    └── webconsole_test.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .chglog/CHANGELOG.tpl.md
================================================
# CHANGELOG
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
{{ if .Versions -}}
<a name="unreleased"></a>
## [Unreleased]

{{ if .Unreleased.CommitGroups -}}
{{ range .Unreleased.CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}

{{- if .RevertCommits -}}
### Reverts
{{ range .RevertCommits -}}
- {{ .Revert.Header }}
{{ end }}
{{ end -}}

{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{- if .Versions }}
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}


================================================
FILE: .chglog/config.yml
================================================
style: github
template: CHANGELOG.tpl.md
info:
  title: CHANGELOG
  repository_url: https://github.com/vchain-us/immudb
options:
  commits:
    filters:
      Type:
        - feat
        - fix
        - perf
        - refactor
        - chore
  commit_groups:
    title_maps:
      feat: Features
      fix: Bug Fixes
      perf: Performance Improvements
      refactor: Code Refactoring
      chore: Changes
  header:
    pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s\\/]*)\\))?\\:\\s(.*)$"
    pattern_maps:
      - Type
      - Scope
      - Subject
  notes:
    keywords:
      - BREAKING CHANGE


================================================
FILE: .codeclimate.yml
================================================
exclude_patterns:
- "pkg/api/schema/schema.pb.go"
- "pkg/api/schema/schema.pb.gw.go"


================================================
FILE: .dockerignore
================================================
# Compiled binaries
/bm
dist

# Immudb data
/data*

# Vendor
vendor

# Unuseful stuff
*.iml
*.swp
.idea/
.gitignore
build
resources
/immudata
/Dockerfile*
pkg/integration/replication
webconsole/dist

# Allow FIPS build checker
!build/fips/check-fips.sh


================================================
FILE: .editorconfig
================================================
root = true

[*]
end_of_line = lf
indent_size = 4
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

[*.{md, yml}]
indent_size = 2
indent_style = space


================================================
FILE: .github/ACTIONS_SECRETS.md
================================================
# Github actions secrets

## PERF_TEST_RUNS_ON

This secret can be used to change the `runs-on` field for performance test suite.

Example value (keep it a single-line):

```json
{"targets":[{"name": "b1", "runs-on":["self-hosted", "b1"]}, {"name": "b2", "runs-on":["self-hosted", "b2"]}]}
```

### PERF_TEST_AWS_xxx

If set, performance test results are uploaded into s3 after successful push workflow.

Following secrets are needed:

* `PERF_TEST_AWS_ACCESS_KEY_ID`
* `PERF_TEST_AWS_BUCKET_PREFIX` (i.e. `<bucket name>` or `<bucket_name>/some/prefix`)
* `PERF_TEST_AWS_REGION`
* `PERF_TEST_AWS_SECRET_ACCESS_KEY`


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''

---

<!-- Please use this template while reporting a bug and provide as much info as possible. 
If applicable, add shell logs or screenshots to help explain your problem.
Thanks! -->

**What happened**

**What you expected to happen**

**How to reproduce it (as minimally and precisely as possible)**

**Environment**
```shell
# run "immu* version" and copy/paste the output here
```

**Additional info (any other context about the problem)**


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''

---

<!-- Please use this template for submitting feature or enhancement requests -->

**What would you like to be added or enhanced**

**Why is this needed**

**Additional context**

================================================
FILE: .github/dependabot.yaml
================================================
version: 2
updates:
  - package-ecosystem: "gomod"
    directory: "/"
    schedule:
      interval: "daily"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "daily"

================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
  push:
    branches: [ "master", "*", "develop" ]
  pull_request:
    branches: [ "master", "*", "develop" ]
  schedule:
    - cron: '39 20 * * 0'

jobs:
  analyze:
    name: Analyze (${{ matrix.language }})
    # Runner size impacts CodeQL analysis time. To learn more, please see:
    #   - https://gh.io/recommended-hardware-resources-for-running-codeql
    #   - https://gh.io/supported-runners-and-hardware-resources
    #   - https://gh.io/using-larger-runners (GitHub.com only)
    # Consider using larger runners or machines with greater resources for possible analysis time improvements.
    runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
    timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
    permissions:
      # required for all workflows
      security-events: write

      # required to fetch internal or private CodeQL packs
      packages: read

      # only required for workflows in private repositories
      actions: read
      contents: read

    strategy:
      fail-fast: false
      matrix:
        include:
        - language: go
          build-mode: autobuild
        - language: javascript-typescript
          build-mode: none
        - language: python
          build-mode: none
        # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
        # Use `c-cpp` to analyze code written in C, C++ or both
        # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
        # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
        # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
        # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
        # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
        # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v4
      with:
        languages: ${{ matrix.language }}
        build-mode: ${{ matrix.build-mode }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.

        # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
        # queries: security-extended,security-and-quality

    # If the analyze step fails for one of the languages you are analyzing with
    # "We were unable to automatically build your code", modify the matrix above
    # to set the build mode to "manual" for that language. Then modify this step
    # to build your code.
    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
    - if: matrix.build-mode == 'manual'
      run: |
        echo 'If you are using a "manual" build mode for one or more of the' \
          'languages you are analyzing, replace this with the commands to build' \
          'your code, for example:'
        echo '  make bootstrap'
        echo '  make release'
        exit 1

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4
      with:
        category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/performance.yml
================================================
name: Performance tests

on:
  workflow_dispatch:
  workflow_call:
  schedule:
    - cron: '0 0 * * *'

jobs:
  performance-test-suite-detect-runners:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.detect-runners.outputs.matrix }}
    env:
      PERF_TEST_RUNS_ON: ${{ secrets.PERF_TEST_RUNS_ON }}
      PERF_TEST_RUNS_ON_DEFAULT: |
        {
          "targets": [
            {
              "name": "github-ubuntu-latest",
              "runs-on": "ubuntu-latest"
            }
          ]
        }
    steps:
      - id: detect-runners
        run: |
          RES="$(echo "${PERF_TEST_RUNS_ON:-${PERF_TEST_RUNS_ON_DEFAULT}}" | jq -c '.targets')"
          echo "Detected targets:"
          echo "$RES" | jq .
          echo "matrix=${RES}" >> $GITHUB_OUTPUT

  performance-test-suite:
    name: Performance Test Suite (${{ matrix.target.name }})
    needs:
      - performance-test-suite-detect-runners
    strategy:
      matrix:
        target: ${{ fromJson(needs.performance-test-suite-detect-runners.outputs.matrix) }}
    runs-on: ${{ matrix.target.runs-on }}
    env:
      ARG_DURATION: "${{ startsWith(github.ref, 'refs/tags/v') && '-d 2m' || '' }}"
      INFLUX_HOST: ${{ secrets.INFLUX_HOST }}
      INFLUX_TOKEN: ${{ secrets.INFLUX_TOKEN }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v6
        with:
          go-version-file: 'go.mod'
      - run: go build -o perf-test-suite ./test/performance-test-suite/cmd/perf-test/
      - name: Run performance tests
        id: performance
        run: |
          echo "version=$(cat Makefile | grep '\<VERSION=' | awk -F= '{print $2}' | tr -d [\',])" >> $GITHUB_ENV
          SECONDS=0
          ./perf-test-suite $ARG_DURATION -workdir /var/tmp -host $INFLUX_HOST -token $INFLUX_TOKEN -runner ${{ matrix.target.name }} -version $(cat Makefile | grep '\<VERSION=' | awk -F= '{print $2}' | tr -d [\',]) > perf-test-results-with-summaries.txt
          echo "duration=$SECONDS" >> $GITHUB_ENV
          sed '/^{/,/^}/!d' perf-test-results-with-summaries.txt > perf-test-results.json
        env:
          GOMEMLIMIT: 7680MiB
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Performance Test Results (${{ matrix.target.name }})
          path: perf-test-results.json
          retention-days: 30
      - name: Create the Mattermost message
        if: github.event.schedule == '0 0 * * *'
        run: >
          echo "{\"text\":\"### Performance tests results for scheduled daily run on ${{ github.ref_name }} branch and ${{ matrix.target.name }} runner\n
          **Result**: ${{ steps.performance.outcome }}\n
          **Duration**: ${{ env.duration }}s | **immudb version**: ${{ env.version }}\n
          $(jq -r '.benchmarks[] | .name + "\n" + .summary' perf-test-results.json) \n
          **Check details [here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})**
          \"}" > mattermost.json && echo MM_PAYLOAD=$(cat mattermost.json) >> $GITHUB_ENV
      - name: Notify on immudb channel on Mattermost
        if: github.event.schedule == '0 0 * * *'
        uses: mattermost/action-mattermost-notify@master
        with:
          MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
          MATTERMOST_CHANNEL: 'immudb-tests'
          PAYLOAD: ${{ env.MM_PAYLOAD }}

  performance-test-suite-upload-s3:
    if: github.event.schedule != '0 0 * * *'
    needs:
      - performance-test-suite
      - performance-test-suite-detect-runners
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target: ${{ fromJson(needs.performance-test-suite-detect-runners.outputs.matrix) }}
    env:
      PERF_TEST_AWS_REGION: ${{ secrets.PERF_TEST_AWS_REGION }}
    steps:
      - uses: actions/checkout@v4

      - name: Download test results
        if: "${{ env.PERF_TEST_AWS_REGION }}"
        uses: actions/download-artifact@v4
        with:
          name: Performance Test Results (${{ matrix.target.name }})

      - name: Configure AWS credentials
        if: "${{ env.PERF_TEST_AWS_REGION }}"
        uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-access-key-id: "${{ secrets.PERF_TEST_AWS_ACCESS_KEY_ID }}"
          aws-secret-access-key: "${{ secrets.PERF_TEST_AWS_SECRET_ACCESS_KEY }}"
          aws-region: "${{ secrets.PERF_TEST_AWS_REGION }}"

      - name: Upload perf results to S3
        if: "${{ env.PERF_TEST_AWS_REGION }}"
        run: |
          GIT_COMMIT_NAME="$(git show -s --format=%cd --date="format:%Y-%m-%d--%H-%I-%S")--$(git rev-parse HEAD)"
          aws s3 cp \
            perf-test-results.json \
            "s3://${{ secrets.PERF_TEST_AWS_BUCKET_PREFIX }}/${{ github.ref_name }}/${GIT_COMMIT_NAME}/${{ matrix.target.name }}.json"


================================================
FILE: .github/workflows/pull.yml
================================================
name: pullCI

on: [pull_request]

jobs:
  build:
    name: build-and-test
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            go: "1.24"

          - os: ubuntu-latest
            go: "1.24"
            testWithMinio: true

          - os: ubuntu-latest
            go: "1.24"
            testWithFips: true

          - os: ubuntu-latest
            go: "1.24"
            test: true

          - os: windows-latest
            go: "1.24"
            testClientOnly: true
            noWebconsole: true

          - os: macos-latest
            go: "1.24"
            testClientOnly: true

    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: ${{ matrix.go }}

      - uses: actions/checkout@v4

      - name: Test
        run: make test
        if: matrix.test

      - name: Test (with minio)
        run: |
          # Spawn minio docker container in the background
          docker run -d -t -p 9000:9000 --name minio \
            -e "MINIO_ACCESS_KEY=minioadmin" \
            -e "MINIO_SECRET_KEY=minioadmin" \
            minio/minio server /data

          # Create immudb bucket
          docker run --net=host -t --entrypoint /bin/sh minio/mc -c "
            mc alias set local http://localhost:9000 minioadmin minioadmin &&
            mc mb local/immudb
          "

          # Run go tests with minio
          GO_TEST_FLAGS="-tags minio" make test

          # Stop minio
          docker rm -f minio
        if: matrix.testWithMinio

      - name: Test (with fips build)
        run: |
          make test/fips
        if: matrix.testWithFips

      - name: Test Client
        run: make test-client
        if: matrix.testClientOnly
        shell: bash

      - name: Build with webconsole
        run: |
          sudo apt update && sudo apt install curl -y
          WEBCONSOLE=default SWAGGER=true make all
        if: "!matrix.noWebconsole"

      - name: Build without webconsole
        run: make all
        if: matrix.noWebconsole

      - name: Make binaries executable
        run: chmod +x immudb immuclient immuadmin
        if: runner.os != 'Windows'

      - name: Testing immudb operations
        run: |
          IMMUCLIENT=./immuclient*
          IMMUADMIN=./immuadmin*
          IMMUDB=./immudb*

          # Run immuclient before a server starts, make sure it fails
          set -euxo pipefail
          ${IMMUCLIENT} || echo "Test #1 OK - immuclient failed to connect (no server started)"
          ${IMMUDB} -d
          sleep 5
          ${IMMUCLIENT} login --username immudb --password immudb || { echo "Test #2 Login (Default credentials) Failed"; exit 1; }
          echo -n "immudb" | ${IMMUCLIENT} login --username immudb || { echo "Test #3 Login (Default credentials from stdin) Failed"; exit 1; }
          ${IMMUCLIENT} safeset test3 githubaction || { echo "Test #4 Failed to safeset simple values"; exit 1; }
          sg=$(${IMMUCLIENT} safeget test3)
          grep -q "githubaction" <<< $sg || { echo "Test #5 Failed safeget responded with $sg"; exit 1; }
          grep -q  "verified" <<< $sg || { echo "Test #6 Failed safeset didn't get verified"; exit 1; }
          grep -q "true" <<< $sg || { echo "Test #7 Failed safeset didn't get verified"; exit 1; }
        shell: bash

      - name: Testing immudb webconsole
        if: "!matrix.noWebconsole"
        run: |
          # Find <title>immudb webconsole</title>
          webconsole_page=$(curl -s localhost:8080) || { echo "Test #8 web console unreachable"; exit 1; }
          grep -q "<title>immudb webconsole</title>" <<< $webconsole_page || { echo "Test #9 Failed, web console reachable but title not found"; exit 1; }

  gosec:
    name: Run Gosec Security Scanner
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: ${{ env.GO_VERSION }}
      - uses: actions/checkout@v4
      - uses: securego/gosec@v2.17.0
        with:
          args: -fmt=json -out=results-$JOB_ID.json -no-fail ./...

  coveralls:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: "1.24"
      - uses: actions/checkout@v4
      - run: |
          # Spawn minio docker container in the background
          docker run -d -t -p 9000:9000 --name minio \
            -e "MINIO_ACCESS_KEY=minioadmin" \
            -e "MINIO_SECRET_KEY=minioadmin" \
            minio/minio server /data

          # Create immudb bucket
          docker run --net=host -t --entrypoint /bin/sh minio/mc -c "
            mc alias set local http://localhost:9000 minioadmin minioadmin &&
            mc mb local/immudb
          "

          export PATH=$PATH:$(go env GOPATH)/bin
          set -o pipefail
          ./ext-tools/go-acc ./... --covermode=atomic --ignore test,immuclient,immuadmin,helper,fs,cmdtest,sservice,version,tools,webconsole,protomodel,schema,swagger --tags minio || true
          cat coverage.txt | grep -v "test" | grep -v "schema" | grep -v "protomodel" | grep -v "swagger" | grep -v "webserver.go" | grep -v "immuclient" | grep -v "immuadmin" | grep -v "helper" | grep -v "fs" | grep -v "cmdtest" | grep -v "sservice" | grep -v "version" | grep -v "tools" | grep -v "webconsole" > coverage.out
          ./ext-tools/goveralls -coverprofile=coverage.out -service=gh-ci

          # Stop minio
          docker rm -f minio
        env:
          COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  sonarsource:
    name: Coverage
    runs-on: ubuntu-latest
    if: github.event.pull_request.head.repo.full_name == github.repository
    steps:
      - uses: actions/checkout@v4
      - name: Analyze with SonarCloud
        uses: SonarSource/sonarqube-scan-action@v7
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

  performance-test-suite-detect-runners:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.detect-runners.outputs.matrix }}
    env:
      PERF_TEST_RUNS_ON: ${{ secrets.PERF_TEST_RUNS_ON }}
      PERF_TEST_RUNS_ON_DEFAULT: |
        {
          "targets": [
            {
              "name": "github-ubuntu-latest",
              "runs-on": "ubuntu-latest"
            }
          ]
        }
    steps:
      - id: detect-runners
        run: |
          RES="$(echo "${PERF_TEST_RUNS_ON:-${PERF_TEST_RUNS_ON_DEFAULT}}" | jq -c '.targets')"
          echo "Detected targets:"
          echo "$RES" | jq .
          echo "matrix=${RES}" >> $GITHUB_OUTPUT

  performance-test-suite:
    needs: performance-test-suite-detect-runners
    strategy:
      matrix:
        target: ${{ fromJson(needs.performance-test-suite-detect-runners.outputs.matrix) }}
    name: Performance Test Suite (${{ matrix.target.name }})
    runs-on: ${{ matrix.target.runs-on }}
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: "1.24"
      - uses: actions/checkout@v4
      - run: go build -o perf-test-suite ./test/performance-test-suite/cmd/perf-test/
      - run: ./perf-test-suite > perf-test-results.json
      - name: Upload test results
        uses: actions/upload-artifact@v4
        with:
          name: Performance Test Results (${{ matrix.target.name }})
          path: perf-test-results.json


================================================
FILE: .github/workflows/push-dev.yml
================================================
name: build-push-dev

env:
  GO_VERSION: "1.24"
  MIN_SUPPORTED_GO_VERSION: "1.24"

on:
  push:
    branches:
      - feat/objects

jobs:
  build:
    name: build and push
    runs-on: ubuntu-latest
    steps:
    - uses: actions/setup-go@v6
      with:
       go-version: ${{ env.GO_VERSION }}
    - uses: actions/checkout@v4
    - run: |
        GITTAG=$(git rev-parse HEAD | head -c 8)
        docker build -t ${{ vars.DOCKER_HUB_USER }}/immudb-dev1:$GITTAG .
        docker image tag ${{ vars.DOCKER_HUB_USER }}/immudb-dev1:$GITTAG ${{ vars.DOCKER_HUB_USER }}/immudb-dev1:latest
        docker login -u "${{ secrets.REGISTRY_USER }}" -p "${{ secrets.REGISTRY_PASS }}"
        docker image push ${{ vars.DOCKER_HUB_USER }}/immudb-dev1:$GITTAG
        docker image push ${{ vars.DOCKER_HUB_USER }}/immudb-dev1:latest


================================================
FILE: .github/workflows/push.yml
================================================
name: pushCI

env:
  GO_VERSION: "1.24"
  MIN_SUPPORTED_GO_VERSION: "1.24"

on:
  push:
    branches:
      - master
      - release/v*
    tags:
      - 'v*'

jobs:

  old-go:
    name: Ensure immudb compiles with the oldest supported go version
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: ${{ env.MIN_SUPPORTED_GO_VERSION }}
      - uses: actions/checkout@v4
      - run: make all

  gosec:
    runs-on: ubuntu-latest
    env:
      JOB_NAME: ${{ github.job }}
      JOB_ID: ${{ github.run_id }}
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: ${{ env.GO_VERSION }}
      - uses: actions/checkout@v4
      - name: Run Gosec Security Scanner
        uses: securego/gosec@v2.17.0
        with:
          args: -fmt=json -out=results-$JOB_ID.json -no-fail ./...

  binaries:
      name: Build binaries and notarize sources
      needs:
        - gosec
        - old-go
      runs-on: ubuntu-latest
      env:
        JOB_NAME: ${{ github.job }}
        JOB_ID: ${{ github.run_id }}
      outputs:
        matrix: ${{ steps.list-binaries.outputs.matrix }}
      steps:
        - uses: actions/setup-go@v6
          with:
            go-version: ${{ env.GO_VERSION }}
        - uses: actions/checkout@v4
        - name: Build binaries
          run: WEBCONSOLE=default SWAGGER=true make dist
        - id: list-binaries
          run: |
            echo "matrix=$(ls dist | jq -R -s -c 'split("\n")[:-1] | {binary: .}')" >> $GITHUB_OUTPUT
        - name: Upload binary artifacts
          uses: actions/upload-artifact@v4
          with:
            name: immudb-binaries
            path: dist
            retention-days: 5
        - name: Calculate checksums
          run: make dist/binary.md

  binaries-quick-test:
    name: Quick test of compiled binaries
    needs: binaries
    strategy:
      matrix:
        include:
          - os: windows-latest
            selector: '*-windows-amd64.exe'
          - os: ubuntu-latest
            selector: '*-linux-amd64'
          - os: ubuntu-latest
            selector: '*-linux-amd64-static'
          - os: ubuntu-latest
            selector: '*-linux-amd64-fips'
          - os: macos-latest
            selector: '*-darwin-amd64'
          - os: ubuntu-latest
            selector: '*-linux-arm64'
            qemu-binfmt: true
          - os: ubuntu-latest
            selector: '*-linux-s390x'
            qemu-binfmt: true
    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/download-artifact@v4
      with:
        name: immudb-binaries
        path: dist

    - name: List matching binaries
      shell: bash
      run: ls -all dist/${{ matrix.selector }}

    - name: Make binaries executable
      run: chmod +x dist/${{ matrix.selector }}
      shell: bash
      if: runner.os != 'Windows'

    - name: Install qemu binaries
      uses: docker/setup-qemu-action@v2
      if: matrix.qemu-binfmt

    - name: Run immudb in the background
      shell: bash
      run: |
        IMMUDB=dist/immudb-${{ matrix.selector }}
        $IMMUDB -d

    - name: immuadmin test
      shell: bash
      run: |
        IMMUADMIN=dist/immuadmin-${{ matrix.selector }}

        echo -n "immudb" | $IMMUADMIN login immudb || true
        $IMMUADMIN database create test
        $IMMUADMIN database list
        $IMMUADMIN database unload test
        $IMMUADMIN database load test

    - name: immuclient test
      shell: bash
      continue-on-error: ${{ matrix.continue-on-error || false }}
      run: |
        IMMUCLIENT=dist/immuclient-${{ matrix.selector }}

        $IMMUCLIENT login --username immudb --password immudb
        echo -n "immudb" | $IMMUCLIENT login --username immudb
        $IMMUCLIENT use test
        $IMMUCLIENT safeset test3 githubaction
        sg=$($IMMUCLIENT safeget test3)
        grep -q "githubaction" <<< $sg
        grep -q "verified" <<< $sg
        grep -q "true" <<< $sg

  stress-tests:
    name: Run KV stress tests
    needs: binaries
    runs-on: ubuntu-latest
    steps:
    - name: Download binary artifacts
      uses: actions/download-artifact@v4
      with:
        name: immudb-binaries
        path: dist
    - name: Make binaries executable
      run: chmod +x dist/*linux-amd64
    - name: Run immudb in the background
      run: dist/immudb-*-linux-amd64 -d
    - uses: actions/setup-go@v6
      with:
        go-version: ${{ env.GO_VERSION }}
    - uses: actions/checkout@v4
    - name: Run KV stress test
      run: |
        go run ./tools/testing/stress_tool_test_kv/ \
          -mix-read-writes \
          -randomize-key-length \
          -total-entries-written 300000 \
          -total-entries-read 10000

# This job is needed because currently it's not possible to pass an environment variable
# to the called workflow on job performance-tests.
# Reference: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
  go-version:
    name: Extract Go version
    runs-on: ubuntu-latest
    outputs:
      go-version: ${{ steps.extraction.outputs.go_version }}
    steps:
      - id: extraction
        run: echo "go_version=$GO_VERSION" >> $GITHUB_OUTPUT

  performance-tests:
    name: Performance tests
    needs:
      - gosec
      - old-go
      - go-version
    uses: ./.github/workflows/performance.yml
    secrets: inherit
    with:
      go-version: "1.24"

  notarize-binaries:
      name: Notarize binaries
      needs:
        - binaries
        - binaries-quick-test
        - stress-tests
      runs-on: ubuntu-latest
      strategy:
        matrix: ${{fromJson(needs.binaries.outputs.matrix)}}
      env:
        JOB_NAME: ${{ github.job }}
        JOB_ID: ${{ github.run_id }}
      steps:
        - name: Download binary artifacts
          uses: actions/download-artifact@v4
          with:
            name: immudb-binaries
            path: dist

  images:
      name: Build and notarize Docker Images
      needs:
        - binaries
        - binaries-quick-test
        - stress-tests
      runs-on: ubuntu-latest
      env:
        JOB_NAME: ${{ github.job }}
        JOB_ID: ${{ github.run_id }}
        DOCKER_IMAGE_IMMUDB: "${{ vars.DOCKER_HUB_USER }}/immudb"
        DOCKER_IMAGE_IMMUDB_FIPS: "${{ vars.DOCKER_HUB_USER }}/immudb-fips"
        DOCKER_IMAGE_IMMUADMIN: "${{ vars.DOCKER_HUB_USER }}/immuadmin"
        DOCKER_IMAGE_IMMUADMIN_FIPS: "${{ vars.DOCKER_HUB_USER }}/immuadmin-fips"
        DOCKER_IMAGE_IMMUCLIENT: "${{ vars.DOCKER_HUB_USER }}/immuclient"
        DOCKER_IMAGE_IMMUCLIENT_FIPS: "${{ vars.DOCKER_HUB_USER }}/immuclient-fips"
        DOCKER_BUILDKIT: "1"
        DEBIAN_VERSION: bullseye-slim
        ALMA_VERSION: almalinux-8-minimal
      steps:
        - uses: actions/checkout@v4
        - name: Build docker images
          shell: bash
          run: |
            if [[ "${GITHUB_REF}" =~ ^refs/tags/v([0-9]+)\.([A-Z0-9]+)\.([0-9]+)$ ]]; then
              VERSION_TAG="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
              VERSION_TAG_SHORT="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
            fi

            docker build --tag "${DOCKER_IMAGE_IMMUDB}:dev" --target scratch -f build/Dockerfile .
            docker build --tag "${DOCKER_IMAGE_IMMUDB}:dev-${DEBIAN_VERSION}" --target ${DEBIAN_VERSION} -f build/Dockerfile .
            docker build --tag "${DOCKER_IMAGE_IMMUDB}:dev-${ALMA_VERSION}" -f build/Dockerfile.alma .
            docker build --tag "${DOCKER_IMAGE_IMMUADMIN}:dev" -f build/Dockerfile.immuadmin .
            docker build --tag "${DOCKER_IMAGE_IMMUCLIENT}:dev" -f build/Dockerfile.immuclient .
            docker build --tag "${DOCKER_IMAGE_IMMUDB_FIPS}:dev" -f build/fips/Dockerfile .
            docker build --tag "${DOCKER_IMAGE_IMMUADMIN_FIPS}:dev" -f build/fips/Dockerfile.immuadmin .
            docker build --tag "${DOCKER_IMAGE_IMMUCLIENT_FIPS}:dev" -f build/fips/Dockerfile.immuclient .

            docker login -u "${{ secrets.REGISTRY_USER }}" -p "${{ secrets.REGISTRY_PASS }}"

            docker push "${DOCKER_IMAGE_IMMUDB}:dev"
            docker push "${DOCKER_IMAGE_IMMUDB}:dev-${DEBIAN_VERSION}"
            docker push "${DOCKER_IMAGE_IMMUDB}:dev-${ALMA_VERSION}"
            docker push "${DOCKER_IMAGE_IMMUADMIN}:dev"
            docker push "${DOCKER_IMAGE_IMMUCLIENT}:dev"
            docker push "${DOCKER_IMAGE_IMMUDB_FIPS}:dev"
            docker push "${DOCKER_IMAGE_IMMUADMIN_FIPS}:dev"
            docker push "${DOCKER_IMAGE_IMMUCLIENT_FIPS}:dev"

            if [[ ! -z "$VERSION_TAG" ]]; then
              for tag in "${VERSION_TAG}" "${VERSION_TAG_SHORT}" "latest"; do
                docker tag "${DOCKER_IMAGE_IMMUDB}:dev" "${DOCKER_IMAGE_IMMUDB}:${tag}"
                docker push "${DOCKER_IMAGE_IMMUDB}:${tag}"

                docker tag "${DOCKER_IMAGE_IMMUDB}:dev-${DEBIAN_VERSION}" "${DOCKER_IMAGE_IMMUDB}:${tag}-${DEBIAN_VERSION}"
                docker push "${DOCKER_IMAGE_IMMUDB}:${tag}-${DEBIAN_VERSION}"

                docker tag "${DOCKER_IMAGE_IMMUDB}:dev-${ALMA_VERSION}" "${DOCKER_IMAGE_IMMUDB}:${tag}-${ALMA_VERSION}"
                docker push "${DOCKER_IMAGE_IMMUDB}:${tag}-${ALMA_VERSION}"

                docker tag "${DOCKER_IMAGE_IMMUADMIN}:dev" "${DOCKER_IMAGE_IMMUADMIN}:${tag}"
                docker push "${DOCKER_IMAGE_IMMUADMIN}:${tag}"

                docker tag "${DOCKER_IMAGE_IMMUCLIENT}:dev" "${DOCKER_IMAGE_IMMUCLIENT}:${tag}"
                docker push "${DOCKER_IMAGE_IMMUCLIENT}:${tag}"

                docker tag "${DOCKER_IMAGE_IMMUDB_FIPS}:dev" "${DOCKER_IMAGE_IMMUDB_FIPS}:${tag}"
                docker push "${DOCKER_IMAGE_IMMUDB_FIPS}:${tag}"

                docker tag "${DOCKER_IMAGE_IMMUADMIN_FIPS}:dev" "${DOCKER_IMAGE_IMMUADMIN_FIPS}:${tag}"
                docker push "${DOCKER_IMAGE_IMMUADMIN_FIPS}:${tag}"

                docker tag "${DOCKER_IMAGE_IMMUCLIENT_FIPS}:dev" "${DOCKER_IMAGE_IMMUCLIENT_FIPS}:${tag}"
                docker push "${DOCKER_IMAGE_IMMUCLIENT_FIPS}:${tag}"

              done
            fi

            docker logout


  coveralls:
    name: Publish coverage
    needs:
      - gosec
      - old-go
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v6
        with:
          go-version: ${{ env.GO_VERSION }}
      - uses: actions/checkout@v4
      - run: |
          # Spawn minio docker container in the background
          docker run -d -t -p 9000:9000 --name minio \
            -e "MINIO_ACCESS_KEY=minioadmin" \
            -e "MINIO_SECRET_KEY=minioadmin" \
            minio/minio server /data

          # Create immudb bucket
          docker run --net=host -t --entrypoint /bin/sh minio/mc -c "
            mc alias set local http://localhost:9000 minioadmin minioadmin &&
            mc mb local/immudb
          "

          export PATH=$PATH:$(go env GOPATH)/bin
          set -o pipefail
          ./ext-tools/go-acc ./... --covermode=atomic --ignore test,immuclient,immuadmin,helper,fs,cmdtest,sservice,version,tools,webconsole,protomodel,schema,swagger  --tags minio || true
          cat coverage.txt | grep -v "test" | grep -v "schema" | grep -v "protomodel" | grep -v "swagger" | grep -v "webserver.go" | grep -v "immuclient" | grep -v "immuadmin" | grep -v "helper" | grep -v "fs" | grep -v "cmdtest" | grep -v "sservice" | grep -v "version" | grep -v "tools" | grep -v "webconsole" > coverage.out
          ./ext-tools/goveralls -coverprofile=coverage.out -service=gh-ci

          # Stop minio
          docker rm -f minio
        env:
          COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Analyze with SonarCloud
        uses: sonarsource/sonarcloud-github-action@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}


================================================
FILE: .github/workflows/stress.yml
================================================
name: immudb Stress
on:
  pull_request:
    branches:
    - '**'
  schedule:
    - cron: '0 0 * * *'

jobs:
  stress-build:
    runs-on: ubuntu-latest
    steps:
    - name: Setup runner for Go
      uses: actions/setup-go@v6
      with:
        go-version: "1.24"
    - uses: actions/checkout@v4
    - name: Build stress tool
      run: |
        go build embedded/tools/stress_tool/stress_tool.go
    - name: "| Entries: 1M | Workers: 20  | Batch: 1k | Batches: 50 |"
      id: e_1m_w_20_b_1k_bs_50
      run: |
        rm -rf data
        SECONDS=0
        ./stress_tool -mode auto -committers 20 -kvCount 1000 -txCount 50 -txRead -synced
        echo "duration_1=$SECONDS" >> $GITHUB_ENV
    - name: "| Entries: 1M | Workers: 50  | Batch: 1k | Batches: 20 |"
      id: e_1m_w_50_b_1k_bs_20
      run: |
        rm -rf data
        SECONDS=0
        ./stress_tool -mode auto -committers 50 -kvCount 1000 -txCount 20 -txRead -synced
        echo "duration_2=$SECONDS" >> $GITHUB_ENV
    - name: "| Entries: 1M | Workers: 100 | Batch: 1k | Batches: 10 |"
      id: e_1m_w_100_b_1k_bs_10
      run: |
        rm -rf data
        SECONDS=0
        ./stress_tool -mode auto -committers 100 -kvCount 1000 -txCount 10 -txRead -synced
        echo "duration_3=$SECONDS" >> $GITHUB_ENV
    - name: Create the Mattermost message
      if: github.event.schedule == '0 0 * * *'
      run: >
        echo "{\"text\":\"### Stress tests results for scheduled daily run on ${{ github.ref_name }} branch\n
        | Step | Result | Duration |\n
        | ---- | ------ | -------- |\n
        | Entries: 1M - Workers: 20 - Batch: 1k - Batches: 50 | ${{ steps.e_1m_w_20_b_1k_bs_50.outcome }} | ${{ env.duration_1 }}s |\n
        | Entries: 1M - Workers: 50 - Batch: 1k - Batches: 20 | ${{ steps.e_1m_w_50_b_1k_bs_20.outcome }} | ${{ env.duration_2 }}s |\n
        | Entries: 1M - Workers: 100 - Batch: 1k - Batches: 10 | ${{ steps.e_1m_w_100_b_1k_bs_10.outcome }} | ${{ env.duration_3 }}s |\n
        **Check details [here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})**
        \"}" > mattermost.json && echo MM_PAYLOAD=$(cat mattermost.json) >> $GITHUB_ENV
    - name: Notify on immudb channel on Mattermost
      if: github.event.schedule == '0 0 * * *'
      uses: mattermost/action-mattermost-notify@master
      with:
        MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
        MATTERMOST_CHANNEL: 'immudb-tests'
        PAYLOAD: ${{ env.MM_PAYLOAD }}


================================================
FILE: .gitignore
================================================
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, build with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out
coverage.txt

# Output of goyacc
embedded/sql/y.output

# Editor
.vscode
.idea
*.iml
*.swp

# Environment
.env

# macOS
.DS_Store

# Binaries
/immuclient
/immuadmin
/immutest
/immudb
/nimmu
/bm
/immutc

/dist

# Working files
.root*
immudb.pid
/data

# Vendor
vendor

# immudb auth
immudb_pwd
token
token_admin

swagger/dist
swagger/swaggerembedded
webconsole/webconsoleembedded


================================================
FILE: .golangci.yml
================================================
# This file contains all available configuration options
# with their default values.

# options for analysis running
run:
  # default concurrency is a available CPU number
  concurrency: 4

  # timeout for analysis, e.g. 30s, 5m, default is 1m
  deadline: 1m

  # exit code when at least one issue was found, default is 1
  issues-exit-code: 1

  # include test files or not, default is true
  tests: false

  skip-dirs:
    - pkg/api
# output configuration options
output:
  # colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number"
  format: colored-line-number

  # print lines of code with issue, default is true
  print-issued-lines: true

  # print linter name in the end of issue text, default is true
  print-linter-name: true


# all available settings of specific linters
linters-settings:
  errcheck:
    # report about not checking of errors in type assetions: `a := b.(MyStruct)`;
    # default is false: such cases aren't reported by default.
    check-type-assertions: false

    # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
    # default is false: such cases aren't reported by default.
    check-blank: false

    # [deprecated] comma-separated list of pairs of the form pkg:regex
    # the regex is used to ignore names within pkg. (default "fmt:.*").
    # see https://github.com/kisielk/errcheck#the-deprecated-method for details
    ignore: fmt:.*,io/ioutil:^Read.*

    # path to a file containing a list of functions to exclude from checking
    # see https://github.com/kisielk/errcheck#excluding-functions for details
    #exclude: /path/to/file.txt
  govet:
    # report about shadowed variables
    check-shadowing: true
  golint:
    # minimal confidence for issues, default is 0.8
    min-confidence: 0.8
  gofmt:
    # simplify code: gofmt with `-s` option, true by default
    simplify: true
  goimports:
    # put imports beginning with prefix after 3rd-party packages;
    # it's a comma-separated list of prefixes
    local-prefixes: github.com/org/project
  gocyclo:
    # minimal code complexity to report, 30 by default (but we recommend 10-20)
    min-complexity: 15
  maligned:
    # print struct with more effective memory layout or not, false by default
    suggest-new: true
  dupl:
    # tokens count to trigger issue, 150 by default
    threshold: 100
  goconst:
    # minimal length of string constant, 3 by default
    min-len: 3
    # minimal occurrences count to trigger, 3 by default
    min-occurrences: 3
  depguard:
    list-type: blacklist
    include-go-root: false
    packages:
    - github.com/davecgh/go-spew/spew
  misspell:
    # Correct spellings using locale preferences for US or UK.
    # Default is to use a neutral variety of English.
    # Setting locale to US will correct the British spelling of 'colour' to 'color'.
    locale: US
  lll:
    # max line length, lines longer will be reported. Default is 120.
    # '\t' is counted as 1 character by default, and can be changed with the tab-width option
    line-length: 120
    # tab width in spaces. Default to 1.
    tab-width: 1
  unused:
    # treat code as a program (not a library) and report unused exported identifiers; default is false.
    # XXX: if you enable this setting, unused will report a lot of false-positives in text editors:
    # if it's called for subdir of a project it can't find funcs usages. All text editor integrations
    # with golangci-lint call it on a directory with the changed file.
    check-exported: false
  unparam:
    # call graph construction algorithm (cha, rta). In general, use cha for libraries,
    # and rta for programs with main packages. Default is cha.
    algo: cha

    # Inspect exported functions, default is false. Set to true if no external program/library imports your code.
    # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
    # if it's called for subdir of a project it can't find external interfaces. All text editor integrations
    # with golangci-lint call it on a directory with the changed file.
    check-exported: false
  nakedret:
    # make an issue if func has more lines of code than this setting and it has naked returns; default is 30
    max-func-lines: 30
  prealloc:
    # XXX: we don't recommend using this linter before doing performance profiling.
    # For most programs usage of prealloc will be a premature optimization.

    # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them.
    # True by default.
    simple: true
    range-loops: true # Report preallocation suggestions on range loops, true by default
    for-loops: false # Report preallocation suggestions on for loops, false by default

linters:
  enable:
    - govet # Used in main precommit. Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string [fast: true]
    - errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases [fast: true]
    - staticcheck  #Staticcheck is a go vet on steroids, applying a ton of static analysis checks [fast: false]
    - unused # Checks Go code for unused constants, variables, functions and types [fast: false]
    - gosimple # Linter for Go source code that specializes in simplifying a code [fast: false]
    - structcheck # Finds an unused struct fields [fast: true]
    - varcheck # Finds unused global variables and constants [fast: true]
    - ineffassign # Detects when assignments to existing variables are not used [fast: true]
    - deadcode # Finds unused code [fast: true]
    #- typecheck # Like the front-end of a Go compiler, parses and type-checks Go code [fast: true]
    #- goimports #  Goimports does everything that gofmt does. Additionally it checks unused imports [fast: true]
    #- golint # Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes [fast: true]
    #- gosec (gas) #  Inspects source code for security problems [fast: true]
    #- interfacer #  Linter that suggests narrower interface types [fast: false]
    - unconvert #  Remove unnecessary type conversions [fast: true]
    #- dupl #  Tool for code clone detection [fast: true]
    #- goconst #  Finds repeated strings that could be replaced by a constant [fast: true]
    - gocyclo #  Computes and checks the cyclomatic complexity of functions [fast: true]
    #- gofmt # Used in main precommit.  Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification [fast: true]
    #- maligned #  Tool to detect Go structs that would take less memory if their fields were sorted [fast: true]
    #- megacheck #  3 sub-linters in one: unused, gosimple and staticcheck [fast: false]
    #- depguard #  Go linter that checks if package imports are in a list of acceptable packages [fast: true]
    - misspell #  Finds commonly misspelled English words in comments [fast: true]
    #- lll #  Reports long lines [fast: true]
    #- unparam #  Reports unused function parameters [fast: false]
    #- nakedret #  Finds naked returns in functions greater than a specified function length [fast: true]
    #- prealloc #  Finds slice declarations that could potentially be preallocated [fast: true]
    #- scopelint #  Scopelint checks for unpinned variables in go programs [fast: true]
    #- gocritic #  The most opinionated Go source code linter [fast: true]
    #- gochecknoinits #  Checks that no init functions are present in Go code [fast: true]
    #- gochecknoglobals #  Checks that no globals are present in Go code [fast: true]
  fast: true


issues:
  # List of regexps of issue texts to exclude, empty list by default.
  # But independently from this option we use default exclude patterns,
  # it can be disabled by `exclude-use-default: false`. To list all
  # excluded by default patterns execute `golangci-lint run --help`
  exclude:
    - "not declared by package utf8"
    - "unicode/utf8/utf8.go"
    #- ".*defer.*"

  # Independently from option `exclude` we use default exclude patterns,
  # it can be disabled by this option. To list all
  # excluded by default patterns execute `golangci-lint run --help`.
  # Default value for this option is true.
  exclude-use-default: false

  # Maximum issues count per one linter. Set to 0 to disable. Default is 50.
  max-per-linter: 0

  # Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
  max-same-issues: 0

  # Show only new issues: if there are unstaged changes or untracked files,
  # only those changes are analyzed, else only changes in HEAD~ are analyzed.
  # It's a super-useful option for integration of golangci-lint into existing
  # large codebase. It's not practical to fix all existing issues at the moment
  # of integration: much better don't allow issues in new code.
  # Default is false.
  new: false

  # Show only new issues created after git revision `REV`
  #new-from-rev: REV

  # Show only new issues created in git patch with set file path.
  #new-from-patch: path/to/patch/file


================================================
FILE: .pre-commit-config.yaml
================================================

repos:
- repo: git://github.com/pre-commit/pre-commit-hooks
  rev: v2.1.0
  hooks:
  - id: check-merge-conflict
  - id: check-yaml
  - id: end-of-file-fixer
  - id: trailing-whitespace
- repo: git://github.com/dnephin/pre-commit-golang
  rev: v0.3.3
  hooks:
  - id: go-fmt
  - id: validate-toml
  - id: no-go-testing


================================================
FILE: ACKNOWLEDGEMENTS.md
================================================
# software

immudb copyright info:
 Copyright 2022 Codenotary Inc. All rights reserved.
 Released under [Apache 2.0 License](https://raw.githubusercontent.com/codenotary/immudb/master/LICENSE).

Readme has been inspired by the amazing Netdata community project.
[Netdata](https://github.com/netdata/netdata)


immudb uses the following amazing open source projects. Copyright by their respective copyright holders and Codenotary Inc.

| Project                                                      | License                                                      |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| [cobra](https://github.com/spf13/cobra)                      | [Apache License 2.0](https://github.com/spf13/cobra/blob/master/LICENSE.txt) |
| [go-homedir](https://github.com/mitchellh/go-homedir)        | [MIT](https://github.com/mitchellh/go-homedir/blob/master/LICENSE) |
| [viper](https://github.com/spf13/viper)                      | [MIT](https://github.com/spf13/viper/blob/master/LICENSE)    |
| [xid](https://github.com/rs/xid)                             | [MIT](https://github.com/rs/xid/blob/master/LICENSE)         |
| [Prometheus Go client library](https://github.com/prometheus/client_golang) | [Apache License 2.0](https://github.com/prometheus/client_golang/blob/master/LICENSE) |
| [Go gRPC Middleware](https://github.com/grpc-ecosystem/go-grpc-middleware) | [Apache License 2.0](https://github.com/grpc-ecosystem/go-grpc-middleware/blob/master/LICENSE) |
| [go-toml](https://github.com/pelletier/go-toml)              | [MIT](https://github.com/pelletier/go-toml/blob/master/LICENSE) |
| [File system notifications for Go](https://github.com/fsnotify/fsnotify) | [BSD 3-Clause "New" or "Revised" License](https://github.com/fsnotify/fsnotify/blob/master/LICENSE) |
| [jWalterWeatherman](https://github.com/spf13/jwalterweatherman) | [MIT](https://github.com/spf13/jwalterweatherman/blob/master/LICENSE) |
| [HCL](https://github.com/hashicorp/hcl)                      | [Mozilla Public License 2.0](https://github.com/hashicorp/hcl/blob/master/LICENSE) |
| [mapstructure](https://github.com/mitchellh/mapstructure)    | [MIT](https://github.com/mitchellh/mapstructure/blob/master/LICENSE) |
| [grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway) | [BSD 3-Clause "New" or "Revised" License](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt) |
| [cast](https://github.com/spf13/cast)                        | [MIT](https://github.com/spf13/cast/blob/master/LICENSE)     |
| [go-md2man](https://github.com/cpuguy83/go-md2man)           | [MIT](https://github.com/cpuguy83/go-md2man/blob/master/LICENSE.md) |
| [xxhash](https://github.com/cespare/xxhash)                  | [MIT](https://github.com/cespare/xxhash/blob/master/LICENSE.txt) |
| [Data model artifacts for Prometheus](https://github.com/prometheus/client_model) | [Apache License 2.0](https://github.com/prometheus/client_model/blob/master/LICENSE) |
| [pflag](https://github.com/spf13/pflag)                      | [BSD 3-Clause "New" or "Revised" License](https://github.com/spf13/pflag/blob/master/LICENSE) |
| [Go support for Protocol Buffers](https://github.com/protocolbuffers/protobuf-go) | [License](https://github.com/protocolbuffers/protobuf-go/blob/master/LICENSE) |
| [Ristretto](https://github.com/dgraph-io/ristretto)          | [Apache License 2.0](https://github.com/dgraph-io/ristretto/blob/master/LICENSE) |
| [AFERO](https://github.com/spf13/afero)                      | [Apache License 2.0](https://github.com/spf13/afero/blob/master/LICENSE.txt) |
| [Blackfriday](https://github.com/russross/blackfriday)       | [Simplified BSD License](https://github.com/russross/blackfriday/blob/master/LICENSE.txt) |
| [Humane Units](https://github.com/dustin/go-humanize)        | [License](https://github.com/dustin/go-humanize/blob/master/LICENSE) |
| [sanitized anchor name](https://github.com/shurcooL/sanitized_anchor_name) | [MIT](https://github.com/shurcooL/sanitized_anchor_name/blob/master/LICENSE) |
| [go-farm](https://github.com/dgryski/go-farm)                | [MIT](https://github.com/dgryski/go-farm/blob/master/LICENSE) |
| [PASETO](https://github.com/o1egl/paseto)                    | [MIT](https://github.com/o1egl/paseto/blob/master/LICENSE)   |
| [ChaCha20](https://github.com/aead/chacha20)                 | [MIT](https://github.com/aead/chacha20/blob/master/LICENSE)  |
| [Perks](https://github.com/beorn7/perks)                     | [MIT](https://github.com/beorn7/perks/blob/master/LICENSE)   |
| [Zstd Go Wrapper](https://github.com/DataDog/zstd)           | [Simplified BSD License](https://github.com/DataDog/zstd/blob/1.x/LICENSE) |
| [gotenv](https://github.com/subosito/gotenv)                 | [MIT](https://github.com/subosito/gotenv/blob/master/LICENSE) |
| [poly1305](https://github.com/aead/poly1305)                 | [MIT](https://github.com/aead/poly1305/blob/master/LICENSE)  |
| [Go CORS handler](https://github.com/rs/cors)                | [MIT](https://github.com/rs/cors/blob/master/LICENSE)        |


================================================
FILE: BUILD.md
================================================
# Build the binaries yourself

To build the binaries yourself, simply clone this repo and run

```
make all
```

To embed the webconsole, build with

```
rm -rf webconsole/dist  # force download of the correct webconsole version
make WEBCONSOLE=default
```

This will download the appropriate webconsole release and add the Go build tag `webconsole`
which will use the go:embed to embed the front-end code.
The front-end will be then served in the web API root "/".

To regenerate the default page, change the files in webconsole/default and run `make webconsole/default`

## Linux (by component)

```bash
GOOS=linux GOARCH=amd64 make immuclient-static immuadmin-static immudb-static
```

## MacOS (by component)
For Apple Silicon (M1) use `GOARCH=arm64` instead of `GOARCH=amd64`

```bash
GOOS=darwin GOARCH=amd64 make immuclient-static immuadmin-static immudb-static
```

## Windows (by component)

```bash
GOOS=windows GOARCH=amd64 make immuclient-static immuadmin-static immudb-static
```

## Freebsd (by component)

```bash
GOOS=freebsd GOARCH=amd64 make immuclient-static immuadmin-static immudb-static
```
# Build the Docker images yourself

If you want to build the container images yourself, simply clone this repo and run

```
docker build -t myown/immudb:latest -f Dockerfile .
docker build -t myown/immuadmin:latest -f Dockerfile.immuadmin .
docker build -t myown/immuclient:latest -f Dockerfile.immuclient .
```
And then run immudb as described when pulling official immudb Docker image.


================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
<a name="unreleased"></a>
## [Unreleased]


<a name="v1.10.0"></a>
## [v1.10.0] - 2025-10-18
### Bug Fixes
- display actual config file path in startup logs

### Changes
- **embedded/sql:** add COALESCE function
- **embedded/sql:** Implement EXTRACT FROM TIMESTAMP expressions
- **embedded/sql:** Implement BETWEEN AND expressions

### Features
- **helm:** Add comprehensive configuration support for ImmuDB


<a name="v1.9.7"></a>
## [v1.9.7] - 2025-05-30
### Bug Fixes
- **embedded/tbtree:** save timestamp to a separate file to avoid rescanning empty indexes


<a name="v2.0.0-RC1"></a>
## [v2.0.0-RC1] - 2025-05-20
### Changes
- v2 version


<a name="v1.9.6"></a>
## [v1.9.6] - 2025-03-31
### Bug Fixes
- **embedded/sql:** correctly handle logical operator precedence (NOT, AND, OR)

### Changes
- **embedded/sql:** Support PRIMARY KEY constraint on individual columns
- **embedded/sql:** Add support for core pg_catalog tables (pg_class, pg_namespace, pg_roles)
- **embedded/sql:** add support for LEFT JOIN
- **embedded/sql:** add support for SELECT FROM VALUES syntax
- **embedded/sql:** Allow expressions in ORDER BY clauses
- **embedded/sql:** Add support for simple CASE statements
- **embedded/sql:** Implement CASE statement
- **pkg/replication:** add replication lag metric


<a name="v1.9.5"></a>
## [v1.9.5] - 2024-09-16
### Bug Fixes
- time.Since should not be used in defer statement
- **pkg/dabase:** return error when attempting to access deleted database
- **pkg/pgsql/server:** close row readers to release resources
- **pkg/server:** run metrics server under HTTPS

### Changes
- **embedded/logging:** improve file base logging.
- **embedded/sql:** improvements on SQL layer.
- **embedded/store:** improve index flush logic
- **pkg/database:** implement database manager
- **pkg/server:** implement automatic generation of self-signed HTTPS certificate


<a name="v1.9.4"></a>
## [v1.9.4] - 2024-07-25
### Bug Fixes
- set mattermost payload


<a name="v1.9.3"></a>
## [v1.9.3] - 2024-05-23
### Changes
- fix some comments
- refactor image building
- The GitHub workflow push.yml was updated to use the repository owner's Docker images instead of fixed ones. This change allows for more flexibility and control when using Docker images, and ensures that the correct images are used based on the repository owner.
- Update GitHub Actions to use checkout[@v4](https://github.com/v4)
- Add support to ARM64
- **embedded/cache:** replace sync.Mutex with sync.RWMutex
- **embedded/cache:** validate input params before obtaining mutex lock

### Reverts
- test with github token
- chore(embedded/cache): replace sync.Mutex with sync.RWMutex


<a name="v1.9DOM.2"></a>
## [v1.9DOM.2] - 2023-12-29
### Bug Fixes
- apply fix for CVE-2023-44487
- performance test regression

### Changes
- **deps:** bump actions/setup-go from 3 to 5
- **deps:** bump actions/upload-artifact from 3 to 4
- **deps:** bump actions/download-artifact from 3 to 4
- **deps:** bump google.golang.org/grpc in /test/e2e/truncation
- **deps:** bump google.golang.org/protobuf from 1.31.0 to 1.32.0


<a name="v1.9DOM.2-RC1"></a>
## [v1.9DOM.2-RC1] - 2023-12-21
### Bug Fixes
- performance test regression
- remove influxdb dependencies
- correct the test after the merge and latest refactor
- source /etc/sysconfig/immudb on AWS EC2 startup

### Changes
- add influxdb (needed for performance test) dependency
- use goveralls token variable
- **deps:** bump golang.org/x/crypto in /test/columns
- **deps:** bump golang.org/x/crypto in /tools/mkdb
- **deps:** bump golang.org/x/crypto
- **deps:** bump golang.org/x/crypto in /test/e2e/truncation
- **deps:** bump golang.org/x/crypto
- **deps:** bump github.com/rogpeppe/go-internal from 1.9.0 to 1.12.0
- **deps:** bump golang.org/x/net from 0.17.0 to 0.19.0
- **deps:** bump golang.org/x/crypto from 0.14.0 to 0.17.0

### Features
- add s3 (aws) role based auth as an option
- automatically convert uuid strings and byte slices to uuid values

### Reverts
- Merge remote-tracking branch 'origin/dependabot/go_modules/github.com/rogpeppe/go-internal-1.12.0' into release/v1.9.2


<a name="v1.9DOM.1"></a>
## [v1.9DOM.1] - 2023-11-16
### Changes
- **pkg/pgsql:** handle odbc help
- **pkg/server:** change permission automatically revokes existing ones


<a name="v1.9DOM.1-RC1"></a>
## [v1.9DOM.1-RC1] - 2023-11-14
### Bug Fixes
- lower databasename in OpenSession
- **embedded/sql:** fix data-race when mapping keys
- **embedded/sql:** fix data-race when mapping keys
- **embedded/store:** handle key mapping in ongoing txs
- **embedded/store:** handle key mapping in ongoing txs
- **embedded/store:** handle key mapping in ongoing txs
- **pkg/database:** ensure proper tx validation
- **pkg/server:** user creation with multidbs

### Changes
- docker image with swagger ui (for AWS Marketplace)
- **cmd/immudb:** upgrade to new pgsql changes
- **deps:** bump github.com/google/uuid from 1.3.1 to 1.4.0
- **embedded/sql:** user pwd
- **embedded/sql:** show users stmt
- **embedded/sql:** wip emulate pg_type system table
- **embedded/sql:** continue to support databases and tables datasources
- **embedded/store:** indexer source and target prefixes
- **pkg/client:** possibility to retrieve session id
- **pkg/pgsql:** support multiple-statements in simple-query mode
- **pkg/pgsql:** tls support
- **pkg/pgsql:** comment describing pgsql wire protocol constraints
- **pkg/pgsql:** show table/s
- **pkg/pgsql:** proper handling of queries with empty resultsets
- **pkg/pgsql:** single command complete message
- **pkg/pgsql:** protocol enhancements
- **pkg/pgsql:** uuid and float types conversion
- **pkg/pgsql:** transactional query machine
- **pkg/pgsql:** pgsql write protocol improvements
- **pkg/pgsql:** decouple error from ready to query messages
- **pkg/pgsql:** handle deallocate prepared stmt
- **pkg/server:** pgsql server creation only when enabled
- **pkg/server:** set dynamic immudb server port in pgsql server
- **pkg/server:** upgrade to transactional pgsql server
- **pkg/server:** list users from multidb handler
- **pkg/server:** require proper permissions at multidb handler

### Features
- **embedded/sql:** show table stmt
- **embedded/sql:** wip user mgmt
- **embedded/sql:** show users stmt
- **embedded/sql:** show databases/tables stmt
- **pkg/server:** add support of underscore in db name Signed-off-by: Martin Jirku <martin[@jirku](https://github.com/jirku).sk>


<a name="v1.9DOM.0"></a>
## [v1.9DOM.0] - 2023-10-19
### Changes
- docker image with swagger ui
- docker image with swagger ui


<a name="v1.9DOM"></a>
## [v1.9DOM] - 2023-10-19
### Changes
- **cmd/immuadmin:** add indexing related flags

### Features
- **embedded/sql:** table renaming


<a name="v1.9.0-RC2"></a>
## [v1.9.0-RC2] - 2023-10-16
### Bug Fixes
- standard syntax for drop index
- **embedded/sql:** fix sql temporal range evaluation

### Changes
- **embedded/document:** count with limit in subquery
- **embedded/sql:** expose subquery creation
- **pkg/api:** set optional parameters
- **pkg/api:** set optional parameters


<a name="v1.9.0-RC1"></a>
## [v1.9.0-RC1] - 2023-10-11
### Bug Fixes
- insertion ts for key-values should not be equal to the current root ts
- correct immudb name in readme
- allow the local id to be used if present even if remote flag is on
- apply fixes discussed in PR
- **Makefile:** remove webconsole tag from immuclient/immuadmin builds
- **embedded/appendable:** explicit freebsd build clauses
- **embedded/document:** avoid waiting for tx to be committed
- **embedded/document:** ensure multi-indexing is enabled
- **embedded/sql:** advance position when decoding value at deleted column
- **embedded/store:** precommitted transaction discarding recedes durable state
- **embedded/store:** use correct index path
- **embedded/store:** handle transient key update
- **embedded/store:** read lock when fetching indexer
- **embedded/store:** read lock when pausing indexers
- **embedded/tbtree:** proper _rev calculation
- **embedded/tbtree:** snapshot validation
- **embedded/tbtree:** consider offset for history count calculation
- **pkg/server:** buffer reuse

### Changes
- use copy instead of a loop
- build with swaggerui
- unnecessary use of fmt.Sprintf
- align covered packages when pulling and merging
- unnecessary use of fmt.Sprintf
- **cmd/immuclient:** display raw column selector in table header
- **deps:** bump golang.org/x/net from 0.10.0 to 0.12.0
- **deps:** bump google.golang.org/grpc from 1.55.0 to 1.56.2
- **deps:** bump golang.org/x/crypto from 0.13.0 to 0.14.0
- **deps:** bump golang.org/x/net from 0.14.0 to 0.15.0
- **deps:** bump google.golang.org/grpc
- **deps:** bump google.golang.org/grpc in /test/e2e/truncation
- **deps:** bump google.golang.org/grpc
- **deps:** bump golang.org/x/crypto from 0.12.0 to 0.13.0
- **deps:** bump golang.org/x/crypto from 0.10.0 to 0.11.0
- **deps:** bump golang.org/x/sys from 0.9.0 to 0.10.0
- **deps:** bump golang.org/x/net from 0.15.0 to 0.17.0
- **deps:** bump golang.org/x/sys from 0.11.0 to 0.12.0
- **deps:** bump golang.org/x/net from 0.12.0 to 0.13.0
- **deps:** bump golang.org/x/sys from 0.10.0 to 0.11.0
- **deps:** bump golang.org/x/crypto from 0.7.0 to 0.10.0
- **deps:** bump golang.org/x/net from 0.13.0 to 0.14.0
- **deps:** bump securego/gosec from 2.15.0 to 2.17.0
- **deps:** bump github.com/grpc-ecosystem/grpc-gateway/v2
- **embedded/document:** encoded document using valRef
- **embedded/document:** register username when applying a change
- **embedded/document:** attach username when auditing document
- **embedded/document:** enable multi-indexing in doc engine tests
- **embedded/sql:** support parenthesis as datatype constraint delimiter
- **embedded/sql:** multi-snapshop mvvc
- **embedded/sql:** deletion of primary index path
- **embedded/sql:** historical queries over primary index
- **embedded/sql:** dynamic indexing
- **embedded/sql:** post-commit physical index deletion
- **embedded/sql:** improve internal index naming
- **embedded/sql:** uuid decoding
- **embedded/sql:** unique index creation supported on empty tables
- **embedded/sql:** temporal queries with multi-indexing
- **embedded/sql:** transactional drops
- **embedded/sql:** use declared constant for fixed ids
- **embedded/sql:** insertion benchmark
- **embedded/store:** injective index mapper
- **embedded/store:** history returning value refs
- **embedded/store:** history with rev count
- **embedded/store:** ensure index is erased from disk
- **embedded/store:** indexer alloc its tx
- **embedded/store:** remove metastate
- **embedded/store:** multi-indexing
- **embedded/store:** key reader including historical entries
- **embedded/store:** ensure snapshot up to date
- **embedded/store:** indexing callbacks
- **embedded/store:** wip multi-indexing
- **embedded/store:** indexing prefix
- **embedded/store:** entry mapper
- **embedded/tbtree:** value-preserving history
- **embedded/tbtree:** fetching historical values
- **embedded/tbtree:** wip value-preserving history
- **embedded/tbtree:** context propagation
- **embedded/tbtree:** value-preserving history
- **embedded/tbtree:** hcount serialization
- **pkg/api:** adjust doc serializations to match verification
- **pkg/api:** endpoint improvements
- **pkg/client:** add setAll to immuclient mock
- **pkg/client:** use buf for msg exchange
- **pkg/database:** increase delay when tx is not present
- **pkg/database:** fix remote storage paths
- **pkg/database:** mandatory wait with async replication
- **pkg/database:** kv count
- **pkg/database:** doc audit without retrieving payloads
- **pkg/database:** context propagation
- **pkg/database:** context propagation
- **pkg/database:** multi-indexing database
- **pkg/database:** fix remote storage paths
- **pkg/database:** register username when applying a change
- **pkg/database:** keept reading from specific tx
- **pkg/server:** register username when applying a change in doc apis
- **pkg/server:** minor code adjustment
- **pkg/stdlib:** non transactional ddl stmts
- **pkg/truncator:** use embedded/logger package
- **pkg/verification:** minor doc verification improvements
- **swagger:** use embedded logger package
- **tests:** Tests cleanup

### Code Refactoring
- **pkg/logger:** move logger from pkg to embedded

### Features
- add flag for using external id as a main one
- update readme
- prevent identifier from creation when use external id option
- pass logger to heartbeater
- **embedded/document:** register user when creating collection
- **embedded/document:** doc audit without retrieving payloads
- **embedded/document:** add field to collection
- **embedded/document:** remove field from collection
- **embedded/sql:** dynamic multi-indexing
- **embedded/sql:** wip uuid datatype support
- **embedded/sql:** include _rev column in historical queries
- **embedded/sql:** drop index and table stmts
- **embedded/sql:** table history
- **embedded/sql:** query including historical rows
- **embedded/sql:** extra metadata when creating tx
- **embedded/sql:** async multi-indexing
- **embedded/sql:** drop column stmt
- **embedded/store:** getBetween
- **embedded/store:** use index attribute in kv metadata
- **embedded/store:** extra tx metadata
- **embedded/store:** transactionaless multi-indexing
- **embedded/tbtree:** getBetween
- **embedded/tbtree:** key reader supporting historical values
- **pkg/api:** include username in document audit response
- **pkg/api:** re-enable swagger ui
- **pkg/api:** docAudit returning timestamp and possibility to omit payloads
- **pkg/api:** add field and remove field endpoints
- **pkg/database:** add user when creating collection
- **pkg/server:** add user when creating collection

### Reverts
- chore: remove initial swagger support


<a name="v1.5.0"></a>
## [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


<a name="v1.5.0-RC1"></a>
## [v1.5.0-RC1] - 2023-06-16
### Bug Fixes
- build/Dockerfile.rndpass to reduce vulnerabilities
- modify tests for new object db initialisation
- build/Dockerfile.immuclient to reduce vulnerabilities
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.full to reduce vulnerabilities
- table id generation
- build/Dockerfile.rndpass to reduce vulnerabilities
- build/Dockerfile.full to reduce vulnerabilities
- 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:** close readers before updating document
- **embedded/document:** proper column renaming
- **embedded/document:** assign correct revision number
- **embedded/document:** proper handling of deleted documents
- **embedded/document:** support nil docs
- **embedded/document:** id field conversion
- **embedded/document:** validate doc is properly initialized
- **embedded/document:** validate doc is properly initialized
- **embedded/sql:** parsing of exists stmt
- **embedded/sql:** multi-row conflict handling
- **embedded/sql:** like operator supporting null values
- **embedded/sql:** proper handling of parameters in row readers
- **embedded/sql:** do not force columns to have max key length when unspecified
- **embedded/sql:** implicit conversion within expressions
- **embedded/sql:** include explicit close into sqlTx options
- **embedded/sql:** consider 0 as no limit
- **embedded/sql:** crash when RowReader.Read() returns error
- **embedded/store:** force snapshot to include mandatory mvcc changes
- **embedded/store:** avoid dead-lock when exporting tx with external commit allowance mode
- **embedded/store:** ensure snapshot is closed for read-only txs
- **embedded/store:** integrity checks covering empty values
- **embedded/tbtree:** fix error comparison
- **embedded/tbtree:** proper kv validation
- **embedded/tbtree:** rollback to the most recent snapshot when insertion fails
- **embedded/tbtree:** fix snapshot getKeyWithPrefix
- **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:** fix truncation and contemplate entry-less txs
- **pkg/database:** read-only document API for replicas
- **pkg/database:** skip eof error during scan
- **pkg/database:** wrap propagated context
- **pkg/database:** read from err channel
- **pkg/replicator:** check stream is properly initialized
- **pkg/server:** ensure tx is closed upon error
- **pkg/server:** request explicit close when creating a rw sql tx
- **pkg/server:** ensure error propagation when sending headers
- **pkg/server:** thread-safe doc reader during session handling
- **pkg/server:** close document readers before cancelling txs
- **pkg/server:** do not set trailer metadata when replication is done with bidirectional streamming
- **pkg/server:** use grpc interceptors with grpc proxy
- **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
- exclude generated code from coverage
- TruncateDatabase endpoint should use the same ongoing Truncator if present
- add ReadN method to document reader
- rename DocumentBulkInsert to DocumentInsertMany
- generate proto requests for DocumentDelete api
- exclude generated code from coverage
- use sys/unix package
- remove docker test provider
- use sql statement for delete than raw query
- use gosec action
- add monotically increasing number to doc id generation
- add document audit api
- check invalid search id in search request
- wait for immudb to get initialized
- add DocumentDelete api
- add go-acc and goveralls to ext-tools folder
- copy document catalogue when truncating db
- handle no more doc error inside response in search
- return ErrNoMoreDocuments instead of sql.ErrNoMoreRows
- replace schemav2 with protomodel in truncator test
- add order by clause in search
- allow multiple order by clauses
- add unique search id for paginated readers
- add documentReader iterator to read documents
- add bulk insert api
- remove initial swagger support
- return sql reader on document search
- Update build/RELEASING.md file
- add option for non unique indexes on collection
- change DocumentFindOneAndUpdate to DocumentUpdate
- simplified codegen
- add pagination support when fetching documents
- address review comment
- update document with id if not nil
- pass transaction to upsert function
- add DocumentFindOneAndUpdate api
- add default size for document reader lru cache
- add lru cache for paginated readers
- Add reformatting of protobuf file on build/codegen
- fix merge issues
- fix failing verification test
- increase test coverage for document engine
- change DeleteTableStmt to DropTableStmt
- fix tests
- fix TestFloatSupport test case
- add test case for uncommitted tx not increasing table count
- add updatecollection api
- check for column before adding index on collection update
- delete columns on table deletion
- **ci:** improve notifications
- **cmd/immuadmin:** flag to specify the usage of embedded values
- **cmd/immuadmin:** modify truncation settings schema
- **cmd/immuadmin:** add truncate cmd to immuadmin
- **deps:** bump github.com/rs/xid from 1.3.0 to 1.5.0
- **deps:** bump securego/gosec from 2.14.0 to 2.15.0
- **deps:** bump github.com/golang/protobuf from 1.5.2 to 1.5.3
- **deps:** bump github.com/influxdata/influxdb-client-go/v2
- **deps:** bump github.com/spf13/viper from 1.12.0 to 1.15.0
- **deps:** bump golang.org/x/net from 0.8.0 to 0.9.0
- **deps:** bump golang.org/x/crypto
- **deps:** bump github.com/grpc-ecosystem/grpc-gateway/v2
- **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/rogpeppe/go-internal from 1.8.0 to 1.9.0
- **deps:** bump github.com/codenotary/immudb
- **deps:** bump google.golang.org/grpc from 1.46.2 to 1.54.0
- **deps:** bump github.com/stretchr/testify from 1.8.0 to 1.8.2
- **deps:** bump github.com/jaswdr/faker from 1.4.3 to 1.16.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
- **embedded/ahtree:** add inline comments
- **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:** fsync freebsd
- **embedded/appendable:** minor improvements reading files
- **embedded/appendable:** automatic file creation only when appending
- **embedded/appendable:** metadats with putBool
- **embedded/document:** move source code into dedicated files
- **embedded/document:** add test cases for collection on doc engine
- **embedded/document:** transactional collection update
- **embedded/document:** improve error handling
- **embedded/document:** retrieval of raw document
- **embedded/document:** typo in error message
- **embedded/document:** raw document validation
- **embedded/document:** transactional collection and document creation
- **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:** minor code adjustments
- **embedded/document:** transactional document creation
- **embedded/document:** use query limit when searching
- **embedded/document:** add collection deletion api support
- **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 float support for doc engine
- **embedded/document:** binary serialization of doc payload
- **embedded/document:** remove dead-code
- **embedded/document:** avoid public dependency on sql
- **embedded/document:** change querier from BinBoolExp to CmpBoolExp
- **embedded/document:** support null values in indexed attributes
- **embedded/document:** add variable length support for multiple types
- **embedded/document:** possibility to specify desc order when querying document history
- **embedded/document:** add tests for blob type
- **embedded/document:** improve error messages
- **embedded/document:** improve error messages
- **embedded/document:** ensure order by clauses are used when deleting and updating
- **embedded/document:** minor code simplification
- **embedded/document:** fix query stmt generator and add tests
- **embedded/document:** leverage sqlengine lazy index contraint evaluation
- **embedded/document:** add document id generation
- **embedded/htree:** allow creation of empty hash trees
- **embedded/object:** add document abstraction
- **embedded/object:** add collection/database statements
- **embedded/sql:** make sql engine generic for object store
- **embedded/sql:** ddl stmts register catalog mutation
- **embedded/sql:** implicit conversion from varchar to int and float types
- **embedded/sql:** lazy index contraint validation
- **embedded/sql:** validate total key length at index creation time
- **embedded/sql:** extend max key length to 512
- **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:** WIP singledb sql engine
- **embedded/sql:** simplified sql tx
- **embedded/sql:** cancellable row reader
- **embedded/sql:** transient context
- **embedded/sql:** use read-only txs whenever possible
- **embedded/sql:** return closed sql txs
- **embedded/sql:** snapshot reuse improvements
- **embedded/sql:** upgraded row reader
- **embedded/store:** minor changes after rebasing from master
- **embedded/store:** multi-tx unsafe mvcc
- **embedded/store:** multi-tx bulk indexing
- **embedded/store:** set tx as closed upon cancellation
- **embedded/store:** simplified indexer initialization
- **embedded/store:** set smaller default value for indexing bulk size
- **embedded/store:** inline comments
- **embedded/store:** contextualized transactions
- **embedded/store:** propagate context usage
- **embedded/store:** set ctx as first argument
- **embedded/store:** set ctx as first argument
- **embedded/store:** multi-timed bulk insertions
- **embedded/store:** tx header is returned when fully committed
- **embedded/store:** simplified dualproof implementation
- **embedded/store:** transient context
- **embedded/store:** added more in-line comments
- **embedded/store:** context propagation
- **embedded/store:** mvcc validations
- **embedded/store:** addition of a cache for values
- **embedded/store:** add min limit for truncation frequency
- **embedded/store:** safe key copy for mvcc validation
- **embedded/store:** add min limit for truncation frequency
- **embedded/store:** wip mvcc validations
- **embedded/store:** add hashValue as fixed 32 byte size
- **embedded/store:** fix rebase issue with readValueAt for vlogcache
- **embedded/store:** fix default vlog cache size and add validation for hash when reading from cache
- **embedded/store:** add test for TxOptions
- **embedded/store:** optional integrity checking
- **embedded/store:** embedded meta attribute required if version is greater than 1
- **embedded/store:** optional integrity checking when reading values
- **embedded/store:** api upgrade
- **embedded/store:** set embedded values mode as default one
- **embedded/store:** backward compatible embedded value mode
- **embedded/store:** skipIntegrityCheck parameter when reading data
- **embedded/store:** preallocate tx header log files
- **embedded/store:** support preallocated files when reading tx data
- **embedded/store:** wip preallocated clog
- **embedded/store:** option to prealloc files
- **embedded/store:** improve log messages when discarding precommitted transactions
- **embedded/store:** validate Eh only when integrity checks are not disabled
- **embedded/store:** consume all tx content even if integrity checks are disabled
- **embedded/store:** optional integrity checking when reading values
- **embedded/store:** clog file size adjustment only when preallocation is disabled
- **embedded/store:** handle eof when reading last committed tx
- **embedded/store:** validate Eh only when integrity checks are not disabled
- **embedded/store:** wip mvcc validations
- **embedded/store:** wip mvcc validations
- **embedded/store:** make truncation validation tolerate entryless txs
- **embedded/store:** allow tx without entries as long as it contains metadata
- **embedded/store:** update ReadBetween
- **embedded/store:** unify Read and ReadBetween
- **embedded/store:** use syncSnapshot to validate ongoing txs
- **embedded/store:** file preallocation not enabled by default
- **embedded/store:** further in-line documentation
- **embedded/store:** snapshot reuse improvements
- **embedded/store:** mvcc validation only if another tx was processed
- **embedded/store:** inline comments
- **embedded/store:** readValueAt and exportTx improvements
- **embedded/store:** minor code improvement
- **embedded/store:** fix typo in inline comment
- **embedded/store:** add in-line documentation for store options
- **embedded/store:** validate gets using filters
- **embedded/store:** MVCC read-set with boundaries
- **embedded/tbtree:** initialize tbtree with a non-mutated leaf
- **embedded/tbtree:** rollback not needed as updates are made in a copy
- **embedded/tbtree:** variable renaming after rebasing
- **embedded/tbtree:** add in-line documentation
- **embedded/tbtree:** parametrize snapshot creation specs
- **embedded/tbtree:** optimize snapshot renewal
- **embedded/tbtree:** getWithPrefix
- **embedded/tbtree:** add in-line comments
- **embedded/tbtree:** wip optimized insertion
- **embedded/tbtree:** optimized bulk insertion
- **embedded/tbtree:** wip reduce allocs while updating inner node
- **embedded/tbtree:** in-line documentation
- **embedded/tbtree:** minor code improvements
- **embedded/tbtree:** remove unnecessary kv sorting
- **embedded/tools:** upgrade embedded tools with transient context
- **embedded/watchers:** set ctx as first arg
- **embedded/watchers:** return context error upon cancellation
- **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:** remove generated httpclient
- **pkg/api:** use of path parameters for document-related endpoints
- **pkg/api:** search api improvements
- **pkg/api:** remove bool from tx metadata conversion
- **pkg/api:** swagger gen
- **pkg/api:** snapshot reuse attributes
- **pkg/api:** expose new store indexing options
- **pkg/api:** document api improvements
- **pkg/api:** revised document and authentication apis
- **pkg/api:** remove unsupported attribute from response messages
- **pkg/api:** manual adjustments post-code generation
- **pkg/api:** re-generated httpclient with DeleteDocument endpoint
- **pkg/api:** return txID when inserting or updating documents
- **pkg/api:** cleaner session id header
- **pkg/api:** document api improvements
- **pkg/api:** document update with path parameter
- **pkg/api:** rename idFieldName to documentIdFieldName
- **pkg/api:** expose MVCC read-set settings
- **pkg/api:** endpoint renaming
- **pkg/api:** expose replication settings for skipping integrity checks and indexing
- **pkg/api:** expose db setting to enable file preallocation
- **pkg/api:** add tx metadata conversion
- **pkg/api:** expose embeddedValue database setting
- **pkg/api:** authorization in swagger spec
- **pkg/api:** re-generated httpclient
- **pkg/api:** singular document path for audit and proof endpoints
- **pkg/api:** revert changes in swagger spec
- **pkg/api:** value cache settings exposed
- **pkg/api:** annotate primitive types as required
- **pkg/api:** buch of implementation improvements
- **pkg/api:** minor proof request renaming
- **pkg/api:** re-generated httpclient
- **pkg/api:** use ErrrIs/ErrorContains in error checks
- **pkg/api:** annotated required message fields
- **pkg/api:** expose support for unsafe mvcc transactions
- **pkg/api:** change retention period in TruncateDatabase message to int64
- **pkg/api:** annotate required fields
- **pkg/auth:** add document update permissions
- **pkg/client:** move heartbeater.go to pkg/client
- **pkg/client:** minor renaming in tx options
- **pkg/client/cache:** improve test coverage
- **pkg/database:** add object store
- **pkg/database:** add search document api implementation for object store
- **pkg/database:** create txs with default options
- **pkg/database:** implement GetCollection API
- **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:** remove search through first query
- **pkg/database:** upgraded reader specs
- **pkg/database:** hard limit on page size
- **pkg/database:** fix truncation deletion point checks in test
- **pkg/database:** minor code aligments
- **pkg/database:** add document store db initialisation
- **pkg/database:** updated APIs with schema updates
- **pkg/database:** add document engine abstraction
- **pkg/database:** context propagation
- **pkg/database:** add and implement object db interface
- **pkg/database:** snapshot reuse changes
- **pkg/database:** create document/collection from schemav2 requests
- **pkg/database:** upgrade after rebasing
- **pkg/database:** use _obj to hold raw document payload
- **pkg/database:** context propagation from server to embedded layer
- **pkg/database:** remove object store db initialisation
- **pkg/database:** proper calculation of source tx
- **pkg/database:** document verfication
- **pkg/database:** add DocumentUpdate api
- **pkg/database:** check encoded value is consistent with raw document
- **pkg/database:** add query parser for object to generate sql expression
- **pkg/database:** add document query struct to abstract request query
- **pkg/database:** minor document renaming
- **pkg/integration:** exportTx benchmarking
- **pkg/replication:** replicator using bidirectional streaming
- **pkg/replication:** wip stream replication - only async replication working
- **pkg/replication:** skip integrity check when exporting transactions
- **pkg/replication:** context propagation
- **pkg/replication:** improve options validation
- **pkg/server:** upgrades after rebasing from master
- **pkg/server:** integrate document functions with server apis
- **pkg/server:** context propagation from grpc api to embedded package
- **pkg/server:** multi-grpc request context propagation
- **pkg/server:** minor code reuse
- **pkg/server:** add pagination test for document search
- **pkg/server:** add test successful load/unload of db with truncator
- **pkg/server:** log error when closing document reader
- **pkg/server:** ensure document reader is closed when swithing pages
- **pkg/server:** support snapshot reuse
- **pkg/server:** upgrade to new insecure credentials api
- **pkg/server:** close all paginated readers on close of session
- **pkg/server:** added inline comments
- **pkg/server:** set default replication settings
- **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:** use proto serialization
- **pkg/verification:** minor renaming
- **pkg/verification:** document verification using embedded identifier
- **test/objects:** add tests to create collections
- **test/objects:** add more tests to create collection
- **test/objects:** use httpexpect
- **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:** send results to influxdb
- **test/performance-test-suite:** add influxdb host and toke arguments
- **test/performance-test-suite:** add sync benchmarks
- **test/performance-test-suite:** extract json from results
- **test/performance-test-suite:** fix replica directory path
- **test/performance-test-suite:** use temp folders for primary, replicas and clients
- **test/performance-test-suite:** replicas are able to communicate with primary
- **test/performance-test-suite:** changed server concrete implementation
- **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:** limit and offset as expressions
- **embedded/sql:** wip unsafe and optimized mvcc
- **embedded/sql:** sql transaction creation with options
- **embedded/sql:** short casting syntax
- **embedded/sql:** implicit type conversion of numeric types
- **embedded/sql:** Initial float support
- **embedded/store:** unsafe mvcc mode
- **embedded/store:** embeddable values
- **embedded/store:** read-only transactions
- **embedded/store:** embedded values option
- **embedded/store:** tx creation with options
- **embedded/store:** expose GetWithPrefixAndFilters
- **embedded/store:** GetWithPrefixAndFilters
- **embedded/tbtree:** multi-timed bulk insertions
- **pkg/api:** keepOpen parameter to instruct server to maintain a document reader in memory
- **pkg/api:** improved replace documents endpoint
- **pkg/api:** count documents endpoint
- **pkg/api:** document proof endpoint
- **pkg/client:** optional tx options are now available during the creation process


<a name="v1.4.1"></a>
## [v1.4.1] - 2022-11-21
### Changes
- **pkg/server:** Add logs for activities related to users


<a name="v1.4.1-RC1"></a>
## [v1.4.1-RC1] - 2022-11-16
### Bug Fixes
- Change replication-related terms in tests
- Change replication-related terms in codebase
- **cmd:** Rename replication flags to follow consistent convention
- **cmd/immudb:** Fix description of the `force-admin-password` flag
- **cmd/immudb:** Better description of the `--force-admin-password` flag
- **embedded/appendable:** fsync parent directory
- **embedded/appendable:** fsync parent folder in remote appedable
- **pkg:** Rename replication-related fields in GRPC protocol
- **pkg/client:** Delay server identity validation
- **pkg/client/cache:** Add methods to validate server identity
- **pkg/client/cache:** Validate server's identity
- **pkg/server:** Remove includeDeactivated flag when querying for users
- **pkg/server/servertest:** Fix resetting grpc connection
- **pkg/server/servertest:** Add uuid to buffconn server
- **test/perf-test-suite:** Avoid dumping immudb logo on perf test results file
- **test/performance-test-suite:** Ensure results are shown after proper is finished
- **verification:** Additional Linear proof consistency check
- **verification:** Recreate linear advance proofs for older servers

### Changes
- **ci:** migrate deprecating set-output commands
- **cmd/immudb:** Allow resetting sysadmin password
- **docs/security:** Add resources for the linear-fake vulnerability
- **docs/security:** Be less specific about package version in examples
- **embedded/appendable:** sync directories
- **embedded/store:** Remove AHT Wait Hub
- **embedded/store:** Disable asynchronous AHT generation
- **pkg/client:** Document `WithDisableIdentityCheck` option
- **pkg/client/cache:** Limit the hash part of the identity file name
- **pkg/client/cache:** Describe serverIdentity parameter
- **pkg/client/state:** Cleanup mutex handling in StateService
- **pkg/server:** Warn if sysadmin user password was not reset
- **pkg/server:** Better warning for unchanged admin password
- **test/performance-test-suite:** Add summary to json output

### Features
- **ci:** fix message and input
- **ci:** add runner name to mattermost message header
- **ci:** simplify results extraction
- **ci:** extract performance tests into separate workflow to be reused
- **ci:** add scheduled daily test runs and send results to Mattermost
- **pkg/replication:** Disable server's identity check in internal replication


<a name="v1.4.0"></a>
## [v1.4.0] - 2022-10-12
### Bug Fixes
- **build:** Do not publish official non-dev images on RC tags
- **pkg/client:** replace keepAlive context from the original one to the background, avoiding parent expiration

### Changes
- Rename sync-followers to sync-acks
- **cmd/immuclient:** include precommit state when quering status
- **pkg/server:** Better error message when validating replication options


<a name="v1.4.0-RC2"></a>
## [v1.4.0-RC2] - 2022-10-10
### Bug Fixes
- **build:** Use correct binary download links
- **embedded/store:** edge-case calculation of precommitted tx
- **embedded/watchers:** Fix invariant breakage in watchers
- **embedded/watchers:** Fix invariant breakage in watchers
- **pkg/database:** any follower can do progress due to its prefech buffer
- **pkg/replication:** Do not crash on invalid tx metadata
- **pkg/replication:** handle replication already closed case
- **pkg/replication:** discard precommitted txs and continue from latest committed one
- **pkg/replication:** solve issues when follower diverged from master
- **wmbedded/watchers:** Correctly fix the original implementation

### Changes
- **embedded/watchers:** Simplify and document cancellation path
- **embedded/watchers:** Simplify mutex locking code
- **embedded/watchers:** single-point for init and cleanup
- **pkg/database:** simplify follower's wait
- **pkg/database:** wait for tx when a non-existent or non-ready transaction is requested
- **pkg/database:** add TODO comment on replication passive waiting
- **pkg/replication:** Add TX gap metrics
- **pkg/replication:** Add basic replication metrics
- **pkg/replication:** improve replication logging


<a name="v1.4.0-RC1"></a>
## [v1.4.0-RC1] - 2022-10-04
### Bug Fixes
- **Makefile:** add fips build flag to test/fips
- **Makefile:** remove interactive flag from dist/fips command
- **ci:** fix regex pattern for fips binaries
- **cmd/immuadmin:** set correct  data-type for replication-sync-followers flag
- **embedded/store:** Fix checking for closed store when syncing TXs
- **embedded/store:** avoid attempts to commit in wrong order
- **embedded/store:** expose durable precommitted state
- **embedded/store:** include allowPrecommitted into tx reader construction
- **embedded/store:** ensure tx is released upon error
- **embedded/store:** aht up to precommited tx
- **embedded/store:** fix size calculation of precommitted txs
- **github:** Update github actions after migration of Dockerfile's
- **pkg/database:** Fix mutex lock in ExportTx
- **pkg/database:** return master commit state if failing to read follower precommitted one
- **pkg/database:** set follower states holder when changing replication status
- **pkg/server:** add logs when replicator does not start

### Changes
- add dependabot config
- Add empty line between license header and package
- **Dockerfile.fips:** add fips build changes
- **cmd/immuadmin:** use default immudb port as default value for replication-master-port flag
- **cmd/immuadmin:** revert default replication-master-port
- **cmd/immuadmin:** add new replication flags
- **cmd/immuclient:** flag replication-sync-enabled to enable sync replication
- **cmd/immudb:** deprecate replication-enabled towards replication-is-replica
- **docker:** Move main Dockerfile's to build folder
- **docker:** Simplify the main Dockerfile
- **embedded/store:** waits for durable precommitted txs
- **embedded/store:** wip wait for precommitted txs
- **embedded/store:** mutexless export-tx
- **embedded/store:** method to dynamically switch to external allowance
- **embedded/store:** wip reduce allocations in exportTx
- **embedded/store:** enhanced tx discarding logic
- **embedded/store:** resolve pre-committed using clogbuf
- **embedded/store:** wip load precommitted txs
- **embedded/store:** minor code simplification
- **embedded/store:** handle commit case when there is nothing new to commit
- **embedded/store:** support for concurrent replicated precommits
- **embedded/store:** tx parsing with sanity checks
- **embedded/store:** add integrity checks when reading precommitted txs
- **embedded/store:** tolerate partial data or inconsistencies when loading pre-committed txs
- **embedded/store:** explanatory comments added
- **embedded/store:** explicit allowPrecommitted and restricted access to precommitted txs
- **embedded/store:** minor renaming and comment additions
- **embedded/store:** possibility to read tx header of precommitted txs
- **pkg/api:** explicit sync replication setting
- **pkg/api:** currentState endpoint includes precommitted info
- **pkg/api/schema:** reformat schema.proto file
- **pkg/database:** improve error comparison
- **pkg/database:** handle special case related to sql initialization
- **pkg/database:** follower commit progress without additional waits
- **pkg/database:** sync exportTx
- **pkg/database:** minor typo in comment
- **pkg/database:** disable automatic sql init on older databases
- **pkg/integration:** add synchronous replication integration tests
- **pkg/replication:** improve error comparison
- **pkg/replication:** handling a particular case in an optimized manner
- **pkg/replication:** speed up follower reconnection
- **pkg/replication:** replicator with backward compatibility mode
- **pkg/replication:** check committedTxID from master
- **pkg/replication:** graceful closing
- **pkg/replication:** use session-based authentication
- **pkg/replication:** handle case when follower precommit state is up-to-date but commit state is lies behind
- **pkg/replication:** sync replication using follower state
- **pkg/replication:** allowPreCommitted only with sync replication enabled
- **pkg/replication:** wip optimize concurrency in replicators
- **pkg/replication:** configurable prefetchTxBufferSize and replicationCommitConcurrency
- **pkg/replication:** further progress in sync replication
- **pkg/replication:** backward compatible replication
- **pkg/replicator:** wip precommitted tx discarding when follower diverged from master
- **pkg/server:** use replication settings
- **pkg/server:** include sync replication settings in options
- **pkg/server:** explicit sync replication
- **pkg/server:** support for systemdb with session-based auth
- **pkg/server:** display all replication settings
- **pkg/server:** handle admin user creation with sync replication enabled

### Features
- **cmd/immuadmin:** flag to set the number of sync followers
- **cmd/immudb:** flag to set the number of sync followers for systemdb and defaultdb
- **embedded/store:** functionality to discard precommitted txs
- **embedded/store:** core support for sync replication
- **pkg/api:** api extensions to support sync replication
- **pkg/database:** wip sync replication logic
- **pkg/replication:** mode to allow tx discarding on followers
- **pkg/replication:** wip replicator with support for sync replication
- **pkg/server:** sync replication logic
- **pkg/server:** Add ability to inject custom database management object


<a name="v1.3.2"></a>
## [v1.3.2] - 2022-08-25

<a name="v1.3.2-RC1"></a>
## [v1.3.2-RC1] - 2022-08-24
### Bug Fixes
- company name in webconsole and other files
- access tls value in global scope within ingress annotations
- **build:** update go version to 1.18 in Dockerfiles
- **build:** Fix go-acc and goveralls invocations
- **build/RELEASING.md:** Add note about updating playground
- **embedded:** use tmp folder for unit test cases
- **embedded/sql:** Support single `BEGIN` statement.
- **embedded/store:** Reduce the amount of allocations for tx object
- **embedded/store:** Return correct error on key length exceeded
- **embedded/store:** Ensure ordering of transaction timestamps
- **embedded/store:** Assign blTxID within locked tx state
- **embedded/store:** Optionally preallocate Tx pools
- **embedded/store:** Improved check for replicated transaction
- **embedded/store:** Protect against simultaneous replicators
- **embedded/store:** Check precommitted state when replicating
- **embedded/store:** ensure tx is released upon error
- **embedded/tools/stress_tool:** Fix compilation after recent update to tx holder pool
- **getRandomTable:** increase RNG range for table generation
- **github:** Remove unnecessary `/test/` path when uploading perf results to s3
- **github:** Do not use yaml anchors in github workflows
- **pkg/client:** Invalid client state after connection refused
- **pkg/client/clienttest:** enforce mock client to interface
- **pkg/database:** Fix calculation of proof for VerifiableTxByID
- **pkg/database:** Correct revision for Scan requirests
- **server:** Show info text with a logger
- **servertest:** Allow accessing Server object before starting the server
- **stdlib/rows:** add colums to row response
- **test/performance:** Cleanup test directory

### Changes
- deprecate ImmuClient.HealthCheck in favour of ServerInfo.
- ignore schema_grpc.pb.go in code coverage.
- regenerate with correct version of protoc-gen-go.
- update build constraint to new & future-proof syntax.
- format tools.go.
- pin google.golang.org/protobuf to v1.27.1 (currently used version for generated code).
- reimplement ImmuClient.HealthCheck using rpc ServerInfo instead of (deprecated) Health.
- pin github.com/pseudomuto/protoc-gen-doc to 1.4.1 (currently used version for generated code).
- ignore schema_grpc.pb.go in coveralls.
- refactor TestServerInfo.
- makefile formatting.
- update github.com/spf13/viper to v1.12.0.
- generate gRPC stubs.
- use go.mod version of github.com/grpc-ecosystem/grpc-gateway when building codegen.
- Update main go versin to 1.18
- Introduce separate TxHolder pools
- **Makefile:** Update webconsole to 1.0.16
- **build:** Update RELEASING.md doc
- **build:** Improve generation of build checksums
- **cmd/immuadmin:** Add support for max-commit-concurrency option
- **cmd/immuadmin:** Add support for read-tx-pool-size option
- **cmd/immudb:** Add support for max-sessions command line option
- **database/sql:** Delay txholder allocation on VerifiableSQLGet
- **embedded/ahtree:** flushless append
- **embedded/ahtree:** threshold-based sync
- **embedded/ahtree:** improve error handling
- **embedded/ahtree:** use bigger default write buffer size
- **embedded/ahtree:** improve error message consistency
- **embedded/ahtree:** support newst appendable implementation
- **embedded/ahtree:** improve validations and error handling
- **embedded/ahtree:** minor error message change
- **embedded/appendable:** auto-sync options
- **embedded/appendable:** improve explanatory comment inside sync method
- **embedded/appendable:** autosync when write buffer is full
- **embedded/appendable:** return io.EOF when offset is out of range
- **embedded/appendable:** multi-appendable shared write buffer
- **embedded/appendable:** autosync support in multi-appendable
- **embedded/appendable:** upgrade mocked and remote appendable based on new flushing assumptions
- **embedded/appendable:** inmem buffer offset
- **embedded/appendable:** flush when no more writes are done in appendable
- **embedded/appendable:** improve singleapp validation and error handling
- **embedded/appendable:** improve validations and error handling
- **embedded/appendable:** error tolerant seek
- **embedded/appendable:** wip remoteapp validation
- **embedded/htree:** improve error handling
- **embedded/sql:** Remove unnecessary tx holder buffer from SQLTx
- **embedded/store:** Add dedicated error for tx pool exhaustion
- **embedded/store:** Add txPoolOptions to setup pool parameters upon creation
- **embedded/store:** wip error declaration
- **embedded/store:** sync AHT before tx commit log
- **embedded/store:** in-mem clog buffer written when synced
- **embedded/store:** wrap internal already closed errors
- **embedded/store:** handle appendable already close error
- **embedded/store:** improve error comparison with errors.Is(...)
- **embedded/store:** multi-tx syncs
- **embedded/store:** Better errors returned during replication error
- **embedded/store:** Do not write values if concurrency limit is reached
- **embedded/store:** Use dedicated error for replication conflicts
- **embedded/store:** avoid sync waiting if there are no new transactions
- **embedded/store:** add TODO comment
- **embedded/store:** Add explicit ReadTxEntry method
- **embedded/store:** aht options
- **embedded/store:** set new default write buffer values
- **embedded/store:** use smaller default buffer size
- **embedded/store:** flush-less precommit
- **embedded/store:** wip retryable sync
- **embedded/store:** parametrize write buffer size
- **embedded/store:** Add explicit ReadTxHeader
- **embedded/store:** Optimize ReadTxEntry method
- **embedded/store:** Optimize ReadTxHeader method
- **embedded/store:** Add txDataReader to process transaction data
- **embedded/store/txpool:** Make txPoolOptions members private
- **embedded/store/txpool:** Allocate pool entries separately
- **embedded/tbtree:** use non-retryable sync
- **embedded/tbtree:** improve error handling
- **embedded/tbtree:** define using generic errors towards errors.Is(...) usage
- **embedded/watchers:** improve error handling
- **github:** Upload perf results to AWS s3
- **github:** Allow using multiple runners for perf test suite
- **github:** Run perf test suite on pull requests
- **github:** Run performance test suite on push to master
- **github:** Add simple documentation of `PERF_TEST_xxx` secrets
- **github:** Install qemu using docker/setup-qemu-action
- **github:** Allow selection of runner to run perf test
- **github:** Update ACTIONS_SECRETS.md file
- **pkg/api:** export syncFrequency database parameter
- **pkg/api:** milliseconds message type
- **pkg/api:** deprecate rpc Health in favour of ServerInfo.
- **pkg/api:** Add tx pool size to GRPC and stored db options
- **pkg/api:** expose aht settings
- **pkg/database:** Add tx pool size to db options
- **pkg/database:** allocate tx buffer before doing verified writes
- **pkg/database:** Remove txHolder from get operation
- **pkg/database:** Do not allocate txholder for history scans
- **pkg/logger:** Add memory logger
- **pkg/logger:** add json logger
- **pkg/server:** Add pprof option
- **pkg/server:** simplify ImmuServer.Health.
- **test/performance:** Add separate `Write KV/s` test.
- **test/performance:** Allow customized name for the benchmark
- **test/performance:** Move test seed out of configuration
- **test/performance:** Correctly close random data generator
- **test/performance:** Split benchmark list and run code
- **test/performance:** Add basic flags to the benchmark process
- **test/performance:** Move random generator and key tracker to common coode
- **test/performance:** Add CPU time / memory stats gathering
- **test/performance:** Better logging and output
- **test/performance:** Add basic IO stats
- **test/performance:** Improve live IO display

### Features
- revert usages of ServerInfo that would break backwards compatibility.
- add test for HealthCheck.
- **cmd/immuadmin:** expose syncFrequency and WriteBufferSize db parameters
- **cmd/immuclient:** add info command to immuclient.
- **pkg/api:** expose write buffer parameter
- **pkg/api:** improve documentation of ServerInfo.
- **pkg/api:** remove ServerInfoResponse.status field.
- **pkg/api:** add ServerInfo rpc to deprecate Health.
- **pkg/client:** revert WaitForHealthCheck change to maintain backwards-compatibility.
- **pkg/client:** implement ImmuClient.ServerInfo.
- **pkg/server:** implement ImmuServer.ServerInfo.


<a name="v1.3.1"></a>
## [v1.3.1] - 2022-06-30
### Bug Fixes
- **embedded/store:** filter evaluation after valRef resolution

### Changes
- **embedded/store:** offset handling at keyreader

### Features
- **embedded/sql:** offset clause
- **embedded/store:** offset in key scanning
- **pkg/api:** offset attribute in scan and zscan endpoints


<a name="v1.3.1-RC1"></a>
## [v1.3.1-RC1] - 2022-06-30
### Bug Fixes
- **README:** Update readme to show examples for 1.3.0 version
- **cmd/immuadmin:** use StreamChunkSize as max chunk size during tx replication
- **cmd/immudb:** include metrics endpoint related flags
- **embedded/remotestorage:** Fix invalid comment
- **embedded/remotestorage/s3:** Fix s3 object name validation
- **embedded/remotestorage/s3:** Correctly url decode entry names
- **embedded/remotestorage/s3:** Simplify the code for scan
- **embedded/remotestorage/s3:** Avoid using HEAD requests
- **embedded/sql:** Use defer to cleanup unclosed readers on error
- **embedded/sql:** Fix snapshot leak on query initialization failure
- **embedded/sql:** Fix reader leaks during initialization failures
- **embedded/sql:** Properly close readers in joint row reader
- **embedded/sql:** Fix snapshot leaks in union readers
- **embedded/sql:** ensure timestamp is evaluated with microsecond precision
- **pkg/client:** ensure connection is closed and session can be re-established
- **pkg/database:** Do not panic if incorrect number of pk values is given to VerifiableSQLGet
- **pkg/server:** Fix remote storage test after recent changes
- **pkg/server/sessions:** Correctly start session guard
- **pkg/server/sessions:** Avoid deadlock when closing session manager
- **pkg/server/sessions:** Session manager test fixes
- **pkg/server/sessions:** Use strong random source for session ID
- **pkg/server/sessions:** Handle short buffer read when generating session id

### Changes
- Update dependencies
- **build:** Update RELEASING.md file
- **embedded/remotestorage:** More detailed errors
- **embedded/remotestorage:** Improve error reporting
- **embedded/remotestorage:** Improve testing of remotestorage
- **embedded/remotestorage/s3:** Improved s3 object name checks
- **embedded/sql:** fixed-timed tx
- **embedded/sql:** Do not return error from conditional and limit readers
- **github:** Update minimal supported go version to 1.15
- **github:** Run tests with minio service
- **github:** On macOS run client only test on pull requests
- **github:** Update push action
- **github:** Run coverage tests with minio enabled
- **pkg/client:** Better detection of tests that require external immudb
- **pkg/server:** Add missing copyright headers
- **pkg/server/session:** Move options normalization into options struct
- **pkg/server/sessions:** Simplify session handling code
- **pkg/server/sessions:** Add MaxSessions option
- **pkg/server/sessions:** Improve options handling
- **remotestorage:** Add prometheus metrics for remote storage kind
- **tools:** Remove old stream tool


<a name="v1.3.0"></a>
## [v1.3.0] - 2022-05-23
### Bug Fixes
- **embedded/sql:** return invalid value when using aggregated col selector in temporal queries
- **pkg/client:** enhance client-side validations in verified methods


<a name="v1.3.0-RC1"></a>
## [v1.3.0-RC1] - 2022-05-20
### Bug Fixes
- **cmd/immuclient:** Do not crash on login prompt
- **embedded/sql:** selector resolution using valuesRowReader
- **embedded/sql:** continue stmt execution on handler after changing db in use
- **embedded/sql:** increase auto_increment pk once per row
- **embedded/sql:** typo in error message
- **embedded/sql:** adjust named parameter parsing
- **github:** Run sonarcloud code analysis after cove coverate
- **pkg/database:** avoid silent returns when the scan limit is reached
- **pkg/database:** Fix detection of incorrect revision numbers
- **pkg/database:** Correctly interpret negative revision for getAt

### Changes
- **Dockerfile:** Add EXPOSE 5432 and IMMUDB_PGSQL_SERVER to all immudb images
- **README.md:** Switch to github badge
- **build:** Update the RELEASING.md documentation
- **cmd/immuclient:** Move history command to a separate file
- **cmd/immuclient:** Remove unnecessary sleep for set commands
- **cmd/immuclient:** Extract separate immuclient options
- **embedded/sql:** functional-style catalog queries
- **embedded/sql:** unit testing db selection
- **embedded/sql:** not showing unexistent db name as part of error message
- **embedded/sql:** fully non-transactional db creation and selection
- **embedded/sql:** wip grammar extensions to enrich temporal queries
- **embedded/sql:** de-duplicate error handling
- **embedded/sql:** database selection without multidb handler is still transactional
- **embedded/sql:** database selection as  non-transactional
- **embedded/sql:** validate current database as first step
- **embedded/sql:** param substitution in functional datasource
- **embedded/sql:** detailed error messages
- **embedded/sql:** quoted identifiers
- **embedded/sql:** ensure db selection is the last operation
- **embedded/sql:** implicit time expression
- **embedded/sql:** include short database selection stmt
- **embedded/sql:** ensure context propagation with multiple txs
- **embedded/sql:** re-include ttimestamp conversions in tx periods
- **embedded/sql:** postpone period evaluation so to support parameters type inference
- **embedded/sql:** non-functional catalog access
- **embedded/sql:** check tx range edge cases
- **embedded/sql:** sql tx with context
- **embedded/sql:** multi-db handler
- **embedded/sql:** functional catalog api
- **embedded/store:** minor refactoring time-based tx lookup
- **github:** Speedup push github actions
- **grpc:** Extend Scan API with endKey, inclusiveSeek, inclusiveEnd
- **pkg/api:** extend database creation response to indicate db already existed
- **pkg/database:** set multi-db handler after db initialization
- **pkg/database:** Rename getAt to getAtTx
- **pkg/database:** Improved checking of KeyRequest constraints
- **pkg/database:** databases catalog query yet unsupported
- **pkg/database:** contextual sql tx
- **pkg/database:** provide query parameters during resolution
- **pkg/database:** maintain MaxKeyScanLimit for backward compatibility
- **pkg/database:** Add missing copyright header in scan_test.go
- **pkg/database:** minor error renaming
- **pkg/integration:** Cleanup and restructure SQL tests
- **pkg/integration:** Add SQL verify tests after ALTER TABLE
- **pkg/server:** upgrade database method signature
- **pkg/server:** contextual sql tx

### Features
- Calculate revision number when scanning key history
- Add revision number when getting DB entries
- **api/schema:** Add revision-based option to key query
- **cmd/immuclient:** Add restore operation
- **cmd/immuclient:** Add support for revision-based get in immuclient
- **cmd/immuclient:** Add revision numbers when looking up key history
- **cmd/immuclient:** Better error messages for invalid revision for restore command
- **embedded/sql:** catalog queries
- **embedded/sql:** Implement ALTER TABLE ADD COLUMN
- **embedded/sql:** create database if not exists
- **embedded/sql:** WIP - UNION operator
- **embedded/sql:** temporal row ranges
- **embedded/sql:** queries with temporal ranges
- **embedded/store:** time-based tx lookup
- **embedded/store:** ranged key update reading
- **pkg/client:** Add revision-based get request on the go client
- **pkg/database:** Add revision-based get request on the GRPC level
- **pkg/server:** support database creation from sql
- **pkg/server:** support database selection from sql stmt


<a name="v1.2.4"></a>
## [v1.2.4] - 2022-04-28

<a name="v1.2.4-RC1"></a>
## [v1.2.4-RC1] - 2022-04-27
### Bug Fixes
- **Dockerfile:** Fix HOME variable for podman
- **cmd/immuclient:** upgrade not logged in error handling
- **embedded/tbtree:** Better logging in btree flush
- **embedded/tbtree:** Fix cleanupPercentage in SnapshotSince call
- **embedded/tbtree:** ensure node split is evaluated
- **embedded/tbtree:** create nodes with the right number of children
- **embedded/tbtree:** split into multiple nodes
- **github/push:** Fix notarization of binaries
- **pkg/auth:** Clarify comments about token injection
- **pkg/auth:** Do not send duplicated authorization header
- **pkg/server:** include db name in flush index result

### Changes
- **CHANGELOG.md:** remove bogus `liist` tag entry
- **build/RELEASING.md:** Update releasing docs
- **cmd/immuclient:** include db name when printing current state
- **embedded/store:** index settings validations
- **embedded/tbtree:** rename function that calculates node size lower bound
- **embedded/tbtree:** ensure node size is consistent with key and value sizes
- **github:** Update github workflow on master / version push
- **github:** Update github action versions
- **github:** Use smaller 5-days retention for master builds
- **github/push:** Add quick test linux-amd64 binaries
- **github/push:** Build, test and notarize for release/v* branches
- **github/push:** Calcualte sha256 checksums for binaries in github
- **github/push:** Build docker images after tests
- **github/push:** Add quick test for Mac x64 binaries
- **github/push:** Add quick test for linux-arm64 binaries through qemu
- **github/push:** Add quick test for linux-s390x binaries through qemu
- **github/push:** Run stress test before notarizing binaries
- **pkg/api:** txbyid with keepReferencesUnresolved option
- **tools/testing:** Add randomized key length mode for stress test tool
- **tools/testing:** Add stress tool


<a name="v1.2.3"></a>
## [v1.2.3] - 2022-04-14
### Bug Fixes
- **cmd/immuadmin:** simplify logging when flushing and compacting current db
- **pkg/database:** return key not found when resolving a deleted entry
- **pkg/database:** Return correct error for verifiedGet on deleted entries


<a name="v1.2.3-RC1"></a>
## [v1.2.3-RC1] - 2022-04-13
### Bug Fixes
- **CI/CD:** Golang compiler is not needed for building docker images
- **CI/CD:** Use CAS for notarization
- **embedded/store:** Fix early precondition checks
- **embedded/store:** Ensure up-to-date index on constrained writes
- **embedded/tbtree:** copy-on-write when increasing root ts
- **immudb:** Fix the name of signing key env var
- **pkg:** Fix tests after recent changes in API
- **pkg/api:** typo in kv metadata message
- **pkg/api:** Remove unused Sync field from IndexOptions
- **pkg/api/schema:** Use correct id for preconditions in SetRequest
- **pkg/auth:** Avoid unguarded read from user tokens map
- **pkg/client:** Adopt to EncodeReference changes
- **pkg/client:** Prevent updates with incorrect database settings
- **pkg/client:** Use correct response for UpdateDatabaseV2
- **pkg/client/errors:** Update the list of error codes
- **pkg/client/errors:** Ensure FromErrors works with ImmuError instance
- **pkg/database:** Better handling of invalid constraints
- **pkg/database:** Improve test coverage for KV constraints
- **pkg/database:** automatically set max score if not specified in desc order
- **pkg/errors:** Correct GRPC error mapping for precondition failure
- **pkg/server:** Use buffered channel for catching OS signals
- **pkg/server:** typo in log message
- **pkg/server:** adjust time to millis convertion
- **pkg/server:** ensure sessions locks get released
- **pkg/server:** override default settings with existent values
- **tools/monitoring:** Update grafana dashboards

### Changes
- cleanup percentage as float value
- Fix typo in a comment
- Rename Constraints to Preconditions
- Update copyright to 2022
- **Dockerfile:** Improve dockerfile builds
- **build:** improve release instructions ([#1100](https://github.com/vchain-us/immudb/issues/1100))
- **cmd/immuadmin:** add safety flag in delete database command
- **cmd/immuclient:** health command description
- **embedded/ahtree:** fix error message
- **embedded/appendable:** return io.EOF if there are not enough data for checksum calculation
- **embedded/appendable:** fix typo in error message
- **embedded/appendable:** discard capability
- **embedded/appendable:** appendable checksum calculation
- **embedded/store:** Add missing Copyright header
- **embedded/store:** add synced setting in index options
- **embedded/store:** do not skip expired entries when indexing
- **embedded/store:** verbose data corruption error
- **embedded/store:** parametrized index write buffer size
- **embedded/store:** syncThld at store options
- **embedded/store:** verbose logging during compaction
- **embedded/store:** index one tx per iteration
- **embedded/store:** improve compaction logging
- **embedded/store:** sync aht when syncing the store
- **embedded/store:** skip expired entries during indexing
- **embedded/store:** declare constants for all the options
- **embedded/store:** use store layer for constraint validations
- **embedded/store:** constraint validations with deletion and expiration support
- **embedded/store/options:** Simplify validation tests
- **embedded/tbree:** use shared writeOpts
- **embedded/tbree:** only insert nodes in cache when they were mutated
- **embedded/tbree:** remove obsolete property
- **embedded/tbree:** bump index version
- **embedded/tbtree:** middle node split
- **embedded/tbtree:** Add more internal metrics
- **embedded/tbtree:** min offset handling
- **embedded/tbtree:** validate compaction target path
- **embedded/tbtree:** data discarding with opened and older snapshots
- **embedded/tbtree:** Extend buckets for child node count histogram
- **embedded/tbtree:** synced flush if cleanup percentage is greater than zero
- **embedded/tbtree:** discard unreferenced data after sync
- **embedded/tbtree:** reduce allocs during flush
- **embedded/tbtree:** minOffset only for non-mutated nodes
- **embedded/tbtree:** ensure current snapshot is synced for compaction
- **embedded/tbtree:** validate input kv pairs before sorting
- **embedded/tbtree:** improve snapshot loading and discarding
- **embedded/tbtree:** discard unreferenced data when flushing index
- **embedded/tbtree:** discard unreferenced data
- **embedded/tbtree:** Add metrics for index data size
- **embedded/tbtree:** reduce allocations when flushing
- **embedded/tbtree:** positive compaction threshold
- **embedded/tbtree:** rebase non-indexed on kv syncthreshold
- **embedded/tbtree:** explicit error validation before loading
- **embedded/tbtree:** sort kv pairs in bulkInsert
- **embedded/tbtree:** checksum-based snapshot consistency validation
- **embedded/tbtree:** self-healing index
- **embedded/tbtree:** set initial offsets during initialization
- **embedded/tbtree:** validate data-format version
- **embedded/tbtree:** use double for min offset calculation
- **embedded/tbtree:** reduce fixed records length
- **embedded/tbtree:** open-ranged nodes
- **embedded/tbtree:** wip reduce node size
- **embedded/tbtree:** ensure sync on gracefully closing
- **embedded/tbtree:** fully replace sync with syncThld
- **embedded/tbtree:** use binary search during key lookups
- **embedded/tbtree:** Use KV entries count for sync threshold
- **embedded/tbtree:** no cache update during compaction reads
- **makefile:** fix cas sign instructions
- **metrics:** Add better flush / compaction metrics for btree
- **pkg/api:** use entries spec in verified and scan tx endpoints
- **pkg/api:** add synced param to flushindex endpoint
- **pkg/api:** non-indexable entries
- **pkg/api:** change proto schema toward db loading/unloading
- **pkg/api:** parametrized index cleanup percentage
- **pkg/api:** db loading and unloading
- **pkg/api:** uniform v2 endpoints
- **pkg/api:** prepare flushindex endpoint for future extensions
- **pkg/api:** use nullable prefix in db settings message
- **pkg/client:** optional client connection
- **pkg/client:** use txRequest in TxByIDWithSpec method
- **pkg/client:** synced flushing to enable physical data deletion
- **pkg/database:** parameters to resolve references at tx
- **pkg/database:** tx entries excluded by default if non-null spec is provided
- **pkg/database:** optional tx value resolution
- **pkg/database:** use shared tx holder when resolving tx entries
- **pkg/database:** remove db name from options
- **pkg/integration:** integrate non-indexed into grpc apis
- **pkg/server:** endpoint to retrieve settings of selected database
- **pkg/server:** expose max opened files for btree indexing
- **pkg/server:** use syncThreshold
- **pkg/server:** replication options for systemdb and defaultdb
- **pkg/server:** use previous store default values
- **pkg/server:** increase default max number of active snapshots
- **pkg/server:** tolerate failed user-created db loading
- **pkg/server:** expose flush index endpoint
- **pkg/server:** start/stop replicator when loading/unloading db
- **pkg/server:** convert time to milliseconds
- **pkg/server:** minor changes
- **pkg/server:** log web-console error on boot
- **pkg/server:** synced db runtime operations
- **pkg/server:** Dump used db options when loading databases
- **pkg/serverr:** validate request in deprecated database creation endpoint
- **stats:** Add btree cache prometheus stats

### Features
- Improved API for database creation and update
- Improved validation of kv constraints
- Entries-independent constraints in GRPC api
- Move KV write constraints to OngoingTX member
- **KV:** Do not create unnecessary snapshots when checking KV constraints
- **KV:** Add constrained KV writes for Set operation
- **KV:** Add constrained KV writes for Reference operation
- **KV:** Add constrained KV writes for ExecAll operation
- **KV:** Move constraints validation to OngoingTx
- **embedded/cache:** dynamic cache resizing
- **embedded/store:** Fail to write metadata if proof version does not support it
- **embedded/store:** Add tests for generation of entries with metadata
- **embedded/store:** non-indexable entries
- **embedded/store:** Add max header version used during writes
- **embedded/store:** Allow changing tx header value using GRPC api.
- **embedded/tbtree:** decouple flush and sync by introducing syncThreshold attribute
- **immuadmin:** Allow changing proof compatibility from immuadmin
- **kv:** Update grpc protocol with KV set constraints
- **pkg/api:** tx api with entry filtering capabilities
- **pkg/api:** delete database endpoint
- **pkg/client:** new method to fetch tx entries in a single call
- **pkg/database:** Updated GRPC protocol for constrained writes
- **pkg/database:** add noWait attribute in get request
- **pkg/database:** Update code for new constrained write protocol
- **pkg/server:** database health endpoint
- **pkg/server:** support database loading/unloading
- **pkg/server:** new endpoint databaseSettings
- **pkg/server:** expose all database settings
- **tools/monitoring:** added datasource selection, added instance selection, labels include instance, fixed calculations
- **tools/monitoring:** Add immudb Grafana dashboard


<a name="v1.2.2"></a>
## [v1.2.2] - 2022-01-18
### Bug Fixes
- registering connection in order to make possible conn recycling
- **Dockerfile:** Add ca-certificates.crt file to immudb image
- **client/file_cache:** Fix storing immudb state in file cache
- **embedded/immustore:** Avoid deadlock when acquire vLog lock
- **embedded/sql:** max key len validations
- **embedded/sql:** consider not null flag is on for auto incremental column
- **pkg/server:** validate if db is not replica then other replication attributes are not set
- **pkg/stdlib:** fix last insert id generation

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

### Features
- **embedded/sql:** support for basic insert conflict handling
- **s3:** Add support for AWS V4 signatures


<a name="v1.2.1"></a>
## [v1.2.1] - 2021-12-14
### Bug Fixes
- fix interactive use database
- **embedded/store:** change already closed error message
- **embedded/store:** readonly tx entries to ensure no runtime modification
- **embedded/store:** reserve 4bytes in buffers for nentries
- **embedded/tbtree:** set fixed snapshot ts
- **pkg/server/sessions:** remove transaction on read conflict error
- **pkg/server/sessions/internal/transactions:** transaction is cleared after sqlExec error
- **sql:** Do not panic on error during delete
- **tx:** Remove summary from metadata

### Changes
- **embedded/store:** txmetdata placeholder with zero len
- **embedded/store:** private readonly metadata is validated when reading data
- **embedded/store:** read-only kv metadata for committed entries
- **embedded/store:** rw and readonly kv metadata
- **pkg/api:** use new kvmetadata api
- **pkg/client:** tx read conflict error is mapped in an CodInFailedSqlTransaction
- **pkg/server/sessions/internal/transactions:** defer only when needed
- **pkg/stdlib:** clean tx after rollback
- **pkg/stdlib:** fix connection creation
- **server/sessions:** modify read conflict error message

### Features
- **pkg/stdlib:** expose tx on std lib


<a name="v1.2.0"></a>
## [v1.2.0] - 2021-12-10
### Bug Fixes
- **database:** Internal consistency check on data reads
- **database/meta:** Do not crash on history with deleted items
- **pkg/database:** history skipping not found entries
- **protobuf:** Fix compatibility with 1.1 version

### Changes
- **cmd/immuadmin/command:** add super user login hint
- **embedded/sql:** use sql standard escaping with single quotes
- **embedded/sql:** support for escaped strings
- **embedded/store:** reduce attribute code size
- **embedded/store:** mandatory expiration filter
- **embedded/store:** fix expiration error declaration
- **embedded/store:** dedicated expiration error
- **embedded/store:** improve metadata serialization/deserialization methods
- **embedded/store:** validations during metadata deserialization
- **embedded/store:** return data corrupted error when deserialization cannot proceed
- **embedded/store:** easily extendable meta attributes
- **embedded/store:** use fixed time during the lifespan of a tx
- **embedded/store:** prevent value reading of expired entries
- **makefile:** remove windows binaries digital signature
- **pkg/auth:** require admin permission to export and replicate txs
- **pkg/integration:** remove useless compilation tag on tests
- **pkg/server:** deprecate GetAuth and WithAuth
- **pkg/server/sessions:** session max inactivity time set to 3m and minor stat collecting fix
- **pkg/server/sessions:** tuning sessions params
- **pkg/server/sessions:** session timeout set to 2 min

### Features
- **embedded/store:** logical entries expiration
- **pkg/api:** logical entries expiration
- **pkg/client:** expirable set


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

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

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


<a name="v1.1.0"></a>
## [v1.1.0] - 2021-09-22
### 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:** limit auto-increment to single-column pks
- **embedded/sql:** consider boolean type in maxKeyVal
- **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:** take into account table aliasing during range calculations
- **embedded/sql:** suffix endKey when scan over all entries
- **embedded/sql:** in-mem catalog rollback and syncing fixes
- **embedded/sql:** adjust selector ranges calculation
- **embedded/sql:** improve error handling and parameters validation
- **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
- remove wip warning for fully implemented features
- Remove experimental S3 warning from README
- Update codenotary maintainer info
- Update RELEASING.md with documentation step.
- Add documentation link to command line help outputs
- Add documentation link at the beginning of README.md
- Add documentation badge to README.md
- **CI:** Explicitly require bash in gh action building docker images
- **CI:** Use buildkit when building docker images
- **CI:** Build almalinux-based immudb image
- **Dockerfile:** Update base docker images
- **Dockerfile:** Use scratch as a base for immudb image
- **Dockerfile:** Build a debian-based image for immudb next to the scratch one
- **Dockerfile:** Remove unused IMMUDB_DBNAME env var
- **Makefile:** Add darwin/amd64 target
- **Makefile:** More explicit webconsole version
- **build.md:** Add info about removing webconsole/dist folder
- **cmd/immuadmin:** parse all db flags when preparing settings
- **cmd/immuadmin:** remove replication flag shortcut
- **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:** remove join constraints
- **embedded/sql:** minor refactoring to simplify code
- **embedded/sql:** convert unmapIndexedRow into unmapRow with optional indexed value
- **embedded/sql:** index prefix function
- **embedded/sql:** catalog loading requires up to date data store indexing
- **embedded/sql:** mark catalog as mutated when using auto incremental pk
- **embedded/sql:** move index spec closer to ds
- **embedded/sql:** changed identifiers length in catalog
- **embedded/sql:** move index selection closer to data source in query statements
- **embedded/sql:** minor code refactoring
- **embedded/sql:** include constraint only when insert occurs without auto_incremental pk
- **embedded/sql:** disable TIMESTAMP data-type
- **embedded/sql:** get rid of limited joint implementation
- **embedded/sql:** minor code simplification
- **embedded/sql:** ignore null values when encoding row
- **embedded/sql:** fix primary key supported types error message
- **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:** use Cols as a replacement for ColsByID
- **embedded/sql:** leverage endKey to optimize indexing scanning
- **embedded/sql:** use int64 as value holder for INTEGER type
- **embedded/sql:** add further validations when encoding values as keys
- **embedded/sql:** fix max key length validation
- **embedded/sql:** reserve byte to support multi-ordered indexes
- **embedded/sql:** expose primary key index id
- **embedded/sql:** wip scan optimizations based on query condition and sorting
- **embedded/sql:** partial progress on selector range calculation
- **embedded/sql:** validate non-null pk when decoding index entry
- **embedded/sql:** limit upsert to tables without secondary indexes
- **embedded/sql:** optional parenthesis when specifying single-column index
- **embedded/sql:** partial progress on selector range calculation
- **embedded/tbtree:** typo in log message
- **embedded/tbtree:** return kv copies
- **embedded/tbtree:** adjust seekKey based on prefix even when a value is set
- **embedded/tbtree:** compaction doesn't need snapshots to be closed
- **embedded/tools:** update sql stress tool with exec summary
- **pkg/api:** changed db identifiers type
- **pkg/api:** use follower naming for replication credentials
- **pkg/api:** use a map for holding latest auto-incremental pks
- **pkg/api:** delete deprecated clean operation
- **pkg/api:** include updated rows and last inserted pks in sql exec result
- **pkg/api:** use fresh id in proto message
- **pkg/api:** use int64 as value holder for INTEGER type
- **pkg/client:** move unit testing to integration package to avoid circular references
- **pkg/client:** changed db identifiers type
- **pkg/database:** warn about data migration needed
- **pkg/database:** update integration to exec summary
- **pkg/database:** minor adjustments based on multi-column indexing
- **pkg/database:** warn about data migration needed
- **pkg/database:** include updated rows and last inserted pks in sql exec result
- **pkg/database:** display as unique if there is a single-column index
- **pkg/database:** create sql db instance if not present
- **pkg/database:** minor refactoring coding conventions
- **pkg/database:** remove active replication options from database
- **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:** use new context for each client connection
- **pkg/replication:** handle disconnection only within a single thread
- **pkg/replication:** use info log level for network failures
- **pkg/server:** changed default db file size and make it customizable at db creation time
- **pkg/server:** change max concurrency per database to 30
- **pkg/server:** nil tlsConfig on default options
- **pkg/server:** validate replication settings
- **pkg/server:** use replica wording
- **pkg/server:** followers management
- **pkg/stdLib:** implementing golang standard sql interfaces
- **pkg/stdlib:** increase code coverage and fix blob results scan
- **pkg/stdlib:** remove pinger interface implementation and increase code coverage
- **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:** use explicitelly specified index as preffered one
- **embedded/sql:** wip unique multi-column indexes
- **embedded/sql:** wip auto-incremental integer primary keys
- **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:** support index spec in joins
- **embedded/sql:** expose scanSpecs when resolving a query
- **embedded/sql:** wip unique multi-column indexing
- **embedded/sql:** towards more powerful joins
- **embedded/sql:** inner join with joint table and subqueries
- **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:** initial support for active replication of user created databases
- **pkg/server:** upgrade db settings to include or exclude commit time
- **pkg/server:** systemdb and defaultdb follower replication


<a name="v1.0.5"></a>
## [v1.0.5] - 2021-08-02
### Bug Fixes
- bind psql port to the same IP address as grpc interface ([#867](https://github.com/vchain-us/immudb/issues/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:** revert change so to prevent nil assigments
- **embedded/store:** handle missing error case during commit phase
- **embedded/store:** Don't fail to open on corrupted commit log
- **embedded/store:** use reserved concurrency slot for indexing
- **embedded/tbtree:** use padding to ensure stored snapshots are named following lex order
- **embedded/tbtree:** garbage-less nodes log
- **embedded/tbtree:** ensure clog is the last one being synced
- **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
- move sqlutils package to schema
- Update dependencies
- increased coverage handling failure branches ([#861](https://github.com/vchain-us/immudb/issues/861))
- group user methods in a dedicated file
- Better logging when opening databases
- remove unused interceptors and add missing error code prefixes
- **appendable:** Expose validation functions of appendable options
- **appendable/multiapp:** Add hooks to the MultiFileAppender implementation
- **appendable/multiapp:** Introduce appendableLRUCache
- **cmd/immuclient:** fix panic in immuclient cli mode
- **cmd/immuclient:** update error comparisson
- **embedded:** col descriptor with attributes
- **embedded/ahtree:** minor refactoring improving readability
- **embedded/ahtree:** auto-truncate partially written commit log
- **embedded/ahtree:** minor changes towards code redabilitiy
- **embedded/cache:** Add Pop and Replace methods to LRUCache.
- **embedded/sql:** explicit catalog reloading upon failed operations
- **embedded/sql:** type specialization
- **embedded/sql:** Remove linter warnings
- **embedded/sql:** initial type specialization in place
- **embedded/sql:** remove public InferParameters operations from sql statements
- **embedded/sql:** validate either named or unnamed parameters are used within the same stmt
- **embedded/sql:** towards non-blocking sql initialization
- **embedded/sql:** parameters type inference working with aggregations
- **embedded/sql:** several adjustments and completion in type inference functions
- **embedded/sql:** dump catalog with a different database name
- **embedded/sql:** cancellable wait for catalog
- **embedded/sql:** expose InferParameters function in RowReader interface
- **embedded/store:** tx metatada serialization/deserialization
- **embedded/store:** edge-case validation with first tx
- **embedded/store:** validate replicated tx against current store
- **embedded/store:** minor refactoring improving readability
- **embedded/store:** auto-truncate partially written commit log
- **embedded/store:** minor code simplification
- **embedded/tbtree:** expose current number of snapshots
- **embedded/tbtree:** warn if an error is raised while discarding snapshots
- **embedded/tbtree:** nodes and commit prefix renaming
- **embedded/tbtree:** use setOffset for historical data overwriting
- **embedded/tbtree:** auto-truncate partially written commit log
- **embedded/tbtree:** full snapshot recovery
- **embedded/tbtree:** enable snapshot generation while compaction is in progress
- **pkg/api:** kept same attribute id in TxEntry message
- **pkg/api:** fix typo inside a comment
- **pkg/api:** remove information not required to cryptographically prove entries
- **pkg/api:** kept simple db creation api to guarantee backward compatibility
- **pkg/api:** comment on deprecated and not yet supported operations
- **pkg/auth:** list of supported operations in maintenance mode
- **pkg/database:** replace fixed naming with current database
- **pkg/database:** migrate systemdb catalog to fixed database naming
- **pkg/database:** single-store databases
- **pkg/database:** support the case where database tx is not the initial one due to migration
- **pkg/database:** no wait for indexing during tx replication
- **pkg/database:** sql operations after catalog is created
- **pkg/database:** method to retrieve row cursor based on a sql query stament
- **pkg/database:** re-construct sql engine once catalog is ready
- **pkg/database:** use fixed database name
- **pkg/database:** sql catalog per database. migration from shared catalog store when required
- **pkg/database:** sql catalog reloading on replica
- **pkg/database:** wait for sql engine initialization before closing
- **pkg/database:** log warning about WIP feature when using replication capabilities
- **pkg/database:** replace fixing naming with current database
- **pkg/database:** expose catalog loading operation
- **pkg/database:** catalog reloading by replicas
- **pkg/database:** gracefully stop by cancelling sql initialization
- **pkg/database:** internal method renaming
- **pkg/database:** log when a database is sucessfully opened
- **pkg/database:** add IsReplica method
- **pkg/database:** parameter inference for parsed statements
- **pkg/errors:** fix user operations error codes with pgsql official ones, increase coverage
- **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:** add comments
- **pkg/pgsql:** increase server coverage
- **pkg/pgsql/server:** handle empty statements
- **pkg/pgsql/server:** increase multi inserts tests number in simple and extended query
- **pkg/pgsql/server:** hardened INTEGER parameters conversion
- **pkg/pgsql/server:** some polishments in the state machine
- **pkg/pgsql/server:** simplify query machine
- **pkg/pgsql/server:** increase code coverage
- **pkg/pgsql/server:** protect  parameters description message from int16 overflown
- **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 positional parameters
- **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:** disable user mgmt operations in maintenance mode
- **pkg/server:** systemdb renaming
- **pkg/server:** move userdata lock in the inner method getLoggedInUserDataFromUsername
- **pkg/server:** remove methods moved to user file
- **pkg/server:** fix typo in error message
- **pkg/server:** remove duplicated property
- **pkg/server:** minor adjustments after rebasing from master branch
- **pkg/server:** minor updates after rebasing
- **pkg/stream:** use io.Reader interface
- **pkg/stream:** use wrapped errors
- **pkg/stream:** inject immu errors
- **pkg/stream:** fix namings on stream api objects

### 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:** adding method to infer typed parameters from sql statements
- **embedded/sql:** catalog dumping
- **embedded/sql:** towards leveraging readers for type inference
- **embedded/sql:** support for named positional parameters
- **embedded/sql:** support for unnamed parameters
- **embedded/store:** passive waiting for transaction commit
- **embedded/store:** WIP replicatedCommit
- **embedded/store:** tx export and commit replicated
- **pkg/api:** endpoints for exporting and replicating txs
- **pkg/api:** enhanced createDatabase endpoint to specify database replication
- **pkg/api:** new endpoint to update database settings
- **pkg/client:** replica creation and replication API
- **pkg/client:** implements update database settings operation
- **pkg/client:** deprecate CleanIndex operation
- **pkg/database:** db as replica and replication operations
- **pkg/database:** parameters type inference exposed in database package
- **pkg/database:** implement passive wait for committed tx
- **pkg/database:** suppport runtime replication settings changes
- **pkg/error:** add improved error handling
- **pkg/pgsql/server:** add extended query messages and inner logic
- **pkg/server:** enable simultaneous replication of systemdb and defaultdb
- **pkg/server:** stream of committed txs
- **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/stream:** readFully method to read complete payload transmitted into chunks


<a name="v1.0.1"></a>
## [v1.0.1] - 2021-06-07
### Bug Fixes
- go mod tidy/vendor with statik module ([#796](https://github.com/vchain-us/immudb/issues/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
- enhance Makefile so to automatically download latest webconsole if not already present
- README/doc updates ([#791](https://github.com/vchain-us/immudb/issues/791))
- enable webconsole in docker image
- remove mtls evironments var from dockerfile
- **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 <column> <type> NULL syntax
- **pkg/database:** enhace table description by adding nullable constraint
- **webconsole:** default web console page ([#786](https://github.com/vchain-us/immudb/issues/786))


<a name="v1.0.0"></a>
## [v1.0.0] - 2021-05-21
### Bug Fixes
- tlsConfig is always non-nil
- make prequisites fixes introduced in [#726](https://github.com/vchain-us/immudb/issues/726) ([#732](https://github.com/vchain-us/immudb/issues/732))
- fix windows installer service and missing flags
- **cmd/immuclient/immuclienttest:** fix options injection in client test helper ([#749](https://github.com/vchain-us/immudb/issues/749))
- **embedded:** ensure readers get properly closed
- **embedded/sql:** close reader after loading catalog
- **embedded/sql:** add missing error handling
- **embedded/sql:** fix selector aliasing
- **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:** unwrap parameter before calling sqlexec
- **pkg/database:** use SQLPrefix when reopening database
- **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
- bundle webconsole inside dist binaries
- fix rebase leftovers
- fix acronym uppercase
- reword wire compatibility
- increase coverage and minor fix
- make roadmap about pgsql wire more explicit ([#723](https://github.com/vchain-us/immudb/issues/723))
- expose missing methods to REST ([#725](https://github.com/vchain-us/immudb/issues/725))
- inject immudb user authentication
- fix makefile leftovers
- improved make dist script
- move concrete class dblist to database package
- revert 3114f927adf4a9b62c4754d42da88173907a3a9f in order to allow insecure connection on grpc server
- dblist interface is moved to database package and extended
- add pgsql related flags
- **cmd/immuclient:** query result rendering
- **cmd/immuclient:** add describe, list, exec and query commands to immuclient shell
- **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:** remove parsing path option in unix
- **cmd/immudb/command:** handle tls configuration errors
- **embedded/cache:** thread-safe lru-cache
- **embedded/sql:** expose functionality needed for row verification
- **embedded/sql:** minor refactoring to expose functionality needed for row verification
- **embedded/sql:** case insensitive identifiers
- **embedded/sql:** case insensitive functions
- **embedded/sql:** resolve query with current snapshot if readers are still open
- **embedded/sql:** set 'x' as blob prefix
- **embedded/sql:** move sql engine under embedded package
- **embedded/sql:** store non-null values and only col ids on encoded rows
- **embedded/sql:** safer support for selected database
- **embedded/sql:** validate table is empty before index creation
- **embedded/sql:** skip tabs
- **embedded/sql:** keep one snapshot open and close when releasing
- **embedded/sql:** improved nullables
- **embedded/store:** pausable indexer
- **embedded/store:** commitWith callback using KeyIndex interface
- **embedded/store:** index info to return latest indexed tx
- **embedded/store:** use indexer state to terminate indexing goroutine
- **embedded/store:** log during compaction
- **embedded/tbree:** postpone reader initialization until first read
- **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/tbtree:** make snapshot thread-safe
- **embedded/watchers:** cancellable wait
- **pkg/api:** render varchar as raw string value
- **pkg/api:** include data needed for row verification
- **pkg/api:** render varchar as quoted string
- **pkg/api:** render varchar as quoted strings
- **pkg/api:** sql api spec
- **pkg/api/schema:** Handle tools via modules ([#726](https://github.com/vchain-us/immudb/issues/726))
- **pkg/auth:** add SQL-related permissions
- **pkg/auth:** perm spec for row verification endpoint
- **pkg/client:** remove deprecated operations
- **pkg/client:** use  to fetch current database name
- **pkg/client:** auto convert numeric values to uint64
- **pkg/client:** improved sql API
- **pkg/client/cache:** release lock only if locked file is present, and wait for unlock when already present
- **pkg/database:** set implicit database using `UseDatabase` method
- **pkg/database:** typed-value proto conversion
- **pkg/database:** towards prepared sql query support
- **pkg/database:** row verification against kv-entries
- **pkg/database:** improved parameters support
- **pkg/database:** return mapped row values
- **pkg/database:** upgrade ExecAll to use KeyIndex interface
- **pkg/database:** add missing copy
- **pkg/database:** support index compaction with sql engine in place
- **pkg/database:** support multi-selected columns
- **pkg/database:** use store-level snapshots
- **pkg/database:** upgrade wait for indexing api
- **pkg/database:** ensure rowReader get closed upon completion
- **pkg/database:** use MaxKeyScanLimit to limit query results
- **pkg/database:** support for nullable values
- **pkg/database:** close sql engine when db gets closed
- **pkg/database:** make use of UseDatabase operation
- **pkg/embedded:** introduce Snapshot at Store level
- **pkg/pgsql:** handle empty response and command complete message
- **pkg/pgsql:** add pgsql server wire protocol stub
- **pkg/pgsql:** handle parameter status and terminate messages
- **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/client:** add jackc/pgx pgsql client for testing purpose
- **pkg/pgsql/server:** limit number of total connections and do not stop server in case of errors
- **pkg/pgsql/server:** handle an ssl connection request if no certificate is present on server
- **pkg/pgsql/server:** protect simple query flow with a mutex
- **pkg/pgsql/server:** enforce reserved statements checks
- **pkg/pgsql/server:** handle version statement
- **pkg/pgsql/server:** default error in simplequery loop has error severity
- **pkg/pgsql/server:** add missing copyright
- **pkg/pgsql/server:** remove host parameter
- **pkg/pgsql/server:** move sysdb in session constructor
- **pkg/pgsql/server:** add debug logging messages, split session handling in multiple files
- **pkg/pgsql/server:** improve error handling when client message is not recognized
- **pkg/pgsql/server:** fix connection upgrade pgsql protocol messages
- **pkg/pgsql/server:** minor fixes and leftovers
- **pkg/server:** use systemdb as a shared catalog store
- **pkg/server:** fix db mock
- **pkg/server:** remove unused options
- **pkg/server:** remove tls configuration in server
- **pkg/server:** inject sqlserver in main immudb server
- **pkg/server:** renamed server reference
- **pkg/server:** load systemdb before any other db
- **pkg/sql:** alias overriding datasource name
- **pkg/sql:** add comment about nested joins
- **pkg/sql:** refactored AggregatedValue and TypedValue interfaces
- **pkg/sql:** unify augmented and grouped row readers
- **pkg/sql:** support for SUM aggregations
- **pkg/sql:** row reader to support GROUP BY behaviour
- **pkg/sql:** grammar adjustments to support aggregated columns
- **pkg/sql:** swap LIMIT and ORDER BY parse ordering
- **pkg/sql:** many internal adjustments related to name binding
- **pkg/sql:** ensure use snapshot is on the range of committed txs
- **pkg/sql:** joint column with explicit table reference
- **pkg/sql:** upgrade to new store commit api
- **pkg/sql:** support multiple spacing between statements
- **pkg/sql:** column descriptors in row readers
- **pkg/sql:** improve error handling
- **pkg/sql:** return ErrNoMoreRows when reading
- **pkg/sql:** towards catalog encapsulation
- **pkg/sql:** improved null value support
- **pkg/sql:** order-preserving result set
- **pkg/sql:** using new KeyReaderSpec
- **pkg/sql:** joins limited to INNER type and equality comparison against ref table PK
- **pkg/sql:** row reader used to close the snapshot once reading is completed
- **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:** make row values externally accessible
- **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:** catalog construct
- **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
- **tools/stream:** upgrade stream tools dependencies

### Code Refactoring
- **pkg/server:** tls configuration is moved in command package from server

### Features
- display version at startup ([#775](https://github.com/vchain-us/immudb/issues/775))
- enhance database size and number of entries metrics to support multiple databases add CORS middleware to metrics HTTP endpoints ([#756](https://github.com/vchain-us/immudb/issues/756))
- CREATE TABLE IF NOT EXISTS ([#738](https://github.com/vchain-us/immudb/issues/738))
- **cmd/immuclient:** list and describe tables
- **cmd/immuclient:** use 'tables' to display the list of tables within selected database
- **embedded/sql:** use snapshot as state method
- **embedded/sql:** arithmetic expressions within where clause
- **embedded/sql:** 'NOT NULL' constraint
- **embedded/sql:** special case when all selectors are aggregations and there is no matching rows
- **embedded/sql:** enhanced sql parser to support multi-lined statements
- **embedded/sql:** INSERT INTO statement
- **embedded/sql:** LIKE operator support
- **embedded/store:** uniqueness constraint and de-coupled indexer
- **embedded/store:**  operation
- **embedded/tools:** initial SQL stress tool ([#760](https://github.com/vchain-us/immudb/issues/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:** towards sql support
- **pkg/database:** towards integrated sql engine. handling database creation at server level
- **pkg/database:** list and describe tables
- **pkg/database:** row verification endpoint
- **pkg/pgsql:** add tls support
- **pkg/pgsql/server:** dblist is injected in pgsql server
- **pkg/pgsql/server:** setup pgsqk error handling
- **pkg/pgsql/server:** handle nil values
- **pkg/server:** expose  endpoint
- **pkg/server:** row verification endpoint
- **pkg/server:** initial integration of sql engine
- **pkg/sql:** column selector alias support
- **pkg/sql:** jointRowReader towards supporting joins
- **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:** aggregations without row grouping
- **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


<a name="cnlc-2.2"></a>
## [cnlc-2.2] - 2021-04-28
### Bug Fixes
- update Discord invite link
- readme typo and mascot placement ([#693](https://github.com/vchain-us/immudb/issues/693))
- **embedded/store:** ensure done message is received
- **pkg/client:** delete token file on logout only if the file exists

### Changes
- github workflow to run stress_tool ([#714](https://github.com/vchain-us/immudb/issues/714))
- README SDK description and links ([#717](https://github.com/vchain-us/immudb/issues/717))
- fix immugw support
- Add roadmap
- Add benchmark to README (based on 0.9.x) ([#706](https://github.com/vchain-us/immudb/issues/706))
- remove grpc term from token expiration description
- **embedded/store:** use specified sync mode also for the incremental hash tree
- **embedded/store:** check latest indexed tx is not greater than latest committed one
- **embedded/store:** defer lock releasing
- **pkg/client/clienttest:** add VerifiedGetAt mock method
- **pkg/database:** use newly exposed KeyReaderSpec

### Features
- add token expiration time flag
- **embedded/store:** readAsBefore and reset reader
- **pkg/sql:** readAsBefore operation


<a name="v0.9.2"></a>
## [v0.9.2] - 2021-04-08
### Bug Fixes
- include AtTx in StreamZScan response
- password reader 'inappropriate ioctl for device' from stdin ([#658](https://github.com/vchain-us/immudb/issues/658))
- fix StreamVerifiedSet and Get and add an (integration) test for them
- fix inclusion proofs in StreamVerifiedSet and Get
- **embedded:** use mutex to sync ops at tx lru-cache
- **embedded:** fix data races
- **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:** fix indexing sync and error retrieval
- **embedded/store:** ensure watchers get notified when indexing is up-to-date
- **embedded/store:** sync ReadTx operation
- **embedded/tbtree:** set lastSnapshot once flushed is completed
- **embedded/tbtree:** insertion delay while compacting not affecting compaction
- **embedded/tbtree:** release lock when compaction thld was not reached
- **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
- refactor code quality issues
- improve serverside stream error handling
- remove fake proveSinceTxBs key send in streamVerifiableSet
- polish streams methods and add comments
- renaming stream methods
- updating copyright
- renaming stream methods, add stubs and stream service factory
- in server store creation max value entry is fixed to 32Mb
- set stream supports multiple key values
- mocked server uses the inner immudb grpc server and can be gracefully stopped
- fixed minimum chunk size at 4096 bytes
- add max tx values length guard and remove code duplication
- fix binary notation
- move stream service to a proper package
- add video streamer command
- increase stream coverage and add a guard if key is present on a stream but no value is found
- **embedded:** fix some typos with comments
- **embedded:** remove unused cbuffer package
- **embedded:** log indexing notifications
- **embedded:** descriptive logs on indexing and already closed errors
- **embedded:** add logs into relevant operations
- **embedded:** add logger
- **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 conditional locking before dumping index
- **embedded/store:** general improvements on snapshot management
- **embedded/store:** leverage fine-grained locking when reading tx data
- **embedded/store:** stop indexing while commiting with callback
- **embedded/store:** use buffered channel instead of a circular buffer
- **embedded/store:** remove duplicated logging
- **embedded/store:** set max file size to 2Gb ([#649](https://github.com/vchain-us/immudb/issues/649))
- **embedded/store:** lock-less readTx
- **embedded/store:** set a limit on indexing iteration
- **embedded/store:** log number of transactions yet to be indexed
- **embedded/tbtree:** optimize seek position
- **embedded/tbtree:** revert seek key setting
- **embedded/tbtree:** optimize seek position
- **embedded/tbtree:** terminate reader if prefix won't match any more
- **embedded/tbtree:** sync before dumping
- **embedded/tbtree:** sync key-history log during compaction
- **embedded/watchers:** broadcasting optimisation
- **embedded/watchers:** minor renaming
- **embedded/watchers:** accept non-continuous notification
- **pkg/client:** add stream service factory on client and increase stream coverage
- **pkg/client:** add GetKeyValuesFromFiles helper method
- **pkg/client:** add a guard to check for min chunk size
- **pkg/client:** remove local files tests
- **pkg/client:** maps server error on client package
- **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:** ensure scan runs over fully up-to-date snapshot
- **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:** illegal state guard is added to verifiable get and getTx methods
- **pkg/database:** leverage lightweight waiting features of embedded store
- **pkg/server:** add a guard to check for min chunk size
- **pkg/server:** add server error mapper interceptor
- **pkg/server:** add small delay for indexing to be completed
- **pkg/server:** max recv msg size is set to 32M
- **pkg/server:** revert quit chan exposure
- **pkg/server:** exposes Quit chan
- **pkg/stream:** add more corner cases guards
- **pkg/stream:** add some comments to mesasge receiver
- **pkg/stream:** remove duplicated code
- **pkg/stream:** renamed stream test package
- **pkg/stream:** add a guard to detect ErrNotEnoughDataOnStream on client side
- **pkg/stream:** remove bufio.reader when not needed
- **pkg/stream:** remove bufio and add ventryreceiver unit test
- **pkg/stream:** add ErrNotEnoughDataOnStream error and ImmuServiceReceiver_StreamMock
- **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
- Remove unnecessary dependencies ([#665](https://github.com/vchain-us/immudb/issues/665))
- add support for user, password and database flags in immuclient ([#659](https://github.com/vchain-us/immudb/issues/659))
- increase default store max value length to 32MB
- add client->server stream handler
- refactors and implement server->client stream handler
- Add StreamVerifiedSet and StreamVerifiedGet
- add flusher to stream data to client
- chunk size is passed as argument in client and server
- add Stream Scan and client stream ServiceFactory
- **embedded/store:** integrate watchers to support indexing synchronicity
- **embedded/store:** configurable compaction threshold to set the min number of snapshots for a compaction to be done
- **embedded/store:** expose insertion delay while compacting
- **embedded/store:** tx header cache to speed up indexing
- **embedded/tbtree:** automatically set seekKey based on prefixKey when it's not set
- **embedded/tbtree:** configurable insertion delay while compaction is in progress
- **embedded/watchers:** lightweight watching center
- **embedded/watchers:** fetchable current state
- **pkg/client:** handle illegal state error
- **pkg/database:** non-blocking index compaction
- **pkg/database:** non-blocking, no history 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


<a name="v0.9.1"></a>
## [v0.9.1] - 2021-02-08
### Bug Fixes
- **cmd/sservice:** fix services management and add permissions guard
- **cmd/sservice:** fix group creation linux cross command
- **embedded/history:** read history log file to set initial offset
- **embedded/store:** copy key inside TxEntry constructor
- **embedded/store:** mutex on txlog
- **embedded/store:** continued indexing
- **embedded/store:** fix indexing sync ([#621](https://github.com/vchain-us/immudb/issues/621))
- **embedded/tbtree:** determine entry by provided seekKey
- **embedded/tbtree:** fix key history ordering ([#619](https://github.com/vchain-us/immudb/issues/619))
- **embedded/tbtree:** prevNode nil comparisson
- **embedded/tbtree:** use minkey for desc scan
- **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:** adapt after History changes
- **embedded/store:** move TxReader code to its own file
- **embedded/store:** renamed reader as KeyReader
- **embedded/store:** use conditional locking in indexing thread
- **embedded/store:** minor KeyReader renaming
- **embedded/store:** validates targetTx is consistent with proof len
- **embedded/store:** sync access to commit and tx logs
- **embedded/store/options.go:** increase DefaultMaxKeyLen
- **embedded/tbtree:** offset map per branch
- **embedded/tbtree:** return ErrOffsetOutOfRange if invalid offset was provided
- **embedded/tbtree:** reduce mem consumption
- **embedded/tbtree:** history log file
- **embedded/tbtree:** configurable max key length
- **embedded/tbtree:** change history file extension
- **pkg:** unit testing index cleanup, use selected db
- **pkg:** current db included in signed state
- **pkg/api:** minor changes in TxScan message
- **pkg/api:** history limit as int32
- **pkg/api:** include server uuid and db name into state message
- **pkg/client:** validate returned entries from metadata
- **pkg/client:** bound reference if atTx is provided in VerifiedSetReferenceAt
- **pkg/client:** use indexing specified in GetRequest
- **pkg/client:** strip prefix from returned keys in txById and verifiedTxById
- **pkg/client:** add state service lock and unlock capabilities
- **pkg/client:** set bound on SetReference and ZAdd
- **pkg/database:** unsafe read tx inside CommitWith callback
- **pkg/database:** catch NoMoreEntries error and return empty list on scan and zscan operations
- **pkg/database:** return empty list if offset is out of range
- **pkg/database:** initial implementation of ExecAll with CommitWith
- **pkg/server:** naming conventions
- **pkg/server:** server mock wrapping default server implementation
- **pkg/server:** include uuid and db as result of verifiable operations
- **pkg/server:** initialize mts options
- **pkg/server:** expose store opts
- **pkg/server:** use server wrapper to enable post processing of results
- **pkg/server:** set default max value lenght to 1Mb
- **pkg/server:** change server default options. Max key value to 10kb

### Features
- **cmd/immuadmin:** db index cleanup
- **embedded:** history with offset and limit, key updates counting
- **embedded/appendable:** flush and seek to start before copying
- **embedded/appendable:** implements Copy function
- **embedded/appendable:** check no closed and flush before copying
- **embedded/store:** commitWith callback receiving assigned txID
- **embedded/store:** TxScan asc/desc order
- **embedded/store:** index cleanup
- **embedded/store:** allow increasing max value size after creation time
- **embedded/tbtree:** full dump of current snapshot
- **embedded/tbtree:** complete history implementation
- **embedded/tbtree:** HistoryReader to iterate over key updates
- **embedded/tbtree:** full dump using copy on history log
- **pkg:** index cleanup service
- **pkg/client:** add state file locker
- **pkg/client:** add verifiedGetSince
- **pkg/client:** implementation of TxScan operation
- **pkg/database:** history with offset and limit
- **pkg/database:** TxScan implementation
- **pkg/database:** support for free and bound references
- **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


<a name="v0.9.0"></a>
## [v0.9.0] - 2021-01-07
### Bug Fixes
- remove badger metrics and fix stats command
- **cmd/immuadmin/command:** fix immuadmin stats ([#592](https://github.com/vchain-us/immudb/issues/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](https://github.com/vchain-us/immudb/issues/595))

### Features
- add signature verification with a submitted public key


<a name="v0.9.0-RC2"></a>
## [v0.9.0-RC2] - 2020-12-29
### 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


<a name="v0.9.0-RC1"></a>
## [v0.9.0-RC1] - 2020-12-22
### 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:** add cyclic references validation during resolution
- **pkg/database:** working scan and zscan without pagination
- **pkg/database:** adjust execAll method
- **pkg/database:** referenced key lookup when atTx is non-zero
- **pkg/database:** use EncodeReference in ExecAllIOps
- **pkg/database:** lookup for referenced key when atTx is non-zero
- **pkg/databse:** encoding of reference and zadd

### Changes
- proof proto definition
- datatype conversion methods
- remove badger and merkletree dependencies
- inject store reader inside zscan
- partial fix of scan test
- new proto definitions
- **api/schema:** removed consistency method
- **cmd:** adjusted commandline tools
- **cmd/immuclient:** add support for safe operations
- **cmd/immuclient:** add verified operations
- **database:** implements safeSet operation
- **database:** implements ByIndex operation
- **database:** implements safeByIndex operation
- **database:** contemplates the case not previously verified tx
- **database:** several fixes and unit testing adaptation
- **embedded:** rename as SnapshotSince
- **embedded/htree:** internal linear proof renaming
- **embedded/htree:** minor changes in proof struct
- **embedded/store:** add method to retrieve tx metadata
- **embedded/store:** minor proof renaming
- **embedded/store:** return txMetadata when tx on commit
- **embedded/store:** return ErrTxNotFound when attemping to read non-existent tx
- **embedded/store:** minor changes in proof struct
- **embedded/store:** allow empty values and don't attempt to store in vlog
- **embedded/store:** add tx constructor with entries
- **embedded/store:** adjustments on store reader
- **embedded/store:** change tx proof method signature
- **embedded/store:** wrap keyNotFound index error
- **embedded/store:** add snapshotAt and adjust based on it
- **pkg:** rename to CurrentState
- **pkg:** several minor changes
- **pkg:** rename to ReferenceRequest
- **pkg:** rename to sinceTx
- **pkg/api:** add vLen property to TxEntry
- **pkg/api:** new proof messages
- **pkg/api:** several improvements on grpc api
- **pkg/api:** remove digest data type
- **pkg/api:** rename to Entry and ZEntry and embedded Reference
- **pkg/api:** add copyright notice
- **pkg/api:** new server proto definition
- **pkg/auth:** adjust permissions based on new api
- **pkg/client:** adjusted client providers
- **pkg/client:** adjusted golang client
- **pkg/client:** add safe method alises for backwards familiarity
- **pkg/client:** minor renaming to improve readability
- **pkg/database:** zscan order with tx after key
- **pkg/database:** implements new DB api using embedded storage
- **pkg/database:** add sinceTx to reference and make it handle key prefixes
- **pkg/database:** remove ambiguity in references
- **pkg/database:** minor adjustments
- **pkg/database:** get from snapshot or directly from store
- **pkg/database:** return functionality not yet implemented for VerifiableSetReference
- **pkg/database:** wait for indexing on execAll
- **pkg/database:** delay locking until indexing is done
- **pkg/database:** mutex for reusable txs
- **pkg/database:** fix get/set with prefix wrapping/unwrapping
- **pkg/database:** fixed methods with prefix mgmt, including scan
- **pkg/ring:** remove ring pkg
- **pkg/server:** proof construction in safeget operation
- **pkg/server:** disable proactive corruption checker
- **pkg/server:** partial use of embedded storage
- **pkg/server:** return number of tx as db size
- **pkg/server:** getBatch operation
- **pkg/server:** adjusted state signer
- **pkg/server:** adjusted UUID handler
- **pkg/server:** prevent logging request details
- **pkg/server:** adapt implementation to new api
- **pkg/server:** adapt to new database implementation
- **pkg/server:** disable cc
- **pkg/server:** remove in-memory option
- **pkg/server:** implements history operation
- **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:** add Get operation without the need of a snapshot
- **embedded:** inclusiveSeek point when reading
- **embedded/tbtree:** use seek and prefix
- **pkg/client:** implements latest server API
- **pkg/client:** add GetSince method
- **pkg/database:** uniform implementation for set, references, zadd, scan and zscan operations
- **pkg/database:** verify reference upon key resolution
- **pkg/database:** complete set and get reference methods
- **pkg/database:** add execAllOps
- **pkg/database:** support for seekable scanning
- **pkg/database:** consistent reference handling, prevent cyclic references
- **pkg/server:** expose store options


<a name="v0.8.1"></a>
## [v0.8.1] - 2020-12-08
### Bug Fixes
- file ext removal
- consider the case when key was not yet inserted
- add permissions for the new CountAll gRPC method
- fix batchOps tests and minors fix for zAdd sorted set key generation
- avoid duplicate index insertion in zAdd batch operation transaction
- restore current offset after reading compressed data
- encode metadata numeric fields with 64bits
- appendable extensions without dot
- 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
- appID parsing from filename
- set new appendable id when changing current appendable
- typos
- fix batchOps permission and clean sv ones
- return EOF when data cannot be fully read from appendables
- **embedded:** set correct offset while reading node
- **embedded/store:** release tx before linear proof generation
- **embedded/store:** use verificatication methods for dual proof evaluation
- **embedded/tools:** catch ErrNoMoreEntries when iterating over txs ([#569](https://github.com/vchain-us/immudb/issues/569))
- **pkg:** handle expired token error
- **pkg/client:** handle rootservice error inside constructor
- **pkg/client:** token service is not mandatory for setup a client
- **pkg/store:** fix bug on lexic
Download .txt
gitextract_tb5jme5f/

├── .chglog/
│   ├── CHANGELOG.tpl.md
│   └── config.yml
├── .codeclimate.yml
├── .dockerignore
├── .editorconfig
├── .github/
│   ├── ACTIONS_SECRETS.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature-request.md
│   ├── dependabot.yaml
│   └── workflows/
│       ├── codeql.yml
│       ├── performance.yml
│       ├── pull.yml
│       ├── push-dev.yml
│       ├── push.yml
│       └── stress.yml
├── .gitignore
├── .golangci.yml
├── .pre-commit-config.yaml
├── ACKNOWLEDGEMENTS.md
├── BUILD.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── build/
│   ├── Dockerfile
│   ├── Dockerfile.alma
│   ├── Dockerfile.full
│   ├── Dockerfile.immuadmin
│   ├── Dockerfile.immuclient
│   ├── Dockerfile.rndpass
│   ├── RELEASING.md
│   ├── e2e/
│   │   └── Dockerfile
│   ├── fips/
│   │   ├── Dockerfile
│   │   ├── Dockerfile.build
│   │   ├── Dockerfile.immuadmin
│   │   ├── Dockerfile.immuclient
│   │   └── check-fips.sh
│   ├── gen-downloads-md.sh
│   └── xgo/
│       ├── Dockerfile
│       └── build.sh
├── cmd/
│   ├── cmdtest/
│   │   ├── random.go
│   │   └── stdout_collector.go
│   ├── docs/
│   │   └── man/
│   │       ├── generate.go
│   │       └── generate_test.go
│   ├── helper/
│   │   ├── color_unix.go
│   │   ├── color_unix_test.go
│   │   ├── color_windows.go
│   │   ├── config.go
│   │   ├── config_pathmanager_unix.go
│   │   ├── config_pathmanager_windows.go
│   │   ├── config_test.go
│   │   ├── detached.go
│   │   ├── detached_test.go
│   │   ├── error.go
│   │   ├── size.go
│   │   ├── size_test.go
│   │   ├── table_printer.go
│   │   ├── table_printer_test.go
│   │   ├── terminal.go
│   │   └── terminal_test.go
│   ├── immuadmin/
│   │   ├── command/
│   │   │   ├── backup.go
│   │   │   ├── backup_test.go
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   ├── commandline.go
│   │   │   ├── commandline_test.go
│   │   │   ├── database.go
│   │   │   ├── database_test.go
│   │   │   ├── hot_backup.go
│   │   │   ├── hot_backup_test.go
│   │   │   ├── init.go
│   │   │   ├── init_test.go
│   │   │   ├── login.go
│   │   │   ├── login_errors_test.go
│   │   │   ├── login_test.go
│   │   │   ├── root.go
│   │   │   ├── serverconfig.go
│   │   │   ├── serverconfig_test.go
│   │   │   ├── stats/
│   │   │   │   ├── controller.go
│   │   │   │   ├── controller_test.go
│   │   │   │   ├── metrics.go
│   │   │   │   ├── metricsloader.go
│   │   │   │   ├── show.go
│   │   │   │   ├── show_test.go
│   │   │   │   ├── statstest/
│   │   │   │   │   └── statsResponse.go
│   │   │   │   ├── ui.go
│   │   │   │   └── ui_test.go
│   │   │   ├── stats.go
│   │   │   ├── stats_test.go
│   │   │   ├── testdata/
│   │   │   │   ├── 1-10.backup
│   │   │   │   ├── 1-13.backup
│   │   │   │   ├── 10-11.backup
│   │   │   │   ├── 12-14.backup
│   │   │   │   └── 14-15_modified.backup
│   │   │   ├── user.go
│   │   │   └── user_test.go
│   │   ├── fips/
│   │   │   └── fips.go
│   │   └── immuadmin.go
│   ├── immuclient/
│   │   ├── audit/
│   │   │   ├── auditagent.go
│   │   │   ├── auditagent_test.go
│   │   │   ├── auditor.go
│   │   │   ├── auditor_test.go
│   │   │   ├── executable.go
│   │   │   ├── executable_test.go
│   │   │   ├── init.go
│   │   │   ├── init_test.go
│   │   │   ├── metrics.go
│   │   │   ├── metrics_test.go
│   │   │   ├── utils.go
│   │   │   └── utils_test.go
│   │   ├── cli/
│   │   │   ├── cli.go
│   │   │   ├── cli_test.go
│   │   │   ├── currentstatus.go
│   │   │   ├── currentstatus_test.go
│   │   │   ├── getcommands.go
│   │   │   ├── getcommands_test.go
│   │   │   ├── login.go
│   │   │   ├── login_test.go
│   │   │   ├── misc.go
│   │   │   ├── misc_test.go
│   │   │   ├── recommend.go
│   │   │   ├── recommend_test.go
│   │   │   ├── references.go
│   │   │   ├── references_test.go
│   │   │   ├── register.go
│   │   │   ├── register_test.go
│   │   │   ├── scanners.go
│   │   │   ├── scanners_test.go
│   │   │   ├── server_info.go
│   │   │   ├── setcommands.go
│   │   │   ├── setcommands_test.go
│   │   │   ├── sql.go
│   │   │   ├── sql_test.go
│   │   │   ├── unixcmds.go
│   │   │   └── unixcmds_test.go
│   │   ├── command/
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   ├── commandline.go
│   │   │   ├── commandline_test.go
│   │   │   ├── currentstatus.go
│   │   │   ├── currentstatus_test.go
│   │   │   ├── getcommands.go
│   │   │   ├── getcommands_test.go
│   │   │   ├── init.go
│   │   │   ├── init_test.go
│   │   │   ├── login.go
│   │   │   ├── login_test.go
│   │   │   ├── misc.go
│   │   │   ├── misc_test.go
│   │   │   ├── references.go
│   │   │   ├── references_test.go
│   │   │   ├── root.go
│   │   │   ├── scanners.go
│   │   │   ├── scanners_test.go
│   │   │   ├── server_info.go
│   │   │   ├── server_info_test.go
│   │   │   ├── setcommands.go
│   │   │   ├── setcommands_test.go
│   │   │   ├── sql.go
│   │   │   ├── tamperproofing.go
│   │   │   └── tamperproofing_test.go
│   │   ├── fips/
│   │   │   └── fips.go
│   │   ├── immuc/
│   │   │   ├── currentstatus.go
│   │   │   ├── currentstatus_errors_test.go
│   │   │   ├── currentstatus_test.go
│   │   │   ├── getcommands.go
│   │   │   ├── getcommands_errors_test.go
│   │   │   ├── getcommands_test.go
│   │   │   ├── history.go
│   │   │   ├── history_test.go
│   │   │   ├── init.go
│   │   │   ├── init_errors_test.go
│   │   │   ├── init_test.go
│   │   │   ├── login.go
│   │   │   ├── login_errors_test.go
│   │   │   ├── login_test.go
│   │   │   ├── misc.go
│   │   │   ├── misc_errors_test.go
│   │   │   ├── misc_test.go
│   │   │   ├── options.go
│   │   │   ├── options_test.go
│   │   │   ├── print.go
│   │   │   ├── references.go
│   │   │   ├── references_errors_test.go
│   │   │   ├── references_test.go
│   │   │   ├── scanners.go
│   │   │   ├── scanners_errors_test.go
│   │   │   ├── scanners_test.go
│   │   │   ├── server_info.go
│   │   │   ├── server_info_test.go
│   │   │   ├── setcommands.go
│   │   │   ├── setcommands_errors_test.go
│   │   │   ├── setcommands_test.go
│   │   │   └── sql.go
│   │   ├── immuclient.go
│   │   ├── immuclienttest/
│   │   │   └── helper.go
│   │   └── service/
│   │       ├── configs/
│   │       │   ├── immuclient.toml.freebsd.dist.go
│   │       │   ├── immuclient.toml.linux.dist.go
│   │       │   └── immuclient.toml.windows.dist.go
│   │       └── constants/
│   │           ├── freebsd.dist.go
│   │           ├── linux.dist.go
│   │           └── windows.dist.go
│   ├── immudb/
│   │   ├── command/
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   ├── commandline.go
│   │   │   ├── commandline_test.go
│   │   │   ├── immudbcmdtest/
│   │   │   │   ├── immuServerMock.go
│   │   │   │   ├── immuServerMock_test.go
│   │   │   │   └── manpageservice.go
│   │   │   ├── init.go
│   │   │   ├── parse_options.go
│   │   │   ├── root.go
│   │   │   ├── root_test.go
│   │   │   ├── service/
│   │   │   │   ├── commandline.go
│   │   │   │   ├── commandline_test.go
│   │   │   │   ├── config/
│   │   │   │   │   ├── immudb.toml.freebsd.dist.go
│   │   │   │   │   ├── immudb.toml.linux.dist.go
│   │   │   │   │   └── immudb.toml.windows.dist.go
│   │   │   │   ├── constant.go
│   │   │   │   ├── constants/
│   │   │   │   │   ├── freebsd.dist.go
│   │   │   │   │   ├── linux.dist.go
│   │   │   │   │   └── windows.dist.go
│   │   │   │   ├── service.go
│   │   │   │   ├── service_test.go
│   │   │   │   └── servicetest/
│   │   │   │       ├── commandline.go
│   │   │   │       ├── configservice.go
│   │   │   │       ├── daemon.go
│   │   │   │       ├── server.go
│   │   │   │       └── sservice.go
│   │   │   ├── tls_config.go
│   │   │   └── tls_config_test.go
│   │   ├── fips/
│   │   │   └── fips.go
│   │   └── immudb.go
│   ├── immutest/
│   │   ├── command/
│   │   │   ├── cmd.go
│   │   │   ├── cmd_test.go
│   │   │   └── init.go
│   │   ├── immutest.go
│   │   └── immutest_test.go
│   ├── sservice/
│   │   ├── constant.go
│   │   ├── manpageservice.go
│   │   ├── manpageservice_test.go
│   │   ├── option.go
│   │   ├── option_test.go
│   │   ├── sservice.go
│   │   ├── sservice_freebsd.go
│   │   ├── sservice_unix.go
│   │   ├── sservice_unix_test.go
│   │   ├── sservice_windows.go
│   │   └── sservice_windows_test.go
│   └── version/
│       ├── cmd.go
│       └── cmd_test.go
├── codecov.yml
├── configs/
│   ├── immuadmin.toml
│   ├── immuclient.toml
│   ├── immudb.toml
│   └── immutest.toml
├── docs/
│   └── security/
│       ├── PROOFS.md
│       └── vulnerabilities/
│           └── linear-fake/
│               ├── Dockerfile
│               ├── README.md
│               ├── docker-compose.yml
│               ├── go/
│               │   ├── go.mod
│               │   ├── go.sum
│               │   └── main.go
│               ├── python/
│               │   ├── .gitignore
│               │   ├── Pipfile
│               │   └── main.py
│               └── server/
│                   ├── data_generation/
│                   │   └── state_values_generation_test.go
│                   ├── go.mod
│                   ├── go.sum
│                   ├── go_client_test.go
│                   ├── main.go
│                   ├── server.go
│                   └── state_values.go
├── embedded/
│   ├── ahtree/
│   │   ├── ahtree.go
│   │   ├── ahtree_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── verification.go
│   │   └── verification_test.go
│   ├── appendable/
│   │   ├── appendable.go
│   │   ├── fileutils/
│   │   │   ├── fileutils.go
│   │   │   ├── fileutils_darwin.go
│   │   │   ├── fileutils_freebsd.go
│   │   │   ├── fileutils_linux.go
│   │   │   ├── fileutils_unix_nonlinux.go
│   │   │   └── fileutils_windows.go
│   │   ├── metadata.go
│   │   ├── metadata_test.go
│   │   ├── mocked/
│   │   │   ├── mocked.go
│   │   │   └── mocked_test.go
│   │   ├── multiapp/
│   │   │   ├── appendable_cache.go
│   │   │   ├── appendable_cache_test.go
│   │   │   ├── metrics.go
│   │   │   ├── multi_app.go
│   │   │   ├── multi_app_test.go
│   │   │   ├── options.go
│   │   │   └── options_test.go
│   │   ├── reader.go
│   │   ├── reader_test.go
│   │   ├── remoteapp/
│   │   │   ├── chunk_state.go
│   │   │   ├── chunk_state_test.go
│   │   │   ├── chunked_process.go
│   │   │   ├── chunked_process_test.go
│   │   │   ├── errors.go
│   │   │   ├── metrics.go
│   │   │   ├── options.go
│   │   │   ├── options_test.go
│   │   │   ├── remote_app.go
│   │   │   ├── remote_app_test.go
│   │   │   ├── remote_storage_reader.go
│   │   │   └── remote_storage_reader_test.go
│   │   └── singleapp/
│   │       ├── options.go
│   │       ├── options_test.go
│   │       ├── single_app.go
│   │       └── single_app_test.go
│   ├── cache/
│   │   ├── cache.go
│   │   └── cache_test.go
│   ├── document/
│   │   ├── document_id.go
│   │   ├── document_id_test.go
│   │   ├── document_reader.go
│   │   ├── engine.go
│   │   ├── engine_test.go
│   │   ├── errors.go
│   │   ├── errors_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── type_conversions.go
│   │   └── type_conversions_test.go
│   ├── errors.go
│   ├── htree/
│   │   ├── htree.go
│   │   └── htree_test.go
│   ├── logger/
│   │   ├── file.go
│   │   ├── file_test.go
│   │   ├── json.go
│   │   ├── json_test.go
│   │   ├── log_file_writer.go
│   │   ├── log_file_writer_test.go
│   │   ├── logger.go
│   │   ├── logger_test.go
│   │   ├── memory.go
│   │   ├── memory_test.go
│   │   ├── simple.go
│   │   └── simple_test.go
│   ├── multierr/
│   │   ├── multierr.go
│   │   └── multierr_test.go
│   ├── remotestorage/
│   │   ├── memory/
│   │   │   ├── memory.go
│   │   │   └── memory_test.go
│   │   ├── remote_storage.go
│   │   └── s3/
│   │       ├── metrics.go
│   │       ├── s3.go
│   │       ├── s3_test.go
│   │       └── s3_with_minio_test.go
│   ├── sql/
│   │   ├── aggregated_values.go
│   │   ├── aggregated_values_test.go
│   │   ├── catalog.go
│   │   ├── catalog_test.go
│   │   ├── cond_row_reader.go
│   │   ├── cond_row_reader_test.go
│   │   ├── distinct_row_reader.go
│   │   ├── distinct_row_reader_test.go
│   │   ├── dummy_data_source_test.go
│   │   ├── dummy_row_reader_test.go
│   │   ├── engine.go
│   │   ├── engine_test.go
│   │   ├── file_sort.go
│   │   ├── functions.go
│   │   ├── functions_test.go
│   │   ├── grouped_row_reader.go
│   │   ├── grouped_row_reader_test.go
│   │   ├── implicit_conversion.go
│   │   ├── implicit_conversion_test.go
│   │   ├── joint_row_reader.go
│   │   ├── joint_row_reader_test.go
│   │   ├── json_type.go
│   │   ├── limit_row_reader.go
│   │   ├── limit_row_reader_test.go
│   │   ├── num_operator.go
│   │   ├── num_operator_test.go
│   │   ├── offset_row_reader.go
│   │   ├── offset_row_reader_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── parser.go
│   │   ├── parser_test.go
│   │   ├── proj_row_reader.go
│   │   ├── row_reader.go
│   │   ├── row_reader_test.go
│   │   ├── sort_reader.go
│   │   ├── sort_reader_test.go
│   │   ├── sql_grammar.y
│   │   ├── sql_parser.go
│   │   ├── sql_tx.go
│   │   ├── sql_tx_options.go
│   │   ├── stmt.go
│   │   ├── stmt_test.go
│   │   ├── timestamp.go
│   │   ├── timestamp_test.go
│   │   ├── type_conversion.go
│   │   ├── union_row_reader.go
│   │   ├── union_row_reader_test.go
│   │   ├── values_row_reader.go
│   │   └── values_row_reader_test.go
│   ├── store/
│   │   ├── immustore.go
│   │   ├── immustore_test.go
│   │   ├── indexer.go
│   │   ├── indexer_test.go
│   │   ├── key_reader.go
│   │   ├── key_reader_test.go
│   │   ├── kv_metadata.go
│   │   ├── kv_metadata_test.go
│   │   ├── metadata.go
│   │   ├── ongoing_tx.go
│   │   ├── ongoing_tx_keyreader.go
│   │   ├── ongoing_tx_options.go
│   │   ├── ongoing_tx_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── precommit_buffer.go
│   │   ├── precommit_buffer_test.go
│   │   ├── preconditions.go
│   │   ├── tx.go
│   │   ├── tx_metadata.go
│   │   ├── tx_metadata_test.go
│   │   ├── tx_reader.go
│   │   ├── tx_reader_test.go
│   │   ├── tx_test.go
│   │   ├── txpool.go
│   │   ├── txpool_test.go
│   │   ├── verification.go
│   │   └── verification_test.go
│   ├── tbtree/
│   │   ├── consistency_error_test.go
│   │   ├── history_reader.go
│   │   ├── history_reader_test.go
│   │   ├── metrics.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── reader.go
│   │   ├── reader_test.go
│   │   ├── snapshot.go
│   │   ├── snapshot_test.go
│   │   ├── tbtree.go
│   │   └── tbtree_test.go
│   ├── tools/
│   │   ├── bitflip.py
│   │   ├── stress_tool/
│   │   │   └── stress_tool.go
│   │   └── stress_tool_sql/
│   │       └── stress_tool_sql.go
│   └── watchers/
│       ├── watchers.go
│       └── watchers_test.go
├── ext-tools/
│   ├── buf
│   ├── go-acc
│   └── goveralls
├── go.mod
├── go.sum
├── helm/
│   ├── .gitignore
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── Makefile
│   ├── templates/
│   │   ├── NOTES.txt
│   │   ├── _helpers.tpl
│   │   ├── configmap.yaml
│   │   ├── ingress.yaml
│   │   ├── secret.yaml
│   │   ├── service.yaml
│   │   ├── statefulset.yaml
│   │   └── tests/
│   │       └── test-connection.yaml
│   └── values.yaml
├── img/
│   └── images.MD
├── pkg/
│   ├── api/
│   │   ├── openapi/
│   │   │   └── apidocs.swagger.json
│   │   ├── proto/
│   │   │   ├── authorization.proto
│   │   │   └── documents.proto
│   │   ├── protomodel/
│   │   │   ├── authorization.pb.go
│   │   │   ├── authorization.pb.gw.go
│   │   │   ├── authorization_grpc.pb.go
│   │   │   ├── docs.md
│   │   │   ├── documents.pb.go
│   │   │   ├── documents.pb.gw.go
│   │   │   └── documents_grpc.pb.go
│   │   └── schema/
│   │       ├── database_protoconv.go
│   │       ├── docs.md
│   │       ├── errors.go
│   │       ├── linear_inclusion_enhancer.go
│   │       ├── metadata.go
│   │       ├── metadata_test.go
│   │       ├── ops.go
│   │       ├── ops_test.go
│   │       ├── pattern_test.go
│   │       ├── patterns.go
│   │       ├── preconditions.go
│   │       ├── row_value.go
│   │       ├── row_value_test.go
│   │       ├── schema.pb.go
│   │       ├── schema.pb.gw.go
│   │       ├── schema.proto
│   │       ├── schema.swagger.json
│   │       ├── schema_grpc.pb.go
│   │       ├── sql.go
│   │       ├── sql_exec_result.go
│   │       ├── sql_test.go
│   │       ├── state.go
│   │       ├── unexpected_type.go
│   │       └── unexpected_type_test.go
│   ├── auth/
│   │   ├── auth.go
│   │   ├── auth_type.go
│   │   ├── clientinterceptors.go
│   │   ├── clientinterceptors_test.go
│   │   ├── errors.go
│   │   ├── passwords.go
│   │   ├── passwords_test.go
│   │   ├── permissions.go
│   │   ├── permissions_test.go
│   │   ├── serverinterceptors.go
│   │   ├── serverinterceptors_test.go
│   │   ├── tokenkeys.go
│   │   ├── tokenkeys_test.go
│   │   ├── tokens.go
│   │   ├── tokens_test.go
│   │   ├── user.go
│   │   └── user_test.go
│   ├── cert/
│   │   └── cert.go
│   ├── client/
│   │   ├── auditor/
│   │   │   ├── auditor.go
│   │   │   ├── auditor_test.go
│   │   │   ├── monitoring_server.go
│   │   │   └── monitoring_server_test.go
│   │   ├── cache/
│   │   │   ├── cache.go
│   │   │   ├── common.go
│   │   │   ├── common_test.go
│   │   │   ├── errors.go
│   │   │   ├── file_cache.go
│   │   │   ├── file_cache_test.go
│   │   │   ├── history_file_cache.go
│   │   │   ├── history_file_cache_test.go
│   │   │   ├── inmemory_cache.go
│   │   │   └── inmemory_cache_test.go
│   │   ├── client.go
│   │   ├── client_test.go
│   │   ├── clienttest/
│   │   │   ├── homedir_mock.go
│   │   │   ├── immuServiceClient_mock.go
│   │   │   ├── immuclient_mock.go
│   │   │   ├── immuclient_mock_test.go
│   │   │   ├── password_reader_mock.go
│   │   │   ├── terminal_reader_mock.go
│   │   │   └── token_service_mock.go
│   │   ├── errors/
│   │   │   ├── errors.go
│   │   │   └── meta.go
│   │   ├── errors.go
│   │   ├── get_options.go
│   │   ├── get_options_test.go
│   │   ├── heartbeater.go
│   │   ├── homedir/
│   │   │   ├── homedir.go
│   │   │   └── homedir_test.go
│   │   ├── illegal_state_handler_interceptor.go
│   │   ├── mtls_options.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── session.go
│   │   ├── session_id_injector_interceptor.go
│   │   ├── session_test.go
│   │   ├── signature_verifier_interceptor.go
│   │   ├── sql.go
│   │   ├── sql_test.go
│   │   ├── state/
│   │   │   ├── immudb_uuid_provider.go
│   │   │   ├── immudb_uuid_provider_test.go
│   │   │   ├── state_provider.go
│   │   │   ├── state_service.go
│   │   │   └── state_service_test.go
│   │   ├── stream_replication.go
│   │   ├── stream_test.go
│   │   ├── streams.go
│   │   ├── streams_integration_test.go
│   │   ├── streams_verified_integration_test.go
│   │   ├── streams_zscan_and_history_integration_test.go
│   │   ├── timestamp/
│   │   │   ├── default.go
│   │   │   ├── timestamp_test.go
│   │   │   └── tsgenerator.go
│   │   ├── timestamp_service.go
│   │   ├── timestamp_service_test.go
│   │   ├── token_interceptor.go
│   │   ├── tokenservice/
│   │   │   ├── errors.go
│   │   │   ├── file.go
│   │   │   ├── inmemory.go
│   │   │   ├── inmemory_test.go
│   │   │   ├── token_service.go
│   │   │   └── token_service_test.go
│   │   ├── transaction.go
│   │   ├── tx_options.go
│   │   ├── types.go
│   │   └── types_test.go
│   ├── database/
│   │   ├── all_ops.go
│   │   ├── all_ops_test.go
│   │   ├── database.go
│   │   ├── database_test.go
│   │   ├── db_manager.go
│   │   ├── db_manager_test.go
│   │   ├── dboptions.go
│   │   ├── dboptions_test.go
│   │   ├── document_database.go
│   │   ├── document_database_test.go
│   │   ├── errors.go
│   │   ├── instrumented_rwmutex.go
│   │   ├── instrumented_rwmutex_test.go
│   │   ├── lazy_db.go
│   │   ├── meta.go
│   │   ├── protoconv.go
│   │   ├── protoconv_test.go
│   │   ├── reference.go
│   │   ├── reference_test.go
│   │   ├── replica_test.go
│   │   ├── scan.go
│   │   ├── scan_test.go
│   │   ├── sorted_set.go
│   │   ├── sorted_set_test.go
│   │   ├── sql.go
│   │   ├── sql_test.go
│   │   ├── truncator.go
│   │   ├── truncator_test.go
│   │   └── types.go
│   ├── errors/
│   │   ├── error.go
│   │   ├── errors_test.go
│   │   ├── grpc_status.go
│   │   ├── grpc_status_test.go
│   │   ├── map.go
│   │   ├── map_test.go
│   │   ├── meta.go
│   │   └── wrapped.go
│   ├── fs/
│   │   ├── copy.go
│   │   ├── copy_test.go
│   │   ├── tar.go
│   │   ├── tar_test.go
│   │   ├── zip.go
│   │   └── zip_test.go
│   ├── helpers/
│   │   ├── semaphore/
│   │   │   └── semaphore.go
│   │   └── slices/
│   │       └── slices.go
│   ├── immuos/
│   │   ├── filepath.go
│   │   ├── filepath_test.go
│   │   ├── ioutil.go
│   │   ├── ioutil_test.go
│   │   ├── os.go
│   │   ├── os_test.go
│   │   ├── user.go
│   │   └── user_test.go
│   ├── integration/
│   │   ├── auditor_test.go
│   │   ├── client_test.go
│   │   ├── database_creation_test.go
│   │   ├── database_runtime_test.go
│   │   ├── error_test.go
│   │   ├── follower_replication_test.go
│   │   ├── fuzzing/
│   │   │   └── grpc_fuzz_test.go
│   │   ├── replication/
│   │   │   ├── docker.go
│   │   │   ├── docker_test.go
│   │   │   ├── server.go
│   │   │   ├── suite.go
│   │   │   └── synchronous_replication_test.go
│   │   ├── server_recovery_test.go
│   │   ├── session_test.go
│   │   ├── signature_verifier_interceptor_test.go
│   │   ├── sql/
│   │   │   └── sql_test.go
│   │   ├── sql_types_test.go
│   │   ├── stream/
│   │   │   ├── stream_replication_test.go
│   │   │   ├── stream_test.go
│   │   │   ├── streams_verified_test.go
│   │   │   └── streams_zscan_and_history_test.go
│   │   ├── tx/
│   │   │   ├── transaction_test.go
│   │   │   └── tx_entries_test.go
│   │   └── verification_long_linear_proof_test.go
│   ├── pgsql/
│   │   ├── errors/
│   │   │   ├── errors.go
│   │   │   └── errors_test.go
│   │   ├── pgschema/
│   │   │   ├── resolvers_test.go
│   │   │   └── table_resolvers.go
│   │   └── server/
│   │       ├── bmessages/
│   │       │   ├── authentication_cleartext_password.go
│   │       │   ├── authentication_ok.go
│   │       │   ├── bind_complete.go
│   │       │   ├── command_complete.go
│   │       │   ├── data_row.go
│   │       │   ├── empty_query_response.go
│   │       │   ├── error_response.go
│   │       │   ├── error_response_opt.go
│   │       │   ├── error_response_test.go
│   │       │   ├── parameter_description.go
│   │       │   ├── parameter_status.go
│   │       │   ├── parse_complete.go
│   │       │   ├── ready_for_query.go
│   │       │   └── row_description.go
│   │       ├── cert/
│   │       │   ├── ca-cert.pem
│   │       │   ├── ca-cert.srl
│   │       │   ├── ca-key.pem
│   │       │   ├── server-cert.pem
│   │       │   ├── server-ext.cnf
│   │       │   ├── server-key.pem
│   │       │   └── server-req.pem
│   │       ├── fmessages/
│   │       │   ├── bind.go
│   │       │   ├── bind_test.go
│   │       │   ├── describe.go
│   │       │   ├── execute.go
│   │       │   ├── execute_test.go
│   │       │   ├── flush.go
│   │       │   ├── fmessages_test/
│   │       │   │   └── payload.go
│   │       │   ├── parse.go
│   │       │   ├── parse_test.go
│   │       │   ├── password_message.go
│   │       │   ├── query.go
│   │       │   ├── string_reader.go
│   │       │   ├── sync.go
│   │       │   └── terminate.go
│   │       ├── initialize_session.go
│   │       ├── message.go
│   │       ├── message_test.go
│   │       ├── options.go
│   │       ├── pgmeta/
│   │       │   └── pg_type.go
│   │       ├── pgsql_integration_test.go
│   │       ├── query_machine.go
│   │       ├── query_machine_test.go
│   │       ├── request_handler.go
│   │       ├── server.go
│   │       ├── server_test.go
│   │       ├── session.go
│   │       ├── session_test.go
│   │       ├── ssl_handshake.go
│   │       ├── ssl_handshake_test.go
│   │       ├── stmts_handler.go
│   │       ├── types.go
│   │       ├── types_test.go
│   │       └── version.go
│   ├── replication/
│   │   ├── delayer.go
│   │   ├── metrics.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── replicator.go
│   │   └── replicator_test.go
│   ├── server/
│   │   ├── access_log_interceptor.go
│   │   ├── access_log_interceptor_test.go
│   │   ├── authorization_operations.go
│   │   ├── corruption_checker.go
│   │   ├── corruption_checker_test.go
│   │   ├── db_dummy_closed.go
│   │   ├── db_dummy_closed_test.go
│   │   ├── db_operations.go
│   │   ├── db_options.go
│   │   ├── db_options_test.go
│   │   ├── db_runtime_test.go
│   │   ├── documents_operations.go
│   │   ├── documents_operations_test.go
│   │   ├── error_mapper_interceptor.go
│   │   ├── errors.go
│   │   ├── errors_test.go
│   │   ├── keepAlive.go
│   │   ├── keep_alive_session_interceptor.go
│   │   ├── metrics.go
│   │   ├── metrics_funcs.go
│   │   ├── metrics_funcs_test.go
│   │   ├── metrics_test.go
│   │   ├── multidb_handler.go
│   │   ├── multidb_handler_test.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── pid.go
│   │   ├── pid_test.go
│   │   ├── remote_storage.go
│   │   ├── remote_storage_test.go
│   │   ├── request_metadata_interceptor.go
│   │   ├── server.go
│   │   ├── server_test.go
│   │   ├── servertest/
│   │   │   ├── server.go
│   │   │   └── server_mock.go
│   │   ├── service.go
│   │   ├── service_test.go
│   │   ├── session.go
│   │   ├── session_auth_interceptor.go
│   │   ├── sessions/
│   │   │   ├── errors.go
│   │   │   ├── internal/
│   │   │   │   └── transactions/
│   │   │   │       ├── errors.go
│   │   │   │       ├── transactions.go
│   │   │   │       └── transactions_test.go
│   │   │   ├── manager.go
│   │   │   ├── manager_test.go
│   │   │   ├── options.go
│   │   │   ├── options_test.go
│   │   │   ├── session.go
│   │   │   └── session_test.go
│   │   ├── sever_current_state_test.go
│   │   ├── sql.go
│   │   ├── sql_test.go
│   │   ├── state_signer.go
│   │   ├── state_signer_test.go
│   │   ├── stream_replication.go
│   │   ├── stream_replication_test.go
│   │   ├── stream_test.go
│   │   ├── streams.go
│   │   ├── transaction.go
│   │   ├── transaction_test.go
│   │   ├── truncator.go
│   │   ├── truncator_test.go
│   │   ├── types.go
│   │   ├── types_test.go
│   │   ├── user.go
│   │   ├── user_test.go
│   │   ├── uuid.go
│   │   ├── uuid_test.go
│   │   ├── webserver.go
│   │   └── webserver_test.go
│   ├── signer/
│   │   ├── ecdsa.go
│   │   ├── ecdsa_test.go
│   │   └── signer.go
│   ├── stdlib/
│   │   ├── connection.go
│   │   ├── connection_test.go
│   │   ├── connector.go
│   │   ├── connector_test.go
│   │   ├── driver.go
│   │   ├── driver_test.go
│   │   ├── errors.go
│   │   ├── immuConnector.go
│   │   ├── rows.go
│   │   ├── rows_test.go
│   │   ├── sql_test.go
│   │   ├── tx.go
│   │   ├── tx_test.go
│   │   ├── uri.go
│   │   └── uri_test.go
│   ├── stream/
│   │   ├── errors.go
│   │   ├── execall_receiver.go
│   │   ├── execall_receiver_test.go
│   │   ├── execall_sender.go
│   │   ├── execall_sender_test.go
│   │   ├── execall_streamer.go
│   │   ├── factory.go
│   │   ├── kvparser.go
│   │   ├── kvparser_test.go
│   │   ├── kvreceiver.go
│   │   ├── kvsender.go
│   │   ├── kvsender_test.go
│   │   ├── kvstreamer.go
│   │   ├── meta.go
│   │   ├── receiver.go
│   │   ├── receiver_test.go
│   │   ├── sender.go
│   │   ├── sender_test.go
│   │   ├── streamer.go
│   │   ├── streamtest/
│   │   │   ├── err_reader.go
│   │   │   ├── receiver.go
│   │   │   ├── sender.go
│   │   │   └── stream.go
│   │   ├── types.go
│   │   ├── types_test.go
│   │   ├── ventryparser.go
│   │   ├── ventryparser_test.go
│   │   ├── ventryreceiver.go
│   │   ├── ventryreceiver_test.go
│   │   ├── ventrysender.go
│   │   ├── ventrysender_test.go
│   │   ├── ventrystreamer.go
│   │   ├── zStreamer.go
│   │   ├── zparser.go
│   │   ├── zparser_test.go
│   │   ├── zreceiver.go
│   │   ├── zreceiver_test.go
│   │   ├── zsender.go
│   │   └── zsender_test.go
│   ├── streamutils/
│   │   ├── files.go
│   │   └── files_test.go
│   ├── truncator/
│   │   ├── truncator.go
│   │   └── truncator_test.go
│   └── verification/
│       ├── verification.go
│       └── verification_test.go
├── sonar-project.properties
├── swagger/
│   ├── default/
│   │   └── index.html
│   ├── swagger.go
│   ├── swagger_default.go
│   ├── swagger_default_test.go
│   ├── swagger_test.go
│   └── swaggeroverrides.js
├── test/
│   ├── client_test.expected.bkp
│   ├── data_long_linear_proof/
│   │   ├── aht/
│   │   │   ├── commit/
│   │   │   │   └── 00000000.di
│   │   │   └── tree/
│   │   │       └── 00000000.sha
│   │   ├── commit/
│   │   │   └── 00000000.txi
│   │   ├── index/
│   │   │   ├── commit/
│   │   │   │   └── 00000000.ri
│   │   │   ├── history/
│   │   │   │   └── 00000000.hx
│   │   │   └── nodes/
│   │   │       └── 00000000.n
│   │   ├── tx/
│   │   │   └── 00000000.tx
│   │   └── val_0/
│   │       └── 00000000.val
│   ├── data_v1.1.0/
│   │   ├── defaultdb/
│   │   │   ├── aht/
│   │   │   │   ├── commit/
│   │   │   │   │   └── 00000000.di
│   │   │   │   └── tree/
│   │   │   │       └── 00000000.sha
│   │   │   ├── commit/
│   │   │   │   └── 00000000.txi
│   │   │   ├── index/
│   │   │   │   ├── commit/
│   │   │   │   │   └── 00000000.ri
│   │   │   │   ├── history/
│   │   │   │   │   └── 00000000.hx
│   │   │   │   └── nodes/
│   │   │   │       └── 00000000.n
│   │   │   ├── tx/
│   │   │   │   └── 00000000.tx
│   │   │   └── val_0/
│   │   │       └── 00000000.val
│   │   ├── immudb.identifier
│   │   └── systemdb/
│   │       ├── aht/
│   │       │   ├── commit/
│   │       │   │   └── 00000000.di
│   │       │   └── tree/
│   │       │       └── 00000000.sha
│   │       ├── commit/
│   │       │   └── 00000000.txi
│   │       ├── index/
│   │       │   ├── commit/
│   │       │   │   └── 00000000.ri
│   │       │   ├── history/
│   │       │   │   └── 00000000.hx
│   │       │   └── nodes/
│   │       │       └── 00000000.n
│   │       ├── tx/
│   │       │   └── 00000000.tx
│   │       └── val_0/
│   │           └── 00000000.val
│   ├── document_storage_tests/
│   │   ├── documents_tests/
│   │   │   ├── actions/
│   │   │   │   ├── create_collections.go
│   │   │   │   ├── create_index.go
│   │   │   │   ├── get_collections.go
│   │   │   │   ├── insert_documents.go
│   │   │   │   ├── search_documents.go
│   │   │   │   └── session.go
│   │   │   ├── create_collections_test.go
│   │   │   ├── create_indexes_test.go
│   │   │   ├── delete_collections_test.go
│   │   │   ├── go.mod
│   │   │   ├── go.sum
│   │   │   ├── insert_documents_test.go
│   │   │   ├── models/
│   │   │   │   ├── collections.go
│   │   │   │   ├── documents.go
│   │   │   │   ├── index.go
│   │   │   │   ├── search.go
│   │   │   │   └── user.go
│   │   │   └── session_test.go
│   │   └── documents_tests_deprecated/
│   │       ├── auth_test.go
│   │       ├── collections_test.go
│   │       ├── create_collections_test.go
│   │       ├── documents_test.go
│   │       ├── documents_test_utils.go
│   │       ├── go.mod
│   │       ├── go.sum
│   │       ├── login_test.go
│   │       ├── testall.sh
│   │       └── utils.go
│   ├── e2e/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── replication/
│   │   │   ├── replic.sh
│   │   │   └── run.sh
│   │   ├── requirements.txt
│   │   ├── runtests.py
│   │   ├── runtests.sh
│   │   └── t0.patch
│   ├── immudb.toml
│   ├── mtls_certs/
│   │   ├── ca-chain.cert.pem
│   │   ├── ca.cert.pem
│   │   └── ca.key.pem
│   ├── performance-test-suite/
│   │   ├── README.md
│   │   ├── cmd/
│   │   │   └── perf-test/
│   │   │       └── main.go
│   │   └── pkg/
│   │       ├── benchmarks/
│   │       │   ├── benchmark.go
│   │       │   ├── format.go
│   │       │   ├── format_test.go
│   │       │   ├── hwstats.go
│   │       │   ├── hwstats_test.go
│   │       │   ├── keytracker.go
│   │       │   ├── keytracker_test.go
│   │       │   ├── rand.go
│   │       │   ├── rand_test.go
│   │       │   └── writetxs/
│   │       │       └── benchmark.go
│   │       └── runner/
│   │           ├── benchmarks.go
│   │           ├── influxdb_client.go
│   │           ├── processinfo.go
│   │           ├── results.go
│   │           ├── runner.go
│   │           └── systeminfo.go
│   ├── release_perf_test/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── Dockerfile-141
│   │   ├── Dockerfile.tools
│   │   ├── README.md
│   │   ├── docker-compose.yaml
│   │   ├── doctest.sh
│   │   ├── quickie.sh
│   │   ├── runme.sh
│   │   └── startup.sh
│   ├── signer/
│   │   ├── ec1.key
│   │   ├── ec1.pub
│   │   ├── ec3.key
│   │   ├── ec3.pub
│   │   └── unparsable.key
│   └── txscan/
│       └── txscan.go
├── tools/
│   ├── autotest/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── adminlogin.expect
│   │   ├── adminlogin1.expect
│   │   ├── autotest.sh
│   │   ├── envpasswd.sh
│   │   └── login.expect
│   ├── bitflip.py
│   ├── comparison/
│   │   ├── mongodb/
│   │   │   ├── Dockerfile
│   │   │   ├── load.js
│   │   │   └── run.sh
│   │   └── scylladb/
│   │       ├── Dockerfile
│   │       ├── bench.py
│   │       ├── run.sh
│   │       └── schema
│   ├── long_running/
│   │   └── stress_tool_worker_pool.go
│   ├── monitoring/
│   │   └── grafana-dashboard.json
│   ├── mtls/
│   │   ├── .gitignore
│   │   ├── generate.sh
│   │   ├── intermediate_openssl.cnf
│   │   └── openssl.cnf
│   ├── packaging/
│   │   ├── conf/
│   │   │   └── nfpm.yaml
│   │   └── deb/
│   │       ├── control/
│   │       │   └── postinst
│   │       ├── default/
│   │       │   ├── immuclient.ini.dist
│   │       │   ├── immudb
│   │       │   ├── immudb.ini.dist
│   │       │   ├── immugw
│   │       │   └── immugw.ini.dist
│   │       ├── init.d/
│   │       │   ├── immudb
│   │       │   └── immugw
│   │       ├── man/
│   │       │   ├── immuclient.1
│   │       │   ├── immudb.1
│   │       │   └── immugw.1
│   │       └── systemd/
│   │           ├── immudb.service
│   │           └── immugw.service
│   ├── rndpass/
│   │   └── startup.sh
│   └── testing/
│       ├── stress_tool_sql.go
│       └── stress_tool_test_kv/
│           ├── README.md
│           └── stress_tool_kv.go
├── tools.go
└── webconsole/
    ├── .gitignore
    ├── default/
    │   └── missing/
    │       └── index.html
    ├── webconsole.go
    ├── webconsole_default.go
    ├── webconsole_default_test.go
    └── webconsole_test.go
Download .txt
Showing preview only (886K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9325 symbols across 766 files)

FILE: cmd/cmdtest/random.go
  function RandString (line 26) | func RandString() string {

FILE: cmd/cmdtest/stdout_collector.go
  type StdOutCollector (line 27) | type StdOutCollector struct
    method Start (line 35) | func (c *StdOutCollector) Start() error {
    method Stop (line 56) | func (c *StdOutCollector) Stop() (string, error) {

FILE: cmd/docs/man/generate.go
  function Generate (line 28) | func Generate(cmd *cobra.Command, title string, defaultDir string) *cobr...

FILE: cmd/docs/man/generate_test.go
  function TestGenerate (line 29) | func TestGenerate(t *testing.T) {

FILE: cmd/helper/color_unix.go
  function PrintfColorW (line 52) | func PrintfColorW(w io.Writer, color string, format string, args ...inte...

FILE: cmd/helper/color_unix_test.go
  function TestPrintfColorW (line 24) | func TestPrintfColorW(t *testing.T) {

FILE: cmd/helper/color_windows.go
  function init (line 51) | func init() {
  function PrintfColorW (line 63) | func PrintfColorW(w io.Writer, color string, format string, args ...inte...

FILE: cmd/helper/config.go
  type Config (line 30) | type Config struct
    method Init (line 36) | func (c *Config) Init(name string) error {
    method LoadConfig (line 64) | func (c *Config) LoadConfig(cmd *cobra.Command) (err error) {

FILE: cmd/helper/config_pathmanager_unix.go
  function ResolvePath (line 23) | func ResolvePath(origPath string, parse bool) (finalPath string, err err...

FILE: cmd/helper/config_pathmanager_windows.go
  function ResolvePath (line 29) | func ResolvePath(path string, quote bool) (finalPath string, err error) {

FILE: cmd/helper/config_test.go
  function TestOptions_InitConfig (line 31) | func TestOptions_InitConfig(t *testing.T) {
  function TestOptions_InitConfigWithCfFn (line 45) | func TestOptions_InitConfigWithCfFn(t *testing.T) {
  function TestConfig_Load (line 58) | func TestConfig_Load(t *testing.T) {
  function TestConfig_LoadError (line 75) | func TestConfig_LoadError(t *testing.T) {
  function TestConfig_LoadError2 (line 91) | func TestConfig_LoadError2(t *testing.T) {

FILE: cmd/helper/detached.go
  constant DetachedFlag (line 28) | DetachedFlag = "detached"
  constant DetachedShortFlag (line 31) | DetachedShortFlag = "d"
  type Execs (line 33) | type Execs interface
  type execs (line 37) | type execs struct
    method Command (line 39) | func (e execs) Command(name string, arg ...string) *exec.Cmd {
  type Plauncher (line 43) | type Plauncher interface
  type plauncher (line 47) | type plauncher struct
    method Detached (line 56) | func (pl plauncher) Detached() error {
  function NewPlauncher (line 51) | func NewPlauncher() *plauncher {

FILE: cmd/helper/detached_test.go
  type execsmock (line 28) | type execsmock struct
    method Command (line 30) | func (e execsmock) Command(name string, arg ...string) *exec.Cmd {
  function TestDetached (line 38) | func TestDetached(t *testing.T) {
  function TestNewPlauncher (line 44) | func TestNewPlauncher(t *testing.T) {
  function TestExecs_Command (line 49) | func TestExecs_Command(t *testing.T) {

FILE: cmd/helper/error.go
  function QuitToStdErr (line 31) | func QuitToStdErr(msg interface{}) {
  function QuitWithUserError (line 37) | func QuitWithUserError(err error) {
  function OverrideQuitter (line 48) | func OverrideQuitter(quitter func(int)) {
  function UnwrapMessage (line 52) | func UnwrapMessage(msg interface{}) interface{} {

FILE: cmd/helper/size.go
  constant Byte (line 9) | Byte     = 1
  constant KiloByte (line 10) | KiloByte = 1 << (10 * iota)
  constant MegaByte (line 11) | MegaByte
  constant GigaByte (line 12) | GigaByte
  constant TeraByte (line 13) | TeraByte
  constant PetaByte (line 14) | PetaByte
  constant ExaByte (line 15) | ExaByte
  function FormatByteSize (line 28) | func FormatByteSize(size uint64) string {
  function getUnit (line 39) | func getUnit(size uint64) int {

FILE: cmd/helper/size_test.go
  function TestFormatByteSize (line 10) | func TestFormatByteSize(t *testing.T) {
  function size (line 20) | func size(fraction float64, unit int) uint64 {

FILE: cmd/helper/table_printer.go
  function PrintTable (line 28) | func PrintTable(

FILE: cmd/helper/table_printer_test.go
  function TestPrintTable (line 27) | func TestPrintTable(t *testing.T) {
  function TestPrintTableZeroEle (line 68) | func TestPrintTableZeroEle(t *testing.T) {
  function TestPrintTableZeroCol (line 87) | func TestPrintTableZeroCol(t *testing.T) {

FILE: cmd/helper/terminal.go
  type terminalReader (line 13) | type terminalReader struct
    method ReadFromTerminalYN (line 26) | func (t *terminalReader) ReadFromTerminalYN(def string) (selected stri...
  type TerminalReader (line 17) | type TerminalReader interface
  function NewTerminalReader (line 21) | func NewTerminalReader(r io.Reader) *terminalReader {
  type PasswordReader (line 46) | type PasswordReader interface
  type stdinPasswordReader (line 49) | type stdinPasswordReader struct
    method Read (line 56) | func (pr stdinPasswordReader) Read(msg string) ([]byte, error) {
  type terminalReadPw (line 77) | type terminalReadPw struct
    method ReadPassword (line 82) | func (trp terminalReadPw) ReadPassword(fd int) ([]byte, error) {
  type TerminalReadPw (line 78) | type TerminalReadPw interface

FILE: cmd/helper/terminal_test.go
  function TestTerminalReader_ReadFromTerminalYN (line 27) | func TestTerminalReader_ReadFromTerminalYN(t *testing.T) {
  function TestStdinPasswordReader_Read (line 46) | func TestStdinPasswordReader_Read(t *testing.T) {
  function TestTerminalReadPw_ReadPassword (line 53) | func TestTerminalReadPw_ReadPassword(t *testing.T) {
  type terminalReadPwMock (line 59) | type terminalReadPwMock struct
    method ReadPassword (line 61) | func (trp *terminalReadPwMock) ReadPassword(fd int) ([]byte, error) {

FILE: cmd/immuadmin/command/backup.go
  type backupper (line 42) | type backupper struct
    method mustNotBeWorkingDir (line 273) | func (b *backupper) mustNotBeWorkingDir(p string) error {
    method stopImmudbService (line 293) | func (b *backupper) stopImmudbService() (func(), error) {
    method offlineBackup (line 304) | func (b *backupper) offlineBackup(src string, uncompressed bool, manua...
    method offlineRestore (line 374) | func (b *backupper) offlineRestore(src string, dst string, manualStopS...
  function newBackupper (line 50) | func newBackupper(os immuos.OS) (*backupper, error) {
  type Backupper (line 65) | type Backupper interface
  type commandlineBck (line 72) | type commandlineBck struct
    method Register (line 93) | func (clb *commandlineBck) Register(rootCmd *cobra.Command) *cobra.Com...
    method ConfigChain (line 100) | func (cl *commandlineBck) ConfigChain(post func(cmd *cobra.Command, ar...
    method dumpToFile (line 115) | func (cl *commandlineBck) dumpToFile(cmd *cobra.Command) {
    method backup (line 154) | func (cl *commandlineBck) backup(cmd *cobra.Command) {
    method restore (line 202) | func (cl *commandlineBck) restore(cmd *cobra.Command) {
    method askUserConfirmation (line 242) | func (cl *commandlineBck) askUserConfirmation(process string, manualSt...
  function newCommandlineBck (line 78) | func newCommandlineBck(os immuos.OS) (*commandlineBck, error) {

FILE: cmd/immuadmin/command/cmd.go
  function Execute (line 27) | func Execute() {
  function newCommand (line 33) | func newCommand() *cobra.Command {

FILE: cmd/immuadmin/command/cmd_test.go
  function TestNewCmd (line 26) | func TestNewCmd(t *testing.T) {

FILE: cmd/immuadmin/command/commandline.go
  type Commandline (line 35) | type Commandline interface
  type CommandlineCli (line 47) | type CommandlineCli interface
  type commandline (line 54) | type commandline struct
    method ConfigChain (line 76) | func (cl *commandline) ConfigChain(post func(cmd *cobra.Command, args ...
    method Register (line 91) | func (cl *commandline) Register(rootCmd *cobra.Command) *cobra.Command {
    method quit (line 103) | func (cl *commandline) quit(msg interface{}) {
    method disconnect (line 112) | func (cl *commandline) disconnect(cmd *cobra.Command, args []string) {
    method connect (line 118) | func (cl *commandline) connect(cmd *cobra.Command, args []string) (err...
    method checkLoggedIn (line 126) | func (cl *commandline) checkLoggedIn(cmd *cobra.Command, args []string...
    method checkLoggedInAndConnect (line 137) | func (cl *commandline) checkLoggedInAndConnect(cmd *cobra.Command, arg...
  function NewCommandLine (line 66) | func NewCommandLine() *commandline {

FILE: cmd/immuadmin/command/database.go
  function addDbUpdateFlags (line 43) | func addDbUpdateFlags(c *cobra.Command) {
  method database (line 95) | func (cl *commandline) database(cmd *cobra.Command) {
  method createExportCmd (line 401) | func (cl *commandline) createExportCmd() *cobra.Command {
  function rowToCSV (line 482) | func rowToCSV(row client.Row, cols []client.Column, out []string) error {
  function renderValue (line 494) | func renderValue(v interface{}, colType string) (string, error) {
  method createImportCmd (line 511) | func (cl *commandline) createImportCmd() *cobra.Command {
  function formatColName (line 605) | func formatColName(col string) string {
  function formatInsertValue (line 613) | func formatInsertValue(v string, colType string) string {
  function prepareDatabaseNullableSettings (line 629) | func prepareDatabaseNullableSettings(flags *pflag.FlagSet) (*schema.Data...
  function databaseNullableSettingsStr (line 847) | func databaseNullableSettingsStr(settings *schema.DatabaseNullableSettin...
  function addDbTruncateFlags (line 906) | func addDbTruncateFlags(c *cobra.Command) {

FILE: cmd/immuadmin/command/hot_backup.go
  constant prefix (line 40) | prefix            = "IMMUBACKUP"
  constant latestFileVersion (line 41) | latestFileVersion = 1
  constant prefixOffset (line 45) | prefixOffset     = iota
  constant versionOffset (line 46) | versionOffset    = prefixOffset + len(prefix)
  constant txIdOffset (line 47) | txIdOffset       = versionOffset + 4
  constant txSignSizeOffset (line 48) | txSignSizeOffset = txIdOffset + 8
  constant txSizeOffset (line 49) | txSizeOffset     = txSignSizeOffset + 4
  constant headerSize (line 50) | headerSize       = txSizeOffset + 4
  type commandlineHotBck (line 57) | type commandlineHotBck struct
    method Register (line 71) | func (clb *commandlineHotBck) Register(rootCmd *cobra.Command) *cobra....
    method hotBackup (line 84) | func (cl *commandlineHotBck) hotBackup(cmd *cobra.Command) {
    method verifyOrCreateBackupFile (line 158) | func (cl *commandlineHotBck) verifyOrCreateBackupFile(params *backupPa...
    method runHotBackup (line 196) | func (cl *commandlineHotBck) runHotBackup(output io.Writer, startTx ui...
    method backupTx (line 251) | func (cl *commandlineHotBck) backupTx(tx uint64, output io.Writer) err...
    method hotRestore (line 320) | func (cl *commandlineHotBck) hotRestore(cmd *cobra.Command) {
    method verifyFile (line 429) | func (cl *commandlineHotBck) verifyFile(file io.Reader) error {
    method isDbExists (line 449) | func (cl *commandlineHotBck) isDbExists(name string) (bool, error) {
    method initDbForRestore (line 470) | func (cl *commandlineHotBck) initDbForRestore(params *restoreParams, n...
    method useDb (line 515) | func (cl *commandlineHotBck) useDb(name string, replica bool) (uint64,...
    method createDb (line 543) | func (cl *commandlineHotBck) createDb(name string) error {
    method runHotRestore (line 559) | func (cl *commandlineHotBck) runHotRestore(input io.Reader, progress b...
    method restoreTx (line 615) | func (cl *commandlineHotBck) restoreTx(checksum, payload []byte) error {
  function newCommandlineHotBck (line 62) | func newCommandlineHotBck(os immuos.OS) (*commandlineHotBck, error) {
  type backupParams (line 77) | type backupParams struct
  function prepareBackupParams (line 126) | func prepareBackupParams(flags *pflag.FlagSet) (*backupParams, error) {
  function outputTx (line 297) | func outputTx(tx uint64, output io.Writer, checksum []byte, content []by...
  type restoreParams (line 311) | type restoreParams struct
  function prepareRestoreParams (line 397) | func prepareRestoreParams(flags *pflag.FlagSet) (*restoreParams, error) {
  function lastTxInFile (line 658) | func lastTxInFile(file io.Reader) (uint64, []byte, error) {
  function findTx (line 684) | func findTx(file io.Reader, tx uint64) (txID uint64, checksum []byte, pa...
  function nextTx (line 699) | func nextTx(file io.Reader) (txId uint64, checksum []byte, tx []byte, er...

FILE: cmd/immuadmin/command/hot_backup_test.go
  function getCmdline (line 36) | func getCmdline(t *testing.T) *commandline {
  function TestRestore (line 60) | func TestRestore(t *testing.T) {
  function TestBackup (line 158) | func TestBackup(t *testing.T) {

FILE: cmd/immuadmin/command/init.go
  function Options (line 28) | func Options() *client.Options {
  method configureFlags (line 57) | func (cl *commandline) configureFlags(cmd *cobra.Command) error {

FILE: cmd/immuadmin/command/init_test.go
  function TestOptions (line 27) | func TestOptions(t *testing.T) {
  function TestOptionsMtls (line 32) | func TestOptionsMtls(t *testing.T) {

FILE: cmd/immuadmin/command/login.go
  method login (line 28) | func (cl *commandline) login(cmd *cobra.Command) {
  method loginClient (line 83) | func (cl *commandline) loginClient(
  method logout (line 95) | func (cl *commandline) logout(cmd *cobra.Command) {

FILE: cmd/immuadmin/command/login_test.go
  function TestCommandLine_Connect (line 60) | func TestCommandLine_Connect(t *testing.T) {
  function TestCommandLine_Disconnect (line 82) | func TestCommandLine_Disconnect(t *testing.T) {
  type scIClientInnerMock (line 111) | type scIClientInnerMock struct
    method UpdateAuthConfig (line 116) | func (c scIClientInnerMock) UpdateAuthConfig(ctx context.Context, kind...
    method UpdateMTLSConfig (line 119) | func (c scIClientInnerMock) UpdateMTLSConfig(ctx context.Context, enab...
    method Disconnect (line 122) | func (c scIClientInnerMock) Disconnect() error {
    method GetOptions (line 126) | func (c scIClientInnerMock) GetOptions() *client.Options {
    method Login (line 130) | func (c scIClientInnerMock) Login(ctx context.Context, user []byte, pa...
  function TestCommandLine_LoginLogout (line 134) | func TestCommandLine_LoginLogout(t *testing.T) {
  function TestCommandLine_CheckLoggedIn (line 203) | func TestCommandLine_CheckLoggedIn(t *testing.T) {
  function newHomedirServiceMock (line 243) | func newHomedirServiceMock() *clienttest.HomedirServiceMock {

FILE: cmd/immuadmin/command/root.go
  method NewCmd (line 21) | func (cl *commandline) NewCmd() (*cobra.Command, error) {

FILE: cmd/immuadmin/command/serverconfig.go
  method serverConfig (line 27) | func (cl commandline) serverConfig(cmd *cobra.Command) {

FILE: cmd/immuadmin/command/serverconfig_test.go
  type scIClientMock (line 130) | type scIClientMock struct
    method UpdateAuthConfig (line 134) | func (c scIClientMock) UpdateAuthConfig(ctx context.Context, kind auth...
    method UpdateMTLSConfig (line 137) | func (c scIClientMock) UpdateMTLSConfig(ctx context.Context, enabled b...
    method Disconnect (line 140) | func (c scIClientMock) Disconnect() error {
    method Logout (line 143) | func (c scIClientMock) Logout(ctx context.Context) error {
    method GetOptions (line 147) | func (c scIClientMock) GetOptions() *client.Options {
    method Login (line 154) | func (c scIClientMock) Login(ctx context.Context, user []byte, pass []...

FILE: cmd/immuadmin/command/stats.go
  method status (line 30) | func (cl *commandline) status(cmd *cobra.Command) {
  method stats (line 65) | func (cl *commandline) stats(cmd *cobra.Command) {

FILE: cmd/immuadmin/command/stats/controller.go
  type Controller (line 30) | type Controller interface
  type statsController (line 35) | type statsController struct
    method Resize (line 77) | func (p *statsController) Resize() {
    method resize (line 82) | func (p *statsController) resize() {
    method Render (line 121) | func (p *statsController) Render(ms *metrics) {
    method initUI (line 207) | func (p *statsController) initUI() {
  type Tui (line 51) | type Tui interface
  type tui (line 59) | type tui struct
    method TerminalDimensions (line 61) | func (t tui) TerminalDimensions() (int, int) {
    method Render (line 64) | func (t tui) Render(items ...ui.Drawable) {
    method Init (line 67) | func (t tui) Init() error {
    method Close (line 70) | func (t tui) Close() {
    method PollEvents (line 73) | func (t tui) PollEvents() <-chan ui.Event {
  function enqueueDequeue (line 87) | func enqueueDequeue(l *list.List, v interface{}, max int) {
  function toFloats (line 93) | func toFloats(l *list.List) []float64 {
  function updatePlot (line 103) | func updatePlot(
  function initPlot (line 181) | func initPlot(
  function newStatsController (line 291) | func newStatsController(withDBHistograms bool, tui Tui) Controller {

FILE: cmd/immuadmin/command/stats/controller_test.go
  type tuiMock (line 29) | type tuiMock struct
    method TerminalDimensions (line 31) | func (t tuiMock) TerminalDimensions() (int, int) {
    method Render (line 34) | func (t tuiMock) Render(items ...ui.Drawable) {}
    method Init (line 36) | func (t tuiMock) Init() error {
    method Close (line 39) | func (t tuiMock) Close() {}
    method PollEvents (line 41) | func (t tuiMock) PollEvents() <-chan ui.Event {
  function TestNewStatsController (line 46) | func TestNewStatsController(t *testing.T) {
  function TestRender (line 51) | func TestRender(t *testing.T) {

FILE: cmd/immuadmin/command/stats/metrics.go
  constant SystemdbName (line 27) | SystemdbName = "systemdb"
  type rpcDuration (line 68) | type rpcDuration struct
  type dbInfo (line 75) | type dbInfo struct
  type operations (line 81) | type operations struct
  type memstats (line 87) | type memstats struct
  type metrics (line 95) | type metrics struct
    method isHistogramsDataAvailable (line 107) | func (ms *metrics) isHistogramsDataAvailable() bool {
    method clientsActiveDuringLastHour (line 111) | func (ms *metrics) clientsActiveDuringLastHour() *map[string]time.Time {
    method populateFrom (line 123) | func (ms *metrics) populateFrom(metricsFamilies *map[string]*dto.Metri...
    method withClients (line 130) | func (ms *metrics) withClients(metricsFamilies *map[string]*dto.Metric...
    method withDBInfo (line 172) | func (ms *metrics) withDBInfo(metricsFamilies *map[string]*dto.MetricF...
    method withDuration (line 211) | func (ms *metrics) withDuration(metricsFamilies *map[string]*dto.Metri...
    method withMemStats (line 252) | func (ms *metrics) withMemStats(metricsFamilies *map[string]*dto.Metri...
    method dbWithMostEntries (line 270) | func (ms *metrics) dbWithMostEntries() dbInfo {
  function getGaugeVecPerLabel (line 159) | func getGaugeVecPerLabel(metrics []*dto.Metric, label string, out *map[s...
  function byteCountBinary (line 282) | func byteCountBinary(b uint64) (string, float64) {

FILE: cmd/immuadmin/command/stats/metricsloader.go
  type MetricsLoader (line 28) | type MetricsLoader interface
  function newMetricsLoader (line 32) | func newMetricsLoader(url string) MetricsLoader {
  type metricsLoader (line 39) | type metricsLoader struct
    method Load (line 44) | func (ml *metricsLoader) Load() (*metrics, error) {

FILE: cmd/immuadmin/command/stats/show.go
  constant requestTimeout (line 29) | requestTimeout = 3 * time.Second
  function metricsURL (line 31) | func metricsURL(serverAddress string) string {
  function newHTTPClient (line 38) | func newHTTPClient() *http.Client {
  function ShowMetricsRaw (line 45) | func ShowMetricsRaw(w io.Writer, serverAddress string) error {
  function ShowMetricsAsText (line 60) | func ShowMetricsAsText(w io.Writer, serverAddress string) error {
  function ShowMetricsVisually (line 111) | func ShowMetricsVisually(serverAddress string) error {

FILE: cmd/immuadmin/command/stats/show_test.go
  function TestShowMetricsRaw (line 29) | func TestShowMetricsRaw(t *testing.T) {
  function TestShowMetricsAsText (line 38) | func TestShowMetricsAsText(t *testing.T) {

FILE: cmd/immuadmin/command/stats/ui.go
  type Statsui (line 27) | type Statsui interface
  type statsui (line 30) | type statsui struct
    method loadAndRender (line 36) | func (s statsui) loadAndRender() error {
    method runUI (line 45) | func (s statsui) runUI(singleRun bool) error {

FILE: cmd/immuadmin/command/stats/ui_test.go
  function TestRunUI (line 28) | func TestRunUI(t *testing.T) {
  type metricsLoaderMock (line 34) | type metricsLoaderMock struct
    method Load (line 36) | func (ml metricsLoaderMock) Load() (*metrics, error) {

FILE: cmd/immuadmin/command/stats_test.go
  function TestStats_Status (line 41) | func TestStats_Status(t *testing.T) {
  function TestStats_StatsText (line 86) | func TestStats_StatsText(t *testing.T) {
  function TestStats_StatsRaw (line 137) | func TestStats_StatsRaw(t *testing.T) {

FILE: cmd/immuadmin/command/user.go
  constant unsecurePasswordMsg (line 33) | unsecurePasswordMsg = "A strong password (containing upper and lower cas...
  method user (line 35) | func (cl *commandline) user(cmd *cobra.Command) {
  method changeUserPassword (line 140) | func (cl *commandline) changeUserPassword(cmd *cobra.Command, username s...
  method checkPassword (line 163) | func (cl *commandline) checkPassword(cmd *cobra.Command, newpass string)...
  method userList (line 181) | func (cl *commandline) userList(args []string) (string, error) {
  function updateMaxLen (line 233) | func updateMaxLen(maxs []int, strs []string) {
  function permissionToString (line 241) | func permissionToString(permission uint32) string {
  method userCreate (line 256) | func (cl *commandline) userCreate(cmd *cobra.Command, args []string) (st...
  method setActiveUser (line 309) | func (cl *commandline) setActiveUser(args []string, active bool) (string...
  method setUserPermission (line 321) | func (cl *commandline) setUserPermission(args []string) (resp string, er...
  function userExists (line 340) | func userExists(
  function dbExists (line 357) | func dbExists(
  function permissionFromString (line 374) | func permissionFromString(permissionStr string) (uint32, error) {

FILE: cmd/immuadmin/fips/fips.go
  function main (line 28) | func main() {

FILE: cmd/immuadmin/immuadmin.go
  function main (line 21) | func main() {

FILE: cmd/immuclient/audit/auditagent.go
  type AuditAgent (line 38) | type AuditAgent interface
  type auditAgent (line 43) | type auditAgent struct
    method Manage (line 58) | func (a *auditAgent) Manage(args []string, cmd *cobra.Command) (string...
  function options (line 161) | func options() *client.Options {

FILE: cmd/immuclient/audit/auditor.go
  constant name (line 44) | name        = "immuclient"
  constant description (line 45) | description = "immuclient"
  method InitAgent (line 51) | func (cAgent *auditAgent) InitAgent() (AuditAgent, error) {

FILE: cmd/immuclient/audit/executable.go
  type executable (line 24) | type executable struct
    method Start (line 36) | func (e *executable) Start() {
    method Stop (line 40) | func (e *executable) Stop() {
    method Run (line 44) | func (e *executable) Run() {
  function newExecutable (line 29) | func newExecutable(a *auditAgent) *executable {

FILE: cmd/immuclient/audit/init.go
  function Init (line 30) | func Init(args []string, cmd *cobra.Command) (err error) {
  function NewAuditAgent (line 48) | func NewAuditAgent() (AuditAgent, error) {

FILE: cmd/immuclient/audit/init_test.go
  function TestInit (line 26) | func TestInit(t *testing.T) {
  function TestInitWrongArg (line 32) | func TestInitWrongArg(t *testing.T) {

FILE: cmd/immuclient/audit/metrics.go
  type prometheusMetrics (line 26) | type prometheusMetrics struct
    method init (line 53) | func (p *prometheusMetrics) init(serverid string, immudbAddress, immud...
    method updateMetrics (line 74) | func (p *prometheusMetrics) updateMetrics(
  function newAuditGaugeVec (line 63) | func newAuditGaugeVec(name string, help string) *prometheus.GaugeVec {

FILE: cmd/immuclient/audit/metrics_test.go
  function TestMetrics (line 23) | func TestMetrics(t *testing.T) {

FILE: cmd/immuclient/audit/utils.go
  function stringInSlice (line 19) | func stringInSlice(a string, list []string) bool {

FILE: cmd/immuclient/audit/utils_test.go
  function TestStringInSlice (line 23) | func TestStringInSlice(t *testing.T) {

FILE: cmd/immuclient/cli/cli.go
  type cli (line 33) | type cli struct
    method Register (line 60) | func (cli *cli) Register(cmd *command) {
    method HelpMessage (line 65) | func (cli *cli) HelpMessage() string {
    method helpInit (line 69) | func (cli *cli) helpInit() {
    method Run (line 102) | func (cli *cli) Run() {
    method checkCommand (line 136) | func (cli *cli) checkCommand(arrCommandStr []string, l *liner.State) b...
    method runCommand (line 186) | func (cli *cli) runCommand(arrCommandStr []string) {
    method singleCommandHelp (line 244) | func (cli *cli) singleCommandHelp(cmdName string) (string, error) {
  type Cli (line 43) | type Cli interface
  function Init (line 49) | func Init(immucl immuc.Client) Cli {

FILE: cmd/immuclient/cli/cli_test.go
  function TestInit (line 36) | func TestInit(t *testing.T) {
  function setupTest (line 41) | func setupTest(t *testing.T) *cli {
  function TestRunCommand (line 66) | func TestRunCommand(t *testing.T) {
  function TestRunCommandExtraArgs (line 75) | func TestRunCommandExtraArgs(t *testing.T) {
  function TestRunMissingArgs (line 84) | func TestRunMissingArgs(t *testing.T) {
  function TestRunWrongCommand (line 93) | func TestRunWrongCommand(t *testing.T) {
  function TestCheckCommand (line 102) | func TestCheckCommand(t *testing.T) {
  function TestCheckCommandErrors (line 122) | func TestCheckCommandErrors(t *testing.T) {
  function TestImmuClient_BackupAndRestoreUX (line 131) | func TestImmuClient_BackupAndRestoreUX(t *testing.T) {

FILE: cmd/immuclient/cli/currentstatus.go
  method health (line 19) | func (cli *cli) health(args []string) (string, error) {
  method currentState (line 23) | func (cli *cli) currentState(args []string) (string, error) {

FILE: cmd/immuclient/cli/getcommands.go
  method getTxByID (line 19) | func (cli *cli) getTxByID(args []string) (string, error) {
  method getKey (line 23) | func (cli *cli) getKey(args []string) (string, error) {
  method safeGetKey (line 27) | func (cli *cli) safeGetKey(args []string) (string, error) {

FILE: cmd/immuclient/cli/login.go
  method login (line 19) | func (cli *cli) login(args []string) (string, error) {
  method logout (line 23) | func (cli *cli) logout(args []string) (string, error) {

FILE: cmd/immuclient/cli/login_test.go
  function TestLogin (line 31) | func TestLogin(t *testing.T) {

FILE: cmd/immuclient/cli/misc.go
  method history (line 23) | func (cli *cli) history(args []string) (string, error) {
  method healthCheck (line 27) | func (cli *cli) healthCheck(args []string) (string, error) {
  method version (line 31) | func (cli *cli) version(args []string) (string, error) {

FILE: cmd/immuclient/cli/misc_test.go
  function TestHealthCheck (line 25) | func TestHealthCheck(t *testing.T) {
  function TestHistory (line 33) | func TestHistory(t *testing.T) {
  function TestVersion (line 48) | func TestVersion(t *testing.T) {

FILE: cmd/immuclient/cli/recommend.go
  method correct (line 23) | func (cli *cli) correct(typedArg string) []string {
  function ld (line 37) | func ld(s, t string, ignoreCase bool) int {

FILE: cmd/immuclient/cli/recommend_test.go
  function TestCorrect (line 25) | func TestCorrect(t *testing.T) {

FILE: cmd/immuclient/cli/references.go
  method reference (line 19) | func (cli *cli) reference(args []string) (string, error) {
  method safereference (line 23) | func (cli *cli) safereference(args []string) (string, error) {

FILE: cmd/immuclient/cli/references_test.go
  function TestReference (line 25) | func TestReference(t *testing.T) {
  function TestSafeReference (line 35) | func TestSafeReference(t *testing.T) {

FILE: cmd/immuclient/cli/register.go
  type command (line 19) | type command struct
  method initCommands (line 27) | func (cli *cli) initCommands() {

FILE: cmd/immuclient/cli/register_test.go
  function TestInitCommands (line 25) | func TestInitCommands(t *testing.T) {

FILE: cmd/immuclient/cli/scanners.go
  method zScan (line 19) | func (cli *cli) zScan(args []string) (string, error) {
  method scan (line 23) | func (cli *cli) scan(args []string) (string, error) {
  method count (line 27) | func (cli *cli) count(args []string) (string, error) {

FILE: cmd/immuclient/cli/scanners_test.go
  function TestZScan (line 25) | func TestZScan(t *testing.T) {
  function TestScan (line 39) | func TestScan(t *testing.T) {
  function TestCount (line 50) | func TestCount(t *testing.T) {

FILE: cmd/immuclient/cli/server_info.go
  method serverInfo (line 19) | func (cli *cli) serverInfo(args []string) (string, error) {

FILE: cmd/immuclient/cli/setcommands.go
  method set (line 19) | func (cli *cli) set(args []string) (string, error) {
  method safeset (line 23) | func (cli *cli) safeset(args []string) (string, error) {
  method restore (line 27) | func (cli *cli) restore(args []string) (string, error) {
  method deleteKey (line 31) | func (cli *cli) deleteKey(args []string) (string, error) {
  method zAdd (line 35) | func (cli *cli) zAdd(args []string) (string, error) {
  method safeZAdd (line 39) | func (cli *cli) safeZAdd(args []string) (string, error) {
  method UseDatabase (line 43) | func (cli *cli) UseDatabase(args []string) (string, error) {

FILE: cmd/immuclient/cli/setcommands_test.go
  function TestSet (line 25) | func TestSet(t *testing.T) {
  function TestSafeSet (line 33) | func TestSafeSet(t *testing.T) {
  function TestZAdd (line 41) | func TestZAdd(t *testing.T) {
  function TestSafeZAdd (line 53) | func TestSafeZAdd(t *testing.T) {

FILE: cmd/immuclient/cli/sql.go
  method sqlExec (line 19) | func (cli *cli) sqlExec(args []string) (string, error) {
  method sqlQuery (line 23) | func (cli *cli) sqlQuery(args []string) (string, error) {
  method describeTable (line 27) | func (cli *cli) describeTable(args []string) (string, error) {
  method listTables (line 31) | func (cli *cli) listTables(args []string) (string, error) {
  method useDatabase (line 35) | func (cli *cli) useDatabase(args []string) (string, error) {

FILE: cmd/immuclient/cli/sql_test.go
  function TestSqlFloat (line 25) | func TestSqlFloat(t *testing.T) {

FILE: cmd/immuclient/cli/unixcmds.go
  method completer (line 43) | func (cli *cli) completer(line string) (c []string) {

FILE: cmd/immuclient/cli/unixcmds_test.go
  function TestCompleter (line 25) | func TestCompleter(t *testing.T) {
  function TestClear (line 35) | func TestClear(t *testing.T) {

FILE: cmd/immuclient/command/cmd.go
  function Execute (line 34) | func Execute(cmd *cobra.Command) error {
  function NewCommand (line 43) | func NewCommand() *cobra.Command {
  function isCommand (line 76) | func isCommand(args []string) bool {
  function commandNames (line 92) | func commandNames(cms []*cobra.Command) []string {
  function fprintln (line 102) | func fprintln(w io.Writer, msg string) {

FILE: cmd/immuclient/command/cmd_test.go
  function TestNew (line 25) | func TestNew(t *testing.T) {

FILE: cmd/immuclient/command/commandline.go
  type commandline (line 11) | type commandline struct
    method ConfigChain (line 26) | func (cl *commandline) ConfigChain(post func(cmd *cobra.Command, args ...
    method Register (line 45) | func (cl *commandline) Register(rootCmd *cobra.Command) *cobra.Command {
    method connect (line 88) | func (cl *commandline) connect(cmd *cobra.Command, args []string) (err...
    method disconnect (line 96) | func (cl *commandline) disconnect(cmd *cobra.Command, args []string) {
    method quit (line 102) | func (cl *commandline) quit(msg interface{}) {
  function NewCommandLine (line 18) | func NewCommandLine() commandline {

FILE: cmd/immuclient/command/commandline_test.go
  function TestCommandline_Register (line 28) | func TestCommandline_Register(t *testing.T) {
  function TestNewCommandLine (line 34) | func TestNewCommandLine(t *testing.T) {
  function TestCommandline_ConfigChain (line 39) | func TestCommandline_ConfigChain(t *testing.T) {
  function TestCommandline_ConfigChainErr (line 53) | func TestCommandline_ConfigChainErr(t *testing.T) {

FILE: cmd/immuclient/command/currentstatus.go
  method health (line 23) | func (cl *commandline) health(cmd *cobra.Command) {
  method currentState (line 42) | func (cl *commandline) currentState(cmd *cobra.Command) {

FILE: cmd/immuclient/command/currentstatus_test.go
  function setupTest (line 36) | func setupTest(t *testing.T) *test.ClientTest {
  function TestCurrentState (line 53) | func TestCurrentState(t *testing.T) {

FILE: cmd/immuclient/command/getcommands.go
  method getTxByID (line 23) | func (cl *commandline) getTxByID(cmd *cobra.Command) {
  method safegetTxByID (line 43) | func (cl *commandline) safegetTxByID(cmd *cobra.Command) {
  method getKey (line 63) | func (cl *commandline) getKey(cmd *cobra.Command) {
  method safeGetKey (line 83) | func (cl *commandline) safeGetKey(cmd *cobra.Command) {

FILE: cmd/immuclient/command/init.go
  method configureFlags (line 28) | func (cl *commandline) configureFlags(cmd *cobra.Command) error {

FILE: cmd/immuclient/command/init_test.go
  function _TestInit (line 28) | func _TestInit(t *testing.T) {
  function TestConnect (line 33) | func TestConnect(t *testing.T) {

FILE: cmd/immuclient/command/login.go
  method login (line 23) | func (cl *commandline) login(cmd *cobra.Command) {
  method logout (line 43) | func (cl *commandline) logout(cmd *cobra.Command) {

FILE: cmd/immuclient/command/login_test.go
  function TestLogin (line 33) | func TestLogin(t *testing.T) {

FILE: cmd/immuclient/command/misc.go
  method history (line 26) | func (cl *commandline) history(cmd *cobra.Command) {
  method status (line 46) | func (cl *commandline) status(cmd *cobra.Command) {
  method auditmode (line 66) | func (cl *commandline) auditmode(cmd *cobra.Command) {
  method interactiveCli (line 84) | func (cl *commandline) interactiveCli(cmd *cobra.Command) {
  method use (line 101) | func (cl *commandline) use(cmd *cobra.Command) {

FILE: cmd/immuclient/command/references.go
  method reference (line 23) | func (cl *commandline) reference(cmd *cobra.Command) {
  method safereference (line 43) | func (cl *commandline) safereference(cmd *cobra.Command) {

FILE: cmd/immuclient/command/root.go
  method NewCmd (line 25) | func (cl *commandline) NewCmd() (*cobra.Command, error) {

FILE: cmd/immuclient/command/scanners.go
  method zScan (line 23) | func (cl *commandline) zScan(cmd *cobra.Command) {
  method scan (line 43) | func (cl *commandline) scan(cmd *cobra.Command) {
  method count (line 63) | func (cl *commandline) count(cmd *cobra.Command) {

FILE: cmd/immuclient/command/server_info.go
  method serverInfo (line 5) | func (cl *commandline) serverInfo(cmd *cobra.Command) {

FILE: cmd/immuclient/command/server_info_test.go
  function TestServerInfo (line 28) | func TestServerInfo(t *testing.T) {

FILE: cmd/immuclient/command/setcommands.go
  method set (line 23) | func (cl *commandline) set(cmd *cobra.Command) {
  method safeset (line 44) | func (cl *commandline) safeset(cmd *cobra.Command) {
  method restore (line 64) | func (cl *commandline) restore(cmd *cobra.Command) {
  method deleteKey (line 84) | func (cl *commandline) deleteKey(cmd *cobra.Command) {
  method zAdd (line 105) | func (cl *commandline) zAdd(cmd *cobra.Command) {
  method safeZAdd (line 125) | func (cl *commandline) safeZAdd(cmd *cobra.Command) {

FILE: cmd/immuclient/command/sql.go
  method sqlExec (line 23) | func (cl *commandline) sqlExec(cmd *cobra.Command) {
  method sqlQuery (line 43) | func (cl *commandline) sqlQuery(cmd *cobra.Command) {
  method listTables (line 63) | func (cl *commandline) listTables(cmd *cobra.Command) {
  method describeTable (line 83) | func (cl *commandline) describeTable(cmd *cobra.Command) {

FILE: cmd/immuclient/command/tamperproofing.go
  method consistency (line 25) | func (cl *commandline) consistency(cmd *cobra.Command) {

FILE: cmd/immuclient/fips/fips.go
  function main (line 33) | func main() {

FILE: cmd/immuclient/immuc/currentstatus.go
  method DatabaseHealth (line 27) | func (i *immuc) DatabaseHealth(args []string) (string, error) {
  method CurrentState (line 42) | func (i *immuc) CurrentState(args []string) (string, error) {

FILE: cmd/immuclient/immuc/currentstatus_test.go
  function setupTest (line 30) | func setupTest(t *testing.T) *test.ClientTest {
  function TestCurrentRoot (line 47) | func TestCurrentRoot(t *testing.T) {

FILE: cmd/immuclient/immuc/getcommands.go
  method GetTxByID (line 34) | func (i *immuc) GetTxByID(args []string) (string, error) {
  method VerifiedGetTxByID (line 60) | func (i *immuc) VerifiedGetTxByID(args []string) (string, error) {
  method parseKeyArg (line 86) | func (i *immuc) parseKeyArg(arg string) (key []byte, revision int64, has...
  method Get (line 109) | func (i *immuc) Get(args []string) (string, error) {
  method VerifiedGet (line 134) | func (i *immuc) VerifiedGet(args []string) (string, error) {

FILE: cmd/immuclient/immuc/getcommands_test.go
  function TestGetTxByID (line 25) | func TestGetTxByID(t *testing.T) {
  function TestGet (line 35) | func TestGet(t *testing.T) {
  function TestVerifiedGet (line 46) | func TestVerifiedGet(t *testing.T) {
  function TestGetByRevision (line 57) | func TestGetByRevision(t *testing.T) {

FILE: cmd/immuclient/immuc/history.go
  method History (line 27) | func (i *immuc) History(args []string) (string, error) {

FILE: cmd/immuclient/immuc/history_test.go
  function TestHistory (line 25) | func TestHistory(t *testing.T) {

FILE: cmd/immuclient/immuc/init.go
  type immuc (line 32) | type immuc struct
    method Connect (line 90) | func (i *immuc) Connect(args []string) (err error) {
    method Disconnect (line 100) | func (i *immuc) Disconnect(args []string) error {
    method Execute (line 107) | func (i *immuc) Execute(f func(immuClient client.ImmuClient) (interfac...
    method ValueOnly (line 140) | func (i *immuc) ValueOnly() bool {
    method SetValueOnly (line 144) | func (i *immuc) SetValueOnly(v bool) {
    method WithFileTokenService (line 148) | func (i *immuc) WithFileTokenService(tkns tokenservice.TokenService) C...
  type Client (line 39) | type Client interface
  function Init (line 84) | func Init(opts *Options) (*immuc, error) {
  function OptionsFromEnv (line 155) | func OptionsFromEnv() *Options {

FILE: cmd/immuclient/immuc/init_errors_test.go
  function TestInitErrors (line 26) | func TestInitErrors(t *testing.T) {

FILE: cmd/immuclient/immuc/init_test.go
  function TestConnect (line 32) | func TestConnect(t *testing.T) {

FILE: cmd/immuclient/immuc/login.go
  method Login (line 33) | func (i *immuc) Login(args []string) (string, error) {
  method Logout (line 71) | func (i *immuc) Logout(args []string) (string, error) {
  method UserCreate (line 85) | func (i *immuc) UserCreate(args []string) (string, error) {
  method UserList (line 128) | func (i *immuc) UserList(args []string) (string, error) {
  method ChangeUserPassword (line 160) | func (i *immuc) ChangeUserPassword(args []string) (string, error) {
  method SetActiveUser (line 196) | func (i *immuc) SetActiveUser(args []string, active bool) (string, error) {
  method SetUserPermission (line 212) | func (i *immuc) SetUserPermission(args []string) (string, error) {

FILE: cmd/immuclient/immuc/login_test.go
  function TestLogin (line 32) | func TestLogin(t *testing.T) {
  function TestLogout (line 60) | func TestLogout(t *testing.T) {
  function TestUserList (line 87) | func TestUserList(t *testing.T) {
  function TestUserCreate (line 94) | func TestUserCreate(t *testing.T) {
  function TestUserChangePassword (line 192) | func TestUserChangePassword(t *testing.T) {
  function TestUserSetActive (line 245) | func TestUserSetActive(t *testing.T) {
  function TestSetUserPermission (line 292) | func TestSetUserPermission(t *testing.T) {

FILE: cmd/immuclient/immuc/misc.go
  method HealthCheck (line 26) | func (i *immuc) HealthCheck(args []string) (string, error) {

FILE: cmd/immuclient/immuc/misc_test.go
  function TestHealthCheck (line 25) | func TestHealthCheck(t *testing.T) {

FILE: cmd/immuclient/immuc/options.go
  type Options (line 23) | type Options struct
    method GetImmudbClientOptions (line 29) | func (o *Options) GetImmudbClientOptions() *client.Options {
    method WithImmudbClientOptions (line 33) | func (o *Options) WithImmudbClientOptions(opts *client.Options) *Optio...
    method GetValueOnly (line 38) | func (o *Options) GetValueOnly() bool {
    method WithValueOnly (line 42) | func (o *Options) WithValueOnly(valueOnly bool) *Options {
    method GetRevisionSeparator (line 47) | func (o *Options) GetRevisionSeparator() string {
    method WithRevisionSeparator (line 51) | func (o *Options) WithRevisionSeparator(revisionSeparator string) *Opt...

FILE: cmd/immuclient/immuc/options_test.go
  function TestOptions (line 26) | func TestOptions(t *testing.T) {

FILE: cmd/immuclient/immuc/print.go
  function PrintKV (line 28) | func PrintKV(
  function PrintSetItem (line 59) | func PrintSetItem(set []byte, referencedkey []byte, score float64, txhdr...
  function PrintServerInfo (line 69) | func PrintServerInfo(resp *schema.ServerInfoResponse) string {
  function PrintHealth (line 73) | func PrintHealth(res *schema.DatabaseHealthResponse) string {
  function PrintState (line 78) | func PrintState(root *schema.ImmutableState) string {
  function PrintTx (line 101) | func PrintTx(tx *schema.Tx, verified bool) string {
  function PadRight (line 115) | func PadRight(str, pad string, length int) string {

FILE: cmd/immuclient/immuc/references.go
  method SetReference (line 32) | func (i *immuc) SetReference(args []string) (string, error) {
  method VerifiedSetReference (line 82) | func (i *immuc) VerifiedSetReference(args []string) (string, error) {

FILE: cmd/immuclient/immuc/references_test.go
  function TestReference (line 25) | func TestReference(t *testing.T) {
  function TestVerifiedSetReference (line 35) | func TestVerifiedSetReference(t *testing.T) {

FILE: cmd/immuclient/immuc/scanners.go
  method ZScan (line 28) | func (i *immuc) ZScan(args []string) (string, error) {
  method Scan (line 63) | func (i *immuc) Scan(args []string) (res string, err error) {
  method Count (line 97) | func (i *immuc) Count(args []string) (string, error) {

FILE: cmd/immuclient/immuc/scanners_test.go
  function TestZScan (line 25) | func TestZScan(t *testing.T) {
  function TestIScan (line 39) | func TestIScan(t *testing.T) {
  function TestScan (line 46) | func TestScan(t *testing.T) {
  function TestCount (line 57) | func TestCount(t *testing.T) {

FILE: cmd/immuclient/immuc/server_info.go
  method ServerInfo (line 11) | func (i *immuc) ServerInfo(args []string) (string, error) {

FILE: cmd/immuclient/immuc/server_info_test.go
  function TestServerInfo (line 9) | func TestServerInfo(t *testing.T) {

FILE: cmd/immuclient/immuc/setcommands.go
  method Set (line 34) | func (i *immuc) Set(args []string) (string, error) {
  method VerifiedSet (line 72) | func (i *immuc) VerifiedSet(args []string) (string, error) {
  method Restore (line 108) | func (i *immuc) Restore(args []string) (string, error) {
  method DeleteKey (line 162) | func (i *immuc) DeleteKey(args []string) (string, error) {
  method ZAdd (line 182) | func (i *immuc) ZAdd(args []string) (string, error) {
  method VerifiedZAdd (line 224) | func (i *immuc) VerifiedZAdd(args []string) (string, error) {
  method CreateDatabase (line 268) | func (i *immuc) CreateDatabase(args []string) (string, error) {
  method DatabaseList (line 286) | func (i *immuc) DatabaseList(args []string) (string, error) {
  method UseDatabase (line 306) | func (i *immuc) UseDatabase(args []string) (string, error) {

FILE: cmd/immuclient/immuc/setcommands_test.go
  function TestSet (line 25) | func TestSet(t *testing.T) {
  function TestVerifiedSet (line 34) | func TestVerifiedSet(t *testing.T) {
  function TestZAdd (line 43) | func TestZAdd(t *testing.T) {
  function _TestVerifiedZAdd (line 55) | func _TestVerifiedZAdd(t *testing.T) {
  function TestCreateDatabase (line 67) | func TestCreateDatabase(t *testing.T) {

FILE: cmd/immuclient/immuc/sql.go
  method SQLExec (line 30) | func (i *immuc) SQLExec(args []string) (string, error) {
  method SQLQuery (line 51) | func (i *immuc) SQLQuery(args []string) (string, error) {
  method ListTables (line 68) | func (i *immuc) ListTables() (string, error) {
  method DescribeTable (line 83) | func (i *immuc) DescribeTable(args []string) (string, error) {
  function renderTableResult (line 101) | func renderTableResult(resp *schema.SQLQueryResult) string {

FILE: cmd/immuclient/immuclient.go
  function main (line 28) | func main() {

FILE: cmd/immuclient/immuclienttest/helper.go
  type ClientTest (line 36) | type ClientTest struct
    method WithTokenFileService (line 102) | func (ct *ClientTest) WithTokenFileService(tkns tokenservice.TokenServ...
    method WithOptions (line 107) | func (ct *ClientTest) WithOptions(opts *immuc.Options) *ClientTest {
    method Connect (line 112) | func (c *ClientTest) Connect(dialer servertest.BuffDialer) {
    method Login (line 136) | func (c *ClientTest) Login(username string) {
  type HomedirServiceMock (line 44) | type HomedirServiceMock struct
    method FileExistsInUserHomeDir (line 49) | func (h *HomedirServiceMock) FileExistsInUserHomeDir(pathToFile string...
    method WriteFileToUserHomeDir (line 59) | func (h *HomedirServiceMock) WriteFileToUserHomeDir(content []byte, pa...
    method DeleteFileFromUserHomeDir (line 69) | func (h *HomedirServiceMock) DeleteFileFromUserHomeDir(pathToFile stri...
    method ReadFileFromUserHomeDir (line 78) | func (h *HomedirServiceMock) ReadFileFromUserHomeDir(pathToFile string...
  function NewDefaultClientTest (line 91) | func NewDefaultClientTest() *ClientTest {
  function NewClientTest (line 94) | func NewClientTest(pr helper.PasswordReader, tkns tokenservice.TokenServ...
  function CaptureStdout (line 143) | func CaptureStdout(f func()) string {
  type PasswordReader (line 171) | type PasswordReader struct
    method Read (line 176) | func (pr *PasswordReader) Read(msg string) ([]byte, error) {

FILE: cmd/immuclient/service/constants/freebsd.dist.go
  constant ExecPath (line 24) | ExecPath = "/usr/sbin/"
  constant ConfigPath (line 25) | ConfigPath = "/etc/immudb"
  constant ManPath (line 26) | ManPath = ""
  constant OSUser (line 27) | OSUser = "immu"
  constant OSGroup (line 28) | OSGroup = "immu"

FILE: cmd/immuclient/service/constants/linux.dist.go
  constant ExecPath (line 24) | ExecPath = "/usr/sbin/"
  constant ConfigPath (line 25) | ConfigPath = "/etc/"
  constant OSUser (line 26) | OSUser = "immu"
  constant OSGroup (line 27) | OSGroup = "immu"

FILE: cmd/immuclient/service/constants/windows.dist.go
  constant ExecPath (line 24) | ExecPath = ""
  constant ConfigPath (line 25) | ConfigPath = ""
  constant OSUser (line 26) | OSUser = ""
  constant OSGroup (line 27) | OSGroup = ""

FILE: cmd/immudb/command/cmd.go
  function Execute (line 32) | func Execute() {
  function newCommand (line 61) | func newCommand(immudbServer server.ImmuServerIf) (*cobra.Command, error) {

FILE: cmd/immudb/command/cmd_test.go
  function DefaultTestOptions (line 32) | func DefaultTestOptions() (o *server.Options) {
  function TestImmudbCommandFlagParser (line 40) | func TestImmudbCommandFlagParser(t *testing.T) {
  function TestImmudbCommandFlagParserWrongTLS (line 68) | func TestImmudbCommandFlagParserWrongTLS(t *testing.T) {
  function TestImmudbCommandFlagParserPriority (line 103) | func TestImmudbCommandFlagParserPriority(t *testing.T) {
  function executeCommand (line 157) | func executeCommand(root *cobra.Command, args ...string) (output string,...
  function executeCommandC (line 162) | func executeCommandC(root *cobra.Command, args ...string) (c *cobra.Comm...
  function TestImmudb (line 171) | func TestImmudb(t *testing.T) {
  function TestImmudbDetached (line 185) | func TestImmudbDetached(t *testing.T) {
  function TestImmudbMtls (line 202) | func TestImmudbMtls(t *testing.T) {
  function TestImmudbLogFile (line 222) | func TestImmudbLogFile(t *testing.T) {
  type plauncherMock (line 240) | type plauncherMock struct
    method Detached (line 242) | func (pl plauncherMock) Detached() error {
  function TestNewCommand (line 246) | func TestNewCommand(t *testing.T) {
  function TestExecute (line 251) | func TestExecute(t *testing.T) {
  function TestImmudbCommandReplicationFlagsParser (line 262) | func TestImmudbCommandReplicationFlagsParser(t *testing.T) {

FILE: cmd/immudb/command/commandline.go
  type Commandline (line 25) | type Commandline struct
    method ConfigChain (line 30) | func (cl *Commandline) ConfigChain(post func(cmd *cobra.Command, args ...

FILE: cmd/immudb/command/commandline_test.go
  function TestCommandline_Immudb (line 27) | func TestCommandline_Immudb(t *testing.T) {
  function TestCommandline_ConfigChain (line 34) | func TestCommandline_ConfigChain(t *testing.T) {
  function TestCommandline_ConfigChainErr (line 49) | func TestCommandline_ConfigChainErr(t *testing.T) {

FILE: cmd/immudb/command/immudbcmdtest/immuServerMock.go
  type ImmuServerMock (line 27) | type ImmuServerMock struct
    method WithPgsqlServer (line 36) | func (s *ImmuServerMock) WithPgsqlServer(psrv pgsqlsrv.PGSQLServer) se...
    method WithOptions (line 41) | func (s *ImmuServerMock) WithOptions(options *server.Options) server.I...
    method WithLogger (line 45) | func (s *ImmuServerMock) WithLogger(logger logger.Logger) server.ImmuS...
    method WithStateSigner (line 50) | func (s *ImmuServerMock) WithStateSigner(stateSigner server.StateSigne...
    method WithStreamServiceFactory (line 55) | func (s *ImmuServerMock) WithStreamServiceFactory(ssf stream.ServiceFa...
    method WithDbList (line 60) | func (s *ImmuServerMock) WithDbList(dbList database.DatabaseList) serv...
    method Start (line 65) | func (s *ImmuServerMock) Start() error {
    method Stop (line 69) | func (s *ImmuServerMock) Stop() error {
    method Initialize (line 73) | func (s *ImmuServerMock) Initialize() error {

FILE: cmd/immudb/command/immudbcmdtest/immuServerMock_test.go
  type ssMock (line 31) | type ssMock struct
    method Sign (line 33) | func (ss *ssMock) Sign(state *schema.ImmutableState) error { return nil }
  function TestImmuServerMock (line 35) | func TestImmuServerMock(t *testing.T) {

FILE: cmd/immudb/command/immudbcmdtest/manpageservice.go
  type ManpageServiceMock (line 21) | type ManpageServiceMock struct
    method InstallManPages (line 24) | func (ms ManpageServiceMock) InstallManPages(dir string, serviceName s...
    method UninstallManPages (line 29) | func (ms ManpageServiceMock) UninstallManPages(dir string, serviceName...

FILE: cmd/immudb/command/init.go
  method setupFlags (line 30) | func (cl *Commandline) setupFlags(cmd *cobra.Command, options *server.Op...
  function setupDefaults (line 120) | func setupDefaults(options *server.Options) {

FILE: cmd/immudb/command/parse_options.go
  function parseOptions (line 25) | func parseOptions() (options *server.Options, err error) {

FILE: cmd/immudb/command/root.go
  method NewRootCmd (line 30) | func (cl *Commandline) NewRootCmd(immudbServer server.ImmuServerIf) (*co...
  method Immudb (line 61) | func (cl *Commandline) Immudb(immudbServer server.ImmuServerIf) func(*co...

FILE: cmd/immudb/command/root_test.go
  function TestNewCmd (line 30) | func TestNewCmd(t *testing.T) {
  function TestNewCmdInitializeError (line 37) | func TestNewCmdInitializeError(t *testing.T) {

FILE: cmd/immudb/command/service/commandline.go
  function NewCommandLine (line 30) | func NewCommandLine() *commandline {
  type commandline (line 48) | type commandline struct
    method Register (line 68) | func (cld *commandline) Register(rootCmd *cobra.Command) *cobra.Command {
  type Commandline (line 64) | type Commandline interface

FILE: cmd/immudb/command/service/commandline_test.go
  function TestCommandline_Register (line 27) | func TestCommandline_Register(t *testing.T) {
  function TestNewCommandLine (line 33) | func TestNewCommandLine(t *testing.T) {

FILE: cmd/immudb/command/service/constants/freebsd.dist.go
  constant ExecPath (line 24) | ExecPath = "/usr/sbin/"
  constant ConfigPath (line 25) | ConfigPath = "/etc/"
  constant OSUser (line 26) | OSUser = "immu"
  constant OSGroup (line 27) | OSGroup = "immu"

FILE: cmd/immudb/command/service/constants/linux.dist.go
  constant ExecPath (line 24) | ExecPath = "/usr/sbin/"
  constant ConfigPath (line 25) | ConfigPath = "/etc/"
  constant OSUser (line 26) | OSUser = "immu"
  constant OSGroup (line 27) | OSGroup = "immu"

FILE: cmd/immudb/command/service/constants/windows.dist.go
  constant ExecPath (line 24) | ExecPath = ""
  constant ConfigPath (line 25) | ConfigPath = ""
  constant OSUser (line 26) | OSUser = ""
  constant OSGroup (line 27) | OSGroup = ""

FILE: cmd/immudb/command/service/service.go
  method Service (line 35) | func (cl *commandline) Service(cmd *cobra.Command) {
  function stringInSlice (line 199) | func stringInSlice(a string, list []string) bool {
  function launch (line 208) | func launch(command string, args []string) (err error) {

FILE: cmd/immudb/command/service/service_test.go
  function TestCommandLine_ServiceImmudbInstall (line 36) | func TestCommandLine_ServiceImmudbInstall(t *testing.T) {
  function TestCommandLine_ServiceImmudbUninstallAbortUnintall (line 49) | func TestCommandLine_ServiceImmudbUninstallAbortUnintall(t *testing.T) {
  function TestCommandLine_ServiceImmudbUninstallRemovingData (line 61) | func TestCommandLine_ServiceImmudbUninstallRemovingData(t *testing.T) {
  function TestCommandLine_ServiceImmudbUninstallWithoutRemoveData (line 78) | func TestCommandLine_ServiceImmudbUninstallWithoutRemoveData(t *testing....
  function TestCommandLine_ServiceImmudbStop (line 95) | func TestCommandLine_ServiceImmudbStop(t *testing.T) {
  function TestCommandLine_ServiceImmudbStart (line 105) | func TestCommandLine_ServiceImmudbStart(t *testing.T) {
  function TestCommandLine_ServiceImmudbDelayed (line 115) | func TestCommandLine_ServiceImmudbDelayed(t *testing.T) {
  function TestCommandLine_ServiceImmudbDelayedInner (line 128) | func TestCommandLine_ServiceImmudbDelayedInner(t *testing.T) {
  function TestCommandLine_ServiceImmudbExtraArgs (line 141) | func TestCommandLine_ServiceImmudbExtraArgs(t *testing.T) {
  function TestCommandLine_ServiceImmudbRestart (line 154) | func TestCommandLine_ServiceImmudbRestart(t *testing.T) {
  function TestCommandLine_ServiceImmudbStatus (line 164) | func TestCommandLine_ServiceImmudbStatus(t *testing.T) {
  function TestCommandline_ServiceNewDaemonError (line 174) | func TestCommandline_ServiceNewDaemonError(t *testing.T) {
  function TestCommandline_ServiceInstallSetupError (line 188) | func TestCommandline_ServiceInstallSetupError(t *testing.T) {
  function TestCommandline_ServiceGetDefaultConfigPathError (line 202) | func TestCommandline_ServiceGetDefaultConfigPathError(t *testing.T) {
  function TestCommandline_ServiceInstallError (line 216) | func TestCommandline_ServiceInstallError(t *testing.T) {
  function TestCommandline_ServiceInstallDaemonStartError (line 235) | func TestCommandline_ServiceInstallDaemonStartError(t *testing.T) {
  function TestCommandline_ServiceUninstallDaemonStatusError (line 254) | func TestCommandline_ServiceUninstallDaemonStatusError(t *testing.T) {
  function TestCommandline_ServiceUninstallIsRunning (line 273) | func TestCommandline_ServiceUninstallIsRunning(t *testing.T) {
  function TestCommandline_ServiceUninstallEraseDataError (line 289) | func TestCommandline_ServiceUninstallEraseDataError(t *testing.T) {
  function TestCommandline_ServiceUninstallNotWanted (line 305) | func TestCommandline_ServiceUninstallNotWanted(t *testing.T) {
  function TestCommandline_ServiceUninstallTerminalError (line 318) | func TestCommandline_ServiceUninstallTerminalError(t *testing.T) {
  function TestCommandline_ServiceUninstallDaemonStopError (line 332) | func TestCommandline_ServiceUninstallDaemonStopError(t *testing.T) {
  function TestCommandline_ServiceUninstallDaemonRemoveError (line 355) | func TestCommandline_ServiceUninstallDaemonRemoveError(t *testing.T) {
  function TestCommandline_ServiceUninstallDaemonUninstallSetupError (line 378) | func TestCommandline_ServiceUninstallDaemonUninstallSetupError(t *testin...
  function TestCommandline_ServiceStartDaemonStartError (line 395) | func TestCommandline_ServiceStartDaemonStartError(t *testing.T) {
  function TestCommandline_ServiceStopDaemonStopError (line 414) | func TestCommandline_ServiceStopDaemonStopError(t *testing.T) {
  function TestCommandline_ServicRestartDaemonStopError (line 433) | func TestCommandline_ServicRestartDaemonStopError(t *testing.T) {
  function TestCommandline_ServicRestartDaemonStartError (line 452) | func TestCommandline_ServicRestartDaemonStartError(t *testing.T) {
  function TestCommandline_ServicRestarIsNotAdminError (line 471) | func TestCommandline_ServicRestarIsNotAdminError(t *testing.T) {
  function TestCommandline_ServicStatusDaemonStatusError (line 487) | func TestCommandline_ServicStatusDaemonStatusError(t *testing.T) {
  function TestCommandline_CommandInvalidArgument (line 506) | func TestCommandline_CommandInvalidArgument(t *testing.T) {
  function TestCommandline_CommandMissingCommandName (line 517) | func TestCommandline_CommandMissingCommandName(t *testing.T) {

FILE: cmd/immudb/command/service/servicetest/commandline.go
  type commandlineMock (line 5) | type commandlineMock struct
    method checkLoggedInAndConnect (line 7) | func (cl *commandlineMock) checkLoggedInAndConnect(cmd *cobra.Command,...
    method disconnect (line 11) | func (cl *commandlineMock) disconnect(cmd *cobra.Command, args []strin...
    method connect (line 13) | func (cl *commandlineMock) connect(cmd *cobra.Command, args []string) ...
    method checkLoggedIn (line 16) | func (cl *commandlineMock) checkLoggedIn(cmd *cobra.Command, args []st...

FILE: cmd/immudb/command/service/servicetest/configservice.go
  type ConfigServiceMock (line 25) | type ConfigServiceMock struct
    method WriteConfigAs (line 29) | func (v *ConfigServiceMock) WriteConfigAs(filename string) error {
    method GetString (line 32) | func (v *ConfigServiceMock) GetString(key string) string {
    method SetConfigType (line 35) | func (v *ConfigServiceMock) SetConfigType(in string) {}
    method ReadConfig (line 37) | func (v *ConfigServiceMock) ReadConfig(in io.Reader) error {

FILE: cmd/immudb/command/service/servicetest/daemon.go
  function NewDaemonMock (line 21) | func NewDaemonMock() *daemonmock {
  type daemonmock (line 47) | type daemonmock struct
    method SetTemplate (line 58) | func (d *daemonmock) SetTemplate(t string) error {
    method Install (line 62) | func (d *daemonmock) Install(args ...string) (string, error) {
    method Remove (line 66) | func (d *daemonmock) Remove() (string, error) {
    method Start (line 70) | func (d *daemonmock) Start() (string, error) {
    method Stop (line 74) | func (d *daemonmock) Stop() (string, error) {
    method Status (line 78) | func (d *daemonmock) Status() (string, error) {
    method Run (line 82) | func (d *daemonmock) Run(e daemon.Executable) (string, error) {

FILE: cmd/immudb/command/service/servicetest/server.go
  function NewDefaultImmuServerMock (line 25) | func NewDefaultImmuServerMock() *ImmuServerMock {
  type ImmuServerMock (line 48) | type ImmuServerMock struct
    method Initialize (line 59) | func (d *ImmuServerMock) Initialize() error {
    method Start (line 62) | func (d *ImmuServerMock) Start() error {
    method Stop (line 65) | func (d *ImmuServerMock) Stop() error {
    method WithOptions (line 68) | func (d *ImmuServerMock) WithOptions(options *server.Options) server.I...
    method WithLogger (line 71) | func (d *ImmuServerMock) WithLogger(l logger.Logger) server.ImmuServer...
    method WithStateSigner (line 74) | func (d *ImmuServerMock) WithStateSigner(stateSigner server.StateSigne...
    method WithStreamServiceFactory (line 77) | func (d *ImmuServerMock) WithStreamServiceFactory(ssf stream.ServiceFa...

FILE: cmd/immudb/command/service/servicetest/sservice.go
  function NewSservicemock (line 24) | func NewSservicemock() *Sservicemock {
  type Sservicemock (line 67) | type Sservicemock struct
    method NewDaemon (line 82) | func (ss *Sservicemock) NewDaemon(name, description string, dependenci...
    method IsAdmin (line 86) | func (ss *Sservicemock) IsAdmin() (bool, error) {
    method InstallSetup (line 89) | func (ss *Sservicemock) InstallSetup(serviceName string, cmd *cobra.Co...
    method UninstallSetup (line 92) | func (ss *Sservicemock) UninstallSetup(serviceName string) (err error) {
    method EraseData (line 95) | func (ss *Sservicemock) EraseData(serviceName string) (err error) {
    method IsRunning (line 98) | func (ss *Sservicemock) IsRunning(status string) bool {
    method GetDefaultConfigPath (line 101) | func (ss *Sservicemock) GetDefaultConfigPath(serviceName string) (stri...
    method ReadConfig (line 105) | func (ss *Sservicemock) ReadConfig(serviceName string) (err error) {
    method InstallConfig (line 108) | func (ss *Sservicemock) InstallConfig(serviceName string) (err error) {
    method CopyExecInOsDefault (line 111) | func (ss *Sservicemock) CopyExecInOsDefault(execPath string) (newExecP...
    method GetDefaultExecPath (line 114) | func (ss *Sservicemock) GetDefaultExecPath(serviceName string) (string...
    method UninstallExecutables (line 117) | func (ss *Sservicemock) UninstallExecutables(serviceName string) error {
  type SservicePermissionsMock (line 121) | type SservicePermissionsMock struct
    method GroupCreateIfNotExists (line 123) | func (ssp SservicePermissionsMock) GroupCreateIfNotExists() (err error) {
    method UserCreateIfNotExists (line 126) | func (ssp SservicePermissionsMock) UserCreateIfNotExists() (err error) {
    method SetOwnership (line 129) | func (ssp SservicePermissionsMock) SetOwnership(path string) (err erro...

FILE: cmd/immudb/command/tls_config.go
  constant certFileDefault (line 32) | certFileDefault = "immudb-cert.pem"
  constant keyFileDefault (line 33) | keyFileDefault  = "immudb-key.pem"
  constant certOrganizationDefault (line 35) | certOrganizationDefault = "immudb"
  constant certExpirationDefault (line 36) | certExpirationDefault   = 365 * 24 * time.Hour
  function setUpTLS (line 39) | func setUpTLS(pkeyPath, certPath, ca string, mtls bool, autoCert bool) (...
  function loadCert (line 98) | func loadCert(certPath, keyPath string) (*tls.Certificate, error) {
  function ensureCert (line 106) | func ensureCert(certPath, keyPath string, genCert bool) (*tls.Certificat...
  function getCertAndKeyPath (line 118) | func getCertAndKeyPath(certPath, keyPath string, useDefault bool) (strin...

FILE: cmd/immudb/command/tls_config_test.go
  function TestSetUpTLS (line 57) | func TestSetUpTLS(t *testing.T) {
  function TestSetUpTLSWithAutoHTTPS (line 81) | func TestSetUpTLSWithAutoHTTPS(t *testing.T) {

FILE: cmd/immudb/fips/fips.go
  function main (line 28) | func main() {

FILE: cmd/immudb/immudb.go
  function main (line 21) | func main() {

FILE: cmd/immutest/command/cmd.go
  function NewCmd (line 27) | func NewCmd(

FILE: cmd/immutest/command/init.go
  type commandline (line 40) | type commandline struct
    method disconnect (line 257) | func (cl *commandline) disconnect(cmd *cobra.Command, args []string) {
    method connect (line 264) | func (cl *commandline) connect(cmd *cobra.Command, args []string) (err...
    method configureFlags (line 272) | func (cl *commandline) configureFlags(
  constant defaultNbEntries (line 49) | defaultNbEntries = 100
  function Init (line 52) | func Init(cmd *cobra.Command, cl *commandline) {
  function reconnect (line 106) | func reconnect(cl *commandline, cmd *cobra.Command) {
  function parseNbEntries (line 114) | func parseNbEntries(args []string, cl *commandline) int {
  function login (line 133) | func login(
  function selectDb (line 167) | func selectDb(
  function askUserToConfirmOrCancel (line 182) | func askUserToConfirmOrCancel(tr c.TerminalReader, cl *commandline) {
  function populate (line 191) | func populate(ctx context.Context, cl *commandline, immuClient *client.I...
  function options (line 242) | func options() *client.Options {

FILE: cmd/immutest/immutest.go
  function main (line 31) | func main() {
  function execute (line 44) | func execute(

FILE: cmd/sservice/manpageservice.go
  constant ManPath (line 28) | ManPath = "/usr/share/man/man1/"
  type ManpageService (line 30) | type ManpageService interface
  type manpageService (line 35) | type manpageService struct
    method InstallManPages (line 42) | func (ms manpageService) InstallManPages(dir string, serviceName strin...
    method UninstallManPages (line 54) | func (ms manpageService) UninstallManPages(dir string, serviceName str...
  function NewManpageService (line 37) | func NewManpageService() manpageService {

FILE: cmd/sservice/manpageservice_test.go
  function TestManpageService (line 29) | func TestManpageService(t *testing.T) {

FILE: cmd/sservice/option.go
  type Option (line 20) | type Option struct
    method WithExecPath (line 32) | func (o *Option) WithExecPath(path string) *Option {
    method WithConfigPath (line 38) | func (o *Option) WithConfigPath(path string) *Option {
    method WithUser (line 44) | func (o *Option) WithUser(user string) *Option {
    method WithGroup (line 50) | func (o *Option) WithGroup(group string) *Option {
    method WithUsageExamples (line 56) | func (o *Option) WithUsageExamples(usage string) *Option {
    method WithUsageDetails (line 62) | func (o *Option) WithUsageDetails(usage string) *Option {
    method WithStartUpConfig (line 68) | func (o *Option) WithStartUpConfig(config string) *Option {
    method WithConfig (line 74) | func (o *Option) WithConfig(config []byte) *Option {

FILE: cmd/sservice/option_test.go
  function TestOption (line 24) | func TestOption(t *testing.T) {

FILE: cmd/sservice/sservice.go
  type Sservice (line 27) | type Sservice interface
  type SservicePermissions (line 44) | type SservicePermissions interface
  type ConfigService (line 51) | type ConfigService interface

FILE: cmd/sservice/sservice_freebsd.go
  function NewSService (line 42) | func NewSService(options *Option) *sservice {
  type sservice (line 47) | type sservice struct
    method NewDaemon (line 55) | func (ss *sservice) NewDaemon(serviceName string, description string, ...
    method IsAdmin (line 63) | func (ss sservice) IsAdmin() (bool, error) {
    method InstallSetup (line 76) | func (ss sservice) InstallSetup(serviceName string, cmd *cobra.Command...
    method UninstallSetup (line 131) | func (ss sservice) UninstallSetup(serviceName string) (err error) {
    method InstallConfig (line 167) | func (ss sservice) InstallConfig(serviceName string) (err error) {
    method GroupCreateIfNotExists (line 187) | func (ss sservice) GroupCreateIfNotExists() (err error) {
    method UserCreateIfNotExists (line 197) | func (ss sservice) UserCreateIfNotExists() (err error) {
    method SetOwnership (line 208) | func (ss sservice) SetOwnership(path string) (err error) {
    method EraseData (line 231) | func (ss sservice) EraseData(serviceName string) (err error) {
    method IsRunning (line 239) | func (ss sservice) IsRunning(status string) bool {
    method ReadConfig (line 244) | func (ss sservice) ReadConfig(serviceName string) (err error) {
    method CopyExecInOsDefault (line 250) | func (ss sservice) CopyExecInOsDefault(serviceName string) (string, er...
    method GetDefaultExecPath (line 280) | func (ss sservice) GetDefaultExecPath(serviceName string) (string, err...
    method UninstallExecutables (line 284) | func (ss sservice) UninstallExecutables(serviceName string) error {
    method InstallManPages (line 289) | func (ss sservice) InstallManPages(serviceName string, cmd *cobra.Comm...
    method UninstallManPages (line 296) | func (ss sservice) UninstallManPages(serviceName string) error {
    method GetDefaultConfigPath (line 301) | func (ss sservice) GetDefaultConfigPath(serviceName string) (string, e...
    method osChown (line 305) | func (ss sservice) osChown(name string, uid, gid int) error {
    method osChmod (line 312) | func (ss sservice) osChmod(name string, mode os.FileMode) error {
    method osRemove (line 321) | func (ss sservice) osRemove(folder string) error {
    method osRemoveAll (line 328) | func (ss sservice) osRemoveAll(folder string) error {
  function deletionGuard (line 335) | func deletionGuard(path string) error {
  function permissionGuard (line 352) | func permissionGuard(path string) error {

FILE: cmd/sservice/sservice_unix.go
  function NewSService (line 42) | func NewSService(options *Option) *sservice {
  type sservice (line 47) | type sservice struct
    method NewDaemon (line 55) | func (ss *sservice) NewDaemon(serviceName string, description string, ...
    method IsAdmin (line 63) | func (ss sservice) IsAdmin() (bool, error) {
    method InstallSetup (line 94) | func (ss sservice) InstallSetup(serviceName string, cmd *cobra.Command...
    method UninstallSetup (line 133) | func (ss sservice) UninstallSetup(serviceName string) (err error) {
    method InstallConfig (line 163) | func (ss sservice) InstallConfig(serviceName string) (err error) {
    method GroupCreateIfNotExists (line 186) | func (ss sservice) GroupCreateIfNotExists() (err error) {
    method UserCreateIfNotExists (line 193) | func (ss sservice) UserCreateIfNotExists() (err error) {
    method SetOwnership (line 200) | func (ss sservice) SetOwnership(path string) (err error) {
    method EraseData (line 224) | func (ss sservice) EraseData(serviceName string) (err error) {
    method IsRunning (line 232) | func (ss sservice) IsRunning(status string) bool {
    method ReadConfig (line 237) | func (ss sservice) ReadConfig(serviceName string) (err error) {
    method CopyExecInOsDefault (line 243) | func (ss sservice) CopyExecInOsDefault(serviceName string) (string, er...
    method GetDefaultExecPath (line 274) | func (ss sservice) GetDefaultExecPath(serviceName string) (string, err...
    method UninstallExecutables (line 278) | func (ss sservice) UninstallExecutables(serviceName string) error {
    method InstallManPages (line 283) | func (ss sservice) InstallManPages(serviceName string, cmd *cobra.Comm...
    method UninstallManPages (line 290) | func (ss sservice) UninstallManPages(serviceName string) error {
    method GetDefaultConfigPath (line 295) | func (ss sservice) GetDefaultConfigPath(serviceName string) (string, e...
    method removeFolderIfEmpty (line 301) | func (ss sservice) removeFolderIfEmpty(folder string) error {
    method osChown (line 317) | func (ss sservice) osChown(name string, uid, gid int) error {
    method osChmod (line 324) | func (ss sservice) osChmod(name string, mode os.FileMode) error {
    method osRemove (line 331) | func (ss sservice) osRemove(folder string) error {
    method osRemoveAll (line 338) | func (ss sservice) osRemoveAll(folder string) error {
  type delayedTasks (line 75) | type delayedTasks struct
    method delay (line 79) | func (dt *delayedTasks) delay(f func() error) {
    method do (line 83) | func (dt *delayedTasks) do() error {
  function deletionGuard (line 345) | func deletionGuard(path string) error {
  function permissionGuard (line 365) | func permissionGuard(path string) error {

FILE: cmd/sservice/sservice_unix_test.go
  function init (line 39) | func init() {
  function TestSservice_NewService (line 82) | func TestSservice_NewService(t *testing.T) {
  function TestSservice_NewDaemon (line 88) | func TestSservice_NewDaemon(t *testing.T) {
  function TestSservice_IsAdmin (line 98) | func TestSservice_IsAdmin(t *testing.T) {
  function TestSservice_immudb (line 107) | func TestSservice_immudb(t *testing.T) {
  function TestSservice_getDefaultExecPath (line 135) | func TestSservice_getDefaultExecPath(t *testing.T) {
  function TestSservice_CopyExecInOsDefault (line 144) | func TestSservice_CopyExecInOsDefault(t *testing.T) {
  function TestSservice_EraseData_immudb (line 156) | func TestSservice_EraseData_immudb(t *testing.T) {

FILE: cmd/sservice/sservice_windows.go
  type sservice (line 41) | type sservice struct
    method NewDaemon (line 52) | func (ss *sservice) NewDaemon(serviceName, description string, depende...
    method IsAdmin (line 61) | func (ss *sservice) IsAdmin() (bool, error) {
    method InstallSetup (line 100) | func (ss *sservice) InstallSetup(serviceName string, cmd *cobra.Comman...
    method UninstallSetup (line 114) | func (ss *sservice) UninstallSetup(serviceName string) (err error) {
    method EraseData (line 144) | func (ss *sservice) EraseData(serviceName string) (err error) {
    method IsRunning (line 157) | func (ss *sservice) IsRunning(status string) bool {
    method GetDefaultConfigPath (line 162) | func (ss *sservice) GetDefaultConfigPath(serviceName string) (dataDir ...
    method ReadConfig (line 173) | func (ss *sservice) ReadConfig(serviceName string) (err error) {
    method InstallConfig (line 183) | func (ss *sservice) InstallConfig(serviceName string) (err error) {
    method CopyExecInOsDefault (line 201) | func (ss *sservice) CopyExecInOsDefault(serviceName string) (path stri...
    method RemoveProgramFiles (line 231) | func (ss *sservice) RemoveProgramFiles(serviceName string) (err error) {
    method UninstallExecutables (line 242) | func (ss sservice) UninstallExecutables(serviceName string) (err error) {
    method GetDefaultExecPath (line 251) | func (ss sservice) GetDefaultExecPath(serviceName string) (ep string, ...
    method getCommonExecPath (line 259) | func (ss *sservice) getCommonExecPath() (string, error) {
    method osRemove (line 269) | func (ss sservice) osRemove(folder string) error {
    method osRemoveAll (line 276) | func (ss sservice) osRemoveAll(folder string) error {
  function NewSService (line 48) | func NewSService(options *Option) *sservice {
  function deletionGuard (line 283) | func deletionGuard(path string) (err error) {

FILE: cmd/sservice/sservice_windows_test.go
  function TestSserviceWin_NewDaemon (line 29) | func TestSserviceWin_NewDaemon(t *testing.T) {

FILE: cmd/version/cmd.go
  function VersionCmd (line 50) | func VersionCmd() *cobra.Command {
  function VersionStr (line 64) | func VersionStr() string {
  function StaticBuild (line 106) | func StaticBuild() bool {
  function FIPSBuild (line 111) | func FIPSBuild() bool {

FILE: cmd/version/cmd_test.go
  function TestVersion (line 30) | func TestVersion(t *testing.T) {

FILE: docs/security/vulnerabilities/linear-fake/go/main.go
  function verifyTxRead (line 15) | func verifyTxRead(client immudb.ImmuClient, txID uint64, stateService st...
  function checkCorruptedErr (line 58) | func checkCorruptedErr(err error) bool {
  function main (line 72) | func main() {

FILE: docs/security/vulnerabilities/linear-fake/python/main.py
  function main (line 10) | def main():

FILE: docs/security/vulnerabilities/linear-fake/server/data_generation/state_values_generation_test.go
  function TestVerifyDualProofLongLinearProofWithReplica (line 36) | func TestVerifyDualProofLongLinearProofWithReplica(t *testing.T) {
  function TestGenerateDataWithLongLinearProof (line 421) | func TestGenerateDataWithLongLinearProof(t *testing.T) {

FILE: docs/security/vulnerabilities/linear-fake/server/go_client_test.go
  function TestServer (line 32) | func TestServer(t *testing.T) {

FILE: docs/security/vulnerabilities/linear-fake/server/main.go
  function main (line 25) | func main() {

FILE: docs/security/vulnerabilities/linear-fake/server/server.go
  type customDbList (line 28) | type customDbList struct
    method Put (line 32) | func (l *customDbList) Put(db database.DB) {
    method Delete (line 36) | func (l *customDbList) Delete(dbName string) (database.DB, error) {
    method GetByIndex (line 40) | func (l *customDbList) GetByIndex(index int) (database.DB, error) {
    method GetByName (line 44) | func (l *customDbList) GetByName(dbName string) (database.DB, error) {
    method GetId (line 48) | func (l *customDbList) GetId(dbName string) int {
    method Length (line 52) | func (l *customDbList) Length() int {
  function wrapDb (line 56) | func wrapDb(db database.DB, err error) (database.DB, error) {
  type dbWrapper (line 66) | type dbWrapper struct
    method unsupported (line 70) | func (db *dbWrapper) unsupported() error {
    method CurrentState (line 83) | func (db *dbWrapper) CurrentState() (*schema.ImmutableState, error) {
    method Set (line 88) | func (db *dbWrapper) Set(req *schema.SetRequest) (*schema.TxHeader, er...
    method VerifiableSet (line 92) | func (db *dbWrapper) VerifiableSet(req *schema.VerifiableSetRequest) (...
    method Get (line 96) | func (db *dbWrapper) Get(req *schema.KeyRequest) (*schema.Entry, error) {
    method VerifiableGet (line 100) | func (db *dbWrapper) VerifiableGet(req *schema.VerifiableGetRequest) (...
    method GetAll (line 104) | func (db *dbWrapper) GetAll(req *schema.KeyListRequest) (*schema.Entri...
    method Delete (line 107) | func (db *dbWrapper) Delete(req *schema.DeleteKeysRequest) (*schema.Tx...
    method SetReference (line 111) | func (db *dbWrapper) SetReference(req *schema.ReferenceRequest) (*sche...
    method VerifiableSetReference (line 115) | func (db *dbWrapper) VerifiableSetReference(req *schema.VerifiableRefe...
    method Scan (line 119) | func (db *dbWrapper) Scan(req *schema.ScanRequest) (*schema.Entries, e...
    method History (line 123) | func (db *dbWrapper) History(req *schema.HistoryRequest) (*schema.Entr...
    method ExecAll (line 127) | func (db *dbWrapper) ExecAll(operations *schema.ExecAllRequest) (*sche...
    method Count (line 131) | func (db *dbWrapper) Count(prefix *schema.KeyPrefix) (*schema.EntryCou...
    method CountAll (line 135) | func (db *dbWrapper) CountAll() (*schema.EntryCount, error) {
    method ZAdd (line 139) | func (db *dbWrapper) ZAdd(req *schema.ZAddRequest) (*schema.TxHeader, ...
    method VerifiableZAdd (line 143) | func (db *dbWrapper) VerifiableZAdd(req *schema.VerifiableZAddRequest)...
    method ZScan (line 147) | func (db *dbWrapper) ZScan(req *schema.ZScanRequest) (*schema.ZEntries...
    method NewSQLTx (line 151) | func (db *dbWrapper) NewSQLTx(ctx context.Context) (*sql.SQLTx, error) {
    method SQLExec (line 155) | func (db *dbWrapper) SQLExec(req *schema.SQLExecRequest, tx *sql.SQLTx...
    method SQLExecPrepared (line 159) | func (db *dbWrapper) SQLExecPrepared(stmts []sql.SQLStmt, params map[s...
    method InferParameters (line 163) | func (db *dbWrapper) InferParameters(sql string, tx *sql.SQLTx) (map[s...
    method InferParametersPrepared (line 167) | func (db *dbWrapper) InferParametersPrepared(stmt sql.SQLStmt, tx *sql...
    method SQLQuery (line 171) | func (db *dbWrapper) SQLQuery(req *schema.SQLQueryRequest, tx *sql.SQL...
    method SQLQueryPrepared (line 175) | func (db *dbWrapper) SQLQueryPrepared(stmt sql.DataSource, namedParams...
    method SQLQueryRowReader (line 179) | func (db *dbWrapper) SQLQueryRowReader(stmt sql.DataSource, params map...
    method VerifiableSQLGet (line 183) | func (db *dbWrapper) VerifiableSQLGet(req *schema.VerifiableSQLGetRequ...
    method ListTables (line 187) | func (db *dbWrapper) ListTables(tx *sql.SQLTx) (*schema.SQLQueryResult...
    method DescribeTable (line 191) | func (db *dbWrapper) DescribeTable(table string, tx *sql.SQLTx) (*sche...
    method WaitForTx (line 195) | func (db *dbWrapper) WaitForTx(txID uint64, cancellation <-chan struct...
    method WaitForIndexingUpto (line 199) | func (db *dbWrapper) WaitForIndexingUpto(txID uint64, cancellation <-c...
    method TxByID (line 203) | func (db *dbWrapper) TxByID(req *schema.TxRequest) (*schema.Tx, error) {
    method ExportTxByID (line 207) | func (db *dbWrapper) ExportTxByID(req *schema.ExportTxRequest) ([]byte...
    method ReplicateTx (line 211) | func (db *dbWrapper) ReplicateTx(exportedTx []byte) (*schema.TxHeader,...
    method VerifiableTxByID (line 215) | func (db *dbWrapper) VerifiableTxByID(req *schema.VerifiableTxRequest)...
    method TxScan (line 235) | func (db *dbWrapper) TxScan(req *schema.TxScanRequest) (*schema.TxList...
    method FlushIndex (line 239) | func (db *dbWrapper) FlushIndex(req *schema.FlushIndexRequest) error {
    method CompactIndex (line 243) | func (db *dbWrapper) CompactIndex() error {
  function GetFakeServer (line 247) | func GetFakeServer(dir string, port int) (server.ImmuServerIf, error) {

FILE: embedded/ahtree/ahtree.go
  constant LeafPrefix (line 46) | LeafPrefix = byte(0)
  constant NodePrefix (line 47) | NodePrefix = byte(1)
  constant Version (line 49) | Version = 1
  constant MetaVersion (line 52) | MetaVersion = "VERSION"
  constant cLogEntrySize (line 55) | cLogEntrySize = offsetSize + szSize
  constant offsetSize (line 56) | offsetSize = 8
  constant szSize (line 57) | szSize = 4
  type AHtree (line 60) | type AHtree struct
    method Append (line 246) | func (t *AHtree) Append(d []byte) (n uint64, h [sha256.Size]byte, err ...
    method ResetSize (line 375) | func (t *AHtree) ResetSize(newSize uint64) error {
    method node (line 460) | func (t *AHtree) node(n uint64, l int) (h [sha256.Size]byte, err error) {
    method nodeAt (line 464) | func (t *AHtree) nodeAt(i uint64) (h [sha256.Size]byte, err error) {
    method InclusionProof (line 525) | func (t *AHtree) InclusionProof(i, j uint64) (p [][sha256.Size]byte, e...
    method inclusionProof (line 545) | func (t *AHtree) inclusionProof(i, j uint64, height int) ([][sha256.Si...
    method ConsistencyProof (line 579) | func (t *AHtree) ConsistencyProof(i, j uint64) (p [][sha256.Size]byte,...
    method consistencyProof (line 599) | func (t *AHtree) consistencyProof(i, j uint64, height int) ([][sha256....
    method highestNode (line 653) | func (t *AHtree) highestNode(i uint64, d int) ([sha256.Size]byte, erro...
    method Size (line 663) | func (t *AHtree) Size() uint64 {
    method size (line 670) | func (t *AHtree) size() uint64 {
    method DataAt (line 674) | func (t *AHtree) DataAt(n uint64) ([]byte, error) {
    method Root (line 727) | func (t *AHtree) Root() (n uint64, r [sha256.Size]byte, err error) {
    method RootAt (line 742) | func (t *AHtree) RootAt(n uint64) (r [sha256.Size]byte, err error) {
    method rootAt (line 749) | func (t *AHtree) rootAt(n uint64) (r [sha256.Size]byte, err error) {
    method Sync (line 773) | func (t *AHtree) Sync() error {
    method sync (line 788) | func (t *AHtree) sync() error {
    method Close (line 840) | func (t *AHtree) Close() error {
  function Open (line 86) | func Open(path string, opts *Options) (*AHtree, error) {
  function OpenWith (line 148) | func OpenWith(pLog, dLog, cLog appendable.Appendable, opts *Options) (*A...
  function nodesUntil (line 485) | func nodesUntil(n uint64) uint64 {
  function nodesUpto (line 492) | func nodesUpto(n uint64) uint64 {
  function levelsAt (line 513) | func levelsAt(n uint64) int {

FILE: embedded/ahtree/ahtree_test.go
  function TestNodeNumberCalculation (line 36) | func TestNodeNumberCalculation(t *testing.T) {
  type EdgeCasesTestSuite (line 67) | type EdgeCasesTestSuite struct
    method SetupTest (line 80) | func (t *EdgeCasesTestSuite) SetupTest() {
    method TestShouldFailOnIllegalArguments (line 137) | func (t *EdgeCasesTestSuite) TestShouldFailOnIllegalArguments() {
    method TestShouldFailWhileQueryingCLogSize (line 152) | func (t *EdgeCasesTestSuite) TestShouldFailWhileQueryingCLogSize() {
    method TestShouldFailWhileSettingCLogOffset (line 161) | func (t *EdgeCasesTestSuite) TestShouldFailWhileSettingCLogOffset() {
    method TestShouldGailWhileSettingPLogOffset (line 173) | func (t *EdgeCasesTestSuite) TestShouldGailWhileSettingPLogOffset() {
    method TestShouldFailWhileAppendingPayloadWritingLength (line 188) | func (t *EdgeCasesTestSuite) TestShouldFailWhileAppendingPayloadWritin...
    method TestShouldFailWhileAppendingPayloadWritingData (line 200) | func (t *EdgeCasesTestSuite) TestShouldFailWhileAppendingPayloadWritin...
    method TestShouldFailFlushingPLog (line 217) | func (t *EdgeCasesTestSuite) TestShouldFailFlushingPLog() {
    method TestShouldFailOnDLogSetOffset (line 232) | func (t *EdgeCasesTestSuite) TestShouldFailOnDLogSetOffset() {
    method TestShouldFailFlushingDLog (line 244) | func (t *EdgeCasesTestSuite) TestShouldFailFlushingDLog() {
    method TestShouldFailOnCLogSetOffsetDuringAppend (line 259) | func (t *EdgeCasesTestSuite) TestShouldFailOnCLogSetOffsetDuringAppend...
    method TestShouldFailWritingCLog (line 271) | func (t *EdgeCasesTestSuite) TestShouldFailWritingCLog() {
    method TestShouldFailFlushingCLog (line 283) | func (t *EdgeCasesTestSuite) TestShouldFailFlushingCLog() {
    method TestShouldFailCalculatingHashesOnAppend (line 298) | func (t *EdgeCasesTestSuite) TestShouldFailCalculatingHashesOnAppend() {
    method TestShouldFailWhileValidatingPLogSize (line 315) | func (t *EdgeCasesTestSuite) TestShouldFailWhileValidatingPLogSize() {
    method TestShouldFailWhileValidatingDLogSize (line 332) | func (t *EdgeCasesTestSuite) TestShouldFailWhileValidatingDLogSize() {
    method TestShouldFailReadingDLogSize (line 352) | func (t *EdgeCasesTestSuite) TestShouldFailReadingDLogSize() {
    method TestShouldFailReadingPLogSize (line 372) | func (t *EdgeCasesTestSuite) TestShouldFailReadingPLogSize() {
    method TestShouldFailReadingLastCLogEntry (line 389) | func (t *EdgeCasesTestSuite) TestShouldFailReadingLastCLogEntry() {
    method TestShouldFailAppendingToDLog (line 408) | func (t *EdgeCasesTestSuite) TestShouldFailAppendingToDLog() {
    method TestShouldFailDueToInvalidPath (line 423) | func (t *EdgeCasesTestSuite) TestShouldFailDueToInvalidPath() {
    method TestShouldFailDueToInvalidCacheSize (line 428) | func (t *EdgeCasesTestSuite) TestShouldFailDueToInvalidCacheSize() {
    method TestShouldFailDueToInvalidDigestsCacheSize (line 433) | func (t *EdgeCasesTestSuite) TestShouldFailDueToInvalidDigestsCacheSiz...
    method TestWithEmptyFiles (line 438) | func (t *EdgeCasesTestSuite) TestWithEmptyFiles() {
    method TestFailAfterClose (line 472) | func (t *EdgeCasesTestSuite) TestFailAfterClose() {
  function TestEdgeCasesTestSuite (line 76) | func TestEdgeCasesTestSuite(t *testing.T) {
  function TestReadOnly (line 510) | func TestReadOnly(t *testing.T) {
  function TestAppend (line 531) | func TestAppend(t *testing.T) {
  function TestIntegrity (line 579) | func TestIntegrity(t *testing.T) {
  function TestOpenFail (line 614) | func TestOpenFail(t *testing.T) {
  function TestInclusionAndConsistencyProofs (line 647) | func TestInclusionAndConsistencyProofs(t *testing.T) {
  function TestReOpenningImmudbStore (line 717) | func TestReOpenningImmudbStore(t *testing.T) {
  function TestReset (line 759) | func TestReset(t *testing.T) {
  function appendableFromBuffer (line 853) | func appendableFromBuffer(sourceData []byte) *mocked.MockedAppendable {
  function TestResetCornerCases (line 887) | func TestResetCornerCases(t *testing.T) {
  function BenchmarkAppend (line 994) | func BenchmarkAppend(b *testing.B) {
  function TestAppendAfterReopening (line 1017) | func TestAppendAfterReopening(t *testing.T) {

FILE: embedded/ahtree/options.go
  constant DefaultFileSize (line 27) | DefaultFileSize = multiapp.DefaultFileSize
  constant DefaultFileMode (line 28) | DefaultFileMode = os.FileMode(0755)
  constant DefaultDataCacheSlots (line 29) | DefaultDataCacheSlots = 1_000
  constant DefaultDigestsCacheSlots (line 30) | DefaultDigestsCacheSlots = 100_000
  constant DefaultCompressionFormat (line 31) | DefaultCompressionFormat = appendable.DefaultCompressionFormat
  constant DefaultCompressionLevel (line 32) | DefaultCompressionLevel = appendable.DefaultCompressionLevel
  constant DefaultSyncThld (line 33) | DefaultSyncThld = 100_000
  constant DefaultWriteBufferSize (line 34) | DefaultWriteBufferSize = 1 << 24
  type AppFactoryFunc (line 36) | type AppFactoryFunc
  type Options (line 42) | type Options struct
    method Validate (line 85) | func (opts *Options) Validate() error {
    method WithReadOnly (line 117) | func (opts *Options) WithReadOnly(readOnly bool) *Options {
    method WithReadBufferSize (line 122) | func (opts *Options) WithReadBufferSize(size int) *Options {
    method WithWriteBufferSize (line 127) | func (opts *Options) WithWriteBufferSize(size int) *Options {
    method WithRetryableSync (line 132) | func (opts *Options) WithRetryableSync(retryableSync bool) *Options {
    method WithAutoSync (line 137) | func (opts *Options) WithAutoSync(autoSync bool) *Options {
    method WithSyncThld (line 142) | func (opts *Options) WithSyncThld(syncThld int) *Options {
    method WithFileMode (line 147) | func (opts *Options) WithFileMode(fileMode os.FileMode) *Options {
    method WithDataCacheSlots (line 152) | func (opts *Options) WithDataCacheSlots(cacheSlots int) *Options {
    method WithDigestsCacheSlots (line 157) | func (opts *Options) WithDigestsCacheSlots(cacheSlots int) *Options {
    method WithFileSize (line 162) | func (opts *Options) WithFileSize(fileSize int) *Options {
    method WithCompressionFormat (line 167) | func (opts *Options) WithCompressionFormat(compressionFormat int) *Opt...
    method WithCompresionLevel (line 172) | func (opts *Options) WithCompresionLevel(compressionLevel int) *Options {
    method WithAppFactory (line 177) | func (opts *Options) WithAppFactory(appFactory AppFactoryFunc) *Options {
  function DefaultOptions (line 64) | func DefaultOptions() *Options {

FILE: embedded/ahtree/options_test.go
  function TestInvalidOptions (line 27) | func TestInvalidOptions(t *testing.T) {
  function TestDefaultOptions (line 47) | func TestDefaultOptions(t *testing.T) {
  function TestValidOptions (line 51) | func TestValidOptions(t *testing.T) {

FILE: embedded/ahtree/verification.go
  function VerifyInclusion (line 21) | func VerifyInclusion(iproof [][sha256.Size]byte, i, j uint64, iLeaf, jRo...
  function EvalInclusion (line 31) | func EvalInclusion(iproof [][sha256.Size]byte, i, j uint64, iLeaf [sha25...
  function VerifyConsistency (line 58) | func VerifyConsistency(cproof [][sha256.Size]byte, i, j uint64, iRoot, j...
  function EvalConsistency (line 72) | func EvalConsistency(cproof [][sha256.Size]byte, i, j uint64) ([sha256.S...
  function VerifyLastInclusion (line 111) | func VerifyLastInclusion(iproof [][sha256.Size]byte, i uint64, leaf, roo...
  function EvalLastInclusion (line 119) | func EvalLastInclusion(iproof [][sha256.Size]byte, i uint64, leaf [sha25...

FILE: embedded/ahtree/verification_test.go
  function TestVerificationEdgeCases (line 26) | func TestVerificationEdgeCases(t *testing.T) {

FILE: embedded/appendable/appendable.go
  constant DefaultCompressionFormat (line 25) | DefaultCompressionFormat = NoCompression
  constant DefaultCompressionLevel (line 26) | DefaultCompressionLevel = BestSpeed
  constant NoCompression (line 29) | NoCompression = iota
  constant FlateCompression (line 30) | FlateCompression
  constant GZipCompression (line 31) | GZipCompression
  constant LZWCompression (line 32) | LZWCompression
  constant ZLibCompression (line 33) | ZLibCompression
  constant BestSpeed (line 37) | BestSpeed          = flate.BestSpeed
  constant BestCompression (line 38) | BestCompression    = flate.BestCompression
  constant DefaultCompression (line 39) | DefaultCompression = flate.DefaultCompression
  constant HuffmanOnly (line 40) | HuffmanOnly        = flate.HuffmanOnly
  type Appendable (line 43) | type Appendable interface
  function Checksum (line 60) | func Checksum(rAt io.ReaderAt, off, n int64) (checksum [sha256.Size]byte...

FILE: embedded/appendable/fileutils/fileutils.go
  function SyncDir (line 21) | func SyncDir(paths ...string) error {
  function Fdatasync (line 31) | func Fdatasync(f *os.File) error {

FILE: embedded/appendable/fileutils/fileutils_darwin.go
  function syncDir (line 24) | func syncDir(path string) error {
  function fdatasync (line 35) | func fdatasync(f *os.File) error {

FILE: embedded/appendable/fileutils/fileutils_freebsd.go
  function syncDir (line 24) | func syncDir(path string) error {
  function fdatasync (line 35) | func fdatasync(f *os.File) error {

FILE: embedded/appendable/fileutils/fileutils_linux.go
  function syncDir (line 27) | func syncDir(path string) error {
  function fdatasync (line 38) | func fdatasync(f *os.File) error {

FILE: embedded/appendable/fileutils/fileutils_unix_nonlinux.go
  function syncDir (line 24) | func syncDir(path string) error {
  function fdatasync (line 35) | func fdatasync(f *os.File) error {

FILE: embedded/appendable/fileutils/fileutils_windows.go
  function syncDir (line 24) | func syncDir(path string) error {
  function fdatasync (line 28) | func fdatasync(f *os.File) error {

FILE: embedded/appendable/metadata.go
  type Metadata (line 26) | type Metadata struct
    method Bytes (line 41) | func (m *Metadata) Bytes() []byte {
    method ReadFrom (line 49) | func (m *Metadata) ReadFrom(r io.Reader) (int64, error) {
    method WriteTo (line 73) | func (m *Metadata) WriteTo(w io.Writer) (n int64, err error) {
    method PutInt (line 102) | func (m *Metadata) PutInt(key string, n int) {
    method GetInt (line 108) | func (m *Metadata) GetInt(key string) (int, bool) {
    method PutBool (line 116) | func (m *Metadata) PutBool(key string, v bool) {
    method GetBool (line 125) | func (m *Metadata) GetBool(key string) (bool, bool) {
    method Put (line 133) | func (m *Metadata) Put(key string, value []byte) {
    method Get (line 137) | func (m *Metadata) Get(key string) ([]byte, bool) {
  function NewMetadata (line 30) | func NewMetadata(b []byte) *Metadata {
  function readField (line 142) | func readField(r io.Reader) ([]byte, error) {
  function writeField (line 161) | func writeField(b []byte, w io.Writer) (n int, err error) {

FILE: embedded/appendable/metadata_test.go
  type mockedIOReader (line 27) | type mockedIOReader struct
    method Read (line 30) | func (w *mockedIOReader) Read(b []byte) (int, error) {
  type mockedIOWriter (line 34) | type mockedIOWriter struct
    method Write (line 37) | func (w *mockedIOWriter) Write(b []byte) (int, error) {
  function TestMedatada (line 41) | func TestMedatada(t *testing.T) {

FILE: embedded/appendable/mocked/mocked.go
  type MockedAppendable (line 19) | type MockedAppendable struct
    method Metadata (line 36) | func (a *MockedAppendable) Metadata() []byte {
    method Copy (line 40) | func (a *MockedAppendable) Copy(dstPath string) error {
    method Size (line 44) | func (a *MockedAppendable) Size() (int64, error) {
    method Offset (line 48) | func (a *MockedAppendable) Offset() int64 {
    method SetOffset (line 52) | func (a *MockedAppendable) SetOffset(off int64) error {
    method DiscardUpto (line 56) | func (a *MockedAppendable) DiscardUpto(off int64) error {
    method Append (line 60) | func (a *MockedAppendable) Append(bs []byte) (off int64, n int, err er...
    method Flush (line 64) | func (a *MockedAppendable) Flush() error {
    method Sync (line 68) | func (a *MockedAppendable) Sync() error {
    method SwitchToReadOnlyMode (line 72) | func (a *MockedAppendable) SwitchToReadOnlyMode() error {
    method ReadAt (line 76) | func (a *MockedAppendable) ReadAt(bs []byte, off int64) (int, error) {
    method Close (line 80) | func (a *MockedAppendable) Close() error {
    method CompressionFormat (line 84) | func (a *MockedAppendable) CompressionFormat() int {
    method CompressionLevel (line 88) | func (a MockedAppendable) CompressionLevel() int {

FILE: embedded/appendable/mocked/mocked_test.go
  function TestMocked (line 25) | func TestMocked(t *testing.T) {

FILE: embedded/appendable/multiapp/appendable_cache.go
  type appendableCache (line 24) | type appendableCache struct
    method Put (line 28) | func (c appendableCache) Put(key int64, value appendable.Appendable) (...
    method Get (line 35) | func (c appendableCache) Get(key int64) (appendable.Appendable, error) {
    method Pop (line 41) | func (c appendableCache) Pop(key int64) (appendable.Appendable, error) {
    method Replace (line 47) | func (c appendableCache) Replace(key int64, value appendable.Appendabl...
    method Apply (line 53) | func (c appendableCache) Apply(fun func(k int64, v appendable.Appendab...

FILE: embedded/appendable/multiapp/appendable_cache_test.go
  function TestAppendableCache (line 28) | func TestAppendableCache(t *testing.T) {

FILE: embedded/appendable/multiapp/multi_app.go
  constant metaFileSize (line 43) | metaFileSize    = "FILE_SIZE"
  constant metaWrappedMeta (line 44) | metaWrappedMeta = "WRAPPED_METADATA"
  type MultiFileAppendableHooks (line 51) | type MultiFileAppendableHooks interface
  type DefaultMultiFileAppendableHooks (line 60) | type DefaultMultiFileAppendableHooks struct
    method OpenInitialAppendable (line 64) | func (d *DefaultMultiFileAppendableHooks) OpenInitialAppendable(opts *...
    method OpenAppendable (line 92) | func (d *DefaultMultiFileAppendableHooks) OpenAppendable(options *sing...
  type MultiFileAppendable (line 96) | type MultiFileAppendable struct
    method Copy (line 217) | func (mf *MultiFileAppendable) Copy(dstPath string) error {
    method CompressionFormat (line 268) | func (mf *MultiFileAppendable) CompressionFormat() int {
    method CompressionLevel (line 275) | func (mf *MultiFileAppendable) CompressionLevel() int {
    method Metadata (line 282) | func (mf *MultiFileAppendable) Metadata() []byte {
    method Size (line 290) | func (mf *MultiFileAppendable) Size() (int64, error) {
    method Append (line 305) | func (mf *MultiFileAppendable) Append(bs []byte) (off int64, n int, er...
    method openAppendable (line 384) | func (mf *MultiFileAppendable) openAppendable(appname string, createIf...
    method Offset (line 407) | func (mf *MultiFileAppendable) Offset() int64 {
    method offset (line 414) | func (mf *MultiFileAppendable) offset() int64 {
    method SetOffset (line 418) | func (mf *MultiFileAppendable) SetOffset(off int64) error {
    method DiscardUpto (line 485) | func (mf *MultiFileAppendable) DiscardUpto(off int64) error {
    method appendableFor (line 533) | func (mf *MultiFileAppendable) appendableFor(off int64) (appendable.Ap...
    method ReadAt (line 581) | func (mf *MultiFileAppendable) ReadAt(bs []byte, off int64) (int, erro...
    method SwitchToReadOnlyMode (line 628) | func (mf *MultiFileAppendable) SwitchToReadOnlyMode() error {
    method Flush (line 652) | func (mf *MultiFileAppendable) Flush() error {
    method Sync (line 667) | func (mf *MultiFileAppendable) Sync() error {
    method sync (line 682) | func (mf *MultiFileAppendable) sync() error {
    method Close (line 689) | func (mf *MultiFileAppendable) Close() error {
    method CurrApp (line 709) | func (mf *MultiFileAppendable) CurrApp() (appendable.Appendable, int64) {
    method ReplaceCachedChunk (line 715) | func (mf *MultiFileAppendable) ReplaceCachedChunk(appID int64, app app...
  function Open (line 121) | func Open(path string, opts *Options) (*MultiFileAppendable, error) {
  function OpenWithHooks (line 127) | func OpenWithHooks(path string, hooks MultiFileAppendableHooks, opts *Op...
  function appendableName (line 209) | func appendableName(appID int64, ext string) string {
  function appendableID (line 213) | func appendableID(off int64, fileSize int) int64 {
  function copyFile (line 252) | func copyFile(srcPath, dstPath string) (int64, error) {
  function minInt (line 719) | func minInt(a, b int) int {

FILE: embedded/appendable/multiapp/multi_app_test.go
  function TestMultiApp (line 32) | func TestMultiApp(t *testing.T) {
  function TestMultiApOffsetAndCacheEviction (line 98) | func TestMultiApOffsetAndCacheEviction(t *testing.T) {
  function TestMultiAppClosedAndDeletedFiles (line 124) | func TestMultiAppClosedAndDeletedFiles(t *testing.T) {
  function TestMultiAppClosedFiles (line 152) | func TestMultiAppClosedFiles(t *testing.T) {
  function TestMultiAppReOpening (line 168) | func TestMultiAppReOpening(t *testing.T) {
  function TestMultiAppEdgeCases (line 229) | func TestMultiAppEdgeCases(t *testing.T) {
  function TestMultiAppCompression (line 284) | func TestMultiAppCompression(t *testing.T) {
  function TestMultiAppAppendableForCurrentChunk (line 306) | func TestMultiAppAppendableForCurrentChunk(t *testing.T) {
  function TestMultiappOpenIncorrectPath (line 324) | func TestMultiappOpenIncorrectPath(t *testing.T) {
  function TestMultiappOpenFolderWithBogusFiles (line 333) | func TestMultiappOpenFolderWithBogusFiles(t *testing.T) {
  function TestMultiAppDiscard (line 343) | func TestMultiAppDiscard(t *testing.T) {

FILE: embedded/appendable/multiapp/options.go
  constant DefaultFileSize (line 26) | DefaultFileSize = 1 << 26
  constant DefaultMaxOpenedFiles (line 27) | DefaultMaxOpenedFiles = 10
  constant DefaultFileMode (line 28) | DefaultFileMode = os.FileMode(0755)
  constant DefaultCompressionFormat (line 29) | DefaultCompressionFormat = appendable.DefaultCompressionFormat
  constant DefaultCompressionLevel (line 30) | DefaultCompressionLevel = appendable.DefaultCompressionLevel
  constant DefaultReadBufferSize (line 31) | DefaultReadBufferSize = 4096
  constant DefaultWriteBufferSize (line 32) | DefaultWriteBufferSize = 4096
  type Options (line 34) | type Options struct
    method Validate (line 68) | func (opts *Options) Validate() error {
    method WithReadOnly (line 96) | func (opt *Options) WithReadOnly(readOnly bool) *Options {
    method WithRetryableSync (line 101) | func (opt *Options) WithRetryableSync(retryableSync bool) *Options {
    method WithAutoSync (line 106) | func (opt *Options) WithAutoSync(autoSync bool) *Options {
    method WithFileMode (line 111) | func (opt *Options) WithFileMode(fileMode os.FileMode) *Options {
    method WithMetadata (line 116) | func (opt *Options) WithMetadata(metadata []byte) *Options {
    method WithFileSize (line 121) | func (opt *Options) WithFileSize(fileSize int) *Options {
    method WithFileExt (line 126) | func (opt *Options) WithFileExt(fileExt string) *Options {
    method WithMaxOpenedFiles (line 131) | func (opt *Options) WithMaxOpenedFiles(maxOpenedFiles int) *Options {
    method WithCompressionFormat (line 136) | func (opt *Options) WithCompressionFormat(compressionFormat int) *Opti...
    method WithCompresionLevel (line 141) | func (opt *Options) WithCompresionLevel(compressionLevel int) *Options {
    method WithReadBufferSize (line 146) | func (opts *Options) WithReadBufferSize(size int) *Options {
    method WithWriteBufferSize (line 151) | func (opts *Options) WithWriteBufferSize(size int) *Options {
    method WithPrealloc (line 156) | func (opts *Options) WithPrealloc(prealloc bool) *Options {
    method GetFileExt (line 161) | func (opt *Options) GetFileExt() string {
    method GetFileMode (line 165) | func (opt *Options) GetFileMode() os.FileMode {
    method GetReadBufferSize (line 169) | func (opts *Options) GetReadBufferSize() int {
    method GetWriteBufferSize (line 173) | func (opts *Options) GetWriteBufferSize() int {
    method GetPrealloc (line 177) | func (opts *Options) GetPrealloc() bool {
  function DefaultOptions (line 52) | func DefaultOptions() *Options {

FILE: embedded/appendable/multiapp/options_test.go
  function TestInvalidOptions (line 25) | func TestInvalidOptions(t *testing.T) {
  function TestDefaultOptions (line 45) | func TestDefaultOptions(t *testing.T) {
  function TestValidOptions (line 49) | func TestValidOptions(t *testing.T) {

FILE: embedded/appendable/reader.go
  type Reader (line 24) | type Reader struct
    method Reset (line 45) | func (r *Reader) Reset() {
    method Offset (line 53) | func (r *Reader) Offset() int64 {
    method ReadCount (line 57) | func (r *Reader) ReadCount() int64 {
    method Read (line 61) | func (r *Reader) Read(bs []byte) (n int, err error) {
    method ReadByte (line 101) | func (r *Reader) ReadByte() (byte, error) {
    method ReadUint64 (line 110) | func (r *Reader) ReadUint64() (uint64, error) {
    method ReadUint32 (line 119) | func (r *Reader) ReadUint32() (uint32, error) {
    method ReadUint16 (line 128) | func (r *Reader) ReadUint16() (uint16, error) {
  function NewReaderFrom (line 34) | func NewReaderFrom(rAt io.ReaderAt, off int64, size int) *Reader {
  function min (line 137) | func min(a, b int) int {

FILE: embedded/appendable/reader_test.go
  type mockedIOReaderAt (line 29) | type mockedIOReaderAt struct
    method ReadAt (line 32) | func (w *mockedIOReaderAt) ReadAt(b []byte, off int64) (int, error) {
  function TestReader (line 36) | func TestReader(t *testing.T) {
  function TestMockedReader (line 84) | func TestMockedReader(t *testing.T) {

FILE: embedded/appendable/remoteapp/chunk_state.go
  type chunkState (line 21) | type chunkState
    method String (line 47) | func (s chunkState) String() string {
  constant chunkState_Invalid (line 24) | chunkState_Invalid chunkState = iota
  constant chunkState_Active (line 25) | chunkState_Active
  constant chunkState_Local (line 26) | chunkState_Local
  constant chunkState_Uploading (line 27) | chunkState_Uploading
  constant chunkState_UploadError (line 28) | chunkState_UploadError
  constant chunkState_Cleaning (line 29) | chunkState_Cleaning
  constant chunkState_Remote (line 30) | chunkState_Remote
  constant chunkState_Downloading (line 31) | chunkState_Downloading
  constant chunkState_DownloadError (line 32) | chunkState_DownloadError

FILE: embedded/appendable/remoteapp/chunk_state_test.go
  function TestChunkStateString (line 25) | func TestChunkStateString(t *testing.T) {

FILE: embedded/appendable/remoteapp/chunked_process.go
  type chunkedProcess (line 26) | type chunkedProcess struct
    method exponentialBackoff (line 36) | func (c *chunkedProcess) exponentialBackoff(retries int) time.Duration {
    method Step (line 45) | func (c *chunkedProcess) Step(block func() error) {
    method RetryableStep (line 63) | func (c *chunkedProcess) RetryableStep(
    method Err (line 95) | func (c *chunkedProcess) Err() error {

FILE: embedded/appendable/remoteapp/chunked_process_test.go
  function TestChunkedProcessRetryableStep (line 28) | func TestChunkedProcessRetryableStep(t *testing.T) {
  function TestChunkedProcessRetryableStepCancel (line 53) | func TestChunkedProcessRetryableStepCancel(t *testing.T) {
  function TestChunkedProcessRetryableStepDeadline (line 81) | func TestChunkedProcessRetryableStepDeadline(t *testing.T) {
  function TestChunkedProcessRetryableStepError (line 106) | func TestChunkedProcessRetryableStepError(t *testing.T) {
  function TestChunkedProcessNoRetryAfterError (line 127) | func TestChunkedProcessNoRetryAfterError(t *testing.T) {

FILE: embedded/appendable/remoteapp/options.go
  type Options (line 25) | type Options struct
    method Valid (line 46) | func (opts *Options) Valid() bool {
    method WithParallelUploads (line 58) | func (opts *Options) WithParallelUploads(parallelUploads int) *Options {
    method WithRetryMinDelay (line 63) | func (opts *Options) WithRetryMinDelay(retryMinDelay time.Duration) *O...
    method WithRetryMaxDelay (line 68) | func (opts *Options) WithRetryMaxDelay(retryMaxDelay time.Duration) *O...
    method WithRetryDelayExp (line 73) | func (opts *Options) WithRetryDelayExp(retryDelayExp float64) *Options {
    method WithRetryDelayJitter (line 78) | func (opts *Options) WithRetryDelayJitter(retryDelayJitter float64) *O...
  function DefaultOptions (line 35) | func DefaultOptions() *Options {

FILE: embedded/appendable/remoteapp/options_test.go
  function TestInvalidOptions (line 26) | func TestInvalidOptions(t *testing.T) {
  function TestDefaultOptions (line 31) | func TestDefaultOptions(t *testing.T) {
  function TestValidOptions (line 35) | func TestValidOptions(t *testing.T) {

FILE: embedded/appendable/remoteapp/remote_app.go
  type chunkInfo (line 44) | type chunkInfo struct
  type RemoteStorageAppendable (line 50) | type RemoteStorageAppendable struct
    method chunkedProcess (line 137) | func (r *RemoteStorageAppendable) chunkedProcess(ctx context.Context) ...
    method uploadFinished (line 147) | func (r *RemoteStorageAppendable) uploadFinished(chunkID int64, state ...
    method uploadChunk (line 158) | func (r *RemoteStorageAppendable) uploadChunk(chunkID int64, dontRemov...
    method downloadFinished (line 298) | func (r *RemoteStorageAppendable) downloadFinished(chunkID int64, stat...
    method downloadChunk (line 309) | func (r *RemoteStorageAppendable) downloadChunk(chunkID int64) {
    method Close (line 391) | func (r *RemoteStorageAppendable) Close() error {
    method OpenAppendable (line 416) | func (r *RemoteStorageAppendable) OpenAppendable(options *singleapp.Op...
    method appendableName (line 511) | func (r *RemoteStorageAppendable) appendableName(appID int64) string {
    method OpenInitialAppendable (line 515) | func (r *RemoteStorageAppendable) OpenInitialAppendable(opts *multiapp...
    method openRemoteAppendableReader (line 615) | func (r *RemoteStorageAppendable) openRemoteAppendableReader(name stri...
    method startStatsUpdater (line 622) | func (r *RemoteStorageAppendable) startStatsUpdater() {
    method calculateChunkMetrics (line 641) | func (r *RemoteStorageAppendable) calculateChunkMetrics() error {
  function Open (line 76) | func Open(path string, remotePath string, storage remotestorage.Storage,...
  function chunkIdFromName (line 133) | func chunkIdFromName(filename string) (int64, error) {

FILE: embedded/appendable/remoteapp/remote_app_test.go
  function TestOpenInllegalArguments (line 42) | func TestOpenInllegalArguments(t *testing.T) {
  function TestOpenMultiappError (line 65) | func TestOpenMultiappError(t *testing.T) {
  function TestOpenRemoteStorageAppendable (line 74) | func TestOpenRemoteStorageAppendable(t *testing.T) {
  function TestOpenRemoteStorageAppendableCompression (line 85) | func TestOpenRemoteStorageAppendableCompression(t *testing.T) {
  function TestRemoteStorageOpenAppendableInvalidName (line 95) | func TestRemoteStorageOpenAppendableInvalidName(t *testing.T) {
  constant testWaitTimeout (line 104) | testWaitTimeout = 10 * time.Second
  function waitForObject (line 106) | func waitForObject(mem *memory.Storage, objectName string) bool {
  function waitForRemoval (line 121) | func waitForRemoval(fileName string) bool {
  function waitForChunkState (line 136) | func waitForChunkState(app *RemoteStorageAppendable, chunkID int, state ...
  function waitForFile (line 155) | func waitForFile(fileName string, maxWait time.Duration) bool {
  function TestWritePastFirstChunk (line 170) | func TestWritePastFirstChunk(t *testing.T) {
  function prepareLocalTestFiles (line 228) | func prepareLocalTestFiles(t *testing.T) string {
  function TestRemoteAppUploadOnStartup (line 245) | func TestRemoteAppUploadOnStartup(t *testing.T) {
  function TestReopenOnCleanShutdownWhenEmpty (line 262) | func TestReopenOnCleanShutdownWhenEmpty(t *testing.T) {
  function TestReopenFromRemoteStorageOnCleanShutdown (line 293) | func TestReopenFromRemoteStorageOnCleanShutdown(t *testing.T) {
  function TestRemoteStorageMetrics (line 334) | func TestRemoteStorageMetrics(t *testing.T) {
  type remoteStorageMockingWrapper (line 390) | type remoteStorageMockingWrapper struct
    method Kind (line 399) | func (r *remoteStorageMockingWrapper) Kind() string {
    method String (line 403) | func (r *remoteStorageMockingWrapper) String() string {
    method Get (line 407) | func (r *remoteStorageMockingWrapper) Get(ctx context.Context, name st...
    method Put (line 416) | func (r *remoteStorageMockingWrapper) Put(ctx context.Context, name st...
    method Remove (line 425) | func (r *remoteStorageMockingWrapper) Remove(ctx context.Context, name...
    method RemoveAll (line 429) | func (r *remoteStorageMockingWrapper) RemoveAll(ctx context.Context, p...
    method Exists (line 433) | func (r *remoteStorageMockingWrapper) Exists(ctx context.Context, name...
    method ListEntries (line 442) | func (r *remoteStorageMockingWrapper) ListEntries(ctx context.Context,...
  function TestRemoteStorageUploadRetry (line 451) | func TestRemoteStorageUploadRetry(t *testing.T) {
  function TestRemoteStorageUploadCancel (line 498) | func TestRemoteStorageUploadCancel(t *testing.T) {
  function TestRemoteStorageUploadCancelWhenThrottled (line 565) | func TestRemoteStorageUploadCancelWhenThrottled(t *testing.T) {
  function _TestRemoteStorageUploadUnrecoverableError (line 599) | func _TestRemoteStorageUploadUnrecoverableError(t *testing.T) {
  type errReader (line 647) | type errReader struct
    method Read (line 651) | func (e errReader) Read([]byte) (int, error) { return 0, e.err }
  function _TestRemoteStorageDownloadRetry (line 653) | func _TestRemoteStorageDownloadRetry(t *testing.T) {
  function TestRemoteStorageDownloadCancel (line 716) | func TestRemoteStorageDownloadCancel(t *testing.T) {
  function TestRemoteStorageDownloadUnrecoverableError (line 792) | func TestRemoteStorageDownloadUnrecoverableError(t *testing.T) {
  function TestRemoteStorageOpenChunkWhenUploading (line 834) | func TestRemoteStorageOpenChunkWhenUploading(t *testing.T) {
  function TestRemoteStorageOpenInitialAppendableMissingRemoteChunk (line 874) | func TestRemoteStorageOpenInitialAppendableMissingRemoteChunk(t *testing...
  function TestRemoteStorageOpenInitialAppendableCorruptedLocalFile (line 915) | func TestRemoteStorageOpenInitialAppendableCorruptedLocalFile(t *testing...

FILE: embedded/appendable/remoteapp/remote_storage_reader.go
  type remoteStorageReader (line 14) | type remoteStorageReader struct
    method Metadata (line 61) | func (r *remoteStorageReader) Metadata() []byte {
    method Size (line 65) | func (r *remoteStorageReader) Size() (int64, error) {
    method Offset (line 69) | func (r *remoteStorageReader) Offset() int64 {
    method SetOffset (line 73) | func (r *remoteStorageReader) SetOffset(off int64) error {
    method DiscardUpto (line 77) | func (r *remoteStorageReader) DiscardUpto(off int64) error {
    method Append (line 81) | func (r *remoteStorageReader) Append(bs []byte) (off int64, n int, err...
    method CompressionFormat (line 85) | func (r *remoteStorageReader) CompressionFormat() int {
    method CompressionLevel (line 89) | func (r *remoteStorageReader) CompressionLevel() int {
    method Flush (line 93) | func (r *remoteStorageReader) Flush() error {
    method Sync (line 97) | func (r *remoteStorageReader) Sync() error {
    method SwitchToReadOnlyMode (line 101) | func (r *remoteStorageReader) SwitchToReadOnlyMode() error {
    method ReadAt (line 105) | func (r *remoteStorageReader) ReadAt(bs []byte, off int64) (int, error) {
    method Close (line 136) | func (r *remoteStorageReader) Close() error {
    method Copy (line 140) | func (r *remoteStorageReader) Copy(dstPath string) error {
  function openRemoteStorageReader (line 21) | func openRemoteStorageReader(r remotestorage.Storage, name string) (*rem...

FILE: embedded/appendable/remoteapp/remote_storage_reader_test.go
  function tmpFile (line 16) | func tmpFile(t *testing.T, data []byte) (fileName string, cleanup func()) {
  function storeData (line 28) | func storeData(t *testing.T, s remotestorage.Storage, name string, data ...
  function TestRemoteStorageReaderUnsupportedMethods (line 36) | func TestRemoteStorageReaderUnsupportedMethods(t *testing.T) {
  function TestRemoteStorageFlush (line 50) | func TestRemoteStorageFlush(t *testing.T) {
  function TestRemoteStorageSync (line 55) | func TestRemoteStorageSync(t *testing.T) {
  function TestRemoteStorageSwitchToReadOnlyMode (line 60) | func TestRemoteStorageSwitchToReadOnlyMode(t *testing.T) {
  function TestRemoteStorageReadAt (line 65) | func TestRemoteStorageReadAt(t *testing.T) {
  function TestRemoteStorageCorruptedHeader (line 103) | func TestRemoteStorageCorruptedHeader(t *testing.T) {
  type remoteStorageErrorInjector (line 122) | type remoteStorageErrorInjector struct
    method Get (line 128) | func (r *remoteStorageErrorInjector) Get(ctx context.Context, name str...
  function TestRemoteStorageOpenError (line 135) | func TestRemoteStorageOpenError(t *testing.T) {

FILE: embedded/appendable/singleapp/options.go
  constant DefaultFileMode (line 26) | DefaultFileMode = os.FileMode(0644)
  constant DefaultCompressionFormat (line 27) | DefaultCompressionFormat = appendable.DefaultCompressionFormat
  constant DefaultCompressionLevel (line 28) | DefaultCompressionLevel = appendable.DefaultCompressionLevel
  constant DefaultReadBufferSize (line 29) | DefaultReadBufferSize = 4096
  constant DefaultWriteBufferSize (line 30) | DefaultWriteBufferSize = 4096
  type Options (line 32) | type Options struct
    method Validate (line 65) | func (opts *Options) Validate() error {
    method WithReadOnly (line 85) | func (opts *Options) WithReadOnly(readOnly bool) *Options {
    method WithRetryableSync (line 90) | func (opts *Options) WithRetryableSync(retryableSync bool) *Options {
    method WithAutoSync (line 95) | func (opts *Options) WithAutoSync(autoSync bool) *Options {
    method WithFileMode (line 100) | func (opts *Options) WithFileMode(fileMode os.FileMode) *Options {
    method WithCompressionFormat (line 105) | func (opts *Options) WithCompressionFormat(compressionFormat int) *Opt...
    method WithPreallocSize (line 110) | func (opts *Options) WithPreallocSize(preallocSize int) *Options {
    method WithCreateIfNotExists (line 115) | func (opts *Options) WithCreateIfNotExists(createIfNotExists bool) *Op...
    method GetCompressionFormat (line 120) | func (opts *Options) GetCompressionFormat() int {
    method GetCompressionLevel (line 124) | func (opts *Options) GetCompressionLevel() int {
    method GetReadBufferSize (line 128) | func (opts *Options) GetReadBufferSize() int {
    method GetPreallocSize (line 132) | func (opts *Options) GetPreallocSize() int {
    method GetWriteBuffer (line 136) | func (opts *Options) GetWriteBuffer() []byte {
    method WithCompresionLevel (line 140) | func (opts *Options) WithCompresionLevel(compressionLevel int) *Options {
    method WithMetadata (line 145) | func (opts *Options) WithMetadata(metadata []byte) *Options {
    method WithReadBufferSize (line 150) | func (opts *Options) WithReadBufferSize(size int) *Options {
    method WithWriteBuffer (line 155) | func (opts *Options) WithWriteBuffer(b []byte) *Options {
  function DefaultOptions (line 51) | func DefaultOptions() *Options {

FILE: embedded/appendable/singleapp/options_test.go
  function TestInvalidOptions (line 25) | func TestInvalidOptions(t *testing.T) {
  function TestDefaultOptions (line 41) | func TestDefaultOptions(t *testing.T) {
  function TestValidOptions (line 45) | func TestValidOptions(t *testing.T) {

FILE: embedded/appendable/singleapp/single_app.go
  constant metaPreallocSize (line 48) | metaPreallocSize      = "PREALLOC_SIZE"
  constant metaCompressionFormat (line 49) | metaCompressionFormat = "COMPRESSION_FORMAT"
  constant metaCompressionLevel (line 50) | metaCompressionLevel  = "COMPRESSION_LEVEL"
  constant metaWrappedMeta (line 51) | metaWrappedMeta       = "WRAPPED_METADATA"
  type AppendableFile (line 56) | type AppendableFile struct
    method Copy (line 236) | func (aof *AppendableFile) Copy(dstPath string) error {
    method CompressionFormat (line 270) | func (aof *AppendableFile) CompressionFormat() int {
    method CompressionLevel (line 274) | func (aof *AppendableFile) CompressionLevel() int {
    method Metadata (line 278) | func (aof *AppendableFile) Metadata() []byte {
    method Size (line 282) | func (aof *AppendableFile) Size() (int64, error) {
    method Offset (line 293) | func (aof *AppendableFile) Offset() int64 {
    method offset (line 300) | func (aof *AppendableFile) offset() int64 {
    method SetOffset (line 304) | func (aof *AppendableFile) SetOffset(newOffset int64) error {
    method DiscardUpto (line 346) | func (aof *AppendableFile) DiscardUpto(off int64) error {
    method writer (line 361) | func (aof *AppendableFile) writer(w io.Writer) (cw io.Writer, err erro...
    method reader (line 375) | func (aof *AppendableFile) reader(r io.Reader) (reader io.ReadCloser, ...
    method Append (line 389) | func (aof *AppendableFile) Append(bs []byte) (off int64, n int, err er...
    method write (line 441) | func (aof *AppendableFile) write(bs []byte) (n int, err error) {
    method readAt (line 478) | func (aof *AppendableFile) readAt(bs []byte, off int64) (n int, err er...
    method ReadAt (line 517) | func (aof *AppendableFile) ReadAt(bs []byte, off int64) (n int, err er...
    method SwitchToReadOnlyMode (line 566) | func (aof *AppendableFile) SwitchToReadOnlyMode() error {
    method Flush (line 598) | func (aof *AppendableFile) Flush() error {
    method seekIfRequired (line 613) | func (aof *AppendableFile) seekIfRequired() error {
    method flush (line 631) | func (aof *AppendableFile) flush() error {
    method Sync (line 661) | func (aof *AppendableFile) Sync() error {
    method sync (line 676) | func (aof *AppendableFile) sync() error {
    method Close (line 713) | func (aof *AppendableFile) Close() error {
  function Open (line 83) | func Open(fileName string, opts *Options) (*AppendableFile, error) {
  function minInt (line 733) | func minInt(a, b int) int {

FILE: embedded/appendable/singleapp/single_app_test.go
  function TestSingleApp (line 34) | func TestSingleApp(t *testing.T) {
  function TestSingleAppSetOffsetWithRetryableSyncOn (line 106) | func TestSingleAppSetOffsetWithRetryableSyncOn(t *testing.T) {
  function TestSingleAppSetOffsetWithRetryableSyncOff (line 113) | func TestSingleAppSetOffsetWithRetryableSyncOff(t *testing.T) {
  function testSingleAppSetOffsetWith (line 121) | func testSingleAppSetOffsetWith(opts *Options, t *testing.T) {
  function TestSingleAppSwitchToReadOnlyMode (line 174) | func TestSingleAppSwitchToReadOnlyMode(t *testing.T) {
  function TestSingleAppReOpening (line 199) | func TestSingleAppReOpening(t *testing.T) {
  function TestSingleAppCorruptedFileReadingMetadata (line 248) | func TestSingleAppCorruptedFileReadingMetadata(t *testing.T) {
  function TestSingleAppCorruptedFileReadingCompresionFormat (line 271) | func TestSingleAppCorruptedFileReadingCompresionFormat(t *testing.T) {
  function TestSingleAppCorruptedFileReadingCompresionLevel (line 296) | func TestSingleAppCorruptedFileReadingCompresionLevel(t *testing.T) {
  function TestSingleAppCorruptedFileReadingCompresionWrappedMetadata (line 322) | func TestSingleAppCorruptedFileReadingCompresionWrappedMetadata(t *testi...
  function TestSingleAppEdgeCases (line 349) | func TestSingleAppEdgeCases(t *testing.T) {
  function TestSingleAppZLibCompression (line 398) | func TestSingleAppZLibCompression(t *testing.T) {
  function TestSingleAppFlateCompression (line 419) | func TestSingleAppFlateCompression(t *testing.T) {
  function TestSingleAppGZipCompression (line 440) | func TestSingleAppGZipCompression(t *testing.T) {
  function TestSingleAppLZWCompression (line 461) | func TestSingleAppLZWCompression(t *testing.T) {
  function TestSingleAppCantCreateFile (line 482) | func TestSingleAppCantCreateFile(t *testing.T) {
  function TestSingleAppDiscard (line 495) | func TestSingleAppDiscard(t *testing.T) {
  function BenchmarkAppendFlush (line 515) | func BenchmarkAppendFlush(b *testing.B) {
  function BenchmarkAppendFlushless (line 541) | func BenchmarkAppendFlushless(b *testing.B) {

FILE: embedded/cache/cache.go
  type EvictFilterFunc (line 34) | type EvictFilterFunc
  type EvictCallbackFunc (line 35) | type EvictCallbackFunc
  type Cache (line 38) | type Cache struct
    method SetCanEvict (line 74) | func (c *Cache) SetCanEvict(canEvict EvictFilterFunc) {
    method SetOnEvict (line 81) | func (c *Cache) SetOnEvict(onEvict EvictCallbackFunc) {
    method Resize (line 88) | func (c *Cache) Resize(newWeight int) {
    method Put (line 103) | func (c *Cache) Put(key interface{}, value interface{}) (interface{}, ...
    method PutWeighted (line 107) | func (c *Cache) PutWeighted(key interface{}, value interface{}, weight...
    method put (line 114) | func (c *Cache) put(key interface{}, value interface{}, weight int, vi...
    method evictWhileFull (line 151) | func (c *Cache) evictWhileFull(weight int) (interface{}, interface{}, ...
    method evict (line 170) | func (c *Cache) evict() (rkey interface{}, e *entry, err error) {
    method shouldEvict (line 199) | func (c *Cache) shouldEvict(key, value interface{}) bool {
    method Get (line 203) | func (c *Cache) Get(key interface{}) (interface{}, error) {
    method Pop (line 221) | func (c *Cache) Pop(key interface{}) (interface{}, error) {
    method pop (line 232) | func (c *Cache) pop(key interface{}) (interface{}, error) {
    method Replace (line 250) | func (c *Cache) Replace(k interface{}, v interface{}) (interface{}, er...
    method Weight (line 268) | func (c *Cache) Weight() int {
    method Available (line 275) | func (c *Cache) Available() int {
    method MaxWeight (line 282) | func (c *Cache) MaxWeight() int {
    method EntriesCount (line 289) | func (c *Cache) EntriesCount() int {
    method Apply (line 296) | func (c *Cache) Apply(fun func(k interface{}, v interface{}) error) er...
  type entry (line 52) | type entry struct
  function NewCache (line 59) | func NewCache(maxWeight int) (*Cache, error) {

FILE: embedded/cache/cache_test.go
  function setupCache (line 28) | func setupCache(t *testing.T) *Cache {
  function TestCacheCreation (line 38) | func TestCacheCreation(t *testing.T) {
  function TestEvictionPolicy (line 94) | func TestEvictionPolicy(t *testing.T) {
  function TestApply (line 185) | func TestApply(t *testing.T) {
  function TestPop (line 211) | func TestPop(t *testing.T) {
  function TestReplace (line 244) | func TestReplace(t *testing.T) {
  function TestCacheResizing (line 279) | func TestCacheResizing(t *testing.T) {
  function TestPutWeighted (line 324) | func TestPutWeighted(t *testing.T) {
  function TestOnEvict (line 399) | func TestOnEvict(t *testing.T) {
  function TestCanEvict (line 426) | func TestCanEvict(t *testing.T) {

FILE: embedded/document/document_id.go
  constant GeneratedDocIDLength (line 44) | GeneratedDocIDLength = 16
  constant MaxDocumentIDLength (line 46) | MaxDocumentIDLength = 32
  type DocumentID (line 49) | type DocumentID
    method EncodeToHexString (line 117) | func (id DocumentID) EncodeToHexString() string {
    method Timestamp (line 122) | func (id DocumentID) Timestamp() time.Time {
  function NewDocumentIDFromTx (line 55) | func NewDocumentIDFromTx(txID uint64) DocumentID {
  function NewDocumentIDFromTimestamp (line 60) | func NewDocumentIDFromTimestamp(timestamp time.Time, txID uint64) Docume...
  function NewDocumentIDFromRawBytes (line 77) | func NewDocumentIDFromRawBytes(b []byte) (DocumentID, error) {
  function NewDocumentIDFromHexEncodedString (line 92) | func NewDocumentIDFromHexEncodedString(hexEncodedDocID string) (Document...
  function getRandUint32 (line 105) | func getRandUint32() uint32 {

FILE: embedded/document/document_id_test.go
  function TestDocumentID_WithTimestamp (line 29) | func TestDocumentID_WithTimestamp(t *testing.T) {
  function TestDocumentID_FromDocumentHex (line 65) | func TestDocumentID_FromDocumentHex(t *testing.T) {
  function TestDocumentID_IncrementalCounter (line 97) | func TestDocumentID_IncrementalCounter(t *testing.T) {
  function TestDocumentID_FromRawBytes (line 107) | func TestDocumentID_FromRawBytes(t *testing.T) {
  function BenchmarkHex (line 122) | func BenchmarkHex(b *testing.B) {

FILE: embedded/document/document_reader.go
  type DocumentReader (line 29) | type DocumentReader interface
  type documentReader (line 37) | type documentReader struct
    method ReadN (line 50) | func (r *documentReader) ReadN(ctx context.Context, count int) ([]*pro...
    method Close (line 88) | func (r *documentReader) Close() error {
    method Read (line 97) | func (r *documentReader) Read(ctx context.Context) (*protomodel.Docume...
  function newDocumentReader (line 42) | func newDocumentReader(rowReader sql.RowReader, onCloseCallback func(rea...

FILE: embedded/document/engine.go
  constant DefaultDocumentIDField (line 35) | DefaultDocumentIDField     = "_id"
  constant DocumentBLOBField (line 36) | DocumentBLOBField          = "_doc"
  constant documentFieldPathSeparator (line 37) | documentFieldPathSeparator = "."
  type Engine (line 51) | type Engine struct
    method CreateCollection (line 132) | func (e *Engine) CreateCollection(ctx context.Context, username, name,...
    method GetCollection (line 249) | func (e *Engine) GetCollection(ctx context.Context, collectionName str...
    method GetCollections (line 268) | func (e *Engine) GetCollections(ctx context.Context) ([]*protomodel.Co...
    method UpdateCollection (line 379) | func (e *Engine) UpdateCollection(ctx context.Context, username, colle...
    method DeleteCollection (line 435) | func (e *Engine) DeleteCollection(ctx context.Context, username, colle...
    method AddField (line 470) | func (e *Engine) AddField(ctx context.Context, username, collectionNam...
    method RemoveField (line 526) | func (e *Engine) RemoveField(ctx context.Context, username, collection...
    method CreateIndex (line 566) | func (e *Engine) CreateIndex(ctx context.Context, username, collection...
    method DeleteIndex (line 612) | func (e *Engine) DeleteIndex(ctx context.Context, username, collection...
    method InsertDocument (line 658) | func (e *Engine) InsertDocument(ctx context.Context, username, collect...
    method InsertDocuments (line 667) | func (e *Engine) InsertDocuments(ctx context.Context, username, collec...
    method upsertDocuments (line 683) | func (e *Engine) upsertDocuments(ctx context.Context, sqlTx *sql.SQLTx...
    method generateRowSpecForDocument (line 770) | func (e *Engine) generateRowSpecForDocument(table *sql.Table, doc *str...
    method structValueFromFieldPath (line 803) | func (e *Engine) structValueFromFieldPath(doc *structpb.Struct, fieldP...
    method ReplaceDocuments (line 826) | func (e *Engine) ReplaceDocuments(ctx context.Context, username string...
    method GetDocuments (line 962) | func (e *Engine) GetDocuments(ctx context.Context, query *protomodel.Q...
    method CountDocuments (line 1003) | func (e *Engine) CountDocuments(ctx context.Context, query *protomodel...
    method GetEncodedDocument (line 1058) | func (e *Engine) GetEncodedDocument(ctx context.Context, collectionNam...
    method AuditDocument (line 1084) | func (e *Engine) AuditDocument(ctx context.Context, collectionName str...
    method getKeyForDocument (line 1225) | func (e *Engine) getKeyForDocument(ctx context.Context, sqlTx *sql.SQL...
    method getDocument (line 1259) | func (e *Engine) getDocument(key []byte, valRef store.ValueRef, includ...
    method getEncodedDocument (line 1326) | func (e *Engine) getEncodedDocument(ctx context.Context, key []byte, a...
    method DeleteDocuments (line 1364) | func (e *Engine) DeleteDocuments(ctx context.Context, username string,...
    method CopyCatalogToTx (line 1407) | func (e *Engine) CopyCatalogToTx(ctx context.Context, tx *store.Ongoin...
  type EncodedDocument (line 57) | type EncodedDocument struct
  function NewEngine (line 64) | func NewEngine(store *store.ImmuStore, opts *Options) (*Engine, error) {
  function validateCollectionName (line 85) | func validateCollectionName(collectionName string) error {
  function validateDocumentIdFieldName (line 98) | func validateDocumentIdFieldName(documentIdFieldName string) error {
  function validateFieldName (line 115) | func validateFieldName(fieldName string) error {
  function docIDFieldName (line 290) | func docIDFieldName(table *sql.Table) string {
  function getTableForCollection (line 294) | func getTableForCollection(sqlTx *sql.SQLTx, collectionName string) (*sq...
  function getColumnForField (line 308) | func getColumnForField(table *sql.Table, field string) (*sql.Column, err...
  function collectionFromTable (line 322) | func collectionFromTable(table *sql.Table) *protomodel.Collection {
  function generateSQLFilteringExpression (line 1130) | func generateSQLFilteringExpression(expressions []*protomodel.QueryExpre...
  function sqlCmpOperatorFor (line 1192) | func sqlCmpOperatorFor(op protomodel.ComparisonOperator) (sql.CmpOperato...
  function generateSQLOrderByClauses (line 1411) | func generateSQLOrderByClauses(table *sql.Table, orderBy []*protomodel.O...

FILE: embedded/document/engine_test.go
  function makeEngine (line 34) | func makeEngine(t *testing.T) *Engine {
  function TestEngineWithInvalidOptions (line 55) | func TestEngineWithInvalidOptions(t *testing.T) {
  function TestCreateCollection (line 63) | func TestCreateCollection(t *testing.T) {
  function TestListCollections (line 343) | func TestListCollections(t *testing.T) {
  function TestGetDocument (line 377) | func TestGetDocument(t *testing.T) {
  function TestDocumentAudit (line 496) | func TestDocumentAudit(t *testing.T) {
  function TestQueryDocuments (line 634) | func TestQueryDocuments(t *testing.T) {
  function TestDocumentUpdate (line 1057) | func TestDocumentUpdate(t *testing.T) {
  function TestFloatSupport (line 1287) | func TestFloatSupport(t *testing.T) {
  function TestDeleteCollection (line 1341) | func TestDeleteCollection(t *testing.T) {
  function TestUpdateCollection (line 1381) | func TestUpdateCollection(t *testing.T) {
  function TestCollectionUpdateWithDeletedIndex (line 1486) | func TestCollectionUpdateWithDeletedIndex(t *testing.T) {
  function TestBulkInsert (line 1806) | func TestBulkInsert(t *testing.T) {
  function TestPaginationOnReader (line 1860) | func TestPaginationOnReader(t *testing.T) {
  function TestDeleteDocument (line 1930) | func TestDeleteDocument(t *testing.T) {
  function TestGetCollection (line 1993) | func TestGetCollection(t *testing.T) {
  function TestGetDocuments_WithOrderBy (line 2037) | func TestGetDocuments_WithOrderBy(t *testing.T) {
  function BenchmarkInsertion (line 2105) | func BenchmarkInsertion(b *testing.B) {

FILE: embedded/document/errors.go
  function mayTranslateError (line 42) | func mayTranslateError(err error) error {

FILE: embedded/document/errors_test.go
  function TestMayTranslateError (line 26) | func TestMayTranslateError(t *testing.T) {

FILE: embedded/document/options.go
  constant DefaultDocumentMaxNestedFields (line 24) | DefaultDocumentMaxNestedFields = 3
  type Options (line 26) | type Options struct
    method Validate (line 37) | func (opts *Options) Validate() error {
    method WithPrefix (line 45) | func (opts *Options) WithPrefix(prefix []byte) *Options {
    method WithMaxNestedFields (line 50) | func (opts *Options) WithMaxNestedFields(maxNestedFields int) *Options {
  function DefaultOptions (line 31) | func DefaultOptions() *Options {

FILE: embedded/document/options_test.go
  function TestDefaultOptions (line 25) | func TestDefaultOptions(t *testing.T) {
  function TestOptionsValidate (line 35) | func TestOptionsValidate(t *testing.T) {
  function TestOptionsWithPrefix (line 49) | func TestOptionsWithPrefix(t *testing.T) {
  function TestOptionsWithMaxNestedFields (line 61) | func TestOptionsWithMaxNestedFields(t *testing.T) {

FILE: embedded/document/type_conversions.go
  function kvMetadataToProto (line 125) | func kvMetadataToProto(kvMetadata *store.KVMetadata) *protomodel.Documen...

FILE: embedded/document/type_conversions_test.go
  function TestStructValueToSqlValue (line 29) | func TestStructValueToSqlValue(t *testing.T) {
  function TestProtomodelValueTypeToSQLValueType (line 122) | func TestProtomodelValueTypeToSQLValueType(t *testing.T) {
  function TestSQLValueTypeDefaultLength (line 171) | func TestSQLValueTypeDefaultLength(t *testing.T) {

FILE: embedded/htree/htree.go
  constant LeafPrefix (line 29) | LeafPrefix = byte(0)
  constant NodePrefix (line 30) | NodePrefix = byte(1)
  type HTree (line 32) | type HTree struct
    method BuildWith (line 68) | func (t *HTree) BuildWith(digests [][sha256.Size]byte) error {
    method Root (line 115) | func (t *HTree) Root() [sha256.Size]byte {
    method InclusionProof (line 121) | func (t *HTree) InclusionProof(i int) (proof *InclusionProof, err erro...
  type InclusionProof (line 39) | type InclusionProof struct
  function New (line 45) | func New(maxWidth int) (*HTree, error) {
  function VerifyInclusion (line 166) | func VerifyInclusion(proof *InclusionProof, digest, root [sha256.Size]by...

FILE: embedded/htree/htree_test.go
  function TestHTree (line 27) | func TestHTree(t *testing.T) {

FILE: embedded/logger/file.go
  type FileLogger (line 27) | type FileLogger struct
    method Errorf (line 74) | func (l *FileLogger) Errorf(f string, v ...interface{}) {
    method Warningf (line 81) | func (l *FileLogger) Warningf(f string, v ...interface{}) {
    method Infof (line 88) | func (l *FileLogger) Infof(f string, v ...interface{}) {
    method Debugf (line 95) | func (l *FileLogger) Debugf(f string, v ...interface{}) {
    method Close (line 102) | func (l *FileLogger) Close() error {
  function NewFileLogger (line 34) | func NewFileLogger(name string, file string) (logger Logger, out *os.Fil...
  function NewFileLoggerWithLevel (line 48) | func NewFileLoggerWithLevel(name string, file string, level LogLevel) (l...
  function setup (line 60) | func setup(file string) (out *os.File, err error) {

FILE: embedded/logger/file_test.go
  function TestFileLogger (line 27) | func TestFileLogger(t *testing.T) {

FILE: embedded/logger/json.go
  constant DefaultTimeFormat (line 33) | DefaultTimeFormat = "2006-01-02T15:04:05.000000Z07:00"
  constant errInvalidTypeMsg (line 36) | errInvalidTypeMsg = "cannot serialize arg(s) to json"
  constant callerOffset (line 39) | callerOffset = 4
  constant LogFormatText (line 42) | LogFormatText = "text"
  constant LogFormatJSON (line 45) | LogFormatJSON = "json"
  type JsonLogger (line 56) | type JsonLogger struct
    method logWithFmt (line 97) | func (l *JsonLogger) logWithFmt(name string, level LogLevel, msg strin...
    method log (line 103) | func (l *JsonLogger) log(name string, level LogLevel, msg string, args...
    method logJSON (line 117) | func (l *JsonLogger) logJSON(t time.Time, name string, level LogLevel,...
    method getVals (line 155) | func (l *JsonLogger) getVals(t time.Time, name string, level LogLevel,...
    method Debug (line 184) | func (l *JsonLogger) Debug(msg string, args ...interface{}) {
    method Info (line 189) | func (l *JsonLogger) Info(msg string, args ...interface{}) {
    method Warning (line 194) | func (l *JsonLogger) Warning(msg string, args ...interface{}) {
    method Error (line 199) | func (l *JsonLogger) Error(msg string, args ...interface{}) {
    method Debugf (line 204) | func (l *JsonLogger) Debugf(msg string, args ...interface{}) {
    method Infof (line 209) | func (l *JsonLogger) Infof(msg string, args ...interface{}) {
    method Warningf (line 214) | func (l *JsonLogger) Warningf(msg string, args ...interface{}) {
    method Errorf (line 219) | func (l *JsonLogger) Errorf(msg string, args ...interface{}) {
    method SetLogLevel (line 224) | func (l *JsonLogger) SetLogLevel(level LogLevel) {
    method Name (line 229) | func (i *JsonLogger) Name() string {
    method Close (line 234) | func (i *JsonLogger) Close() error {
  function NewJSONLogger (line 69) | func NewJSONLogger(opts *Options) (*JsonLogger, error) {

FILE: embedded/logger/json_test.go
  function TestJSONLogger (line 31) | func TestJSONLogger(t *testing.T) {
  function logWithFunc (line 333) | func logWithFunc(l *JsonLogger, msg string) {

FILE: embedded/logger/log_file_writer.go
  function createLogFileWriter (line 29) | func createLogFileWriter(opts *Options) (io.Writer, error) {
  type logFileWriter (line 62) | type logFileWriter struct
    method Write (line 79) | func (bf *logFileWriter) Write(buf []byte) (int, error) {
    method shouldRotate (line 94) | func (bf *logFileWriter) shouldRotate(nBytes int, ageNum int64) bool {
    method rotate (line 109) | func (bf *logFileWriter) rotate(age int64) error {
    method getNextSegmentName (line 133) | func (bf *logFileWriter) getNextSegmentName() (string, error) {
    method segmentName (line 156) | func (bf *logFileWriter) segmentName() string {
    method currAge (line 168) | func (bf *logFileWriter) currAge() int64 {
    method Close (line 175) | func (bf *logFileWriter) Close() error {

FILE: embedded/logger/log_file_writer_test.go
  function TestLogFileIsRotatedOnInit (line 33) | func TestLogFileIsRotatedOnInit(t *testing.T) {
  type mockWriter (line 71) | type mockWriter struct
    method Write (line 76) | func (w *mockWriter) Write(buf []byte) (int, error) {
  function TestLogAreSentToOutput (line 82) | func TestLogAreSentToOutput(t *testing.T) {
  function TestLoggerFileWithRotationDisabled (line 101) | func TestLoggerFileWithRotationDisabled(t *testing.T) {
  function TestLoggerFileAgeRotation (line 140) | func TestLoggerFileAgeRotation(t *testing.T) {
  function TestLoggerFileAgeRotationWithTimeFormat (line 184) | func TestLoggerFileAgeRotationWithTimeFormat(t *testing.T) {
  function TestLoggerFileSizeRotation (line 231) | func TestLoggerFileSizeRotation(t *testing.T) {
  function readFiles (line 264) | func readFiles(dir, prefix string) ([]string, error) {

FILE: embedded/logger/logger.go
  constant LogFileFormat (line 39) | LogFileFormat     = time.RFC3339
  constant logRotationAgeMin (line 40) | logRotationAgeMin = time.Minute
  type LogLevel (line 44) | type LogLevel
  constant LogDebug (line 48) | LogDebug LogLevel = iota
  constant LogInfo (line 49) | LogInfo
  constant LogWarn (line 50) | LogWarn
  constant LogError (line 51) | LogError
  type Logger (line 55) | type Logger interface
  function LogLevelFromEnvironment (line 63) | func LogLevelFromEnvironment() LogLevel {
  type Options (line 82) | type Options struct
  function NewLogger (line 119) | func NewLogger(opts *Options) (logger Logger, err error) {

FILE: embedded/logger/logger_test.go
  function TestNewLogger (line 26) | func TestNewLogger(t *testing.T) {
  function TestNewLoggerWithFile (line 74) | func TestNewLoggerWithFile(t *testing.T) {

FILE: embedded/logger/memory.go
  type MemoryLogger (line 26) | type MemoryLogger struct
    method Errorf (line 43) | func (l *MemoryLogger) Errorf(fmt string, args ...interface{}) {
    method Warningf (line 47) | func (l *MemoryLogger) Warningf(fmt string, args ...interface{}) {
    method Infof (line 51) | func (l *MemoryLogger) Infof(fmt string, args ...interface{}) {
    method Debugf (line 55) | func (l *MemoryLogger) Debugf(fmt string, args ...interface{}) {
    method GetLogs (line 59) | func (l *MemoryLogger) GetLogs() []string {
    method addLog (line 66) | func (l *MemoryLogger) addLog(level LogLevel, prefix string, f string,...
    method Close (line 88) | func (l *MemoryLogger) Close() error {
  function NewMemoryLogger (line 32) | func NewMemoryLogger() *MemoryLogger {
  function NewMemoryLoggerWithLevel (line 36) | func NewMemoryLoggerWithLevel(level LogLevel) *MemoryLogger {

FILE: embedded/logger/memory_test.go
  function TestMemoryLogger (line 27) | func TestMemoryLogger(t *testing.T) {

FILE: embedded/logger/simple.go
  type SimpleLogger (line 25) | type SimpleLogger struct
    method Errorf (line 49) | func (l *SimpleLogger) Errorf(f string, v ...interface{}) {
    method Warningf (line 56) | func (l *SimpleLogger) Warningf(f string, v ...interface{}) {
    method Infof (line 63) | func (l *SimpleLogger) Infof(f string, v ...interface{}) {
    method Debugf (line 70) | func (l *SimpleLogger) Debugf(f string, v ...interface{}) {
    method Close (line 77) | func (l *SimpleLogger) Close() error {
  function NewSimpleLogger (line 32) | func NewSimpleLogger(name string, out io.Writer) Logger {
  function NewSimpleLoggerWithLevel (line 41) | func NewSimpleLoggerWithLevel(name string, out io.Writer, level LogLevel...

FILE: embedded/logger/simple_test.go
  function TestSimpleLogger (line 28) | func TestSimpleLogger(t *testing.T) {
  function TestLogLevelFromEnvironment (line 62) | func TestLogLevelFromEnvironment(t *testing.T) {

FILE: embedded/multierr/multierr.go
  type MultiErr (line 24) | type MultiErr struct
    method Append (line 32) | func (me *MultiErr) Append(err error) *MultiErr {
    method Includes (line 40) | func (me *MultiErr) Includes(err error) bool {
    method HasErrors (line 50) | func (me *MultiErr) HasErrors() bool {
    method Errors (line 54) | func (me *MultiErr) Errors() []error {
    method Reduce (line 58) | func (me *MultiErr) Reduce() error {
    method Is (line 65) | func (me *MultiErr) Is(target error) bool {
    method As (line 75) | func (me *MultiErr) As(target interface{}) bool {
    method Error (line 85) | func (me *MultiErr) Error() string {
  function NewMultiErr (line 28) | func NewMultiErr() *MultiErr {

FILE: embedded/multierr/multierr_test.go
  type includedErrA (line 26) | type includedErrA struct
    method Error (line 30) | func (e *includedErrA) Error() string {
  type includedErrB (line 34) | type includedErrB struct
    method Error (line 38) | func (e *includedErrB) Error() string {
  type excludedErr (line 42) | type excludedErr struct
    method Error (line 46) | func (e *excludedErr) Error() string {
  function TestMultiErr (line 50) | func TestMultiErr(t *testing.T) {

FILE: embedded/remotestorage/memory/memory.go
  type Storage (line 40) | type Storage struct
    method Kind (line 53) | func (r *Storage) Kind() string {
    method String (line 57) | func (r *Storage) String() string {
    method Get (line 62) | func (r *Storage) Get(ctx context.Context, name string, offs, size int...
    method randomPutDelay (line 87) | func (r *Storage) randomPutDelay() time.Duration {
    method Put (line 93) | func (r *Storage) Put(ctx context.Context, name string, fileName strin...
    method Remove (line 120) | func (r *Storage) Remove(ctx context.Context, name string) error {
    method RemoveAll (line 129) | func (r *Storage) RemoveAll(ctx context.Context, path string) error {
    method Exists (line 145) | func (r *Storage) Exists(ctx context.Context, name string) (bool, erro...
    method ListEntries (line 153) | func (r *Storage) ListEntries(ctx context.Context, path string) ([]rem...
    method SetRandomPutDelays (line 191) | func (r *Storage) SetRandomPutDelays(minMs, maxMs int) {
  function Open (line 47) | func Open() *Storage {
  function validPath (line 199) | func validPath(path string) bool {

FILE: embedded/remotestorage/memory/memory_test.go
  function tmpFile (line 34) | func tmpFile(t *testing.T, data string) (fileName string, cleanup func()) {
  function storeData (line 45) | func storeData(t *testing.T, s *Storage, name, data string) {
  function TestRemoteStorageAPIMemory (line 53) | func TestRemoteStorageAPIMemory(t *testing.T) {
  function TestRemoteStorageAPIMemoryPutDelay (line 112) | func TestRemoteStorageAPIMemoryPutDelay(t *testing.T) {
  function TestRemoteStorageAPIMemoryPutError (line 162) | func TestRemoteStorageAPIMemoryPutError(t *testing.T) {
  function TestRemoteStorageName (line 170) | func TestRemoteStorageName(t *testing.T) {
  function TestRemoteStorageGetInvalidParams (line 176) | func TestRemoteStorageGetInvalidParams(t *testing.T) {
  function TestRemoteStorageListEntries (line 189) | func TestRemoteStorageListEntries(t *testing.T) {
  function TestRemoteStorageListEntriesInvalidArgs (line 214) | func TestRemoteStorageListEntriesInvalidArgs(t *testing.T) {
  function TestRemoteStorageRemove (line 227) | func TestRemoteStorageRemove(t *testing.T) {

FILE: embedded/remotestorage/remote_storage.go
  type EntryInfo (line 29) | type EntryInfo struct
  type Storage (line 34) | type Storage interface

FILE: embedded/remotestorage/s3/metrics.go
  type metricsCountingReadCloser (line 38) | type metricsCountingReadCloser struct
    method Read (line 43) | func (m *metricsCountingReadCloser) Read(b []byte) (int, error) {
    method Close (line 49) | func (m *metricsCountingReadCloser) Close() error {

FILE: embedded/remotestorage/s3/s3.go
  type Storage (line 45) | type Storage struct
    method Kind (line 154) | func (s *Storage) Kind() string {
    method String (line 158) | func (s *Storage) String() string {
    method originalRequestURL (line 166) | func (s *Storage) originalRequestURL(objectName string) (string, error) {
    method s3SignedRequest (line 183) | func (s *Storage) s3SignedRequest(
    method s3SignedRequestV4 (line 203) | func (s *Storage) s3SignedRequestV4(
    method s3SignedRequestV2 (line 306) | func (s *Storage) s3SignedRequestV2(
    method validateName (line 352) | func (s *Storage) validateName(name string, isFolder bool) error {
    method Get (line 375) | func (s *Storage) Get(ctx context.Context, name string, offs, size int...
    method requestWithRedirects (line 419) | func (s *Storage) requestWithRedirects(
    method parseRedirect (line 504) | func (s *Storage) parseRedirect(req *http.Request, resp *http.Response...
    method Put (line 525) | func (s *Storage) Put(ctx context.Context, name string, fileName strin...
    method Remove (line 578) | func (s *Storage) Remove(ctx context.Context, name string) error {
    method RemoveAll (line 606) | func (s *Storage) RemoveAll(ctx context.Context, folder string) error {
    method Exists (line 636) | func (s *Storage) Exists(ctx context.Context, name string) (bool, erro...
    method ListEntries (line 659) | func (s *Storage) ListEntries(ctx context.Context, path string) ([]rem...
    method scanObjectNames (line 668) | func (s *Storage) scanObjectNames(ctx context.Context, prefix string, ...
    method getRoleCredentials (line 784) | func (s *Storage) getRoleCredentials() error {
    method requestCredentials (line 813) | func (s *Storage) requestCredentials() (string, string, string, error) {
  constant maxRedirects (line 92) | maxRedirects = 5
  function Open (line 94) | func Open(

FILE: embedded/remotestorage/s3/s3_test.go
  function TestOpen (line 33) | func TestOpen(t *testing.T) {
  function TestValidateName (line 52) | func TestValidateName(t *testing.T) {
  function TestCornerCases (line 82) | func TestCornerCases(t *testing.T) {
  function TestSignatureV4 (line 301) | func TestSignatureV4(t *testing.T) {
  function TestHandlingRedirects (line 348) | func TestHandlingRedirects(t *testing.T) {
  function TestListEntries (line 454) | func TestListEntries(t *testing.T) {

FILE: embedded/remotestorage/s3/s3_with_minio_test.go
  function TestS3WithServer (line 33) | func TestS3WithServer(t *testing.T) {

FILE: embedded/sql/aggregated_values.go
  type AggregatedValue (line 21) | type AggregatedValue interface
  type CountValue (line 28) | type CountValue struct
    method Selector (line 33) | func (v *CountValue) Selector() string {
    method ColBounded (line 37) | func (v *CountValue) ColBounded() bool {
    method Type (line 41) | func (v *CountValue) Type() SQLValueType {
    method IsNull (line 45) | func (v *CountValue) IsNull() bool {
    method String (line 49) | func (v *CountValue) String() string {
    method RawValue (line 53) | func (v *CountValue) RawValue() interface{} {
    method Compare (line 57) | func (v *CountValue) Compare(val TypedValue) (int, error) {
    method updateWith (line 75) | func (v *CountValue) updateWith(val TypedValue) error {
    method inferType (line 82) | func (v *CountValue) inferType(cols map[string]ColDescriptor, params m...
    method requiresType (line 86) | func (v *CountValue) requiresType(t SQLValueType, cols map[string]ColD...
    method jointColumnTo (line 93) | func (v *CountValue) jointColumnTo(col *Column, tableAlias string) (*C...
    method substitute (line 97) | func (v *CountValue) substitute(params map[string]interface{}) (ValueE...
    method reduce (line 101) | func (v *CountValue) reduce(tx *SQLTx, row *Row, implicitTable string)...
    method selectors (line 105) | func (v *CountValue) selectors() []Selector {
    method reduceSelectors (line 109) | func (v *CountValue) reduceSelectors(row *Row, implicitTable string) V...
    method isConstant (line 113) | func (v *CountValue) isConstant() bool {
    method selectorRanges (line 117) | func (v *CountValue) selectorRanges(table *Table, asTable string, para...
  type SumValue (line 121) | type SumValue struct
    method Selector (line 126) | func (v *SumValue) Selector() string {
    method ColBounded (line 130) | func (v *SumValue) ColBounded() bool {
    method Type (line 134) | func (v *SumValue) Type() SQLValueType {
    method IsNull (line 138) | func (v *SumValue) IsNull() bool {
    method String (line 142) | func (v *SumValue) String() string {
    method RawValue (line 146) | func (v *SumValue) RawValue() interface{} {
    method Compare (line 150) | func (v *SumValue) Compare(val TypedValue) (int, error) {
    method updateWith (line 154) | func (v *SumValue) updateWith(val TypedValue) error {
    method inferType (line 182) | func (v *SumValue) inferType(cols map[string]ColDescriptor, params map...
    method requiresType (line 186) | func (v *SumValue) requiresType(t SQLValueType, cols map[string]ColDes...
    method jointColumnTo (line 193) | func (v *SumValue) jointColumnTo(col *Column, tableAlias string) (*Col...
    method substitute (line 197) | func (v *SumValue) substitute(params map[string]interface{}) (ValueExp...
    method reduce (line 201) | func (v *SumValue) reduce(tx *SQLTx, row *Row, implicitTable string) (...
    method selectors (line 205) | func (v *SumValue) selectors() []Selector {
    method reduceSelectors (line 209) | func (v *SumValue) reduceSelectors(row *Row, implicitTable string) Val...
    method isConstant (line 213) | func (v *SumValue) isConstant() bool {
    method selectorRanges (line 217) | func (v *SumValue) selectorRanges(table *Table, asTable string, params...
  type MinValue (line 221) | type MinValue struct
    method Selector (line 226) | func (v *MinValue) Selector() string {
    method ColBounded (line 230) | func (v *MinValue) ColBounded() bool {
    method Type (line 234) | func (v *MinValue) Type() SQLValueType {
    method IsNull (line 238) | func (v *MinValue) IsNull() bool {
    method String (line 242) | func (v *MinValue) String() string {
    method RawValue (line 246) | func (v *MinValue) RawValue() interface{} {
    method Compare (line 250) | func (v *MinValue) Compare(val TypedValue) (int, error) {
    method updateWith (line 254) | func (v *MinValue) updateWith(val TypedValue) error {
    method inferType (line 280) | func (v *MinValue) inferType(cols map[string]ColDescriptor, params map...
    method requiresType (line 288) | func (v *MinValue) requiresType(t SQLValueType, cols map[string]ColDes...
    method jointColumnTo (line 300) | func (v *MinValue) jointColumnTo(col *Column, tableAlias string) (*Col...
    method substitute (line 304) | func (v *MinValue) substitute(params map[string]interface{}) (ValueExp...
    method reduce (line 308) | func (v *MinValue) reduce(tx *SQLTx, row *Row, implicitTable string) (...
    method selectors (line 312) | func (v *MinValue) selectors() []Selector {
    method reduceSelectors (line 316) | func (v *MinValue) reduceSelectors(row *Row, implicitTable string) Val...
    method isConstant (line 320) | func (v *MinValue) isConstant() bool {
    method selectorRanges (line 324) | func (v *MinValue) selectorRanges(table *Table, asTable string, params...
  type MaxValue (line 328) | type MaxValue struct
    method Selector (line 333) | func (v *MaxValue) Selector() string {
    method ColBounded (line 337) | func (v *MaxValue) ColBounded() bool {
    method Type (line 341) | func (v *MaxValue) Type() SQLValueType {
    method IsNull (line 345) | func (v *MaxValue) IsNull() bool {
    method String (line 349) | func (v *MaxValue) String() string {
    method RawValue (line 353) | func (v *MaxValue) RawValue() interface{} {
    method Compare (line 357) | func (v *MaxValue) Compare(val TypedValue) (int, error) {
    method updateWith (line 361) | func (v *MaxValue) updateWith(val TypedValue) error {
    method inferType (line 387) | func (v *MaxValue) inferType(cols map[string]ColDescriptor, params map...
    method requiresType (line 395) | func (v *MaxValue) requiresType(t SQLValueType, cols map[string]ColDes...
    method jointColumnTo (line 407) | func (v *MaxValue) jointColumnTo(col *Column, tableAlias string) (*Col...
    method substitute (line 411) | func (v *MaxValue) substitute(params map[string]interface{}) (ValueExp...
    method reduce (line 415) | func (v *MaxValue) reduce(tx *SQLTx, row *Row, implicitTable string) (...
    method selectors (line 419) | func (v *MaxValue) selectors() []Selector {
    method reduceSelectors (line 423) | func (v *MaxValue) reduceSelectors(row *Row, implicitTable string) Val...
    method isConstant (line 427) | func (v *MaxValue) isConstant() bool {
    method selectorRanges (line 431) | func (v *MaxValue) selectorRanges(table *Table, asTable string, params...
  type AVGValue (line 435) | type AVGValue struct
    method Selector (line 441) | func (v *AVGValue) Selector() string {
    method ColBounded (line 445) | func (v *AVGValue) ColBounded() bool {
    method Type (line 449) | func (v *AVGValue) Type() SQLValueType {
    method IsNull (line 453) | func (v *AVGValue) IsNull() bool {
    method String (line 457) | func (v *AVGValue) String() string {
    method calculate (line 461) | func (v *AVGValue) calculate() TypedValue {
    method RawValue (line 474) | func (v *AVGValue) RawValue() interface{} {
    method Compare (line 478) | func (v *AVGValue) Compare(val TypedValue) (int, error) {
    method updateWith (line 482) | func (v *AVGValue) updateWith(val TypedValue) error {
    method inferType (line 511) | func (v *AVGValue) inferType(cols map[string]ColDescriptor, params map...
    method requiresType (line 515) | func (v *AVGValue) requiresType(t SQLValueType, cols map[string]ColDes...
    method jointColumnTo (line 523) | func (v *AVGValue) jointColumnTo(col *Column, tableAlias string) (*Col...
    method substitute (line 527) | func (v *AVGValue) substitute(params map[string]interface{}) (ValueExp...
    method reduce (line 531) | func (v *AVGValue) reduce(tx *SQLTx, row *Row, implicitTable string) (...
    method selectors (line 535) | func (v *AVGValue) selectors() []Selector {
    method reduceSelectors (line 539) | func (v *AVGValue) reduceSelectors(row *Row, implicitTable string) Val...
    method isConstant (line 543) | func (v *AVGValue) isConstant() bool {
    method selectorRanges (line 547) | func (v *AVGValue) selectorRanges(table *Table, asTable string, params...

FILE: embedded/sql/aggregated_values_test.go
  function TestCountValue (line 25) | func TestCountValue(t *testing.T) {
  function TestSumValue (line 82) | func TestSumValue(t *testing.T) {
  function TestMinValue (line 145) | func TestMinValue(t *testing.T) {
  function TestMaxValue (line 214) | func TestMaxValue(t *testing.T) {
  function TestAVGValue (line 283) | func TestAVGValue(t *testing.T) {

FILE: embedded/sql/catalog.go
  type Catalog (line 35) | type Catalog struct
    method ExistTable (line 145) | func (catlg *Catalog) ExistTable(table string) bool {
    method GetTables (line 150) | func (catlg *Catalog) GetTables() []*Table {
    method GetTableByName (line 158) | func (catlg *Catalog) GetTableByName(name string) (*Table, error) {
    method GetTableByID (line 166) | func (catlg *Catalog) GetTableByID(id uint32) (*Table, error) {
    method newTable (line 385) | func (catlg *Catalog) newTable(name string, colsSpec map[uint32]*ColSp...
    method deleteTable (line 476) | func (catlg *Catalog) deleteTable(table *Table) error {
    method renameTable (line 596) | func (ctlg *Catalog) renameTable(oldName, newName string) (*Table, err...
    method load (line 755) | func (catlg *Catalog) load(ctx context.Context, tx *store.OngoingTx) e...
    method loadCatalog (line 759) | func (catlg *Catalog) loadCatalog(ctx context.Context, tx *store.Ongoi...
    method addSchemaToTx (line 1641) | func (catlg *Catalog) addSchemaToTx(ctx context.Context, tx *store.Ong...
  type Constraint (line 45) | type Constraint interface
  type PrimaryKeyConstraint (line 47) | type PrimaryKeyConstraint
  type CheckConstraint (line 49) | type CheckConstraint struct
  type Table (line 55) | type Table struct
    method ID (line 174) | func (t *Table) ID() uint32 {
    method Cols (line 178) | func (t *Table) Cols() []*Column {
    method ColsByName (line 186) | func (t *Table) ColsByName() map[string]*Column {
    method Name (line 196) | func (t *Table) Name() string {
    method PrimaryIndex (line 200) | func (t *Table) PrimaryIndex() *Index {
    method IsIndexed (line 204) | func (t *Table) IsIndexed(colName string) (indexed bool, err error) {
    method GetColumnByName (line 212) | func (t *Table) GetColumnByName(name string) (*Column, error) {
    method GetColumnByID (line 220) | func (t *Table) GetColumnByID(id uint32) (*Column, error) {
    method ColumnsByID (line 228) | func (t *Table) ColumnsByID() map[uint32]*Column {
    method GetIndexes (line 232) | func (t *Table) GetIndexes() []*Index {
    method GetIndexesByColID (line 240) | func (t *Table) GetIndexesByColID(colID uint32) []*Index {
    method GetMaxColID (line 248) | func (t *Table) GetMaxColID() uint32 {
    method GetIndexByName (line 357) | func (t *Table) GetIndexByName(name string) (*Index, error) {
    method newIndex (line 497) | func (t *Table) newIndex(unique bool, colIDs []uint32) (index *Index, ...
    method newColumn (line 555) | func (t *Table) newColumn(spec *ColSpec) (*Column, error) {
    method renameColumn (line 619) | func (t *Table) renameColumn(oldName, newName string) (*Column, error) {
    method deleteColumn (line 646) | func (t *Table) deleteColumn(col *Column) error {
    method deleteCheck (line 671) | func (t *Table) deleteCheck(name string) (uint32, error) {
    method deleteIndex (line 681) | func (t *Table) deleteIndex(index *Index) error {
    method loadIndexes (line 900) | func (table *Table) loadIndexes(ctx context.Context, sqlPrefix []byte,...
  type Index (line 74) | type Index struct
    method IsPrimary (line 252) | func (i *Index) IsPrimary() bool {
    method IsUnique (line 256) | func (i *Index) IsUnique() bool {
    method Cols (line 260) | func (i *Index) Cols() []*Column {
    method IncludesCol (line 264) | func (i *Index) IncludesCol(colID uint32) bool {
    method enginePrefix (line 269) | func (i *Index) enginePrefix() []byte {
    method coversOrdCols (line 273) | func (i *Index) coversOrdCols(ordExps []*OrdExp, rangesByColID map[uin...
    method hasPrefix (line 294) | func (i *Index) hasPrefix(columns []*Column, ordExps []*OrdExp) bool {
    method sortableUsing (line 318) | func (i *Index) sortableUsing(columns []*OrdExp, rangesByColID map[uin...
    method Name (line 349) | func (i *Index) Name() string {
    method ID (line 353) | func (i *Index) ID() uint32 {
  type Column (line 82) | type Column struct
    method ID (line 701) | func (c *Column) ID() uint32 {
    method Name (line 705) | func (c *Column) Name() string {
    method Type (line 709) | func (c *Column) Type() SQLValueType {
    method MaxLen (line 713) | func (c *Column) MaxLen() int {
    method IsNullable (line 730) | func (c *Column) IsNullable() bool {
    method IsAutoIncremental (line 734) | func (c *Column) IsAutoIncremental() bool {
  function newCatalog (line 92) | func newCatalog(enginePrefix []byte) *Catalog {
  function ordExpsHaveSameDirection (line 280) | func ordExpsHaveSameDirection(exps []*OrdExp) bool {
  function indexName (line 365) | func indexName(tableName string, cols []*Column) string {
  function validMaxLenForType (line 738) | func validMaxLenForType(maxLen int, sqlType SQLValueType) bool {
  function loadMaxPK (line 805) | func loadMaxPK(ctx context.Context, sqlPrefix []byte, tx *store.OngoingT...
  function loadColSpecs (line 825) | func loadColSpecs(ctx context.Context, tableID uint32, tx *store.Ongoing...
  function loadColSpec (line 854) | func loadColSpec(sqlPrefix, key, value []byte, tableID uint32) (*ColSpec...
  function loadCheckConstraints (line 877) | func loadCheckConstraints(ctx context.Context, dbID, tableID uint32, tx ...
  function trimPrefix (line 953) | func trimPrefix(prefix, mkey []byte, mappingPrefix []byte) ([]byte, erro...
  function unmapTableID (line 963) | func unmapTableID(prefix, mkey []byte) (dbID, tableID uint32, err error) {
  function unmapCheckID (line 979) | func unmapCheckID(prefix, mkey []byte) (uint32, error) {
  function parseCheckConstraint (line 991) | func parseCheckConstraint(prefix, key, value []byte) (*CheckConstraint, ...
  function unmapColSpec (line 1012) | func unmapColSpec(prefix, mkey []byte) (dbID, tableID, colID uint32, col...
  function asType (line 1034) | func asType(t string) (SQLValueType, error) {
  function unmapIndex (line 1049) | func unmapIndex(sqlPrefix, mkey []byte) (dbID, tableID, indexID uint32, ...
  function unmapIndexEntry (line 1066) | func unmapIndexEntry(index *Index, sqlPrefix, mkey []byte) (encPKVals []...
  function variableSizedType (line 1122) | func variableSizedType(sqlType SQLValueType) bool {
  function MapKey (line 1126) | func MapKey(prefix []byte, mappingPrefix string, encValues ...[]byte) []...
  function EncodeID (line 1151) | func EncodeID(id uint32) []byte {
  constant KeyValPrefixNull (line 1158) | KeyValPrefixNull       byte = 0x20
  constant KeyValPrefixNotNull (line 1159) | KeyValPrefixNotNull    byte = 0x80
  constant KeyValPrefixUpperBound (line 1160) | KeyValPrefixUpperBound byte = 0xFF
  function EncodeValueAsKey (line 1163) | func EncodeValueAsKey(val TypedValue, colType SQLValueType, maxLen int) ...
  function EncodeRawValueAsKey (line 1168) | func EncodeRawValueAsKey(val interface{}, colType SQLValueType, maxLen i...
  function getEncodeRawValue (line 1334) | func getEncodeRawValue(val TypedValue, colType SQLValueType) (interface{...
  function EncodeValue (line 1351) | func EncodeValue(val TypedValue, colType SQLValueType, maxLen int) ([]by...
  function EncodeNullableValue (line 1359) | func EncodeNullableValue(val TypedValue, colType SQLValueType, maxLen in...
  function EncodeRawValue (line 1368) | func EncodeRawValue(val interface{}, colType SQLValueType, maxLen int, n...
  function DecodeValueLength (line 1520) | func DecodeValueLength(b []byte) (int, int, error) {
  function DecodeValue (line 1535) | func DecodeValue(b []byte, colType SQLValueType) (TypedValue, int, error) {
  function DecodeNullableValue (line 1539) | func DecodeNullableValue(b []byte, colType SQLValueType) (TypedValue, in...
  function decodeValue (line 1543) | func decodeValue(b []byte, colType SQLValueType, nullable bool) (TypedVa...
  function iteratePrefix (line 1645) | func iteratePrefix(ctx context.Context, tx *store.OngoingTx, prefix []by...

FILE: embedded/sql/catalog_test.go
  function TestFromEmptyCatalog (line 28) | func TestFromEmptyCatalog(t *testing.T) {
  function TestEncodeRawValueAsKey (line 123) | func TestEncodeRawValueAsKey(t *testing.T) {
  function TestCatalogTableLength (line 151) | func TestCatalogTableLength(t *testing.T) {

FILE: embedded/sql/cond_row_reader.go
  type conditionalRowReader (line 24) | type conditionalRowReader struct
    method onClose (line 37) | func (cr *conditionalRowReader) onClose(callback func()) {
    method Tx (line 41) | func (cr *conditionalRowReader) Tx() *SQLTx {
    method TableAlias (line 45) | func (cr *conditionalRowReader) TableAlias() string {
    method Parameters (line 49) | func (cr *conditionalRowReader) Parameters() map[string]interface{} {
    method OrderBy (line 53) | func (cr *conditionalRowReader) OrderBy() []ColDescriptor {
    method ScanSpecs (line 57) | func (cr *conditionalRowReader) ScanSpecs() *ScanSpecs {
    method Columns (line 61) | func (cr *conditionalRowReader) Columns(ctx context.Context) ([]ColDes...
    method colsBySelector (line 65) | func (cr *conditionalRowReader) colsBySelector(ctx context.Context) (m...
    method InferParameters (line 69) | func (cr *conditionalRowReader) InferParameters(ctx context.Context, p...
    method Read (line 85) | func (cr *conditionalRowReader) Read(ctx context.Context) (*Row, error) {
    method Close (line 118) | func (cr *conditionalRowReader) Close() error {
  function newConditionalRowReader (line 30) | func newConditionalRowReader(rowReader RowReader, condition ValueExp) *c...

FILE: embedded/sql/cond_row_reader_test.go
  function TestConditionalRowReader (line 26) | func TestConditionalRowReader(t *testing.T) {

FILE: embedded/sql/distinct_row_reader.go
  type distinctRowReader (line 24) | type distinctRowReader struct
    method onClose (line 44) | func (dr *distinctRowReader) onClose(callback func()) {
    method Tx (line 48) | func (dr *distinctRowReader) Tx() *SQLTx {
    method TableAlias (line 52) | func (dr *distinctRowReader) TableAlias() string {
    method Parameters (line 56) | func (dr *distinctRowReader) Parameters() map[string]interface{} {
    method OrderBy (line 60) | func (dr *distinctRowReader) OrderBy() []ColDescriptor {
    method ScanSpecs (line 64) | func (dr *distinctRowReader) ScanSpecs() *ScanSpecs {
    method Columns (line 68) | func (dr *distinctRowReader) Columns(ctx context.Context) ([]ColDescri...
    method colsBySelector (line 72) | func (dr *distinctRowReader) colsBySelector(ctx context.Context) (map[...
    method InferParameters (line 76) | func (dr *distinctRowReader) InferParameters(ctx context.Context, para...
    method Read (line 80) | func (dr *distinctRowReader) Read(ctx context.Context) (*Row, error) {
    method Close (line 107) | func (dr *distinctRowReader) Close() error {
  function newDistinctRowReader (line 31) | func newDistinctRowReader(ctx context.Context, rowReader RowReader) (*di...

FILE: embedded/sql/distinct_row_reader_test.go
  function TestDistinctRowReader (line 26) | func TestDistinctRowReader(t *testing.T) {

FILE: embedded/sql/dummy_data_source_test.go
  type dummyDataSource (line 22) | type dummyDataSource struct
    method readOnly (line 28) | func (d *dummyDataSource) readOnly() bool {
    method requiredPrivileges (line 32) | func (d *dummyDataSource) requiredPrivileges() []SQLPrivilege {
    method execAt (line 36) | func (d *dummyDataSource) execAt(ctx context.Context, tx *SQLTx, param...
    method inferParameters (line 40) | func (d *dummyDataSource) inferParameters(ctx context.Context, tx *SQL...
    method Resolve (line 44) | func (d *dummyDataSource) Resolve(ctx context.Context, tx *SQLTx, para...
    method Alias (line 48) | func (d *dummyDataSource) Alias() string {

FILE: embedded/sql/dummy_row_reader_test.go
  type dummyRowReader (line 26) | type dummyRowReader struct
    method onClose (line 37) | func (r *dummyRowReader) onClose(callback func()) {
    method Tx (line 40) | func (r *dummyRowReader) Tx() *SQLTx {
    method Database (line 44) | func (r *dummyRowReader) Database() string {
    method TableAlias (line 48) | func (r *dummyRowReader) TableAlias() string {
    method Read (line 52) | func (r *dummyRowReader) Read(ctx context.Context) (*Row, error) {
    method Close (line 56) | func (r *dummyRowReader) Close() error {
    method OrderBy (line 67) | func (r *dummyRowReader) OrderBy() []ColDescriptor {
    method ScanSpecs (line 71) | func (r *dummyRowReader) ScanSpecs() *ScanSpecs {
    method Columns (line 75) | func (r *dummyRowReader) Columns(ctx context.Context) ([]ColDescriptor...
    method Parameters (line 88) | func (r *dummyRowReader) Parameters() map[string]interface{} {
    method InferParameters (line 92) | func (r *dummyRowReader) InferParameters(ctx context.Context, params m...
    method colsBySelector (line 100) | func (r *dummyRowReader) colsBySelector(ctx context.Context) (map[stri...

FILE: embedded/sql/engine.go
  constant EncIDLen (line 107) | EncIDLen  = 4
  constant EncLenLen (line 108) | EncLenLen = 4
  constant MaxNumberOfColumnsInIndex (line 111) | MaxNumberOfColumnsInIndex = 8
  type Engine (line 113) | type Engine struct
    method NewTx (line 197) | func (e *Engine) NewTx(ctx context.Context, opts *TxOptions) (*SQLTx, ...
    method Exec (line 407) | func (e *Engine) Exec(ctx context.Context, tx *SQLTx, sql string, para...
    method ExecPreparedStmts (line 416) | func (e *Engine) ExecPreparedStmts(ctx context.Context, tx *SQLTx, stm...
    method execPreparedStmts (line 445) | func (e *Engine) execPreparedStmts(ctx context.Context, tx *SQLTx, stm...
    method checkUserPermissions (line 544) | func (e *Engine) checkUserPermissions(ctx context.Context, stmt SQLStm...
    method queryAll (line 578) | func (e *Engine) queryAll(ctx context.Context, tx *SQLTx, sql string, ...
    method Query (line 588) | func (e *Engine) Query(ctx context.Context, tx *SQLTx, sql string, par...
    method QueryPreparedStmt (line 605) | func (e *Engine) QueryPreparedStmt(ctx context.Context, tx *SQLTx, stm...
    method Catalog (line 654) | func (e *Engine) Catalog(ctx context.Context, tx *SQLTx) (catalog *Cat...
    method InferParameters (line 668) | func (e *Engine) InferParameters(ctx context.Context, tx *SQLTx, sql s...
    method InferParametersPreparedStmts (line 676) | func (e *Engine) InferParametersPreparedStmts(ctx context.Context, tx ...
    method CopyCatalogToTx (line 721) | func (e *Engine) CopyCatalogToTx(ctx context.Context, tx *store.Ongoin...
    method GetStore (line 736) | func (e *Engine) GetStore() *store.ImmuStore {
    method GetPrefix (line 740) | func (e *Engine) GetPrefix() []byte {
    method tableResolveFor (line 744) | func (e *Engine) tableResolveFor(tableName string) TableResolver {
    method registerTableResolver (line 751) | func (e *Engine) registerTableResolver(tableName string, r TableResolv...
  type MultiDBHandler (line 126) | type MultiDBHandler interface
  type TableResolver (line 140) | type TableResolver interface
  type User (line 145) | type User interface
  function NewEngine (line 151) | func NewEngine(st *store.ImmuStore, opts *Options) (*Engine, error) {
  function indexEntryMapperFor (line 331) | func indexEntryMapperFor(index, primaryIndex *Index) store.EntryMapper {
  function hasAllPrivileges (line 561) | func hasAllPrivileges(userPrivileges, privileges []SQLPrivilege) bool {
  function normalizeParams (line 703) | func normalizeParams(params map[string]interface{}) (map[string]interfac...

FILE: embedded/sql/engine_test.go
  function closeStore (line 45) | func closeStore(t *testing.T, st *store.ImmuStore) {
  function setupCommonTest (line 53) | func setupCommonTest(t *testing.T) *Engine {
  function TestCreateDatabaseWithoutMultiIndexingEnabled (line 64) | func TestCreateDatabaseWithoutMultiIndexingEnabled(t *testing.T) {
  function TestCreateDatabaseWithoutMultiDBHandler (line 73) | func TestCreateDatabaseWithoutMultiDBHandler(t *testing.T) {
  function TestUseDatabaseWithoutMultiDBHandler (line 97) | func TestUseDatabaseWithoutMultiDBHandler(t *testing.T) {
  function TestCreateTable (line 121) | func TestCreateTable(t *testing.T) {
  function TestTimestampType (line 172) | func TestTimestampType(t *testing.T) {
  function TestTimestampIndex (line 267) | func TestTimestampIndex(t *testing.T) {
  function TestTimestampCasts (line 295) | func TestTimestampCasts(t *testing.T) {
  function TestUUIDAsPK (line 402) | func TestUUIDAsPK(t *testing.T) {
  function TestUUIDNonPK (line 490) | func TestUUIDNonPK(t *testing.T) {
  function TestFloatType (line 556) | func TestFloatType(t *testing.T) {
  function TestFloatIndex (line 760) | func TestFloatIndex(t *testing.T) {
  function TestFloatIndexOnNegatives (line 811) | func TestFloatIndexOnNegatives(t *testing.T) {
  function TestFloatCasts (line 899) | func TestFloatCasts(t *testing.T) {
  function TestNumericCasts (line 1014) | func TestNumericCasts(t *testing.T) {
  function TestNowFunctionEvalsToTxTimestamp (line 1089) | func TestNowFunctionEvalsToTxTimestamp(t *testing.T) {
  function TestAddColumn (line 1139) | func TestAddColumn(t *testing.T) {
  function TestRenaming (line 1223) | func TestRenaming(t *testing.T) {
  function TestAlterTableDropColumn (line 1335) | func TestAlterTableDropColumn(t *testing.T) {
  function TestCreateIndex (line 1569) | func TestCreateIndex(t *testing.T) {
  function TestUpsertInto (line 1615) | func TestUpsertInto(t *testing.T) {
  function TestUpsertIntoSelect (line 1758) | func TestUpsertIntoSelect(t *testing.T) {
  function TestInsertIntoEdgeCases (line 1841) | func TestInsertIntoEdgeCases(t *testing.T) {
  function TestAutoIncrementPK (line 1918) | func TestAutoIncrementPK(t *testing.T) {
  function TestDelete (line 2003) | func TestDelete(t *testing.T) {
  function TestErrorDuringDelete (line 2094) | func TestErrorDuringDelete(t *testing.T) {
  function TestUpdate (line 2112) | func TestUpdate(t *testing.T) {
  function TestErrorDuringUpdate (line 2200) | func TestErrorDuringUpdate(t *testing.T) {
  function TestTransactions (line 2221) | func TestTransactions(t *testing.T) {
  function TestTransactionsEdgeCases (line 2269) | func TestTransactionsEdgeCases(t *testing.T) {
  function TestUseSnapshot (line 2334) | func TestUseSnapshot(t *testing.T) {
  function TestEncodeValue (line 2352) | func TestEncodeValue(t *testing.T) {
  function TestQuery (line 2502) | func TestQuery(t *testing.T) {
  function TestExtractFromTimestamp (line 3205) | func TestExtractFromTimestamp(t *testing.T) {
  function TestJSON (line 3268) | func TestJSON(t *testing.T) {
  function TestQueryCornerCases (line 3612) | func TestQueryCornerCases(t *testing.T) {
  function TestQueryDistinct (line 3666) | func TestQueryDistinct(t *testing.T) {
  function TestIndexSelection (line 3887) | func TestIndexSelection(t *testing.T) {
  function TestIndexing (line 4033) | func TestIndexing(t *testing.T) {
  function TestExecCornerCases (line 4558) | func TestExecCornerCases(t *testing.T) {
  function TestQueryWithNullables (line 4572) | func TestQueryWithNullables(t *testing.T) {
  function TestOrderBy (line 4612) | func TestOrderBy(t *testing.T) {
  function directionToSql (line 4940) | func directionToSql(direction int) string {
  function checkRowsAreSorted (line 4947) | func checkRowsAreSorted(t *testing.T, rows []*Row, expStrings []string, ...
  function TestQueryWithRowFiltering (line 4981) | func TestQueryWithRowFiltering(t *testing.T) {
  function TestQueryWithInClause (line 5098) | func TestQueryWithInClause(t *testing.T) {
  function TestAggregations (line 5230) | func TestAggregations(t *testing.T) {
  function TestCount (line 5344) | func TestCount(t *testing.T) {
  function TestGroupBy (line 5389) | func TestGroupBy(t *testing.T) {
  function TestGroupByHaving (line 5739) | func TestGroupByHaving(t *testing.T) {
  function TestJoins (line 5846) | func TestJoins(t *testing.T) {
  function TestJoinsWithNullIndexes (line 5956) | func TestJoinsWithNullIndexes(t *testing.T) {
  function TestJoinsWithJointTable (line 5998) | func TestJoinsWithJointTable(t *testing.T) {
  function TestNestedJoins (line 6052) | func TestNestedJoins(t *testing.T) {
  function TestLeftJoins (line 6105) | func TestLeftJoins(t *testing.T) {
  function TestReOpening (line 6222) | func TestReOpening(t *testing.T) {
  function TestSubQuery (line 6246) | func TestSubQuery(t *testing.T) {
  function TestJoinsWithSubquery (line 6307) | func TestJoinsWithSubquery(t *testing.T) {
  function TestInferParameters (line 6387) | func TestInferParameters(t *testing.T) {
  function TestInferParametersPrepared (line 6547) | func TestInferParametersPrepared(t *testing.T) {
  function TestInferParametersUnbounded (line 6562) | func TestInferParametersUnbounded(t *testing.T) {
  function TestInferParametersInvalidCases (line 6601) | func TestInferParametersInvalidCases(t *testing.T) {
  function TestDecodeValueFailures (line 6632) | func TestDecodeValueFailures(t *testing.T) {
  function TestDecodeValueSuccess (line 6673) | func TestDecodeValueSuccess(t *testing.T) {
  function TestTrimPrefix (line 6779) | func TestTrimPrefix(t *testing.T) {
  function TestUnmapTableId (line 6815) | func TestUnmapTableId(t *testing.T) {
  function TestUnmapColSpec (line 6840) | func TestUnmapColSpec(t *testing.T) {
  function TestUnmapIndex (line 6887) | func TestUnmapIndex(t *testing.T) {
  function TestUnmapIndexEntry (line 6917) | func TestUnmapIndexEntry(t *testing.T) {
  function TestEncodeAsKeyEdgeCases (line 6966) | func TestEncodeAsKeyEdgeCases(t *testing.T) {
  function TestIndexingNullableColumns (line 7017) | func TestIndexingNullableColumns(t *testing.T) {
  function TestTemporalQueries (line 7234) | func TestTemporalQueries(t *testing.T) {
  function TestHistoricalQueries (line 7363) | func TestHistoricalQueries(t *testing.T) {
  function TestUnionOperator (line 7422) | func TestUnionOperator(t *testing.T) {
  function TestTemporalQueriesEdgeCases (line 7548) | func TestTemporalQueriesEdgeCases(t *testing.T) {
  function TestTemporalQueriesDeletedRows (line 7660) | func TestTemporalQueriesDeletedRows(t *testing.T) {
  function TestMultiDBCatalogQueries (line 7728) | func TestMultiDBCatalogQueries(t *testing.T) {
  type mockUser (line 7878) | type mockUser struct
    method Username (line 7884) | func (u *mockUser) Username() string {
    method Permission (line 7888) | func (u *mockUser) Permission() Permission {
    method SQLPrivileges (line 7892) | func (u *mockUser) SQLPrivileges() []SQLPrivilege {
  type multidbHandlerMock (line 7896) | type multidbHandlerMock struct
    method ListDatabases (line 7902) | func (h *multidbHandlerMock) ListDatabases(ctx context.Context) ([]str...
    method CreateDatabase (line 7906) | func (h *multidbHandlerMock) CreateDatabase(ctx context.Context, db st...
    method GrantSQLPrivileges (line 7910) | func (h *multidbHandlerMock) GrantSQLPrivileges(ctx context.Context, d...
    method RevokeSQLPrivileges (line 7914) | func (h *multidbHandlerMock) RevokeSQLPrivileges(ctx context.Context, ...
    method UseDatabase (line 7918) | func (h *multidbHandlerMock) UseDatabase(ctx context.Context, db strin...
    method GetLoggedUser (line 7922) | func (h *multidbHandlerMock) GetLoggedUser(ctx context.Context) (User,...
    method ListUsers (line 7929) | func (h *multidbHandlerMock) ListUsers(ctx context.Context) ([]User, e...
    method CreateUser (line 7933) | func (h *multidbHandlerMock) CreateUser(ctx context.Context, username,...
    method AlterUser (line 7937) | func (h *multidbHandlerMock) AlterUser(ctx context.Context, username, ...
    method DropUser (line 7941) | func (h *multidbHandlerMock) DropUser(ctx context.Context, username st...
    method ExecPreparedStmts (line 7945) | func (h *multidbHandlerMock) ExecPreparedStmts(
  function TestSingleDBCatalogQueries (line 7954) | func TestSingleDBCatalogQueries(t *testing.T) {
  function TestMVCC (line 8187) | func TestMVCC(t *testing.T) {
  function TestMVCCWithExternalCommitAllowance (line 8531) | func TestMVCCWithExternalCommitAllowance(t *testing.T) {
  function TestConcurrentInsertions (line 8576) | func TestConcurrentInsertions(t *testing.T) {
  function TestSQLTxWithClosedContext (line 8624) | func TestSQLTxWithClosedContext(t *testing.T) {
  function setupCommonTestWithOptions (line 8660) | func setupCommonTestWithOptions(t *testing.T, sopts *store.Options) (*En...
  function TestCopyCatalogToTx (line 8671) | func TestCopyCatalogToTx(t *testing.T) {
  function BenchmarkInsertInto (line 8867) | func BenchmarkInsertInto(b *testing.B) {
  function BenchmarkNotIndexedOrderBy (line 8944) | func BenchmarkNotIndexedOrderBy(b *testing.B) {
  function TestLikeWithNullableColumns (line 9000) | func TestLikeWithNullableColumns(t *testing.T) {
  type BrokenCatalogTestSuite (line 9024) | type BrokenCatalogTestSuite struct
    method SetupTest (line 9036) | func (t *BrokenCatalogTestSuite) SetupTest() {
    method TearDownTest (line 9081) | func (t *BrokenCatalogTestSuite) TearDownTest() {
    method getColEntry (line 9090) | func (t *BrokenCatalogTestSuite) getColEntry(colID uint32) (k, v []byt...
    method TestCanNotSetExpiredEntryInCatalog (line 9110) | func (t *BrokenCatalogTestSuite) TestCanNotSetExpiredEntryInCatalog() {
    method TestErrorWhenColSpecIsToShort (line 9129) | func (t *BrokenCatalogTestSuite) TestErrorWhenColSpecIsToShort() {
    method TestErrorColSpecNotSequential (line 9148) | func (t *BrokenCatalogTestSuite) TestErrorColSpecNotSequential() {
    method TestErrorColSpecDuplicate (line 9165) | func (t *BrokenCatalogTestSuite) TestErrorColSpecDuplicate() {
    method TestErrorDroppedPrimaryIndexColumn (line 9184) | func (t *BrokenCatalogTestSuite) TestErrorDroppedPrimaryIndexColumn() {
  function TestBrokenCatalogTestSuite (line 9032) | func TestBrokenCatalogTestSuite(t *testing.T) {
  function TestCheckConstraints (line 9203) | func TestCheckConstraints(t *testing.T) {
  function TestQueryTxMetadata (line 9333) | func TestQueryTxMetadata(t *testing.T) {
  function TestGrantSQLPrivileges (line 9416) | func TestGrantSQLPrivileges(t *testing.T) {
  function TestFunctions (line 9494) | func TestFunctions(t *testing.T) {
  function TestTableResolver (line 9716) | func TestTableResolver(t *testing.T) {
  function assertQueryShouldProduceResults (line 9750) | func assertQueryShouldProduceResults(t *testing.T, e *Engine, query, res...
  type mockTableResolver (line 9771) | type mockTableResolver struct
    method Table (line 9777) | func (r *mockTableResolver) Table() string {
    method Resolve (line 9781) | func (r *mockTableResolver) Resolve(ctx context.Context, tx *SQLTx, al...

FILE: embedded/sql/file_sort.go
  type sortedChunk (line 28) | type sortedChunk struct
  type fileSorter (line 33) | type fileSorter struct
    method update (line 50) | func (s *fileSorter) update(r *Row) error {
    method finalize (line 65) | func (s *fileSorter) finalize() (resultReader, error) {
    method mergeAllChunks (line 91) | func (s *fileSorter) mergeAllChunks() (resultReader, error) {
    method mergeChunks (line 175) | func (s *fileSorter) mergeChunks(lr, rr *fileRowReader, writer io.Writ...
    method sortAndFlushBuffer (line 329) | func (s *fileSorter) sortAndFlushBuffer() error {
    method sortBuffer (line 336) | func (s *fileSorter) sortBuffer() error {
    method flushBuffer (line 353) | func (s *fileSorter) flushBuffer() error {
    method tempFileWriter (line 382) | func (s *fileSorter) tempFileWriter() (*bufio.Writer, error) {
  type resultReader (line 238) | type resultReader interface
  type bufferResultReader (line 242) | type bufferResultReader struct
    method Read (line 247) | func (r *bufferResultReader) Read() (*Row, error) {
  type fileRowReader (line 257) | type fileRowReader struct
    method readValues (line 266) | func (r *fileRowReader) readValues(out []TypedValue) error {
    method Read (line 286) | func (r *fileRowReader) Read() (*Row, error) {
    method getRow (line 303) | func (r *fileRowReader) getRow() *Row {
  function decodeValues (line 315) | func decodeValues(data []byte, colTypes []SQLValueType, out []TypedValue...
  function encodeRow (line 395) | func encodeRow(r *Row) ([]byte, error) {

FILE: embedded/sql/functions.go
  constant CoalesceFnCall (line 28) | CoalesceFnCall           string = "COALESCE"
  constant LengthFnCall (line 29) | LengthFnCall             string = "LENGTH"
  constant SubstringFnCall (line 30) | SubstringFnCall          string = "SUBSTRING"
  constant ConcatFnCall (line 31) | ConcatFnCall             string = "CONCAT"
  constant LowerFnCall (line 32) | LowerFnCall              string = "LOWER"
  constant UpperFnCall (line 33) | UpperFnCall              string = "UPPER"
  constant TrimFnCall (line 34) | TrimFnCall               string = "TRIM"
  constant NowFnCall (line 35) | NowFnCall                string = "NOW"
  constant UUIDFnCall (line 36) | UUIDFnCall               string = "RANDOM_UUID"
  constant DatabasesFnCall (line 37) | DatabasesFnCall          string = "DATABASES"
  constant TablesFnCall (line 38) | TablesFnCall             string = "TABLES"
  constant TableFnCall (line 39) | TableFnCall              string = "TABLE"
  constant UsersFnCall (line 40) | UsersFnCall              string = "USERS"
  constant ColumnsFnCall (line 41) | ColumnsFnCall            string = "COLUMNS"
  constant IndexesFnCall (line 42) | IndexesFnCall            string = "INDEXES"
  constant GrantsFnCall (line 43) | GrantsFnCall             string = "GRANTS"
  constant JSONTypeOfFnCall (line 44) | JSONTypeOfFnCall         string = "JSON_TYPEOF"
  constant PGGetUserByIDFnCall (line 45) | PGGetUserByIDFnCall      string = "PG_GET_USERBYID"
  constant PgTableIsVisibleFnCall (line 46) | PgTableIsVisibleFnCall   string = "PG_TABLE_IS_VISIBLE"
  constant PgShobjDescriptionFnCall (line 47) | PgShobjDescriptionFnCall string = "SHOBJ_DESCRIPTION"
  type Function (line 66) | type Function interface
  type CoalesceFn (line 72) | type CoalesceFn struct
    method InferType (line 74) | func (f *CoalesceFn) InferType(cols map[string]ColDescriptor, params m...
    method RequiresType (line 78) | func (f *CoalesceFn) RequiresType(t SQLValueType, cols map[string]ColD...
    method Apply (line 82) | func (f *CoalesceFn) Apply(tx *SQLTx, params []TypedValue) (TypedValue...
  type LengthFn (line 107) | type LengthFn struct
    method InferType (line 109) | func (f *LengthFn) InferType(cols map[string]ColDescriptor, params map...
    method RequiresType (line 113) | func (f *LengthFn) RequiresType(t SQLValueType, cols map[string]ColDes...
    method Apply (line 120) | func (f *LengthFn) Apply(tx *SQLTx, params []TypedValue) (TypedValue, ...
  type ConcatFn (line 138) | type ConcatFn struct
    method InferType (line 140) | func (f *ConcatFn) InferType(cols map[string]ColDescriptor, params map...
    method RequiresType (line 144) | func (f *ConcatFn) RequiresType(t SQLValueType, cols map[string]ColDes...
    method Apply (line 151) | func (f *ConcatFn) Apply(tx *SQLTx, params []TypedValue) (TypedValue, ...
  type SubstringFn (line 170) | type SubstringFn struct
    method InferType (line 173) | func (f *SubstringFn) InferType(cols map[string]ColDescriptor, params ...
    method RequiresType (line 177) | func (f *SubstringFn) RequiresType(t SQLValueType, cols map[string]Col...
    method Apply (line 184) | func (f *SubstringFn) Apply(tx *SQLTx, params []TypedValue) (TypedValu...
  type LowerUpperFnc (line 218) | type LowerUpperFnc struct
    method InferType (line 222) | func (f *LowerUpperFnc) InferType(cols map[string]ColDescriptor, param...
    method RequiresType (line 226) | func (f *LowerUpperFnc) RequiresType(t SQLValueType, cols map[string]C...
    method Apply (line 233) | func (f *LowerUpperFnc) Apply(tx *SQLTx, params []TypedValue) (TypedVa...
    method name (line 258) | func (f *LowerUpperFnc) name() string {
  type TrimFnc (line 265) | type TrimFnc struct
    method InferType (line 268) | func (f *TrimFnc) InferType(cols map[string]ColDescriptor, params map[...
    method RequiresType (line 272) | func (f *TrimFnc) RequiresType(t SQLValueType, cols map[string]ColDesc...
    method Apply (line 279) | func (f *TrimFnc) Apply(tx *SQLTx, params []TypedValue) (TypedValue, e...
  type NowFn (line 301) | type NowFn struct
    method InferType (line 303) | func (f *NowFn) InferType(cols map[string]ColDescriptor, params map[st...
    method RequiresType (line 307) | func (f *NowFn) RequiresType(t SQLValueType, cols map[string]ColDescri...
    method Apply (line 314) | func (f *NowFn) Apply(tx *SQLTx, params []TypedValue) (TypedValue, err...
  type JsonTypeOfFn (line 325) | type JsonTypeOfFn struct
    method InferType (line 327) | func (f *JsonTypeOfFn) InferType(cols map[string]ColDescriptor, params...
    method RequiresType (line 331) | func (f *JsonTypeOfFn) RequiresType(t SQLValueType, cols map[string]Co...
    method Apply (line 338) | func (f *JsonTypeOfFn) Apply(tx *SQLTx, params []TypedValue) (TypedVal...
  type UUIDFn (line 359) | type UUIDFn struct
    method InferType (line 361) | func (f *UUIDFn) InferType(cols map[string]ColDescriptor, params map[s...
    method RequiresType (line 365) | func (f *UUIDFn) RequiresType(t SQLValueType, cols map[string]ColDescr...
    method Apply (line 372) | func (f *UUIDFn) Apply(_ *SQLTx, params []TypedValue) (TypedValue, err...
  type pgGetUserByIDFunc (line 381) | type pgGetUserByIDFunc struct
    method RequiresType (line 383) | func (f *pgGetUserByIDFunc) RequiresType(t SQLValueType, cols map[stri...
    method InferType (line 390) | func (f *pgGetUserByIDFunc) InferType(cols map[string]ColDescriptor, p...
    method Apply (line 394) | func (f *pgGetUserByIDFunc) Apply(tx *SQLTx, params []TypedValue) (Typ...
  function findSysAdmin (line 415) | func findSysAdmin(users []User) int {
  type pgTableIsVisible (line 424) | type pgTableIsVisible struct
    method RequiresType (line 426) | func (f *pgTableIsVisible) RequiresType(t SQLValueType, cols map[strin...
    method InferType (line 433) | func (f *pgTableIsVisible) InferType(cols map[string]ColDescriptor, pa...
    method Apply (line 437) | func (f *pgTableIsVisible) Apply(tx *SQLTx, params []TypedValue) (Type...
  type pgShobjDescription (line 444) | type pgShobjDescription struct
    method RequiresType (line 446) | func (f *pgShobjDescription) RequiresType(t SQLValueType, cols map[str...
    method InferType (line 453) | func (f *pgShobjDescription) InferType(cols map[string]ColDescriptor, ...
    method Apply (line 457) | func (f *pgShobjDescription) Apply(tx *SQLTx, params []TypedValue) (Ty...

FILE: embedded/sql/functions_test.go
  function TestPGFunctions (line 24) | func TestPGFunctions(t *testing.T) {

FILE: embedded/sql/grouped_row_reader.go
  type groupedRowReader (line 27) | type groupedRowReader struct
    method onClose (line 59) | func (gr *groupedRowReader) onClose(callback func()) {
    method Tx (line 63) | func (gr *groupedRowReader) Tx() *SQLTx {
    method TableAlias (line 67) | func (gr *groupedRowReader) TableAlias() string {
    method OrderBy (line 71) | func (gr *groupedRowReader) OrderBy() []ColDescriptor {
    method ScanSpecs (line 75) | func (gr *groupedRowReader) ScanSpecs() *ScanSpecs {
    method Columns (line 79) | func (gr *groupedRowReader) Columns(ctx context.Context) ([]ColDescrip...
    method columns (line 83) | func (gr *groupedRowReader) columns() ([]ColDescriptor, error) {
    method colsBySelector (line 106) | func (gr *groupedRowReader) colsBySelector(ctx context.Context) (map[s...
    method InferParameters (line 176) | func (gr *groupedRowReader) InferParameters(ctx context.Context, param...
    method Parameters (line 180) | func (gr *groupedRowReader) Parameters() map[string]interface{} {
    method Read (line 184) | func (gr *groupedRowReader) Read(ctx context.Context) (*Row, error) {
    method emitCurrentRow (line 258) | func (gr *groupedRowReader) emitCurrentRow(ctx context.Context) (*Row,...
    method zeroRow (line 279) | func (gr *groupedRowReader) zeroRow(ctx context.Context) (*Row, error) {
    method initAggregations (line 308) | func (gr *groupedRowReader) initAggregations(row *Row) error {
    method Close (line 381) | func (gr *groupedRowReader) Close() error {
  function newGroupedRowReader (line 39) | func newGroupedRowReader(rowReader RowReader, allAggregations bool, sele...
  function allAggregations (line 144) | func allAggregations(targets []TargetEntry) bool {
  function zeroForType (line 154) | func zeroForType(t SQLValueType) TypedValue {
  function updateRow (line 230) | func updateRow(currRow, newRow *Row) error {
  function initAggValue (line 338) | func initAggValue(aggFn, table, col string) (TypedValue, error) {

FILE: embedded/sql/grouped_row_reader_test.go
  function TestGroupedRowReader (line 27) | func TestGroupedRowReader(t *testing.T) {

FILE: embedded/sql/implicit_conversion.go
  function mayApplyImplicitConversion (line 23) | func mayApplyImplicitConversion(val interface{}, requiredColumnType SQLV...

FILE: embedded/sql/implicit_conversion_test.go
  function TestApplyImplicitConversion (line 27) | func TestApplyImplicitConversion(t *testing.T) {

FILE: embedded/sql/joint_row_reader.go
  type jointRowReader (line 26) | type jointRowReader struct
    method onClose (line 58) | func (jointr *jointRowReader) onClose(callback func()) {
    method Tx (line 62) | func (jointr *jointRowReader) Tx() *SQLTx {
    method TableAlias (line 66) | func (jointr *jointRowReader) TableAlias() string {
    method OrderBy (line 70) | func (jointr *jointRowReader) OrderBy() []ColDescriptor {
    method ScanSpecs (line 74) | func (jointr *jointRowReader) ScanSpecs() *ScanSpecs {
    method Columns (line 78) | func (jointr *jointRowReader) Columns(ctx context.Context) ([]ColDescr...
    method colsBySelector (line 82) | func (jointr *jointRowReader) colsBySelector(ctx context.Context) (map...
    method colsByPos (line 125) | func (jointr *jointRowReader) colsByPos(ctx context.Context) ([]ColDes...
    method InferParameters (line 154) | func (jointr *jointRowReader) InferParameters(ctx context.Context, par...
    method Parameters (line 179) | func (jointr *jointRowReader) Parameters() map[string]interface{} {
    method Read (line 183) | func (jointr *jointRowReader) Read(ctx context.Context) (row *Row, err...
    method Close (line 300) | func (jointr *jointRowReader) Close() error {
  function newJointRowReader (line 36) | func newJointRowReader(rowReader RowReader, joins []*JoinSpec) (*jointRo...

FILE: embedded/sql/joint_row_reader_test.go
  function TestJointRowReader (line 28) | func TestJointRowReader(t *testing.T) {

FILE: embedded/sql/json_type.go
  constant JSONTypeNumber (line 27) | JSONTypeNumber = "NUMBER"
  constant JSONTypeBool (line 28) | JSONTypeBool   = "BOOL"
  constant JSONTypeString (line 29) | JSONTypeString = "STRING"
  constant JSONTypeArray (line 30) | JSONTypeArray  = "ARRAY"
  constant JSONTypeObject (line 31) | JSONTypeObject = "OBJECT"
  constant JSONTypeNull (line 32) | JSONTypeNull   = "NULL"
  type JSON (line 35) | type JSON struct
    method Type (line 51) | func (v *JSON) Type() SQLValueType {
    method IsNull (line 55) | func (v *JSON) IsNull() bool {
    method inferType (line 59) | func (v *JSON) inferType(cols map[string]ColDescriptor, params map[str...
    method requiresType (line 63) | func (v *JSON) requiresType(t SQLValueType, cols map[string]ColDescrip...
    method substitute (line 84) | func (v *JSON) substitute(params map[string]interface{}) (ValueExp, 
Condensed preview — 1017 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,955K chars).
[
  {
    "path": ".chglog/CHANGELOG.tpl.md",
    "chars": 1320,
    "preview": "# CHANGELOG\nAll notable changes to this project will be documented in this file. This project adheres to [Semantic Versi"
  },
  {
    "path": ".chglog/config.yml",
    "chars": 599,
    "preview": "style: github\ntemplate: CHANGELOG.tpl.md\ninfo:\n  title: CHANGELOG\n  repository_url: https://github.com/vchain-us/immudb\n"
  },
  {
    "path": ".codeclimate.yml",
    "chars": 85,
    "preview": "exclude_patterns:\n- \"pkg/api/schema/schema.pb.go\"\n- \"pkg/api/schema/schema.pb.gw.go\"\n"
  },
  {
    "path": ".dockerignore",
    "chars": 253,
    "preview": "# Compiled binaries\n/bm\ndist\n\n# Immudb data\n/data*\n\n# Vendor\nvendor\n\n# Unuseful stuff\n*.iml\n*.swp\n.idea/\n.gitignore\nbuil"
  },
  {
    "path": ".editorconfig",
    "chars": 197,
    "preview": "root = true\n\n[*]\nend_of_line = lf\nindent_size = 4\nindent_style = tab\ninsert_final_newline = true\ntrim_trailing_whitespac"
  },
  {
    "path": ".github/ACTIONS_SECRETS.md",
    "chars": 615,
    "preview": "# Github actions secrets\n\n## PERF_TEST_RUNS_ON\n\nThis secret can be used to change the `runs-on` field for performance te"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 543,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n<!-- Please use"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "chars": 293,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement\nassignees: ''\n\n---\n\n<!--"
  },
  {
    "path": ".github/dependabot.yaml",
    "chars": 295,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"gomod\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n\n  - package"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 4499,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/performance.yml",
    "chars": 4824,
    "preview": "name: Performance tests\n\non:\n  workflow_dispatch:\n  workflow_call:\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  performa"
  },
  {
    "path": ".github/workflows/pull.yml",
    "chars": 7332,
    "preview": "name: pullCI\n\non: [pull_request]\n\njobs:\n  build:\n    name: build-and-test\n    strategy:\n      matrix:\n        include:\n "
  },
  {
    "path": ".github/workflows/push-dev.yml",
    "chars": 819,
    "preview": "name: build-push-dev\n\nenv:\n  GO_VERSION: \"1.24\"\n  MIN_SUPPORTED_GO_VERSION: \"1.24\"\n\non:\n  push:\n    branches:\n      - fe"
  },
  {
    "path": ".github/workflows/push.yml",
    "chars": 11812,
    "preview": "name: pushCI\n\nenv:\n  GO_VERSION: \"1.24\"\n  MIN_SUPPORTED_GO_VERSION: \"1.24\"\n\non:\n  push:\n    branches:\n      - master\n   "
  },
  {
    "path": ".github/workflows/stress.yml",
    "chars": 2500,
    "preview": "name: immudb Stress\non:\n  pull_request:\n    branches:\n    - '**'\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  stress-bui"
  },
  {
    "path": ".gitignore",
    "chars": 571,
    "preview": "# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n\n# Test binary, build with `go test -c`\n*.test\n\n# Ou"
  },
  {
    "path": ".golangci.yml",
    "chars": 9223,
    "preview": "# This file contains all available configuration options\n# with their default values.\n\n# options for analysis running\nru"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 319,
    "preview": "\nrepos:\n- repo: git://github.com/pre-commit/pre-commit-hooks\n  rev: v2.1.0\n  hooks:\n  - id: check-merge-conflict\n  - id:"
  },
  {
    "path": "ACKNOWLEDGEMENTS.md",
    "chars": 5166,
    "preview": "# software\n\nimmudb copyright info:\n Copyright 2022 Codenotary Inc. All rights reserved.\n Released under [Apache 2.0 Lice"
  },
  {
    "path": "BUILD.md",
    "chars": 1501,
    "preview": "# Build the binaries yourself\n\nTo build the binaries yourself, simply clone this repo and run\n\n```\nmake all\n```\n\nTo embe"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 199105,
    "preview": "# CHANGELOG\nAll notable changes to this project will be documented in this file. This project adheres to [Semantic Versi"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5221,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 9975,
    "preview": "<!--\n---\ntitle: \"Contributing\"\ncustom_edit_url: https://github.com/codenotary/immudb/edit/master/CONTRIBUTING.md\n---\n-->"
  },
  {
    "path": "Dockerfile",
    "chars": 2194,
    "preview": "# Copyright 2022 Codenotary Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
  },
  {
    "path": "LICENSE",
    "chars": 4787,
    "preview": "License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\r\n\"Business Source License\" is a trademark o"
  },
  {
    "path": "Makefile",
    "chars": 12100,
    "preview": "# Copyright 2022 Codenotary Inc. All rights reserved. \t\t\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\nLicensed under the Apache Licens"
  },
  {
    "path": "README.md",
    "chars": 16234,
    "preview": "<!--\n---\n\ntitle: \"immudb\"\n\ncustom_edit_url: https://github.com/codenotary/immudb/edit/master/README.md\n---\n\n-->\n\n# immud"
  },
  {
    "path": "SECURITY.md",
    "chars": 7156,
    "preview": "# Security Policy\r\n\r\n## Table of contents\r\n\r\n1. Introduction\r\n2. Scope\r\n3. Supported Versions\r\n4. Reporting a Vulnerabil"
  },
  {
    "path": "build/Dockerfile",
    "chars": 3019,
    "preview": "FROM golang:1.24 as build\nARG BUILD_ARCH=amd64\nWORKDIR /src\nCOPY go.mod go.sum /src/\nRUN go mod download -x\nCOPY . .\nRUN"
  },
  {
    "path": "build/Dockerfile.alma",
    "chars": 1585,
    "preview": "FROM golang:1.24 as build\nARG BUILD_ARCH=amd64\nWORKDIR /src\nCOPY . .\nRUN make clean\nRUN make prerequisites\nRUN make swag"
  },
  {
    "path": "build/Dockerfile.full",
    "chars": 1756,
    "preview": "FROM golang:1.24 as build\nARG BUILD_ARCH=amd64\nWORKDIR /src\nCOPY go.mod go.sum /src/\nRUN go mod download -x\nCOPY . .\nRUN"
  },
  {
    "path": "build/Dockerfile.immuadmin",
    "chars": 905,
    "preview": "FROM golang:1.24 as build\r\nARG BUILD_ARCH=amd64\r\nWORKDIR /src\r\nCOPY . .\r\nRUN GOOS=linux GOARCH=${BUILD_ARCH} make immuad"
  },
  {
    "path": "build/Dockerfile.immuclient",
    "chars": 512,
    "preview": "FROM golang:1.24 as build\r\nARG BUILD_ARCH=amd64\r\nWORKDIR /src\r\nCOPY . .\r\nRUN GOOS=linux GOARCH=${BUILD_ARCH} make immucl"
  },
  {
    "path": "build/Dockerfile.rndpass",
    "chars": 1596,
    "preview": "FROM golang:1.24 as build\nARG BUILD_ARCH=amd64\nWORKDIR /src\nCOPY . .\nRUN make clean\nRUN make prerequisites\nRUN make swag"
  },
  {
    "path": "build/RELEASING.md",
    "chars": 7524,
    "preview": "# Releasing a new `immudb` version\n\nThis document provides all steps required by a maintainer to release a new `immudb` "
  },
  {
    "path": "build/e2e/Dockerfile",
    "chars": 1373,
    "preview": "FROM golang:1.18 as build\nARG BUILD_ARCH=amd64\nWORKDIR /src\nCOPY go.mod go.sum /src/\nRUN go mod download\nCOPY . .\nRUN rm"
  },
  {
    "path": "build/fips/Dockerfile",
    "chars": 1532,
    "preview": "# This version of Go is a Go+BoringCrypto release for FIPS 140-2 compliance\nFROM us-docker.pkg.dev/google.com/api-projec"
  },
  {
    "path": "build/fips/Dockerfile.build",
    "chars": 488,
    "preview": "FROM us-docker.pkg.dev/google.com/api-project-999119582588/go-boringcrypto/golang:1.18.5b7 as build-fips\nARG USERNAME=fi"
  },
  {
    "path": "build/fips/Dockerfile.immuadmin",
    "chars": 666,
    "preview": "FROM us-docker.pkg.dev/google.com/api-project-999119582588/go-boringcrypto/golang:1.18.5b7 as build\r\nARG BUILD_ARCH=amd6"
  },
  {
    "path": "build/fips/Dockerfile.immuclient",
    "chars": 636,
    "preview": "FROM us-docker.pkg.dev/google.com/api-project-999119582588/go-boringcrypto/golang:1.18.5b7 as build\r\nWORKDIR /src\r\nCOPY "
  },
  {
    "path": "build/fips/check-fips.sh",
    "chars": 312,
    "preview": "# Pass the path to the executable to check for FIPS compliance\nexe=$1\n\nif [ \"$(go tool nm \"${exe}\" | grep -c '_Cfunc__go"
  },
  {
    "path": "build/gen-downloads-md.sh",
    "chars": 575,
    "preview": "#!/bin/sh\n\nset -eu\n\ncd \"$(dirname \"$0\")/../dist/\"\n\nVERSION=\"$1\"\n\ngenerate_checksums_for()\n{\n    cat <<EOF\n\n**$1 Binaries"
  },
  {
    "path": "build/xgo/Dockerfile",
    "chars": 234,
    "preview": "FROM techknowlogick/xgo:go-1.13.x@sha256:5ad8a3a0a6576e50c1d3e797ab8c2e186caa83c3f062cc275e1a25e29ade1204\n\n# Inject the "
  },
  {
    "path": "build/xgo/build.sh",
    "chars": 22991,
    "preview": "#!/bin/bash\n#\n# Patched script of xgo build.sh (MIT license)\n# Fork: https://github.com/techknowlogick/xgo\n# Original sc"
  },
  {
    "path": "cmd/cmdtest/random.go",
    "chars": 835,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/cmdtest/stdout_collector.go",
    "chars": 1801,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/docs/man/generate.go",
    "chars": 1416,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/docs/man/generate_test.go",
    "chars": 1099,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/color_unix.go",
    "chars": 1103,
    "preview": "//go:build linux || darwin || freebsd\n// +build linux darwin freebsd\n\n/*\nCopyright 2025 Codenotary Inc. All rights reser"
  },
  {
    "path": "cmd/helper/color_unix_test.go",
    "chars": 684,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/color_windows.go",
    "chars": 1182,
    "preview": "//go:build windows\n// +build windows\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: B"
  },
  {
    "path": "cmd/helper/config.go",
    "chars": 1963,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/config_pathmanager_unix.go",
    "chars": 745,
    "preview": "//go:build linux || darwin || freebsd\n// +build linux darwin freebsd\n\n/*\nCopyright 2025 Codenotary Inc. All rights reser"
  },
  {
    "path": "cmd/helper/config_pathmanager_windows.go",
    "chars": 1333,
    "preview": "//go:build windows\n// +build windows\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: B"
  },
  {
    "path": "cmd/helper/config_test.go",
    "chars": 2567,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/detached.go",
    "chars": 1729,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/detached_test.go",
    "chars": 1220,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/error.go",
    "chars": 1334,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/size.go",
    "chars": 911,
    "preview": "package helper\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tByte     = 1\n\tKiloByte = 1 << (10 * iota)\n\tMegaByte\n\tGigaByte"
  },
  {
    "path": "cmd/helper/size_test.go",
    "chars": 801,
    "preview": "package helper_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/codenotary/immudb/cmd/helper\"\n\t\"github.com/stretchr/testify/requi"
  },
  {
    "path": "cmd/helper/table_printer.go",
    "chars": 1817,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/table_printer_test.go",
    "chars": 2265,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/helper/terminal.go",
    "chars": 1864,
    "preview": "package helper\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\n\t\"golang.org/x/crypto/ssh/terminal\"\n)\n\ntype termina"
  },
  {
    "path": "cmd/helper/terminal_test.go",
    "chars": 1687,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/backup.go",
    "chars": 13729,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/backup_test.go",
    "chars": 22134,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/cmd.go",
    "chars": 1530,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/cmd_test.go",
    "chars": 741,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/commandline.go",
    "chars": 4149,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/commandline_test.go",
    "chars": 4147,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/database.go",
    "chars": 27392,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/database_test.go",
    "chars": 2904,
    "preview": "package immuadmin\n\n/*\nfunc TestDatabaseList(t *testing.T) {\n\toptions := server.DefaultOptions().WithAuth(true)\n\tbs := se"
  },
  {
    "path": "cmd/immuadmin/command/hot_backup.go",
    "chars": 18601,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/hot_backup_test.go",
    "chars": 8702,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/init.go",
    "chars": 4447,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/init_test.go",
    "chars": 933,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/login.go",
    "chars": 2956,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/login_errors_test.go",
    "chars": 6924,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/login_test.go",
    "chars": 7054,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/root.go",
    "chars": 1551,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/serverconfig.go",
    "chars": 2140,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/serverconfig_test.go",
    "chars": 4385,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/controller.go",
    "chars": 7590,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/controller_test.go",
    "chars": 1522,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/metrics.go",
    "chars": 7887,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/metricsloader.go",
    "chars": 1473,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/show.go",
    "chars": 3167,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/show_test.go",
    "chars": 1323,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/statstest/statsResponse.go",
    "chars": 222344,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/ui.go",
    "chars": 1674,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats/ui_test.go",
    "chars": 1167,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats.go",
    "chars": 3041,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/stats_test.go",
    "chars": 5442,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/user.go",
    "chars": 10849,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/command/user_test.go",
    "chars": 18476,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuadmin/fips/fips.go",
    "chars": 723,
    "preview": "//go:build fips\n// +build fips\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1."
  },
  {
    "path": "cmd/immuadmin/immuadmin.go",
    "chars": 660,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/auditagent.go",
    "chars": 4883,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/auditagent_test.go",
    "chars": 6226,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/auditor.go",
    "chars": 4449,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/auditor_test.go",
    "chars": 2068,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/executable.go",
    "chars": 1066,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/executable_test.go",
    "chars": 1572,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/init.go",
    "chars": 1997,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/init_test.go",
    "chars": 887,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/metrics.go",
    "chars": 3125,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/metrics_test.go",
    "chars": 791,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/utils.go",
    "chars": 682,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/audit/utils_test.go",
    "chars": 873,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/cli.go",
    "chars": 6406,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/cli_test.go",
    "chars": 5597,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/currentstatus.go",
    "chars": 752,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/currentstatus_test.go",
    "chars": 1561,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/getcommands.go",
    "chars": 835,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/getcommands_test.go",
    "chars": 4280,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/login.go",
    "chars": 730,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/login_test.go",
    "chars": 1607,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/misc.go",
    "chars": 894,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/misc_test.go",
    "chars": 1458,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/recommend.go",
    "chars": 1618,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/recommend_test.go",
    "chars": 890,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/references.go",
    "chars": 762,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/references_test.go",
    "chars": 1143,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/register.go",
    "chars": 3863,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/register_test.go",
    "chars": 832,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/scanners.go",
    "chars": 815,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/scanners_test.go",
    "chars": 1509,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/server_info.go",
    "chars": 649,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/setcommands.go",
    "chars": 1209,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/setcommands_test.go",
    "chars": 1549,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/sql.go",
    "chars": 1039,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/sql_test.go",
    "chars": 1058,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/unixcmds.go",
    "chars": 1143,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/cli/unixcmds_test.go",
    "chars": 1023,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/cmd.go",
    "chars": 2658,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/cmd_test.go",
    "chars": 789,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/commandline.go",
    "chars": 2415,
    "preview": "package immuclient\n\nimport (\n\t\"github.com/codenotary/immudb/cmd/helper\"\n\tc \"github.com/codenotary/immudb/cmd/helper\"\n\t\"g"
  },
  {
    "path": "cmd/immuclient/command/commandline_test.go",
    "chars": 1542,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/currentstatus.go",
    "chars": 1717,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/currentstatus_test.go",
    "chars": 2034,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/getcommands.go",
    "chars": 2782,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/getcommands_test.go",
    "chars": 7571,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/init.go",
    "chars": 7704,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/init_test.go",
    "chars": 1079,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/login.go",
    "chars": 1659,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/login_test.go",
    "chars": 2352,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/misc.go",
    "chars": 3537,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/misc_test.go",
    "chars": 4043,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/references.go",
    "chars": 1751,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/references_test.go",
    "chars": 3029,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/root.go",
    "chars": 2114,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/scanners.go",
    "chars": 2223,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/scanners_test.go",
    "chars": 5134,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/server_info.go",
    "chars": 549,
    "preview": "package immuclient\n\nimport \"github.com/spf13/cobra\"\n\nfunc (cl *commandline) serverInfo(cmd *cobra.Command) {\n\tccmd := &c"
  },
  {
    "path": "cmd/immuclient/command/server_info_test.go",
    "chars": 1273,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/setcommands.go",
    "chars": 4015,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/setcommands_test.go",
    "chars": 6651,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/sql.go",
    "chars": 2708,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/tamperproofing.go",
    "chars": 1235,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/command/tamperproofing_test.go",
    "chars": 3256,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/fips/fips.go",
    "chars": 987,
    "preview": "//go:build fips\n// +build fips\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1."
  },
  {
    "path": "cmd/immuclient/immuc/currentstatus.go",
    "chars": 1556,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/currentstatus_errors_test.go",
    "chars": 1496,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/currentstatus_test.go",
    "chars": 1604,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/getcommands.go",
    "chars": 4336,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/getcommands_errors_test.go",
    "chars": 4871,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/getcommands_test.go",
    "chars": 2536,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/history.go",
    "chars": 1447,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/history_test.go",
    "chars": 1047,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/init.go",
    "chars": 5515,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/init_errors_test.go",
    "chars": 869,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/init_test.go",
    "chars": 1460,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/login.go",
    "chars": 7603,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/login_errors_test.go",
    "chars": 9408,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/login_test.go",
    "chars": 10587,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/misc.go",
    "chars": 1045,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/misc_errors_test.go",
    "chars": 1991,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/misc_test.go",
    "chars": 808,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/options.go",
    "chars": 1307,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/options_test.go",
    "chars": 986,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/print.go",
    "chars": 3313,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/references.go",
    "chars": 2779,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/references_errors_test.go",
    "chars": 2207,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/references_test.go",
    "chars": 1176,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/scanners.go",
    "chars": 2610,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/scanners_errors_test.go",
    "chars": 3571,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/scanners_test.go",
    "chars": 1679,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/server_info.go",
    "chars": 608,
    "preview": "package immuc\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/codenotary/immudb/pkg/api/schema\"\n\t\"github.com/codenotary/im"
  },
  {
    "path": "cmd/immuclient/immuc/server_info_test.go",
    "chars": 259,
    "preview": "package immuc_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestServerInfo(t *testing.T) {\n\t"
  },
  {
    "path": "cmd/immuclient/immuc/setcommands.go",
    "chars": 7837,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/setcommands_errors_test.go",
    "chars": 5675,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/setcommands_test.go",
    "chars": 2105,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuc/sql.go",
    "chars": 3039,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuclient.go",
    "chars": 929,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/immuclienttest/helper.go",
    "chars": 4105,
    "preview": "/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: BUSL-1.1\nyou may not use this file exce"
  },
  {
    "path": "cmd/immuclient/service/configs/immuclient.toml.freebsd.dist.go",
    "chars": 977,
    "preview": "//go:build freebsd\n// +build freebsd\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: B"
  },
  {
    "path": "cmd/immuclient/service/configs/immuclient.toml.linux.dist.go",
    "chars": 1014,
    "preview": "//go:build linux || darwin\n// +build linux darwin\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-"
  },
  {
    "path": "cmd/immuclient/service/configs/immuclient.toml.windows.dist.go",
    "chars": 1013,
    "preview": "//go:build windows\n// +build windows\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: B"
  },
  {
    "path": "cmd/immuclient/service/constants/freebsd.dist.go",
    "chars": 1338,
    "preview": "//go:build freebsd\n// +build freebsd\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-Identifier: B"
  },
  {
    "path": "cmd/immuclient/service/constants/linux.dist.go",
    "chars": 1713,
    "preview": "//go:build linux || darwin\n// +build linux darwin\n\n/*\nCopyright 2025 Codenotary Inc. All rights reserved.\n\nSPDX-License-"
  }
]

// ... and 817 more files (download for full content)

About this extraction

This page contains the full source code of the codenotary/immudb GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1017 files (7.0 MB), approximately 1.9M tokens, and a symbol index with 9325 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!