docs/content/stable/releases/ybdb-releases/end-of-life/v2.23.md
Build: 2.23.1.0-b220
Docker:
docker pull yugabytedb/yugabyte:2.23.1.0-b220
yb_make_next_ddl_statement_nonincrementing configuration parameter to reduce catalog version increments during many consecutive DDLs, lowering memory and latency spikes. {{<issue 23786>}}not yet implemented. {{<issue 23881>}}pg_class OID if the new YSQL configuration parameter, yb_ignore_heap_pg_class_oids, is enabled. {{<issue 23304>}}ysql_skip_row_lock_for_update. {{<issue 18822>}}:13000/prometheus-metrics endpoint. {{<issue 23706>}}ALTER TABLE ...VALIDATE CONSTRAINT. {{<issue 3946>}}yb_enable_fkey_catcache. {{<issue 23686>}}system_schema.functions and system_schema.aggregates to align with Cassandra, aiding Cortex migration. {{<issue 3893>}}GetFlagInfos relocation. {{<issue 23632>}}sys_catalog. {{<issue 23286>}}sequences_data table for xCluster replication, aiding in the bootstrapping process by integrating current sequence information into the WAL from the source universe. {{<issue 23493>}}DEFINE_NEW_INSTALL_VALUE macro to enable controlled rollout of new features in fresh clusters. {{<issue 23505>}}CallVisitor template function to simplify the sys-catalog-tool code. {{<issue 23548>}}max_disk_throughput_mbps for automated control of write rejections when disk is full, replacing reject_writes_min_disk_space_aggressive_check_mb. {{<issue 23373>}}sequences_data table and incorporating an outgoing stream. {{<issue 23917>}}thirdparty_tool into separate modules. {{<issue 23846>}}automatic_ddl_mode proto field. {{<issue 23860>}}cdc_wal_retention_time_secs value on table removal from xCluster replication and applies updates dynamically, eliminating need to drop and recreate replication. {{<issue 20769>}}search_path by skipping its value's enquote during transaction setup. {{<issue 23440>}}nextval function. {{<issue 23601>}}gflag_allowlist.txt for secure callhome data collection, plus version_info in tserver data. {{<issue 24103>}}max_follower_heartbeat_delay metric to alert users when the master follower heartbeat delay is too high. {{<issue 21178>}}set_cdc_min_replicated_index during xCluster bootstrap for improved log retention. {{<issue 24105>}}DYNAMIC_TABLES_DISABLED yb-admin option to disable dynamic table addition when creating new streams. {{<issue 23482>}}enable_cleanup_of_non_eligible_tables_from_cdcsdk_stream with cdcsdk_enable_dynamic_table_addition_with_table_cleanup, and removes flag protection for table identification. {{<issue 23806>}}RemoveUserTableFromCDCSDKStream and RemoveTablesFromCDCSDKStream RPCs respectively. {{<issue 23700>}}wal_level checks for logical replication in YSQL as PG WAL is not used. {{<issue 23661>}}wal_level to logical to ensure compatibility with logical replication clients. {{<issue 23661>}}enable_tablet_split_of_cdcsdk_streamed_tables. {{<issue 24190>}}enable_pg_parity_tech_preview to enable_pg_parity_early_access in all branches. {{<issue 23896>}}ysql_enable_db_catalog_version_mode gflag functionality. {{<issue 23462>}}fk_reference_cache_ in large transactions, thereby ensuring minimal use of RAM. {{<issue 23734>}}Storage Read Requests metric now better reflects true RPC count in PrecastRequestSender usage. {{<issue 23396>}},{{<issue 18785>}}INSERT ON CONFLICT bugs in temporary tables to ensure consistent outputs. {{<issue 1999>}}DeleteTableInternal, preventing YbAdminSnapshotScheduleTest.SysCatalogRetention failure on asan builds. {{<issue 23459>}}statementType enum on the YSQL Metrics endpoint. {{<issue 23557>}}relkind column. {{<issue 23708>}}log_dist option to auto_explain docs for YSQL. {{<issue 23814>}}/metrics endpoint for better identification. {{<issue 23707>}}pg_hint_plan with the hint_table enabled. {{<issue 23547>}}YugaByteDB to the correct version YugabyteDB, ensuring error-free linter runs. {{<issue 23940>}}ALTER TABLE commands to avoid schema version mismatch errors within the same session. {{<issue 23882>}}INSERT ON CONFLICT command to enhance performance by minimizing alternating read and write operations. {{<issue 24179>}}UTF8 use instead of SQL_ASCII and adds pg_collation to preloaded tables to prevent specific errors. {{<issue 24149>}}narrow_cast. {{<issue 22301>}}CoarseMonoClock to MonoClock for precise nanosecond granularity. {{<issue 20335>}}close_timestamp_micros field for partially copied log segments to prevent time-based policy violation. {{<issue 23335>}}database_oid to the TSLocalLockManager locking contract to distinguish objects from different databases. {{<issue 23454>}}xcluster_checkpoint_max_staleness_secs flag. {{<issue 23576>}}ImportSnapshot by not cloning DELETED or REPLACED tablets. {{<issue 23552>}}quickdie instead of die or pg_cron_sigterm. {{<issue 23655>}}leader not ready or service unavailable errors occur, and prevents client retries on a failed checkpoint by storing an InternalError status. {{<issue 23719>}}transaction_aware field in master_backup.proto for compatibility with older DB versions. {{<issue 23739>}}min_replay_txn_start_ht to prevent unnecessary SST files buildup during bootstrap. {{<issue 23890>}}protobuf_message_total_bytes_limit. {{<issue 23828>}}yql_endpoint_tserver_uuid field to top_level_node_id in /rpcz to maintain consistency. {{<issue 23835>}}grptablespace column in pg_yb_tablegroup after ALTER TABLE command. {{<issue 23336>}}CREATE TABLE ...TABLESPACE pg_default command in colocated databases aligns with PostgreSQL semantics. {{<issue 23410>}}secure enabled by introducing a timeout framework. {{<issue 23447>}}yb_ignore_pg_class_oids. {{<issue 23626>}}validate_and_set_configs step. {{<issue 23629>}}alter table add column commands with a default value. {{<issue 24050>}}pg_client_use_shared_memory to false by default on Mac to enhance performance. {{<issue 24000>}}disable_dynamic_table_addition_in_change_data_stream, remove_user_table_from_change_data_stream, validate_and_sync_cdc_state_table_entries_on_change_data_stream for managing user tables in a CDC stream and addresses a race condition issue {{<issue 22876>}},{{<issue 22835>}},{{<issue 22773>}}calculate_table_size, now matching YBCGetDatabaseOid(rel) for improved reliability. {{<issue 20030>}}join flag by implementing a retry mechanism. {{<issue 23898>}}Build: 2.23.0.0-b710
Docker:
docker pull yugabytedb/yugabyte:2.23.0.0-b710
We're excited to announce the technical preview of four powerful new features in YugabyteDB aimed at simplifying operations, enhancing functionality, and improving performance.
Instant database cloning {{<tags/feature/tp>}}
Instant database cloning allows you to quickly create independent copies of your database for data recovery, development, and testing. Clones can be created in seconds, and initially consume no additional disk space because they share the same data files as the original database. Clones can be created as of now, or as of any time in the recent past (within a configurable history retention period), so developers can experiment without impacting production performance. Clones also provide a safety net for rapid recovery from accidental data loss or corruption.
pg_cron extension {{<tags/feature/tp>}}
We're introducing support for the pg_cron extension, which brings a cron-based job scheduler directly into the database. With pg_cron, you can schedule YSQL commands using familiar cron syntax, including jobs on intervals as fine as seconds. While pg_cron operates on a single node known as the pg_cron leader, the queries it schedules leverage the full resources of the distributed cluster. In case of node failure, leadership is automatically transferred, ensuring continuous availability and smooth scheduling operations.
Semi-automatic xCluster replication {{<tags/feature/tp idea="1186">}}
Semi-automatic xCluster replication simplifies the management of YSQL transactional xCluster replication by operating at the database level instead of the table level. This reduces the need for IT admin involvement when tables are created or dropped, as xCluster management is only required for adding or removing entire databases from replication. DDL operations can be performed by authorized users or DBAs without needing elevated privileges. Semi-automatic xCluster supports YSQL transactional replication and is ideal for Disaster Recovery (DR) purposes.
Improvement to backward scans {{<tags/feature/tp idea="1326">}}
We've improved the performance of backward scans by 10x. For example, descending scans on tables that are stored in ascending order are now much faster. Previously, backward scans were significantly slower than forward scans in YugabyteDB, causing the query optimizer to implement various workarounds, including adding a sort operator on top of the forward scan operator to keep the backward scan pattern comparable. Such optimizer tricks might have been ineffective in complex query plans. The improvements to backward scan performance now allows such queries to be faster out of the box. You enable the feature using the use_fast_backward_scan preview flag.
log_ysql_catalog_versions flag. {{<issue 20084>}}ysql_yb_ddl_rollback_enabled, report_ysql_ddl_txn_status_to_master, and ysql_ddl_transaction_wait_for_ddl_verification flags' defaults. {{<issue 22097>}}yb_active_universe_history table. {{<issue 20616>}}ysql_yb_enable_ddl_atomicity_infra to control DDL atomicity feature during the upgrade phase. {{<issue 21535>}}yb_parallel_range_size for better tuning of parallel range size. {{<issue 21928>}}keep_order field from YbctidGenerator for cleaner results processing. {{<issue 21944>}}yb_enable_parallel_append to disable the unannounced feature parallel append. {{<issue 21934>}}ybdummyann, enabling preliminary vector-based searching in databases. {{<issue 22195>}}ConsistentReadPoint using a new Momento class. {{<issue 22597>}}FLAGS_use_fast_backward_scan is enabled. {{<issue 22370>}}yb_backup.py script to enhance backup and restore functionalities. {{<issue 20972>}}ycql_suppress_group_by_error available for compatibility issues. {{<issue 13956>}}ABORTED state and an abort_message field to the SysCloneStateInfoPB object for better clone failure management. {{<issue 21054>}}track_stack_traces flag. {{<issue 17993>}}FLAGS_use_fast_backward_scan flag. {{<issue 19352>}}allowed_preview_flags_csv. {{<issue 21484>}}AreNodesSafeToTakeDown to return earlier and deliver a readable error message when hitting a timeout, using a control flag, are_nodes_safe_to_take_down_timeout_buffer_ms with a default setting of 2 seconds. {{<issue 21855>}}replicated_ddls table prior to rerunning any DDL. {{<issue 21943>}}XClusterClient::CreateXClusterStream<Async>. {{<issue 22343>}}skip_producer_stream_deletion is set on DeleteUniverseReplicationRequestPB. Safe for upgrades and rollbacks. {{<issue 22050>}}SCHECK_PB_FIELDS_NOT_EMPTY macro for validating non-empty fields, with individual checks on list elements. {{<issue 22182>}}read-time option description in the help of ysql_dump allowing database dump at a specified past time. {{<issue 21886>}}cdc_consumer_handler_thread_pool_size with xcluster_consumer_thread_pool_size to reduce CPU and memory usage. {{<issue 20305>}}yb::client in CDCService to decrease 4 threads and a meta cache, addressing a CDCService/xCluster source issue. {{<issue 22893>}}IsSetupUniverseReplicationDone, improving error detection. {{<issue 22948>}}external_hybrid_time to log-dump output to detect xCluster target writes. {{<issue 22918>}}SOURCE_UNREACHABLE and SYSTEM_ERROR enums to enable more detailed error reporting from the Poller. {{<issue 22996>}}emergency_repair_mode flag and new yb-admin commands to handle corrupted CatalogEntity data without stopping yb-master. {{<issue 23098>}}PopulateTabletCheckPointInfo function to improve its readability and maintainability. {{<issue 23301>}}DocDBStatistics with ReadOperationData for better statistics transmission to IntentAwareIterator. {{<issue 23420>}}max_disk_throughput_mbps for automated control of write rejections when disk is full, replacing reject_writes_min_disk_space_aggressive_check_mb. {{<issue 23373>}}FLAGS_tablet_split_min_size_ratio to control tablet splitting based on SST file sizes, ensuring better control over tablet size imbalance. {{<issue 21458>}}master_heartbeat_service.cc for enhanced readability and easier tracking. {{<issue 21899>}},{{<issue 19715>}}catalog_manager.cc to tablet_split_manager.cc for better code management. {{<issue 22603>}},{{<issue 19715>}}enable_rwc_lock_debugging to control slow lock debugging and fixes a bug in rwc_lock.cc. {{<issue 22807>}}yb_enable_cdc_consistent_snapshot_streams from a preview into a default true auto flag. {{<issue 22984>}}cdcsdk_publication_list_refresh_interval_secs flag. {{<issue 21796>}}ysql_yb_default_replica_identity, for customizing default replica identity at table creation. {{<issue 22326>}}cdcsdk_enable_dynamic_table_addition flag to manage dynamic table additions in replication slot consumption model. {{<issue 22406>}}RENAME DATABASE query handles logical and physical connections correctly for consistent database behavior. {{<issue 21284>}}session_authorization in YSQL Connection Manager for correct role alterations in a session. {{<issue 21637>}}/pitr endpoint and screen in the database page to list scheduled PITRs on yugabyted UI. {{<issue 21355>}}upgrade_finalize command for smoother YugabyteDB version upgrades using yugabyted CLI and includes an upgrade_ysql_timeout flag. {{<issue 21888>}}yb_enable_read_committed_isolation and ysql_enable_read_request_caching on yb-master and yb-tserver processes. {{<issue 22061>}}yugabyted to avoid SyntaxWarning and added checks for exceptions during incorrect advertise_address input. {{<issue 22210>}},{{<issue 22230>}}additional_data_dir configuration. {{<issue 22126>}}prev_ticks_ at each metrics snapshotting iteration. {{<issue 22910>}}data_dir parameter is missing in the user configuration file. {{<issue 23052>}}collect_logs command failures by removing the yugabyted running check even when the yugabyted process is not running. {{<issue 23210>}}yugabyted configure_read_replica commands with checks to gracefully handle failures when data_placement_constraint lacks :<num_of_replicas>. {{<issue 23273>}}hash_destroy call in YbCleanupTupleCache. {{<issue 22262>}}defGetBoolean function to parse string values "0" and "1" as false and true respectively, and shifts a verification step to a earlier spot in the CREATE TABLE execution path, ensuring successful table partition creation. {{<issue 20302>}},{{<issue 20914>}}ddl_rollback_enabled to yb_ddl_rollback_enabled for specificity. {{<issue 21480>}}catalog_version_table_in_perdb_mode is set to true. {{<issue 21481>}}yb_enable_optimizer_statistics as a flag ysql_yb_enable_optimizer_statistics. {{<issue 21650>}}ALTER TABLE SET TABLESPACE operation. {{<issue 21655>}}schema version mismatch errors during consecutive DDL operations by ensuring the up-to-date schema is fetched. {{<issue 21706>}}YsqlDdlRollbackEnabled in pggate C++ code by correctly passing the result of YbDdlRollbackEnabled, reducing DDL atomicity g-flag issues in RF 1 clusters. {{<issue 21706>}}ysql_min_new_version_ignored_count to prevent a TServer crash caused by the downward shift in yb-master's catalog version, often surfacing post a PITR restore operation. {{<issue 21776>}}yb_enable_ddl_atomicity_infra description. {{<issue 21947>}}Storage SQL to Remote SQL and Storage Filter to Remote Filter for Foreign Scan. {{<issue 22070>}}ALTER TABLE rewrite check for dropped rules to prevent unnecessary command failure. {{<issue 22064>}}pg_locks with the correct table OID after a table rewrite. {{<issue 22081>}}yb_debug_log_catcache_events=1 is used before a database has been selected. {{<issue 22139>}}pg_yb_catalog_version when enable_ysql=false. {{<issue 22213>}}old-style-declaration error in YbDdlRollbackEnabled by changing its definition to static inline bool. {{<issue 22334>}}yb_table_properties pointer, in load_relcache_init_file, does not point to random, invalid memory. {{<issue 22342>}}yb_get_range_split_clause robust using PG TRY CATCH block, ensuring YB backup doesn't fail. {{<issue 22356>}}CreateNamespaceIfNotExists function to retry on "already exists" error, preventing race conditions. {{<issue 22512>}}ALTER TABLE ...ATTACH PARTITION. {{<issue 22562>}}system_postgres by excluding reserved OID 65535 in allocation. {{<issue 22598>}}kGroupEnd marker that was leading to inaccurate seek results. {{<issue 22615>}}Catalocustomeranager::WaitForDdlVerificationToFinish for clarity. {{<issue 22649>}}IN expressions on single column from wrongly taking the tuple path, ensuring correct data processing. {{<issue 22704>}}reltuples, pg_statistic rows, and pg_statistic_ext values. {{<issue 22028>}}YsqlDdlTxnCompleteCallback if all table 'pb_txn_id's in the DDL transaction verifier state are already cleared, avoiding potential deadlock situations in DDL atomicity. {{<issue 22882>}}yb_pclose_check function and corrects memory allocation. {{<issue 23057>}}string_to_array. {{<issue 23287>}}INSERT INTO ...RETURNS STATUS AS ROW for CQL tables with a specific primary key, improving system load and efficiency. {{<issue 23330>}}ACTIVE does not occur. {{<issue 22601>}}tserver_heartbeat_metrics_interval_ms runtime updatable. {{<issue 22624>}}DeleteSnapshot and RestoreSnapshot to prevent deletion or use of snapshots involved in ongoing processes. {{<issue 23055>}}Create Table operation fails if Alter Replication encounters an error, enhancing the reliability of replication setup. {{<issue 21732>}}ysql_skip_row_lock_for_update to an auto-flag to resolve compatibility issues during upgrade, preventing incorrect DB record creations that can affect row visibility and integrity. {{<issue 22057>}}generate snapshot output to circumvent cloning failure from recreated tables. {{<issue 21631>}}unexpected leader fatal errors by updating cached leader terms immediately after a leader change. {{<issue 21808>}}min_secustomerent_size_to_rollover_at_flush for clarity. {{<issue 21691>}}enable_automatic_tablet_splitting flag from kLocalPersisted (class 2) to kExternal (class 4) to eliminate setup issues with xCluster configurations. {{<issue 22088>}}boost::regex_match. {{<issue 21585>}}metric_type attribute. {{<issue 21608>}}2.23.0.0-b37-arm. {{<issue 21648>}}prev_op to UNKNOWN to prevent AlmaLinux 8 fastdebug gcc11 compilation failures. {{<issue 21811>}}tablet_peer objects using the = operator, preventing unintentional destruction of underlying objects. {{<issue 22007>}}min_running_ht initialization until after the successful completion of tablet bootstrap to prevent unexpected behaviors. {{<issue 22099>}}skip_table_tombstone_check for colocated tables to prevent errors. {{<issue 22115>}}GetClusterConfig function. {{<issue 21775>}}pg_locks query failure due to missing host node UUID in distributed transactions. {{<issue 22181>}}read-time option from the ysql_dump help output for proper DDL atomicity handling. {{<issue 23299>}}yb-admin, including retaining a snapshot indefinitely by setting retention_duration_hours to 0. {{<issue 23332>}}skip_master_flagfile when creating YBClients. {{<issue 23145>}}secure mode enabled by adding a timeout framework. {{<issue 23447>}}stack_is_too_deep function returns predictable results in ASAN, aiding effective limit setting on stack depth. {{<issue 15682>}}Hidden state in Master/Tserver Tables UI by shifting its position more prominently to the State column. {{<issue 22521>}}yb-admin snapshot schedule create command to reduce resource usage. {{<issue 21929>}}enable_pg_savepoints to prevent incorrect behavior and avoid silent progress in PL/pgSQL exceptions. {{<issue 29018>}}enable_cleanup_of_non_eligible_tables_from_cdcsdk_stream and limits processing to two non-eligible tables per namespace per run with cdcsdk_table_processing_limit_per_run. Introduces three yb-admin commands for managing CDC streams. {{<issue 22876>}},{{<issue 22835>}},{{<issue 22773>}}cdcsdk_enable_identification_of_non_eligible_tables and three yb-admin commands to manage tables in CDC stream, enhancing control and reducing unnecessary resource usage. {{<issue 22876>}},{{<issue 22835>}},{{<issue 22773>}}0 or a random time as the server's system clock in XLogData from the logical replication stream. {{<issue 22929>}}BEGIN record when no DML records are added, preventing potential virtual WAL crashes. {{<issue 21646>}}cached_schema_details when executing a new GetChanges request if the client indicates a necessity for the schema. {{<issue 20698>}}ysql_yb_enable_replication_commands flag is false. {{<issue 23096>}}