Tags

Tags give the ability to mark specific points in history as being important
  • 25.5.8

    protected
    8947561f · release: 25.5.8 ·
    [25.5.8] - 2026-02-25
    
    Features
    
    - New ALTER SYSTEM parameter `sql_log` (default: false)
      enables logging of all SQL statements to log file.
    - Introduce `sql_preemption_opcode_max` to control the VDBE opcode interval
      between execution time checks when `sql_preemption` is enabled.
    - Fixed local SQL iterators to survive fiber yields during table truncation.
    
    Fixes
    
    - Fixed that `--pg-advertise` CLI argument was erroneously disallowed to be used
      simultaneously with `--iproto-advertise`.
    - Fixed an issue where upgrade operations were inserted incorrectly
      when applying system catalog changes for several catalog versions.
  • 25.5.7

    protected
    b254d360 · release: 25.5.7 ·
    [25.5.7] - 2026-02-10
    
    Fixes
    
    - Fixed a number of vinyl issues by backporting upstream patches
  • 25.5.6

    protected
    14c64653 · release: 25.5.6 ·
    [25.5.6] - 2026-02-06
    
    WebUI
    - Webui now displays the value of `cluster_version` instead of current
      instance's version. That way you can easily tell if the cluster has been
      upgraded successfully or not yet.
    
    Fixes
    
    - Fixed governor's `ConfigureReplication` step was broken during upgrade from before 25.5.3
    - Fixed that instances from tiers with can_vote=false attempting to promote to raft leader.
    - Fixed a crash in case of any error during TRUNCATE operation.
    - Fixed a race condition between DDL (i.e., TRUNCATE) and DQL when the preemption option is enabled.
  • 25.5.5

    protected
    2851d7f3 · release: 25.5.5 ·
    [25.5.5] - 2026-01-26
    
    Fixes
    
    - Fixed assertion failure in CAS right after raft leader change followed by
      persisted raft log tail truncation.
    - Fixed a crash in proc_runtime_info when the last applied raft entry contained
      a unicode string where a 100th byte position was not on a character boundary.
    - Added env option PICODATA_UNSAFE_FORCE_RECOVERY.
      - Possible values: true, false.
      - This option is passed to Tarantool as `force_recovery` option.
      - If force_recovery equals true, Tarantool tries to continue
        if there is an error while reading a snapshot file (at server instance start)
        or a write-ahead log file (at server instance start or when applying
        an update at a replica.
    - Always open vylog files with O_SYNC.
    - Fixed that sentinel_loop was broken during upgrade from versions before 25.5.3.
  • 25.5.4

    protected
    36fbec30 · release: 25.5.4 ·
    [25.5.4] - 2026-01-21
    
    Fixes
    
    - Introduce unnamed_join alias for motions with joins under them to distinguish columns with identical names
    - Fix erroneous logic of counting rows returned from replicasets which led to undercovered limit exceedance
      errors.
    - Fixed that upgrading between patch versions wouldn't run upgrade scripts.
    - Datetime literals should support `yyyy-mm-dd` format, e.g. `select '2026-01-17'::datetime`.
    - Fix type inference for the `a BETWEEN b AND c` expression; now types of `a`, `b` and `c` should be
      properly unified, meanining that `select '2026-01-13' between '2026-01-01'::datetime and '2026-01-20'`
      will work as expected.
  • 25.5.3

    protected
    acd5dde4 · release: 25.5.3 ·
    [25.5.3] - 2026-01-15
    
    Features
    
    - Support JSON_EXTRACT_PATH function.
    - New column `sync_incarnation` is added to `_pico_instance` system table.
    - New ALTER SYSTEM parameter `governor_check_replication_error` (default: true)
      enables the checking if replication is broken on any instance, in which case
      the instance will be automatically made Offline.
    - New columns `target_state_reason` & `target_state_change_time` in `_pico_instance` system table
    
    Fixes
    
    - Fixed that the whole replicaset would be broken if one instance get's a
      replication conflict. (See also https://git.picodata.io/core/picodata/-/issues/2231).
    - Fixed that governor would sometimes be blocked in read_only on a DDL operation
      mode not being able to apply any subsequent raft operations.
  • 25.5.2

    protected
    f9918efd · release: 25.5.2 ·
    [25.5.2] - 2025-12-26
    
    Features
    
    - Rework SQL execution protocol for DML queries to reduce data transfer.
    - Introduce non-blocking SQL execution to prevent fiber starvation.
    
    Fixes
    
    - Fixed that governor would hang indefinitely if an Offline replicaset had
      target_master_name != current_master_name.
    - Fixed that instance would hang indefinitely when trying to join the cluster if
      the cluster becomes too big.
      NOTE: The fix requires modifying the proc_raft_join RPC response format
      which technically breaks compatibility with previous versions of picodata.
      However picodata explicitly doesn't support heterogeneous joins (when version
      of joining instances mismatches version of cluster), so this shouldn't be a
      problem for anybody. NOTE also that this doesn't affect restarting instances
      which already joined the cluster.
    - Fixed a crash when SQL request arrives before instance is properly initialized
    - Fixed that instances would be made Offline immediately after a raft entry is
      applied if there weren't any entries applied for a long time before that
    - Fixed that instances would randomly fail with ER_READONLY during bootstrap
    - Improve upgrade flow for creating Lua stored functions (exported to SQL).
    - Fixed that governor would send redundant proc_sharding RPCs which would make
      it impossible to deploy huge clusters. Now RPCs from governor are split into
      batches of configurable size (default 200, ALTER SYSTEM parameter `governor_rpc_batch_size`).
    - Node construction is now deferred until actually needed, avoiding unnecessary
      work for cached queries on any instance execution
    - Fixed a memory leak in SQL API of plugin SDK
  • 25.6.0

    protected
    5d75b738 · fix changelog for 25.6 ·
    [25.6.0] - 2025-12-17
    Feature freeze [25.5]
    Start next minor 25.6.0
  • 25.5.1

    protected
    e1117450 · release: 25.5.1 ·
    [25.5.1] - 2025-12-19
    
    Features
    
    - Change the default memtx_checkpoint_count from 2 to 1. If a user needs a checkpoint, they can use SQL BACKUP statement, no need to occupy extra space by default.
    - Reduce the frequency of heartbeats sent to raft learners, reducing the cluster traffic.
    - Refactor SQL executor to reduce memory allocations.
    - Plugins and webUI now support scram-sha256 auth.
    - SQL optimizer may now select indices for comparison operators with mixed number
      types (e.g. pk int < decimal) and datetime.
    - Vinyl improvements to decrease in-memory page index size.
    - Add HTTPS support for metrics and WebUI
    - Add the _pico_bucket(tier_name) function to show vshard bucket distribution.
    
    Fixes
    - Fix compilation error on ARM architecture.
    - Fix eliminate erroneous ER_READONLY message in logs when executing TRUNCATE on
      global tables sometimes (See also https://git.picodata.io/core/picodata/-/issues/2274).
    - Fix possible crash when using TLS for iproto communication within cluster.
    - Specifying `instance.iproto_tls.enable` parameter via configuration file.
    - Prevent conflicts when creating tables with renamed table names.
    - Fix CREATE TABLE hanging on index conflict.
    - Print upper bound of a signed 64-bit integer for ALTERing the `sql_storage_cache_count_max`,
      instead of an unsigned 64-bit integer, after `UNSIGNED` has been deleted internally and range
      has been changed.
    - Resolve hang when using TLS (hang in `ssl_iostream_destroy` when fiber is cancelled).
    - Resolve hang when using TLS (fix infinite loop in coio_writev_timeout on SSL_ERROR_ZERO_RETURN).
    - Fix Service::on_leader_change callbacks not being called after master goes Offline
      due to sentinel auto-offline policy (See also https://git.picodata.io/core/picodata/-/issues/2303).
    - Fixed a bug where the raft snapshot would sometimes contain incorrect term
      which would result in an unrecoverable failure of the receiving instance.
    - DML to global tables no longer will fail with errors such as "Compacted"
      (See also https://git.picodata.io/core/picodata/-/issues/2273).
    - Fix `use-after-poison` in `proc_sql_execute`.
    - Fixed a bug which made the effective value of `pg_portal_max` be the same as `pg_statement_max`
    - Fix trigger execution and privilege initialization for scram-sha256 auth in pgproto.
    - Fixed possible ER_BOOTSTRAP_READONLY failure during instance bootstrap.
    - Fixed ER_BOOTSTRAP_CONNECTION_NOT_TO_ALL failure during instance join stage.
    - Fixed a possible bootstrap failure when joining multiple instances at the same
      time. NOTE: The fix requires modifying the proc_raft_join RPC response format
      which technically breaks compatibility with previous versions of picodata.
      However picodata explicitly doesn't support heterogeneous joins (when version
      of joining instances mismatches version of cluster), so this shouldn't be a
      problem for anybody. NOTE also that this doesn't affect restarting already
      instances which already joined the cluster.
    - Fix pico_instance_state metric to report correct value on all instances
    - Fixed a bug where some queries that changed the table schema checked WRITE permissions instead of ALTER permissions.
    - Fix `DO NOTHING` conflict policy error on unique indices for globally distributed tables.
    - Lua datetime functions `to_char` and `to_date` are now strict (returns `NULL` when at least one argument is `NULL`).
    - Fix name resolution in HAVING if projection contains a param.
    - Fixed that vshard would consume non-negligible amount of resources when idling
      on big cluster setups.
    
    WebUI
    - Login form and simple session control
    - Introduce display of used memory in terms of tier
    
    ACL
    - Support granting CREATE privilege on specific table.
    
    SQL
    - Support indexing arrays, i.e. `a[1][2]` expressions.
    - Support indexing maps with string keys, i.e. `m['key']` expressions.
    - Add IF NOT EXISTS support for ALTER TABLE ADD COLUMN.
    - Support for a new set of volatile scalar functions, providing service information:
      - `pico_instance_name()`: returns a name of the current instance.
      - `pico_replicaset_name()`: returns a name of the replicaset in which current instance is.
      - `pico_tier_name()`: returns a name of the tier in which current replicaset of current instance is.
      - `pico_instance_dir()`: returns an absolute path to the current instance working directory
        (do not confuse with share directory, which is used for plugins).
      - `pico_config_file_path()`: return an absolute path to the current instance configuration file. It
        does not check whether the config exist, it will still return the initial path. If the instance was
        started without specifying an instance config, it will return `null`.
    - Support ALTER INDEX RENAME command to rename an existing index.
    - Introduced various optimizations reducing memory allocations and
      eliminating unnecessary plan traversals and modifications.
      Some highlights:
      - Eliminated unnecessary parameter clones.
      - Skipped optimizations for plans that cannot benefit from them.
      - Cached results of some transformations.
      - Eliminated allocations in various places.
      - Avoided sending unused vtables for INSERT queries.
    
      As a result:
      - INSERT performance increased by 20%-70% depending on the size of the rows.
      - TPC-B performance increased by ~10%.
    
    - Add INDEXED BY clause. It is sqlite feature which allows to specify index for
      table lookup.
    
    Pgproto
    - Add support for configuring pgproto TLS certificates via:
      - `instance.pg.ssl` (enable/disable TLS)
      - `instance.pg.cert_file` (client certificate path)
      - `instance.pg.key_file` (private key path)
      - `instance.pg.ca_file` (CA certificate path).
    
    Observability
    - Added metrics `pico_sql_global_dml_query` and `pico_sql_global_dml_query_retries`
      which report respectively the total number of SQL DML operations on global
      tables and number of times these operations had to be retried due to CAS conflicts.
    
    Configuration
    - Changed default value for `raft_wal_count_max` ALTER SYSTEM parameter from 64 to 16384.
  • 25.5.1-rc1

    protected
    d806bc57 · release: 25.5.1-rc1 ·
    25.5.1-rc1 - 2025-12-18
    
    Release candidate 1 for 25.5.1.
  • 25.4.4

    protected
    [25.4.4] - 2025-11-12
    
    Fixes
    - Fixed a bug where the raft snapshot would sometimes contain incorrect term
      which would result in an unrecoverable failure of the receiving instance.
    - Resolve hang when using TLS (hang in `ssl_iostream_destroy` when fiber is cancelled).
    - Resolve hang when using TLS (fix infinite loop in coio_writev_timeout on SSL_ERROR_ZERO_RETURN).
    - DML to global tables no longer will fail with errors such as "Compacted"
      (See also https://git.picodata.io/core/picodata/-/issues/2273).
    - Fix trigger execution and privilege initialization for scram-sha256 auth in pgproto.
    
    SQL
    - Add IF NOT EXISTS support for ALTER TABLE ADD COLUMN.
    
    Observability
    - Added metrics `pico_sql_global_dml_query` and `pico_sql_global_dml_query_retries`
      which report respectively the total number of SQL DML operations on global
      tables and number of times these operations had to be retried due to CAS conflicts.
  • 25.3.8

    protected
    1b8c0700 · release: 25.3.8 ·
    [25.3.8] - 2025-10-23
    
    Fixes
    
    - Fixed an out-of-memory crash when using Response::encode_rmp with large
      collections in plugin API (see also https://git.picodata.io/core/picodata/-/issues/2028).
    - Fixed a bug where the raft snapshot would sometimes contain incorrect term
      which would result in an unrecoverable failure of the receiving instance.
  • 25.3.7

    protected
    [25.3.7] - 2025-10-16
    
    Fixes
    
    - Fix Service::on_leader_change callbacks not being called after master goes Offline
      due to sentinel auto-offline policy (See also https://git.picodata.io/core/picodata/-/issues/2303).
    
    SQL
    
    - Add IF NOT EXISTS support for ALTER TABLE ADD COLUMN.
  • 25.4.3

    protected
    6bc41a51 · release: 25.4.3 ·
    [25.4.3] - 2025-10-15
    
    Fixes
    
    - Fix possible crash when using TLS for iproto communication within cluster.
    - Specifying `instance.iproto_tls.enable` parameter via configuration file.
    - Prevent conflicts when creating tables with renamed table names.
    - Fix CREATE TABLE hanging on index conflict.
    - Fix Service::on_leader_change callbacks not being called after master goes Offline
      due to sentinel auto-offline policy (See also https://git.picodata.io/core/picodata/-/issues/2303).
    
    Pgproto
    
    - Add support for configuring pgproto TLS certificates via:
      - `instance.pg.ssl` (enable/disable TLS)
      - `instance.pg.cert_file` (client certificate path)
      - `instance.pg.key_file` (private key path)
      - `instance.pg.ca_file` (CA certificate path).
  • 25.3.6

    protected
    [25.3.6] - 2025-10-10
    
    Fixes
    
    - Fix compilation error on ARM architecture.
    - Fix eliminate erroneous ER_READONLY message in logs when executing TRUNCATE on
      global tables sometimes (See also https://git.picodata.io/core/picodata/-/issues/2274).
  • 25.4.2

    protected
    abc7b7b5 · release: 25.4.2 ·
    [25.4.2] - 2025-10-09
    
    Fixes
    
    - Fix compilation error on ARM architecture.
    - Fix eliminate erroneous ER_READONLY message in logs when executing TRUNCATE on
      global tables sometimes.
    
    WebUI
    
    - Add a login form and JWT-based session management. The JWT secret is stored in
      the `_pico_db_config` table as `jwt_secret`. Set `jwt_secret` to an empty string ("")
      to disable authentication. On upgrade, Picodata leaves the existing `jwt_secret`
      unchanged. To enable web authentication on existing clusters, reset `jwt_secret`
      via the `ALTER SYSTEM` API.
  • 25.3.5

    protected
    9e518b6b · release: 25.3.5 ·
    [25.3.5] - 2025-10-03
    
    Features
    
    - Instance's which loose ability to apply raft log updates will automatically
      become Offline. (See also https://git.picodata.io/core/picodata/-/issues/2238).
    - New ALTER SYSTEM parameter `plugin_check_migration_hash` (default: true)
      allows disabling plugin migration file checksum validation. This allows plugin
      authors to more easily fix mistakes in migration files.
    
    Fixes
    
    - Fixed bizarre row order produced by ORDER BY <uuid>.
    - Fixed a possible state corruption in case picodata crashes after receiving a
      raft snapshot with a stale schema version.
    - Fixed TRUNCATE operation for global tables.
  • 25.4.1

    protected
    e4612aa8 · release: 25.4.1 ·
    [25.4.1] - 2025-10-02
    
    Features
    
    - Support unique indexes with non-sharded columns on sharded tables, with sharding key prefix provided
    - Introduce the governor script to add `is_default` column to the `_pico_tier` table
    - Pgproto now reports more verbose TLS error messages
    - Validate cluster UUID during IPROTO handshake and propagate `cluster_uuid` via IPROTO_ID. Connections with a mismatching `cluster_uuid` are rejected, ensuring cross-cluster isolation.
    - Instance's which loose ability to apply raft log updates will automatically
      become Offline. (See also https://git.picodata.io/core/picodata/-/issues/2238).
    - Support TLS in IPROTO for intra-cluster communication and CLI.
      - Configure via new config section: `instance.iproto_tls`;
      - Run CLI with new arguments: `--tls-cert`, `--tls-key`, `--tls-ca`.
    - Support TLS certificate authentication
      - Use the certificate's Common Name (CN) field as the username;
      - For example, use `CN=dbuser@company.com` or `CN=dbuser` in the certificate to authenticate the user "dbuser";
      - This method takes precedence over other authentication mechanisms.
    - New ALTER SYSTEM parameter `plugin_check_migration_hash` (default: true)
      allows disabling plugin migration file checksum validation. This allows plugin
      authors to more easily fix mistakes in migration files.
    - It is now possible to use `scram-sha256` auth method for old and new users.
      Currently, the method is only compatible with pgproto, which means it
      won't be available for picodata plugins or iproto connections.
    
    Observability
    - `instance_name` is now the primary label for Prometheus metrics.
    - Added the metric `pico_info_uptime{instance_name, instance_dir_name, replicaset, tier, cluster_name}`.
    - Updated Grafana dashboard: legends now use `{{instance_name}}`.
    
    SQL
    - SQL supports scalar function `abs()`.
    - Multiple `OPTIONS` specified in an SQL query no longer result in an error.
      Instead, the rightmost option takes precedence.
    - SQL now supports the `AUDIT POLICY` operation to enable or disable audit logging of DML operations for specific users.
      - Use cases:
        - `AUDIT POLICY dml_default BY dbuser` - enables audit logging of DML operations for user "dbuser"
        - `AUDIT POLICY dml_default EXCEPT dbuser` - disables audit logging of DML operations for user "dbuser"
      - Currently, only one policy named `dml_default` is supported.
    - Maximum value for `Integer` and `Unsigned` type is ***9223372036854775807***.
    
    Fixes
    - Fixed "instance is already joined" error if picodata crashes during reboostrap
      (see also https://git.picodata.io/core/picodata/-/issues/2077).
    - Supported detecting and fixing broken replication.
    - Remove unnecessary timeout on local Unix domain sockets in `picodata admin` command.
      Unlike network sockets, local sockets don't silently hang - a server crash
      immediately breaks the connection, making timeouts redundant. This fixes an issue
      where long-running plugin commands could be incorrectly aborted due to the
      artificial timeout.
    - Supported backoff strategies when configuring vshard from the governor.
    - Fixed restart the whole cluster at once taking too long.
    - Fixed an issue where `cluster.shredding` option does not get applied on instance restart.
    - `EXPLAIN` queries now support `OPTION` (e.g. `EXPLAIN SELECT 1 OPTION (SQL_VDBE_OPCODE_MAX = 6)`)
    - Fixed joining a replica after expel with the same instance name as the
      expelled one (see also https://git.picodata.io/core/picodata/-/issues/2173).
    - Fixed an out-of-memory crash when using Response::encode_rmp with large
      collections in plugin API (see also https://git.picodata.io/core/picodata/-/issues/2028).
    - Upgraded luajit to fix several issues.
      See https://git.picodata.io/core/tarantool/-/merge_requests/282 for details.
    - Fixed bizarre row order produced by ORDER BY <uuid>.
    - Fixed restarting the cluster without some of the voters
      (see also https://git.picodata.io/core/picodata/-/issues/2202).
    - Fixed potential undefined behavior in plugin RPC handler arguments.
    - Picodata now loads all certificates from `ca.crt`, not just the first one.
    - Fixed a possible state corruption in case picodata crashes after receiving a
      raft snapshot with a stale schema version.
    - Fixed TRUNCATE operation for global tables.
    
    CLI
    
    - Authentication method flags now use automatic recognition system, instead
      of relying on default values, delivering less error-prone and complex user
      experience.
      See <https://git.picodata.io/core/picodata/-/issues/1973>.
    
    - `picodata status` and `picodata plugin configure` now support execution with
      custom user, determining authentication method automatically on it's own.
      WARNING: If you do not specify an authentication method, it will be found
      out by brute force, which may lead to the user being blocked if the number of
      authorization attempts exceeds the limits.
      See <https://git.picodata.io/core/picodata/issues/1734>.
    
    - `picodata plugin configure` now prints a message on success for better UX.
      See <https://git.picodata.io/core/picodata/-/issues/1904>.
    
    - `picodata plugin configure` now returns a success code, instead of non-zero
      when trying to change plugin service parameters with the same values.
      See <https://git.picodata.io/core/picodata/-/issues/2222>.
    
    Plugin API
    
    - `internal::authenticate` is now deprecated, and is a re-export of the
      same auth function in a separate module `authentication::authenticate`.
      See <https://git.picodata.io/core/picodata/-/issues/2007>.
    
    WebUI
     - display expelled state
  • 25.5.0

    protected
    [25.5.0] - 2025-10-03
    Feature freeze 25.4
    Start next minor 25.5
  • 25.3.4

    protected
    a3f24746 · release: 25.3.4 ·
    [25.3.4] - 2025-09-10
    
    Fixes
    
    - Upgraded luajit to fix several issues.
      See https://git.picodata.io/core/tarantool/-/merge_requests/282 for details.