This release of ProxySQL 3.0.4 includes significant improvements to PostgreSQL support, MySQL protocol handling, monitoring accuracy, and security.
Release commit: faa64a570d19fe35af43494db0babdee3e3cdc89
- PostgreSQL-Specific Tokenizer for Query Digest Generation (285fb1b4, #5254)
- Adds PostgreSQL dialect support: dollar-quoted strings (
$$...$$), identifier quoting, and dialect-specific comment rules - Improved tokenizer for PostgreSQL with nested comments support (f5079037)
- Adds dedicated handling for double-quoted PostgreSQL identifiers and type cast syntax (
value::type) (e70fcbf0) - Processes array literals (
ARRAY[...]and{...}) and prefixed literals (E'',U&'',x'',b'')
- Adds PostgreSQL dialect support: dollar-quoted strings (
- SSL Support for Backend Connections in PostgreSQL Monitor (7205f424, #5237)
- PostgreSQL monitor now supports client certificates for SSL/TLS connections to backend servers
- Adds new metrics
PgSQL_Monitor_ssl_connections_OKandPgSQL_Monitor_non_ssl_connections_OKfor connection status visibility (fae283cf)
- Special Handling for Unexpected
COM_PINGPackets (d0e88599, #5257)- Implements workaround for unexpected
COM_PINGpackets received during query processing - Queues
COM_PINGpackets as counters and sends corresponding OK packets after query completion - Improves logging with client address, session status, and data stream status (6fea828e)
- Implements workaround for unexpected
- Handling of
SELECT @@versionandSELECT VERSION()Without Backend (df287b20, #4889)- ProxySQL now responds directly to
SELECT @@versionandSELECT VERSION()queries without backend connection - Returns hardcoded server version (currently 8.0.0), reducing unnecessary backend load
- ProxySQL now responds directly to
- Client-Side
wait_timeoutSupport (abe16e66, #4901)- Adds support for client-specified
wait_timeoutvalues, previously ignored by ProxySQL - Terminates client connections (not backend) when client timeout is reached
- Clamps client timeout to not exceed global
mysql-wait_timeout
- Adds support for client-specified
- Fast Forward Grace Close Feature to Prevent Data Loss (44aa606c, #5203)
- Implements graceful connection closure for fast-forward sessions
- Ensures all pending data is flushed to client before closing connection
- Prevents data loss during connection termination in replication scenarios
- TCP Keepalive Warnings When Disabled (cf454b8e, #5228)
- Adds warning messages when TCP keepalive is disabled on connections
- Helps administrators identify potential connection stability issues
- Includes detailed connection information for troubleshooting
- Make
cur_cmd_cmntThread-Safe (91e20648, #5259)- Fixes thread-safety issue where
cur_cmd_cmnt(current command comment) was shared across threads
- Fixes thread-safety issue where
- Fix
cache_empty_result=0Not Caching Non-Empty Resultsets (2987242d, #5250)- Corrects behavior of
cache_empty_resultfield in query rules - When set to "0", now correctly caches non-empty resultsets while skipping empty resultsets
- Previously prevented caching of any resultsets regardless of row count
- Corrects behavior of
- Incorrect Affected Rows Reporting for DDL Queries (05960b5d, #5232)
- Fixes issue #4855 where
mysql_affected_rows()in ProxySQL Admin interface incorrectly reported affected rows for DDL queries - DDL queries now correctly return 0 affected rows instead of previous DML's count
- Fixes issue #4855 where
- Fix Artificially High Ping Latency in MySQL Backend Monitoring (24e02e95, #5199)
- Addresses artificially high ping latency measurements
- Introduces batching for task dispatching (batches of 30) with
poll()calls between batches - Reduces monitor ping
poll()timeout from 100ms to 10ms for more responsive monitoring
- Fix SQL Injection Vulnerability in
Read_Global_Variables_from_configfile()(0b2bc1bf, #5247)- Replaces
sprintf-based SQL query construction with prepared statements using bound parameters - Fixes automatic prefix stripping for
mysql_variables,pgsql_variables, andadmin_variablesconfig parsing (b4683569) - Handles cases where users mistakenly include module prefixes (e.g., "mysql-") in variable names
- Replaces
- Improve Fast Forward Replication
CLIENT_DEPRECATE_EOFValidation (5485bb02, #5240)- Enhances validation logic for fast forward replication with
CLIENT_DEPRECATE_EOFcapability flag - Ensures proper handling of replication packets and improves compatibility with MySQL 8.0+ clients
- Enhances validation logic for fast forward replication with
- Refactored Prepared-Statement Cache Design (Lock-Free Hot Path) (c0f99c0e, #5225)
- Implements lock-free hot path for prepared statement cache operations
- Reduces contention and improves performance for high-concurrency workloads
- Optimizes transaction command parsing to avoid unnecessary tokenization (e744c2bb)
- Replaces
std::stringwithchar[]to avoid heap allocation in hot paths (7a3a5c71)
- GTID: Refactor Reconnect Logic & Prevent
events_countReset (50c60284, #5226)- Refactors GTID reconnect logic to prevent
events_countfrom being reset during reconnection attempts - Preserves replication state and reduces unnecessary replication restarts
- Refactors GTID reconnect logic to prevent
- Comprehensive Documentation Additions (cf8cbfd8, #5258)
- Query rules capture groups and backreferences documentation (6966b79d)
- "Closing killed client connection" warnings documentation (de214cb5)
coredump_filtersfeature documentation addressing issue #5213vacuum_stats()andstats_pgsql_stat_activityDoxygen documentation with bug fix (efe0d4fe)
- Permanent Fast-Forward Sessions and
check_data_flow()Documentation (ec1247f2, #5245)- Documents behavior of permanent fast-forward sessions
- Documents
MySQL_Data_Stream::check_data_flow()method - Explains when bidirectional data checks are skipped for specific session types (4044a407)
- Claude Code Agent Definitions and Architecture Documentation (291e5f02, #5115)
- Adds architecture documentation for Claude Code agent integration
- Includes automation framework and internal documentation
- Comprehensive Doxygen Documentation for GTID Refactoring (9a55e974, #5229)
- Adds detailed Doxygen documentation for GTID-related code changes
- TAP Test Writing Guide and GitHub Automation Improvements (49899601, #5215)
- Provides comprehensive guide for writing TAP tests for ProxySQL
- Improves GitHub automation workflows
- Add Comments to
SELECT @@versionQueries to Bypass ProxySQL Interception (66119b74, #5251)- Adds
/* set_testing */comments toSELECT @@versionqueries in test files - Prevents ProxySQL interception, allowing queries to reach backend MySQL servers for testing
- Adds
- Add Fast Forward Replication Deprecate EOF Test and Update Test Infrastructure (9df7407f, #5241)
- Adds comprehensive test coverage for fast forward replication
CLIENT_DEPRECATE_EOFvalidation - Updates test infrastructure to better handle replication scenarios
- Adds comprehensive test coverage for fast forward replication
- Add Delay to Let ProxySQL Process
mysql_stmt_close()(fa74de3c, #5198)- Adds appropriate delays in tests to allow ProxySQL time to process
mysql_stmt_close()operations - Prevents race conditions in prepared statement tests
- Adds appropriate delays in tests to allow ProxySQL time to process
- Regroup Tests to Balance Group Test Time (458ff778, #5207)
- Reorganizes test groups to balance execution time across test runners
- Improves CI pipeline efficiency and reduces overall test runtime
- Add OpenSUSE 16 Packaging Support (bce71a95, #5230)
- Adds packaging support for OpenSUSE 16
- Expands supported distribution matrix for ProxySQL installations
- Bump Version to 3.0.4 at Beginning of Development Cycle (ba664785, #5200)
- Updates version number to 3.0.4 at start of development cycle for clarity and version tracking
The release commit is: faa64a570d19fe35af43494db0babdee3e3cdc89