ProxySQL 3.0.3 Release Notes
This release of ProxySQL 3.0.3 includes a significant number of new features, particularly around PostgreSQL Extended Query Protocol support, along with numerous bug fixes and dependency updates to improve stability and performance.
Compared to version 3.0.2, ProxySQL 3.0.3 introduces the following changes:
New Features:
PostgreSQL Extended Query Protocol Support:
- Add PostgreSQL extended query (prepared statement) support (24fecc1, #5044)
- Lays groundwork for handling PostgreSQL extended query protocol, including parsing, caching, and execution framework stubs.
- Added
Describemessage handling (a741598, #5044) - Added
Closestatement handling (4d0618c, #5044) - Added
Bindand Execute support (8bb248c, #5044) - Added support for protocol-supplied (out-of-band) parameter typing (4ebff4c, #5044)
- Parameter types will be part of hash calculation. Includes refactoring and optimizations.
- Added support for protocol level parameter type (87ce0d0, #5044)
- Added
pgsql-max_stmts_per_connectionvariable (3619fa5, #5044) - Added
SETstatement tracking support (02eb58d, #5044) - Added
DEALLOCATE <stmt_name>andDEALLOCATE ALLsupport (070d4ca, #5044) - Added prepared statement map and connection status fields to
PROXYSQL INTERNAL SESSIONoutput (f715c54, #5044) - Added
stats_pgsql_prepared_statements_infotable (703a5f3, #5044) - Add support for unnamed
Describe Portaland improve extended query handling (48ba491, #5044)- Always send
Describe Portalto the backend. - Enforce check for unnamed portals in
Bind,Describe,Close, andExecute; raise errors for named portals. - Improve error handling for extended query flow.
- Introduce
Extended_Query_Infostruct to unify extended query related members.
- Always send
- Queue client packets during active query execution (3dd401f, #5078)
- New packets are placed in a FIFO queue and processed after the current query finishes, improving compatibility with connectors like pgJDBC.
Build System & Dependencies:
- Upgrade
coredumperto Percona fork hash8f2623b(a315f12, #5171) - Upgrade
curlto v8.16.0 (40414de, #5154) - Update
clickhouse-cppto v2.6.0 (a0f2a9b, #5154) - Upgrade
sqlite3to v3.50.4 (6f29a4d, #5154) - Upgrade
libmicrohttpdto v1.0.2 (efa90b5, #5154) - Add support for new build environments:
- Reduce duplication in
makefiles, use include for common stuff (d020f57, #5158)
Other Features:
- Add Watchdog
PROXYSQLTESTcovering MySQL and PgSQL threads (344ba25, #5044) - Refactored Watchdog and integrated PostgreSQL thread monitoring into it's loop (e4c0f5c, #5044)
- Added query logging support for PostgreSQL (a89291c, #5124)
- Handle
SHOW STATUS LIKE 'Ssl_version'in ProxySQL without any backend (aa80a1f, #5085) - Replace
CLOCK_MONOTONICwithCLOCK_MONOTONIC_RAW(daf1570, #5099) - Added
integer_datetimesin ProxySQL startup parameters status, hardcoded to on. (43e5b55, #5103) - Added
scram_iterationsin ProxySQL startup parameters status, hardcoded to 4096SCRAM_SHA_256_DEFAULT_ITERATIONS(43e5b55, #5103) - Added
client_close_all(099597d, #5044) - Implement a
ignore_min_gtid_annotationglobal variable for ProxySQL (6cb5222, #5150) - New admin command to dynamically change configuration file path.
- Added
KILL PGSQL CONNECTIONsupport (b3e96b0, #5137) - Add
pgsql-kill_backend_connection_when_disconnectsupport (d09fe4d, #5137) - Implement backend query cancellation for PostgreSQL (4d91452, #5136, #5137)
- Adds support for PostgreSQL query cancellation and backend termination features.
- Intercepts
pg_backend_pid(),pg_terminate_backend(),pg_cancel_backend(). - Supports Cancel Request protocol via separate connection with PID and secret key validation.
- Returns
BackendKeyDatamessage on successful authentication.
- Add support for PostgreSQL transaction command aliases and
ROLLBACK AND CHAIN(4527157, #5153) - Add tracking for PostgreSQL
search_pathparameter (b005c2d, #5149) - Added
SHOW FULL PGSQL ACTIVITYandSHOW PGSQL ACTIVITYhandling (fc4d7f7, #5156) - Add backend PID/state to
stats_pgsql_processlistand createpg_stat_activity-styleview (f3ea179, #5156)
Bug Fixes:
Memory & Stability:
- Fix
heap-after-usebetweenPROXYSQL INTERNAL SESSIONandSHOW PROCESSLIST(4b28bb6, #5191) - Fix potential
use-after-freebySHOW PROCESSLISTin MySQL (639f9d0, #5180) - Fix potential
use-after-freebySHOW PROCESSLISTin PgSQL (c0978f9, #5182) processlist: Prevent crash due toSQLITE_TOOBIG(5219d4b, #5165)- Ensure
PgSQL_Errors_statsvdestructoris invoked on delete (ff50bb4, #5112, #5078)- Fixes a bug where deleting
PgSQL_Errors_statsinstances with only a forward declaration caused the destructor to be skipped, leading to memory leaks.
- Fixes a bug where deleting
- Fix:
REST APIserver crash due to malformed multipartPOSTrequest (0a0336e, #5072, #5074)- Disables
POSTpreprocessing option inlibhttpserverand validatesContent-Typeheader forPOST/sync.
- Disables
- Ensure
PgSQL_Threads_HandlerandPgSQL_HostGroups_Managerobjects are released when ProxySQL shuts down or restarts (8d8577b, #5086, #5087, c7ce5a8, #5078)- Fixes client hangs after executing
PROXYSQL RESTARTand attempting reconnection.
- Fixes client hangs after executing
- Fixed a crash occurring during session destruction (9e4b76d, #5044)
- Fixed
PgSQL_Session::handler___status_NONE_or_default(8021121, #5044) - Fixed Debug logs (3a46324, #5137)
- Fixed
SSL STATUSinPgSQL_Data_Stream(58eac30, #5044) - Fixed
RequestEnd(97b3bb1 #5044)) - Fix
RequestEnd: avoid updating internal state when query failed on backend (abd1911, #5078)- Adds
success/failureflag toRequestEndcalls and restricts state changing logic to successful query executions.
- Adds
- Fixed
clangcompilation (a7df0d3, #5120) - Fixed compiler issues by updating
postgresql(318f108, #5138) - Fixed new compiler issue in
mariadb-client(f1526fc, #5138) - Fixed issues by updating
libconfig(88c34b3, #5138) - Fix new compiler issue in
btree.h(5e7ab93, #5138) - Fix compilation warning for
strncpydue string truncation (2668de7, #5182, 67624b8, #5180) - Add boundary checks in
MySQL_Protocol::get_binds_from_pkt(e35973b, #5188) - Change
COM_STMT_EXECUTEparams length decoding (64b1617, #5188) - Ensure default
mysql-interfaces=0.0.0.0:6033andpgsql-interfaces=0.0.0.0:6133are set (48928ce #5190)
PostgreSQL Specific:
- Fixed extended query message parser (944b0ef, #5142)
- Fix parameter length misalignment in
PQsendQueryPrepared(786fb37, #5142) - Send
NoDatain response toDescribe PortalbeforeExecute(empty query) (67842ff, #5143) - Fixed
Describe PortalreturningNoData(1b47a1d, #5078) - Align
DateStyleparsing with PostgreSQL (d4b2de9, #5144) - Fix
ParameterStatuscapitalization forDateStyle,TimeZone, andIntervalStyle(03b63f6, #5146) - Fixed multiplex disabled due to
CREATE SEQUENCE(c613865, #5078) - If the startup connection includes untracked session parameters (passed via options=), the connection must be destroyed instead of returned to the pool (a69a443, #5078)
- Inject implicit
Syncif simple query arrives before extended query cycle is completed (9a5fa14, #5078)- Injects an implicit
Sync, processes extended query messages, then executes the simple query, and sendsReadyForQueryonly after the simple query completes.
- Injects an implicit
- Fix omission of
ReadyForQueryafter error with pending extended-query messages (fff2a91, #5078)- Ensures
ReadyForQueryis always emitted immediately when a result indicates an error, preventing clients from waiting indefinitely.
- Ensures
- Ensure consistent handling of
NoDatapackets inPQsendQueryPrepared(8a3bab5, #5078)- Explicitly appends a
NoDatapacket to the result for commands likeINSERT,DELETE, orUPDATEto provide consistent behavior.
- Explicitly appends a
- Fixed
DISCARD ALLtag (4d3dc7b, #5044) - Handled
DISCARD ALL,DISCARD PLANS, send rest of the variants to backend Fixed connection reset for client connection (27f1fed, #5044) - Prevent overwrite of named statements (7c71fe1, #5044)
- Named prepared statements cannot be overwritten and will raise an error if redefined.
- Refined Bind Message parameter format, value handling, and result format iterator (b989fc2, #5044)
- Fixed SonarQube warnings where applicable (0638375, #5044)
- Corrected advancement of current pointer (ef2b0cb, #5044)
- Fixed few compilation warnings (3cff4f9, #5044)
- Removed
server_capabilitiesfromPgSQLmodules (bc87d0d, #5044) - Removed
autocommit_on_hostgroupfromPgSQLmodules (87ad15b, #5044) - Removed
AutoCommitrelated code from PostgreSQL session (3cff4f9, #5044) - Removed
last_insert_idfromPgSQLmodules (026f458, #5044) - Removed warning tracking code from
PgSQL_Connection(2a9f672, #5044) - Preserve implicit transactions with pipeline +
FLUSH(23a764e, #5118, #5119)- Switches to
libpqpipeline mode and replaces intermediateSYNCmessages withFLUSH, ensuring all client query frames execute as part of the same implicit transaction
- Switches to
- Intercept
LISTENcommand and return "not supported" for both simple and extended query flows (0391a8d, #5109, #5078)
Admin & Configuration:
- Fixed
PROXYSQL STOP(38befb8, #5173) - Resolved issues with admin
PROXYSQL PAUSE/RESUMEcommands (67d383d, #5173) - Add validation for
LOAD <module> FROM CONFIG(0a336de, #5113)- Adds validation for
mysql_users,pgsql_users,mysql_servers,pgsql_servers, andproxysql_servers. - Checks for duplicates and mandatory fields, returning descriptive error messages.
- Adds validation for
Other Fixes:
QueryInfo::end_timeshould always be greater than or equal tostart_time(8d29742, #5099)- Removed
admin_handler_command_kill_connection(1e988c6, #5137) - Improved regex pattern (e291573, #5104)
- Fixed typos (2702c20. #5133, 0292b78, #5156, 692109f, #5119)
- Improved
mysqldumpcompatibility (b6d796c, #5134) gtid: Refactor reconnect logic & preventevents_countreset (0a70fd5, #5117)- Separate query cache metrics for MySQL and PostgreSQL (818025a, #5160)
Hashes
SHA256s:
d2cd83d5bc0a75dcd9db7ab6ad64a01f0d4f6d30739ba7b369e86f6d62e02b15 proxysql-3.0.3-1-almalinux10-clang.x86_64.rpm
25ac617357ffd010a3e75ffdc2f7f6a2abc8d17495012437fd5e453ba281e7d3 proxysql-3.0.3-1-almalinux10.aarch64.rpm
28cba6d30b3b98cc59886f0b4a1907c4c5981e62ae55eec34148e082335fd768 proxysql-3.0.3-1-almalinux10.x86_64.rpm
2cb6ad20bff0e51ee1b0f228a3616209ad886f4099a576d9f7aa72101433ae45 proxysql-3.0.3-1-almalinux8-clang.x86_64.rpm
c244dde220a6abcd86d65994001cfc8826c69c519520b59d4a028da5a3b215bb proxysql-3.0.3-1-almalinux8.aarch64.rpm
0c4a09e3149c7fede6cd97507cd0637bd0708db743babea2cff9bf275f2b051d proxysql-3.0.3-1-almalinux8.x86_64.rpm
5b40b8ae6352f3c417034b1ad372c5dbdfe5605ab9c7b0435023c5da1885f8e8 proxysql-3.0.3-1-almalinux9-clang.x86_64.rpm
96716e8384c67eb95e06dabbbdcf58e63da9efed0fb99fc9a1fde2aeedc33d6c proxysql-3.0.3-1-almalinux9.aarch64.rpm
b49e427986aa9d355038ae9ffa23c0bbe05bd2ae3877dbd14e5d150be5264a7d proxysql-3.0.3-1-almalinux9.x86_64.rpm
3dae1eadac8f4fb7959f64e631d96c80485df44195d08d3e5608292337c7220a proxysql-3.0.3-1-centos10-clang.x86_64.rpm
738a159ddb70c25d4b6837f382445d7576a1e64ee43947106dcb87e383c7e547 proxysql-3.0.3-1-centos10.aarch64.rpm
cab3bd814f56a78f24d8c1bb34334c38f461f2c464ddb11fd721e52c4c480101 proxysql-3.0.3-1-centos10.x86_64.rpm
ba8999db16d0f0b6201ef376368388e1205c32ac445472e6ed5154a507f0a150 proxysql-3.0.3-1-centos9-clang.x86_64.rpm
a950c19aef1a398df1edf48f2f4a038c7a8a62358ea5d222d5f2e9353423e415 proxysql-3.0.3-1-centos9.aarch64.rpm
6d02e80e9d29e4141e48b5ef733ed762d1957ec0b01dc57e0116bd945a1fe83d proxysql-3.0.3-1-centos9.x86_64.rpm
f488d94217ccc779814900c845c30ea578fc08bd8da8c9922dbc4ef2f34119ab proxysql-3.0.3-1-dbg-almalinux10.x86_64.rpm
48fde2994d973879a94f90440becc2bef880ef16752d4bb2e8271b786fc58e7c proxysql-3.0.3-1-dbg-almalinux8.x86_64.rpm
6081e5fe8e5868e46f6eae642d468f5bb351dc107bd772d1270eb5e730fcedde proxysql-3.0.3-1-dbg-almalinux9.x86_64.rpm
c6c8ed12504cb428fbd4625602139e24dbd845e8ff6ca67c2a3f1b9035dfae7b proxysql-3.0.3-1-dbg-centos10.x86_64.rpm
ab8ee982ae8743c2aa886bff61444669c5c6443b5b9c88e3b43fa4fc1b2001c1 proxysql-3.0.3-1-dbg-centos9.x86_64.rpm
f09114f2929f6da9e954139571706f82971d5e3d8a60565d5eb3056c2d916e7f proxysql-3.0.3-1-dbg-fedora40.x86_64.rpm
43c9c577c4a21a3e595dea95f64e19eb5d456f9a73a4db8dfa3e8baec22dda62 proxysql-3.0.3-1-dbg-fedora41.x86_64.rpm
6be11d85d66ddc810d8549fb23f6c5c718e5f7c66c6cca6b3da063d77d464cb9 proxysql-3.0.3-1-dbg-fedora42.x86_64.rpm
4dedb3d682c5bb8bd1d8b1d702ef8fbcf307f7bb047cc04070616db21f1a7811 proxysql-3.0.3-1-dbg-opensuse15.x86_64.rpm
64ccfc215320243a72ebc09481bfde61523377a0fab21498339d995dc6245ea2 proxysql-3.0.3-1-fedora40-clang.x86_64.rpm
3ef15ba7632e668d449dcc15e3e459ae894f74f22cc8149798db4e70aca08b80 proxysql-3.0.3-1-fedora40.aarch64.rpm
d4a622569a3da2658e8e0011f59eea9bac152ce3681efaf6f7c1ea0abe16fb9a proxysql-3.0.3-1-fedora40.x86_64.rpm
ec9e6481a32bef9bcd68d990a142cea8e5c6b5da8a616d10dba57deaeeedb65b proxysql-3.0.3-1-fedora41-clang.x86_64.rpm
ddb256570beff6ebc6d9a460c01046dc354341d52815bf8ac8ba7b15461287ea proxysql-3.0.3-1-fedora41.aarch64.rpm
cf5b480cb15508cf2296f3c5e0edad891bb23fcdbabe9998b1a193ccb70f8f22 proxysql-3.0.3-1-fedora41.x86_64.rpm
f910103c646c140d2c3236116ede96d006741916460fd3c5c8d2a63794193c02 proxysql-3.0.3-1-fedora42-clang.x86_64.rpm
fd5b19a6c93ee5f708c975409532b531fb82f2ecd3ad539c9910d4aaf3230702 proxysql-3.0.3-1-fedora42.aarch64.rpm
d794e733522f06fc2b25c648c39caf157526d3a57a85c1a91c2c07b7f02f4397 proxysql-3.0.3-1-fedora42.x86_64.rpm
13a01cb5f1261f1dca28fa1adbe62d59f1c270d0ea3d556f1b850685db248630 proxysql-3.0.3-1-opensuse15-clang.x86_64.rpm
3fd839287f11dbb21d0db49c4e0dabb6e920054d1f18e738f0e2884d9f324e5d proxysql-3.0.3-1-opensuse15.aarch64.rpm
e39dc57f8595529d6dbdd0c56e5267508341a7664a9c0ea5e0d9e79b13accd28 proxysql-3.0.3-1-opensuse15.x86_64.rpm
0ed15ee2ace5b51e1395ed21b405094c3e75d2853984889117f3f0698ce7a98d proxysql-3.0.3.id-hash
38970d2f3866c223aa81e4ad82ee33878532c46ae39562e7fbbf558239b82250 proxysql_3.0.3-dbg-debian12_amd64.deb
75d79454f5eae9096d59398c099664aac2c311a8987dc04b12e03d993d3b9d4c proxysql_3.0.3-dbg-debian13_amd64.deb
5b394f137eae33482b004a87aba2703b397479e6a2e344fe35c108c7c7e58a01 proxysql_3.0.3-dbg-ubuntu22_amd64.deb
4aabbf8af463c5c0e43f728cb98c27f419ba60686d7f5945515d6f3103f2b483 proxysql_3.0.3-dbg-ubuntu24_amd64.deb
273d594fcb9cdfd446958d356c35b08502b6a5004404f50bcd8db9eab3c1783d proxysql_3.0.3-debian12-clang_amd64.deb
4ea3593afa074bd489b83048fab85e71ebe3a5b1b51eea53d3624012ac4ef31f proxysql_3.0.3-debian12_amd64.deb
9beafd26c87e898915612e63d5a03027090a5653dbe195fbf27541e57ec63326 proxysql_3.0.3-debian12_arm64.deb
ddfc821fcaa71ce64e0889ac5e74e2e418a43f476e7f559ba2bec47670f39117 proxysql_3.0.3-debian13-clang_amd64.deb
de16a6062ac3bf9980b5b0e1d0ba3af592685ee30601d34839f809f1319aa508 proxysql_3.0.3-debian13_amd64.deb
6eb0d9418c6dff4b2086df1354782cbc47c70194c01e36c2f10c3f134ebf22b3 proxysql_3.0.3-debian13_arm64.deb
81c290a29ae8c82b10aa21efc11ee26ccceb1c8912cd681b470aae4010985145 proxysql_3.0.3-ubuntu22-clang_amd64.deb
ef4d33f2c4e5ce299f4605b93e0ea62390ae4b4f796cedba322c0393f73f4c1a proxysql_3.0.3-ubuntu22_amd64.deb
75b209b0725dbb7dd0bd780e1cbded5805a211798389bf6fd670511df6388c7f proxysql_3.0.3-ubuntu22_arm64.deb
f64816a8e4ab886c1653cf538623bfaa924c6e2a5c68a61b930338b6d25039b6 proxysql_3.0.3-ubuntu24-clang_amd64.deb
083cc904ba7e2f9c6d52eba52f67b0b70cc36997b969966749630d6179ac5cd9 proxysql_3.0.3-ubuntu24_amd64.deb
26729dab9bdf5180259e52e08dec2b35a9718e7386c8a57db9d3cbbcd92b05ab proxysql_3.0.3-ubuntu24_arm64.deb