What's new in the v2.25 preview release series
What follows are the release notes for the YugabyteDB v2.25 release series. Content will be added as new notable features and changes are available in the patch releases of the YugabyteDB v2.25 release series.
For an RSS feed of all release series, point your feed reader to the RSS feed for releases.
v2.25.1.0 - March 21, 2025
Build: 2.25.1.0-b381
Downloads
Docker:
docker pull yugabytedb/yugabyte:2.25.1.0-b381
Highlights
We're excited to announce the Technical Preview of the following powerful new features in YugabyteDB aimed at simplifying operations, enhancing functionality, and improving performance.
Automatic DDL Replication TP
xCluster replication currently requires manual execution of DDL statements on both the source and target clusters to ensure schema consistency.
Automatic DDL Replication eliminates this complexity by seamlessly replicating YSQL DDL changes from the source to the target without requiring manual intervention. This ensures:
- Effortless schema synchronization across clusters.
- Continuous replication without pauses due to schema mismatches.
- Improved reliability by handling DDL execution automatically.
By automating DDL replication, this feature simplifies database management, reduces operational overhead, and enhances the resilience of xCluster replication.
Advisory locks TP
YugabyteDB's latest release introduces support for PostgreSQL advisory locks, enabling efficient application-level locking mechanisms. These locks allow developers to coordinate concurrent processes without blocking transactions, improving workload management and resource synchronization in distributed environments. For more information on PostgreSQL advisory locks, refer to Advisory locks in the PostgreSQL documentation.
Time-travel Queries TP
YugabyteDB now supports time-travel queries, allowing users to run queries as if they were executed at a specified point in the past. This capability enables historical data analysis, auditing, and debugging, without requiring separate backups or snapshots, enhancing data visibility in a running database.
PgVector HNSW Index Support TP
YugabyteDB now supports HNSW (Hierarchical Navigable Small World) indexes via the pgvector extension, enabling efficient approximate nearest neighbor (ANN) search for high-dimensional data. This addition expands YugabyteDB's vector indexing capabilities, providing another option alongside existing indexing methods for vector similarity search.
Upgrade from PostgreSQL 11 to PostgreSQL 15 TP
YugabyteDB now supports in-place zero downtime upgrade from a PostgreSQL 11-compatible (v2024.2.2) release to a PostgreSQL 15-compatible (v2.25.1) release. This capability allows PostgreSQL major version upgrades without any downtime or interruption to the application.
New features
-
PostgreSQL Anonymizer extension, which masks or replaces personally identifiable information (PII) or commercially sensitive data, is now bundled with YugabyteDB. TP
-
YugabyteDB now supports the ability to compute multivariate statistics using the CREATE STATISTICS command. Part of PostgreSQL 15, this feature allows the query planner to use cross-column correlation statistics to generate better query plans. TP #13598
Change log
View the detailed changelog
Improvements
YSQL
- Enhances initdb logging, correctly handles process termination, and fixes memory leaks on abort signals. #24813
- Ensures cached plans correctly depend on user roles, addressing CVE-2024-10976. #25330
- Adds flag
ysql_conn_mgr_sequence_support_mode
for sequence management options. #23660 - Removes the
enable_ysql_conn_mgr
flag from preview status. #25578 - Allows setting
enable_ysql_conn_mgr
to true for general availability. #25578 - Enhances error transparency when dropping databases or users. #21438
- Simplifies handling of ybctids from multiple sources in PgDml. #25162
- Enables faster LZ4 compression for large attributes in YSQL with upgraded third party support. #24290
- Enhances
INSERT ON CONFLICT
by introducing efficient read batching and adding RETURNING support. #24648 - Adds
ybctid
as a reserved, fully queryable system column for improved row identification. #1284 - Simplifies index requests for copartitioned vector indexes, enhancing efficiency. #25047
- Fixes segmentation fault in
CREATE OR REPLACE TRIGGER
by ensuringybctid
is set. #24941 - Simplifies DML read pushdown binding for enhanced coding efficiency. #25151
- Ensures
ybcModifyTable.h
meets style guidelines to pass arc lint checks. #25172 - Adds new lint rules for better PostgreSQL code syntax checking #25187
- Resolves style issues in yb_scan.c and yb_scan.h, addressing lint errors and warnings. #25198
- Enhances YSQL code consistency with additional linting rules. #25298
- Adds line breaks for each command in pipelines for better readability. #25297
- Reduces CPU usage by optimizing
ExecLockRows
function. #25268 - Adds a flag
ysql_block_dangerous_roles
to prevent privilege escalation. #25348 - Adds new lint rules for comment styles in YSQL code. #25360
- Removes outdated comments that are no longer applicable in the current codebase. #25400
- Ensures YSQL code follows leading whitespace rules and blacklists non-compliant files. #25375
- Streamlines initialization of
YsqlAdvisoryLocksTable
usingstd::shared_future
. #25373 - Removes unused parameters from
YBInitPostgresBackend
for cleaner code. #25417 - Simplifies
ysql_dump
by removing outdated references topg_tablegroup
. #25419 - Adds a helper class to manage YsqlCatalogConfig updates efficiently. #25418
- Enhances code quality in
pg_yb_utils.c
by applying lint warnings/errors. #25420 - Enhances INSERT ON CONFLICT performance by decoupling batch processing. #25488
- Ensures trailing whitespace issues are consistently addressed in the codebase. #25438
- Allows setting
yb_insert_on_conflict_read_batch_size
to zero to disable batching, aligning closer with PostgreSQL behavior. #25489 - Adjusts
ysqlsh -V
output for accurate command name representation. #25429 - Resolves code style issues by fixing spacing after control statements. #25447
- Streamlines code clarity in YSQL by renaming and conditional updates. #25446
- Streamlines datatype mapping by consolidating multiple code blocks into
PgTypeInfo
. #25554 - Enforces new lint rule
bad_opening_paren
for cleaner code alignment. #25455 - Enhances YSQL logging with new and updated linter rules to reduce errors and increase clarity. #25482
- Enforces new spacing rules around comments in YSQL code. #25487
- Re-enables the
check_for_tables_with_oids
for consistency with PostgreSQL. #25498 - Standardizes type naming across YSQL to eliminate inconsistencies. #25587
- Enables batching for INSERT ON CONFLICT with foreign key triggers. #24649
- Consolidates YSQL configuration parameter management for clarity and consistency. #25586
- Removes unnecessary
needs_pg_session_transaction
field to streamline advisory lock handling. #25591 - Adds "yb" prefix to custom YB type names for clarity and consistency. #25631
- Enables lz4 compression by default for large YSQL tuples, ensuring high performance. #25613
- Reduces
PgClientSession
's size and streamlines code for better readability and easier modifications. #25652 - Enhances YSQL linter scripts to handle Mac compatibility and prevent failures. #25662
- Simplifies running
pgindent
for cleaner code formatting and resolving issues with function names and comments. #25663 - Removes unnecessary sidecar usage from
YBPgsqlLockOp
for cleaner code. #25855 - Enhances thread safety by isolating
client_
field storage inPgClientSession
. #25652 - Enhances code readability by running yb_pgindent and manual formatting. #25725
- Enables
INSERT ON CONFLICT
read batching by default to increase test coverage. #25985 - Enhances lint rule messages for clarity and stricter comment spacing validation. #25816
- Refactors PgClientSession using the pimpl design pattern for better organization and cleanup. #25847
- Enhances YSQL index backfill tests to detect and verify index consistency issues more effectively. #25854
- Allows customizing
ef_construction
andm
parameters for ybhnsw indexes during creation. #25859 - Reduces code duplication in query optimization checks for colocated/copartitioned tables. #25959
- Restores the
ItemPointer
static assert following upstream PostgreSQL code. #25997 - Fixes a TSAN issue by adjusting error reports in YugabyteDB. #25998
- Enhances code style in
src/backend/tcop/
as per linting reports. #25189 - Adds query ID and leader PID to the
/rpcz
endpoint response. #25603
YCQL
- Adds keyspace field to
<tserver-ip>:12000/statements
output. #25368
DocDB
- Enables xCluster to support and replicate table rewrite DDL operations effectively. #23955
- Enables the creation of indexable vector columns in DocDB by introducing a new DataType
Vector
. #24483 - Reduces Prometheus metric scrape time from 15 seconds to 2 seconds. #24565
- Enables building with third party PR artifacts using specific GitHub IDs. #25089
- Enables file determination at compaction start by default. #25113
- Enables merging vector index search results across multiple tablets. #25212
- Enhances stability by fixing a missing null check in tablet lookup processes. #25145
- Reduces CPU usage by 3-8% during statistics collection. #25160
- Enables DDL replication for common PostgreSQL extensions in YugabyteDB. #25052
- Clarifies error messages during yb-master initialization. #25176
- Reduces CPU usage by only setting
stmt_max_mem_base_bytes
duringEXPLAIN ANALYZE
. #25174 - Reduces TServer CPU usage by using
serialized_request
size instead ofSpaceUsedLong
. #25175 - Enables monitoring of long tasks in Reactor threads with
rpc_reactor_task_timeout_ms
. #25180 - Speeds up database creation by batching table lock acquisitions. #25203
- Switches to
GetTableSchema
to check table existence, reducing timeouts. #25197 - Enables explicit release of advisory locks in transactions. #25195
- Enables re-creation of vector indexes on tablet restarts. #25272
- Speeds up certain tests by 1-2 minutes by halting retryable RPC calls during shutdown. #25252
- Disables Redis proxy by default to reduce overhead. #25278
- Optimizes RWCLock for faster read operations. #25282
- Disables tablet splitting for tables with vector indexes. #25288
- Removes unnecessary libraries from YB tools, reducing link times and flag count. #25304
- Adds
automatic_ddl_mode
argument toyb-admin create_xcluster_checkpoint
. #25302 - Enables TSAN for RWCLock, fixing potential deadlocks. #25391
- Refactors lock management code to use static dispatch for compatibility with shared memory. #25322
- Ensures vector indexes are updated during tablet bootstrap if the TServer stops unexpectedly. #25325
- Enhances search by filtering vectors on TServer based on deletion, updates, and criteria. #25357
- Enables remote bootstrap for vector index storage. #25369
- Reduces the need for global mutex locks by introducing per-transaction LockTracker state. #25379
- Ensures DDL unlock operations follow the reverse order of lock operations. #25380
- Enables point-in-time restore support for vector indexes. #25389
- Adds flag
rocksdb_iterator_sequential_disk_reads_factor
to enhance readahead during non-sequential scans. #25397 - Reduces boilerplate for defining hash functions with new helper macros. #25403
- Ensures xCluster safe time service remains operational when the master loses lease. #25505
- Removes unnecessary
//NOLINT
comments to enhance code readability. #25536 - Replaces heuristic checks with VECTOR data type for column identification. #25581
- Speeds up TServer insert times by enabling variable bloom filtering on RocksDB iterators. #25600
- Speeds up write operations by using
ScopedStatistics
, reducing TServer insert time. #25602 - Enables backfilling existing table data when creating vector indexes. #25676
- Removes unnecessary key-value callbacks from vector LSM. #25687
- Allows the creation of colocated tables in xCluster configurations. #22318
- Sets the minimum xCluster safe time lag value to 0 and adds logging for debugging. #25733
- Preserves enum label OIDs during DDL replication across universes. #24077
- Enables YCQL support for
GetTablesEligibleForXClusterReplication
. #25732 - Supports custom vector labels in HNSW library for enhanced indexing flexibility. #25041
- Enables use of variable bloom filter during index scans for enhanced query performance. #25795
- Enables logging of YSQL write RPCs with the
print_ysql_write_requests
flag. #25786 - Reduces compile time for
transaction_participant.cc
by removing unusedboost
includes. #25792 - Simplifies
PgSamplePicker
by removing its dependency onPgSelectIndex
. #25858 - Supports multiple vector distance functions in ybhnsw index access method. #25807
- Enables chunked vector index backfill and continuation after restart. #25844
- Removes unused
ScanForward
functionality for streamlined performance. #25915 - Ensures correct classification of temporary objects in xCluster automatic mode. #25885
- Enables better replication of concurrent DDLs with unique, ordered timestamps. #24235
- Enhances the user message for setting
yb_read_time
to clarify read-only restrictions. #26027 - Enables sequence replication in xCluster by default, removing the need for a flag. #26029
- Adds logging for vector index search stats when
vector_index_dump_stats
flag is true. #26072 - Ensures vector index backfill reads from the indexed table at the correct time. #26046
- Enhances handling of expired snapshots by retrying deletion tasks automatically. #25628
- Ensures consistent bootstrapping of vector indexes after a TServer restart. #26087
- Changes
xcluster_enable_ddl_replication
to a preview flag for user testing. #26224 - Adds safeguard to pause replication after repeated DDL failures. #26093
- Adds
automatic_mode
flag tocreate_checkpoint
for simpler xCluster setup. #26355 - Streamlines tablespace validation by centralizing logic, enhancing future feature support. #25202
- Enhances maintainability by consolidating tablespace validation logic into
TablespaceParser
. #25202
CDC
- Blocks creation of
IMPLICIT
streams by default; use flag to override. #24023 - Enhances CDC accuracy by using the minimum of last WAL OP timestamp and transaction start time in segment footers. #25163
- Disables automatic tablet splitting for CDC stream tables by default. #25148
- Removes unused code related to transaction status checks in CDC. #25351
- Enables dynamic table addition in logical replication by default. #25413
- Increases default CDC retention flags to 8 hours for better data durability. #25633
- Enables automatic tablet splitting with logical replication by fixing hidden tablet deletion bugs. #24918
- Reduces unnecessary cleanup requests for logically replicated tables. #25752
- Adds parallel logical replication with consistent tablet subsetting under the
ysql_yb_enable_consistent_replication_from_hash_range
flag. #25897 - Reduces
cdcsdk_publication_list_refresh_interval_secs
to 15 minutes by default. #25793 - Adds
cdcsdk_flush_lag
metric and fixes bugs in other CDC metrics. #19445, #25819 - Limits the number of VirtualWAL instances per TServer with
cdc_max_virtual_wal_per_tserver
flag. #25896 - Adds the
cdc_cache_intent_block
flag to control caching of CDC intent blocks. #24909 - Renames the flag to
cdc_enable_caching_db_block
and sets its default to true for enhanced caching. #25573 - Limits CDC GetConsistentChanges response by byte size, allowing toggling with
cdc_use_byte_threshold_for_vwal_changes
. #25572 - Reduces log verbosity in virtual WAL to prevent large log files. #25739
- Enables tests for optimized WAL reads in CDC for TSAN builds. #24374
yugabyted
- Removes
psutil
dependency inyugabyted
for better compatibility. #26350 - Increases row count capacity in metrics API by using
int64
instead ofint32
. #25196 - Fixes yb-voyager install instructions layout in yugabyted UI. #25445
- Displays universe UUID instead of a blank in the "Cluster Name" field on the yugabyted-ui settings page. #25831
Bug fixes
YSQL
- Reduces memory usage during YugabyteDB connection startup. #24925
- Removes an erroneous log entry that appeared in crashes or errors. #24533
- Enhances protocol flow for consistency in batched query executions using a new flag
ysql_conn_mgr_optimized_extended_query_protocol
. #24898 - Ensures Batched Nested Loop joins correctly check for hashable join clauses. #25917
- Enables creating non-colocated leaf partitions on colocated partitioned tables. #24542
- Enables
pg_authid
table prefetching during login to reduce RPCs and prevent errors. #25776 - Standardizes function usage for
ATExecSetTableSpaceNoStorage
to match PG's approach. #25019 - Removes an unnecessary code block to streamline backend selection in connection management. #25154
- Corrects tuple ID construction for primary keys with out-of-order columns. #25070
- Restores functionality by removing explicit packet parsing for
yb_is_client_ysqlconnmgr
. #25220 - Enables seamless execution of unnamed prepared statements across different backends. #25577
- Fixes data race in regex pushdown by using thread-local variables. #24237
- Ensures correct row order for queries with IN clauses. #25559
- Tracks sticky connection metrics on the Prometheus endpoint. #25775
- Eliminates segmentation faults caused by a bug in Odyssey's list iteration macro, which incorrectly handled NULL pointers and led to core dumps. #25846
- Disables index-only scans on copartitioned indexes. #26344
- Fixes crash by skipping internal savepoints for SET/BEGIN in RC isolation. #23730
- Automatically restarts the postmaster to prevent stuck processes when a background worker crashes. #24706
- Enhances accuracy of seek-next estimation for index scans and paged results. #22087
- Fixes memory leak in
ysql_dump
by clearing PG result in all scenarios. #24934 - Fixes issues with
INSERT ON CONFLICT DO UPDATE
to prevent secondary index corruption. #25075 - Clears session state on retrying a query to avoid errors and conflicts. #25105
- Eliminates background worker restart loops and enhances error handling. #25192
- Fixes "Duplicate table" error by adjusting OID allocation to prevent collisions. #24320
- Replaces
fatal
calls withpg_fatal
inpg_dump.c
for better error handling. #25320 - Allows Batch Nested Loop (BNL) joins on partitioned tables in outer joins. #25080, #25078
- Ensures correct handling of
INSERT ... ON CONFLICT DO NOTHING
with multiple arbiter indexes. #25240 - Fixes a missing return statement in
MasterTabletServiceImpl::Write
. #25249 - Ensures all non-fast path UPDATEs correctly fetch the entire row to prevent foreign key violations. #24701
- Fixes inconsistency in index entries during concurrent writes in the backfill phase. #25250
- Corrects initialization of
primaryKeyIndex
inysql_dump
. #25340 - Removes a faulty assertion in
INSERT ON CONFLICT
to prevent failures. #25296 - Addresses a pending review comment for YSQL style corrections. #25385
- Adds a
tablet state
column toyb_local_tablets
for clarity on tablet statuses. #24250 - Enhances session management by moving
set_force_catalog_modifications
handling toPgSession
. #25434 - Reduces scope of
ALTER DATABASE
impact to only the targeted database. #25392 - Enhances code structuring and formatting for query diagnostics files. #25058
- Ensures correct column mapping for partitioned tables during
INSERT ON CONFLICT
updates. #14895, #25521 - Fixes a compile error for GCC builds. #25658
- Fixes incorrect role name quoting in
ysql_dumpall
. #25701 - Ensures DDL operations continue smoothly by retrying background tasks on polling errors. #25708
- Corrects a bug in YugabyteDB where using
yb_enable_expression_pushdown
on aggregates in trivial subqueries withOFFSET 0
returned values from incorrect columns. #24512 - Modifies
ysql_dumpall
to combineCREATE ROLE
andALTER ROLE
for effective role management. #25608 - Fixes an error in UPDATE queries setting the primary key to itself. #21160
- Fixes issues with
INSERT ON CONFLICT
queries usingSPI_execute_with_args
. #25773 - Reverts
ALTER DATABASE RENAME
andALTER DATABASE OWNER
to global impact. #25742 - Fixes memory leaks and segmentation faults in YSQL Connection Manager. #25718
- Enables testing of SECURITY LABEL with dummy_seclabel. #25805
- Fixes memory leaks in the PostgreSQL Anonymizer extension and optimizes test scheduling. #25928
- Fixes potential negative cost calculations for large table scans by using
double
for estimates. #25862 - Fixes
\d
command for indexes with spaces in their names. #25711 - Prevents returning corrupt data for
INSERT ON CONFLICT
withRETURNING
when read batching is enabled. #25836 - Ensures
CREATE OR REPLACE VIEW
refreshes the catalog for immediate update visibility. #25901 - Enhances linter hints for Mac users by prioritizing
brew
overapt
. #25925 - Sets query ID for background workers earlier to ensure correct tracking. #25952
- Enhances estimation of result tuple size in edge cases, preventing division by zero errors. #21828
- Prevents database crashes by blocking index creation on dimensionless vector columns. #26345
- Fixes upgrade issues for partitioned tables by reverting
relam
settings. #26317 - Eliminates erroneous colocation data in
indexdef
for copartitioned indexes. #26398
YCQL
- Allows users to control error suppression for
GROUP BY
in YCQL usingycql_ignore_group_by_error
flag. #25030
DocDB
- Prevents crashes when calling
ListMasterServers
RPC on a master by returning an error. #20372 - Ensures continuous xCluster task operation even if the master temporarily loses the lease but retains leadership. #25480
- Enhances transactional xCluster accuracy by using majority replicated OpId for ApplySafeTime calculations. #26043
- Prevents server deadlocks by skipping
Finished
method during certain task aborts. #23356 - Ensures consistency between
Slice::Less
andSlice::compare
methods. #25319 - Prevents crash during transaction abort by adjusting lock handling. #25689
- Ensures accurate
WaitForReplicationDrain
behavior by not mislabeling tablets as drained. #25457 - Enhances vector index merging for better search efficiency. #24069
- Clarifies the use of "IncludeInactive" and "IncludeHidden" flags in Master RPCs. #25086
- Enables direct mapping from row keys to vector IDs in vector indexes. #24232
- Removes a problematic import to prevent errors during direct script executions in GitHub CI. #25155
- Fixes crashes and errors during vector index creation on non-first column IDs. #25276
- Enhances search efficiency by enabling the Merge function to take vector indexes as input for compactions. #24069
- Fixes crashes when copying large rows with a vector index. #25335
- Updates Snappy to version 1.1.8.4 for better M1 Mac support. #25359
- Fixes snapshot deletion during unfinished operations. #25405
- Enhances XClusterSafeTimeService by integrating it with the upgraded Poller class. #25253
- Changes xCluster metrics from
kSum
tokMax
to prevent inaccuracies. #25422 - Eliminates potential crashes when fetching status of sealed transactions. #25439
- Ensures vector indexes are flushed before deleting intents SST files to prevent data loss. #25454
- Enables block-based sampling by default using new YSQL configuration parameters. #25557
- Prevents xCluster failures caused by same-name table re-creation during non-DBScoped DR. #25709
- Fixes a deadlock issue during index creation and enhances conflict detection. #25737
- Ensures correct database IDs are used for xCluster replication setup. #25770
- Disallows write DML operations in time-traveling sessions set with
yb_read_time
. #25834 - Disables pushdown of MD5 and SHA256 to prevent TServer crashes. #25889
- Corrects the namespace of
TSLocalLockManager
toyb::tserver
. #25941 - Ensures builds with third party PR artifacts now function correctly. #25970
- Upgrades tcmalloc and abseil to prevent crashes from
malloc_usable_size(nullptr)
. #25948 - Disables the unstable fast backward scan feature by default in 2.25.1. #26074
- Allows xCluster to handle
UNKNOWN
state TableInfos gracefully. #26019 - Separates thread pools for vector index backfill and inserts to avoid deadlocks. #26343
CDC
- Reduces log frequency for certain CDC warnings to every 10 minutes. #23148
- Fixes CDC safe time update to ensure data consistency across tablets. #25120
- Ensures accurate history retention for various replica identities in CDC. #25193
- Reduces untracked memory growth in CDC by eliminating unnecessary request scopes. #25311
- Fixes metric lag by adding dummy entries for expired tablets. #25550
- Stops log cache eviction slowdown due to CDC to prevent untracked memory spikes. #25311
- Ensures newly created tables in logical replication are retained correctly during cleanup. #25206
- Handles missing CDC streams gracefully during polling by logging warnings. #25605
- Ensures schema checks during table eligibility evaluations for CDC stream cleanups. #25206
- Reduces log verbosity by changing the log level for virtual WAL destroy statements. #25547
yugabyted
v2.25.0.0 - January 17, 2025
Build: 2.25.0.0-b489
Downloads
Docker:
docker pull yugabytedb/yugabyte:2.25.0.0-b489
Highlights
We're excited to announce the Technical Preview of two foundational features as part of this release.
PostgreSQL 15 Support TP
As part of this release, we have upgraded our PostgreSQL fork from version 11.2 to 15.0, enabling you to leverage the many key capabilities introduced in PostgreSQL between these two versions. This upgrade brings YSQL API support for numerous features, including stored generated columns, foreign keys on partitioned tables, and non-distinct NULLs in unique indexes. It also introduces query execution optimizations like incremental sort and memoization, along with various observability and security enhancements. For more information, refer to PostgreSQL 15 features.
Query Diagnostics TP
This feature significantly simplifies tuning poorly performing SQL queries by allowing you to capture and export detailed diagnostic information, including bind variables and constants, pg_stat_statements statistics, schema details, active session history, and execution plans. Refer to Query diagnostics.
Active session history
In addition, the Active Session History, which provides real-time and historical views of system activity, is now enabled by default. For more information, refer to Active Session History.
Change log
View the detailed changelog
Improvements
YSQL
- Adds pg_hint_plan syntax and functionality to control batched nested loop joins, allows setting hints
YbBatchedNL(t1 t2)
andNoYbBatchedNL
, and modifiesyb_prefer_bnl
handling. Also, it removes BNL's dependency onenable_nestloop
and adjusts cost model. #19494 - Enables control over in-place index updates with
yb_enable_inplace_index_update
. #20908 - Added yb_make_next_ddl_statement_nonincrementing to YbDbAdminVariables for yb_db_admin role. #23786
- Allows use of
UNLOGGED
tables syntax, handling it asLOGGED
with a warning. #23895, #23889 - Adds
pg_yb_logical_client_version
table to manage session configurations. #23871 - Introduces a dedicated auth-backend for YSQL to handle connection authentication, enhancing security and streamlining the process. #24147
- Ensures correct error handling by adding a missing InvalidOid check in YSQL. #24147
- Enables authentication via a specialized backend, enhancing security and reliability. #24147, #24427
- Enables toggling authentication method in YSQL using the
ysql_conn_mgr_use_auth_backend
flag. #24147 - Sets
yb_bnl_batch_size
to 1024 andyb_prefer_bnl
to true by default, ensuring BNL's replace nested loop joins without altering non-NL join plans. #19273 - Allows preloading of foreign key lists in relcache, avoiding on-demand master fetches, controlled by
yb_enable_fkey_catcache
. #23686 - Adds notes on pinned objects and script backporting to the README. #24334
- Prevents catalog version bumps on no-op
ALTER ROLE
commands, saving system resources. #24390 - Enhances object creation efficiency by using static factory methods in
PgDML
classes. #24412 - Disables JIT in YB PG15 by default for stability. #24479
- Enables successful major version upgrades of functions containing semicolons. #24571
- Introduces
GetStatementAs<...>
to simplifyPgStatement*
casts. #24754 - Fixes style issues and lint errors in
ybcModifyTable.c
. #24882 - Simplifies
ybcSetupTargets
by using BMS only, enhancing target column handling. #25007 - Excludes third-party extensions from PostgreSQL linter checks. #25054
- Enables creation of indexes that are covered by the main table. #24123
- Enables ASH by default for better monitoring and diagnostics. #24686
- Restores performance hints in prepared statements to ensure consistent execution. #24055
- Updates YSQL upgrade tests for compatibility with pg15. #24289
- Simplifies descriptions for inherited PostgreSQL wait events. #24972
- Enables users to control YB query execution plans using
pg_hint_plan
. #6720 - Adds Oracle-like functions to YSQL with the Orafce extension. #3460
YCQL
- Resolves timestamp precision mismatches in YCQL, aligning inserts and index scans to millisecond precision. Enables users to optionally revert to microsecond precision using the flag
cql_revert_to_partial_microsecond_support=false
. #11052, #23476 - Tracks microsecond precision timestamps in YCQL with new metric
cql_microseconds_timestamps_used
. This tracking occurs if thecql_revert_to_partial_microsecond_support
flag is true. #24776
DocDB
- Allows reduction of thread stack size to avoid Linux hugepage backing. #23927
- Reduces unnecessary attribute map creations during Prometheus metric aggregation. #24405
- Enhances load balancer to prioritize under-replicated tablets first. #20263
- Limits concurrent remote bootstraps per TServer using
load_balancer_max_inbound_remote_bootstraps_per_tserver
flag. #2426 - Prevents overloading by correctly categorizing bootstrapping tablets in load balancing. #23487
- Upgrades non-FIPS OpenSSL to 3.0.15 and removes CentOS 7 builds. #24436
- Enhances RBS throttling by focusing on active fetch sessions and adjusts expiration logic. #21563, #24031
- Enables persisting TServer registry entries to the sys catalog, enhancing failover recovery. #22925
- Initial implementation of Vector LSM supports multi-threaded batch inserts. #24020
- Updates and organizes third-party dependencies like
usearch
for better maintainability. #23998 - Simplifies HNSW library structure by using a factory-based approach. #24085
- Allows explicit addition of flags to
gflag_allowlist.txt
for secure callhome data collection, plusversion_info
in TServer data. #24103 - Enables xCluster to handle non-colocated ALTER TABLE commands without pausing replication. #23951
- Passes
automatic_ddl_mode
to xCluster pollers for enhanced replication handling. #24091 - Adds a metric to alert users when the master follower heartbeat delay is too high. #21178
- Removes the need to set
set_cdc_min_replicated_index
during xCluster bootstrap for improved log retention. #24105 - Enables SimSIMD in Usearch for enhanced search operations. #23998
- Reduces thread usage by removing CDC-specific
yb_client
fromPgClientServiceImpl
. #24145 - Adds a simple test to verify Vector LSM functionality during and post-insertions. #24242
- Adds a
yb-admin
command to remove non-active, blacklisted TServers. #24044 - Skips schema validation for newly added tables in xCluster replication to handle schema changes. #23078
- Standardizes log prefixes for retryable requests with tablet and peer IDs. #19516
- Adds a
yb-admin
command to remove tablet servers from the registry. #24044 - Enables persistent TServer registry updates via autoflag configuration. #24045
- Enables persistent storage for vector LSM via separate index chunk files and meta files. #24371
- Enhances Vector LSM handling to maintain data integrity after unexpected restarts. #24466
- Issues NOTICE when creating indexes in bi-directional xCluster to ensure concurrent execution. #24362
- Reduces Python virtual environment changes using
yugabyte-bash-common
for top-level management. #19478 - Renames the vector library to vector_index and updates the namespace accordingly. #24636
- Enables selecting compaction files at task start with
rocksdb_determine_compaction_input_at_start
flag. #24541 - Creates vector index tablets colocated with the indexed table for effective data retrieval. #24696
- Enables direct replication of specific DDL commands in xCluster. #23953
- Reverts a change that issued NOTICE on index creation in bi-directional xCluster setups. #24362
- Enables creation of Vector LSM for tablets with vector indices. #24892
- Reduces argument redundancy in PgsqlReadOperation executions. #24855
- Enables safe index creation on bidirectional xCluster tables without halting operations. #24884
- Replaces
ProducerSchemaPB
withSchemaVersionsPB
for xCluster configurations. #24901 - Supports DDL replication for additional PostgreSQL objects including foreign tables and text search configurations. #25051
- Enables ALTER operations on colocated tables with active replication. #24910
- Adds packed row support for vector indexes during transaction apply. #24912
- Fetches intents DB for vector index queries to account for unapplied committed transactions. #24947
- Enables building with third party PR artifacts using specific GitHub IDs. #25089
- Enables vector indexes on colocated tables. #24994
- Allows vector index inserts to use a dedicated thread pool, enhancing overall system performance. #25029
- Replaces
vector_index::VertexId
withStronglyTypedUuid
asVectorId
. #25038 - Limits concurrent reads on usearch vector index to avoid exceptions. #25069
- Enables file determination at compaction start by default. #25113
- Enhances stability by fixing a missing null check in tablet lookup processes. #25145
- Removes deprecated vector index storage in RocksDB. #24854
- Removes outdated code to streamline heartbeat processing. #24872
- Simplifies load balancer placement info management. #25065
- Updates lz4 library to fix a specific compression test failure. #24965
- Increases
RollbackYsqlMajorVersionUpgrade
RPC timeout to 3 minutes. #24361 - Adds race conditions in the odyssey library to the TSAN suppressions list. #24735
- Reduces data race when changing RocksDB options during auto-compactions. #24238
- Fixes deadlock issue by adjusting lock acquisition order in HierarchicalNSW. #25017
- Ensures tasks don't hang during shutdown by removing unnecessary checks. #17898
- Rejects alter table requests during table preparation to prevent state inconsistencies. #25130
CDC
- Enables asynchronous removal of user tables from CDC streams by adjusting how background threads process and persist stream metadata. #23700
- Adds a tag for the slot name attribute in the CDC metrics. #24307
- Enables tablet splitting on tables under CDCSDK stream by default using the GFLAG
enable_tablet_split_of_cdcsdk_streamed_tables
. #24190 - Avoids caching IntentDB block reads for CDC to prevent redundant data access. #24909
- Automatically removes metrics when a CDC stream is deleted. #24876
- Speeds up tablet bootstrap under CDC by skipping initial WAL segments, controlled by
skip_wal_replay_from_beginning_with_cdc
flag. #24516 - Enables
kNoCacheQueryId
to prevent crashes during RocksDB operations. #24516 - Speeds up tablet bootstrap under CDC by fixing WAL replay. #24516
yugabyted
- Enables better handling of complex YSQL configuration parameters using sticky connections. #21637
- Stops sending flag details in the callhome diagnostics to eliminate redundant data. #24029
- Ensures the user interface accurately displays disk size, even when multiple data directories are used. #23810
- Ensures
join
flag in config files is properly validated to prevent node misconfiguration. #23007 - Updates column names in
pg_stat_statements
to fix slow queries page on yugabyted UI. #25094 - Enables
tserver_master_addresses
to update immediately in multi-node deployments usingYb-ts-cli
. #24659 - Adds fully qualified names for non-table SQL objects in the UI. #24330, #24331
- Lists manually refactorable objects by type in the YugabyteD UI. #24329
Bug fixes
YSQL
- Introduces a per-database PG new OID allocator, ensuring OID uniqueness within the database and enhancing horizontal scalability in multi-node and multi-tenancy environments. This new mechanism mitigates OID collisions and allows OID consistency in backup-restore scenarios across clusters. A new GFlag
ysql_enable_pg_per_database_oid_allocator
is provided to return to old OID allocator behavior if necessary. #16130 - Resets
current_hint_retrieved
after query execution to ensure consistent hint parsing. #12741 - Modifies backup/restore process to skip column name checks for indexes, allowing for successful restoration even with renamed columns. #24207
- Enables
ALTER SEQUENCE
commands to change sequence name, schema, and owner without errors. #17271 - Enhances PostgreSQL restart stability by refining shutdown handling and lock file management. Includes killing only Postgres-associated PIDs, using
SIGQUIT
for immediate shutdowns to reduce hang-ups, and monitoring for stuck processes on macOS #24396 - Fixes crashes caused by using a RowComparisonExpression on a reordered primary key index. #23824
- Disables in-place index updates by default to address index inconsistency issues. #24672
- Increases YSQL connection manager's thread stack size to 512 KB to prevent crashes on Alma 9 machines. #24979
- Enhances read performance on colocated tables by skipping redundant tombstone checks. #21561
- Fixes flag overlap to differentiate
sticky
settings fromexplain
in configurations. #24954 - Renames
pipe
type toorafce_pipe
to resolve naming conflicts. #12990 - Eliminates unnecessary file creation for views on temporary tables by checking if storage is actually needed. #19522
- Reduces maintenance time by switching to a less complex implementation of SideBySideDiff.java, thereby eliminating errors from
SideBySideDiff.sanityCheckLinesMatch
. #19690 - Prevents segmentation faults in parallel index scans with aggregate pushdown. #21427
- Increases performance by batching index reads during
INSERT ON CONFLICT
, with customizable batch sizes usingyb_insert_on_conflict_read_batch_size
. #24179 - Improves cache re-invalidation for
ALTER TABLE
commands to avoid schema version mismatch errors in the same session. #23882 - Fixes UPDATE errors on partitioned tables by correctly mapping column numbers. #23857
- Ensures restart read time does not exceed the global limit to avoid inconsistent reads. #24017
- Fixes the flaw in the current DDL atomicity workflow where only the first table's schema was compared, even if it doesn't change after a schema version increment. #23988
- Streamlines
ysql_dump
process by eliminating faulty statements for colocated table unique constraint, enhancing database reliability. #24057 - Introduces batching for the
INSERT ON CONFLICT
command to enhance performance by minimizing alternating read and write operations. Control the batch size with the new YSQL configuration parameteryb_insert_on_conflict_read_batch_size
, which, when default at1
, disables batching. #24179 - Enhances index relation checks with
YBIsCoveredByMainTable
method. #24239 - Alters encoding setup order to ensure
UTF8
use instead ofSQL_ASCII
and addspg_collation
to pre-loaded tables to prevent specific errors. #24149 - Disables LZ4 build option to prevent PostgreSQL build failures. #24286
- Fixes crashes in creating tables with over 585 columns. #24304
- Adds support for
ALTER TABLE VALIDATE CONSTRAINT
in YugabyteDB. #24291 - Prevent incorrect loading of pg_collation catalog caches, eliminating associated performance issues. #24149
- Fixes out-of-bound memory access during index scan cost estimation ensuring stable query execution on system catalogs and expression-based indexes when using the
yb_enable_base_scans_cost_model
configuration #24246 - Blocks
REINDEX
andTRUNCATE
on system tables using table rewrite. #24356 - Blocks the "NULLS NOT DISTINCT" command until supported. #24452
- Enhances consistency and correctness of INSERT...ON CONFLICT queries via YBCTID infrastructure integration and index management. #24692, #24784
- Assumes indexes contain 1000 rows when statistics are unavailable, ensuring better query planning. #24496
- Enhances performance during nested loop joins by ensuring correct limit resets in colocated index scans. #24560
- Removes time sync service requirement from the prerequisites. #24758
- Enhances UPDATE query execution on generated columns by including them in
updatedCols
calculations. #24641 - Fixes foreign key checks to avoid errors with unique indexes. #24663
- Ensures accurate catalog version tracking during concurrent index creation. #24775
- Ensures YB master reads from valid catalog tables during upgrades. #24647
- Re-enables in-place index updates by default after fixing related inconsistencies. #24849
- Prevents DML operations on sequence data during upgrades. #24943
- Fixes
ysql_dump
crashes related topg_catalog
schema dumps. #24907 - Accurately estimates the cost of partial index scans by including index conditions. #24916
- Reduces memory usage spikes by using a new memory context for
RelationBuildTriggers
. #24951 - Adds debugging logs to track new OIDs for resolving table OID collisions. #24320
- Ensures successful cache invalidation after a failed ALTER TABLE to prevent "schema mismatch" errors. #24981
- Disables index update optimization by default to fix
ON CONFLICT UPDATE
issues. #25075 - Reverts changes related to
yb_amiscoveredbymaintable
for updated index co-partitioning design. #25119
YCQL
- Allows users to control error suppression for
GROUP BY
in YCQL usingycql_ignore_group_by_error
flag. #25030 - Eliminates unexpected error during shell type definition update across multiple sessions. #24217
DocDB
- Allows the packed row size to exceed its limit during repacking, preventing TServer crash after
alter table add column
commands with a default value. #24050 - Prevents server crashes during table truncation by safely shutting down iterators before releasing locks. #23243
- Prevents resource waste by checking disk space before remote bootstrap operations. #23987
- TServers now reject remote bootstrap requests for previously deleted tablets. #24574
- Sets a default 10MB max size for RocksDB MANIFEST files, now configurable via flags. #11117
- Adds mtime and checksum to block cache key prefix to prevent conflicts. #20852
- Enhances visibility for unexpected rate limiter sleep times in RBS threads. #24342
- Eliminates inconsistencies by not including inactive tablets in
OpenTable
operations. #24860 - Adds a null check to prevent a system crash when cleaning up a recently applied transaction state after a flush operation. #24026
- Prevents crashes during compaction when
ysql_enable_packed_row
is off and existing packed rows are present. #24545 - Updates YSQL migration script to align with PostgreSQL 15 catalog changes. #24593
- Switches pg_cron back to using standard
SIGTERM
handling for cleaner shutdowns. #24658 - Ensures tablets remain effectively managed during transition from RF1 to higher replication factors. #24575
- Ensures consistent tablegroup assignments for colocated table backups without using explicit tablespaces. #24809
- Fixes error for select queries in large tables by adjusting backward scan bounds. #24824
- Eliminates segmentation faults by ensuring
CleanupHiddenTables
holds a write lock duringUpsert
. #24929 - Prevents fatal errors during multiple splits and PITR restores. #25103
- Ensures "create table" requests for colocated tables don't fail due to mistaken tablet limit checks. #23922
- Reduces unnecessary checks when adding tables in alter replication requests. #24164
- Enhances stability by replacing raw pointers with
std::weak_ptr
in tablet server handling. #24182 - Enhances index parameter consistency between Usearch and Hnswlib for balanced performance. #24465
- Ensures correct metadata sequencing for vector index chunks, preventing data inconsistencies. #24511
- Speeds up vector LSM loading by using a thread pool. #24588
- Adds a flag to limit multiple pending compactions for priority pools. #24540
- Enables merging of small vector index chunks to enhance search efficiency. #24069
- Resolves scheduling of contentious waiters to the correct, larger RPC thread pool. #24478
- Fixes shutdown path issues to prevent fatal errors during RPC completion. #24524
- Ensures
pg_txn_start_us
is set for restarted transactions, fixing priority issues in waiter resumption. #24778 - Fixes mini cluster restarts to ensure master leaders track all TServer re-connections. #24772
- Reduces latency by enhancing early resume of RPCs blocked on aborted transactions. #24799
- Fixes memory leak in MasterPathHandlers by properly managing shared pointers. #24823
- Ensures callback triggers after loading tablet server data if the count meets requirements. #23744
- Ensures consistent reads by verifying restart conditions before reporting false corruption. #25072
CDC
- Allows sending a null "before image" for CDC if
cdc_send_null_before_image_if_not_exists
flag is true. #18381 - Enhances accuracy of transaction start time logging for better consistency in CDC. #24521
- Fixes memory leaks in the walsender's handling of transactions and file nodes. #24788
- Fixes memory leaks in the walsender's handling of transactions and file nodes. #24788
- Ensures null values are now correctly captured in CDC before image records. #22983
- Enables removal of dropped tables from the replica identity map to prevent replication errors. #24308
- Excludes expired or irrelevant entries from metrics calculations for more accurate reporting. #24975
yugabyted
- Nodes now start using private IP as
advertise_address
instead of hostname. #25037