mirror of https://github.com/sysown/proxysql
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
8.0 KiB
144 lines
8.0 KiB
# ProxySQL 3.0.4 Release Notes
|
|
|
|
This release of ProxySQL 3.0.4 includes significant improvements to PostgreSQL support, MySQL protocol handling, monitoring accuracy, and security.
|
|
|
|
Release commit: `faa64a570d19fe35af43494db0babdee3e3cdc89`
|
|
|
|
## New Features:
|
|
|
|
### PostgreSQL Improvements:
|
|
|
|
- **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''`)
|
|
- **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_OK` and `PgSQL_Monitor_non_ssl_connections_OK` for connection status visibility (fae283cf)
|
|
|
|
### MySQL Protocol Enhancements:
|
|
|
|
- **Special Handling for Unexpected `COM_PING` Packets** (d0e88599, #5257)
|
|
- Implements workaround for unexpected `COM_PING` packets received during query processing
|
|
- Queues `COM_PING` packets as counters and sends corresponding OK packets after query completion
|
|
- Improves logging with client address, session status, and data stream status (6fea828e)
|
|
- **Handling of `SELECT @@version` and `SELECT VERSION()` Without Backend** (df287b20, #4889)
|
|
- ProxySQL now responds directly to `SELECT @@version` and `SELECT VERSION()` queries without backend connection
|
|
- Returns hardcoded server version (currently 8.0.0), reducing unnecessary backend load
|
|
- **Client-Side `wait_timeout` Support** (abe16e66, #4901)
|
|
- Adds support for client-specified `wait_timeout` values, previously ignored by ProxySQL
|
|
- Terminates client connections (not backend) when client timeout is reached
|
|
- Clamps client timeout to not exceed global `mysql-wait_timeout`
|
|
- **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
|
|
|
|
### Monitoring & Diagnostics:
|
|
|
|
- **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
|
|
|
|
|
|
## Bug Fixes:
|
|
|
|
### MySQL:
|
|
|
|
- **Make `cur_cmd_cmnt` Thread-Safe** (91e20648, #5259)
|
|
- Fixes thread-safety issue where `cur_cmd_cmnt` (current command comment) was shared across threads
|
|
- **Fix `cache_empty_result=0` Not Caching Non-Empty Resultsets** (2987242d, #5250)
|
|
- Corrects behavior of `cache_empty_result` field 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
|
|
- **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
|
|
|
|
### Monitoring:
|
|
|
|
- **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
|
|
|
|
### Security & Configuration:
|
|
|
|
- **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`, and `admin_variables` config parsing (b4683569)
|
|
- Handles cases where users mistakenly include module prefixes (e.g., "mysql-") in variable names
|
|
|
|
|
|
## Improvements:
|
|
|
|
### Performance Optimizations:
|
|
|
|
- **Improve Fast Forward Replication `CLIENT_DEPRECATE_EOF` Validation** (5485bb02, #5240)
|
|
- Enhances validation logic for fast forward replication with `CLIENT_DEPRECATE_EOF` capability flag
|
|
- Ensures proper handling of replication packets and improves compatibility with MySQL 8.0+ clients
|
|
- **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::string` with `char[]` to avoid heap allocation in hot paths (7a3a5c71)
|
|
- **GTID: Refactor Reconnect Logic & Prevent `events_count` Reset** (50c60284, #5226)
|
|
- Refactors GTID reconnect logic to prevent `events_count` from being reset during reconnection attempts
|
|
- Preserves replication state and reduces unnecessary replication restarts
|
|
|
|
|
|
## Documentation:
|
|
|
|
- **Comprehensive Documentation Additions** (cf8cbfd8, #5258)
|
|
- Query rules capture groups and backreferences documentation (6966b79d)
|
|
- "Closing killed client connection" warnings documentation (de214cb5)
|
|
- `coredump_filters` feature documentation addressing issue #5213
|
|
- `vacuum_stats()` and `stats_pgsql_stat_activity` Doxygen 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
|
|
|
|
|
|
## Testing:
|
|
|
|
- **Add Comments to `SELECT @@version` Queries to Bypass ProxySQL Interception** (66119b74, #5251)
|
|
- Adds `/* set_testing */` comments to `SELECT @@version` queries in test files
|
|
- Prevents ProxySQL interception, allowing queries to reach backend MySQL servers for testing
|
|
- **Add Fast Forward Replication Deprecate EOF Test and Update Test Infrastructure** (9df7407f, #5241)
|
|
- Adds comprehensive test coverage for fast forward replication `CLIENT_DEPRECATE_EOF` validation
|
|
- Updates test infrastructure to better handle replication scenarios
|
|
- **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
|
|
- **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
|
|
|
|
|
|
## Build/Packaging:
|
|
|
|
- **Add OpenSUSE 16 Packaging Support** (bce71a95, #5230)
|
|
- Adds packaging support for OpenSUSE 16
|
|
- Expands supported distribution matrix for ProxySQL installations
|
|
|
|
|
|
## Other Changes:
|
|
|
|
- **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
|
|
|
|
|
|
## Hashes
|
|
|
|
The release commit is: `faa64a570d19fe35af43494db0babdee3e3cdc89` |