Commit Graph

652 Commits

Author SHA1 Message Date
vladvildanov 8cc7b45988 Added support for BITRANGEINTARRAY command 2026-11-06 11:09:20 +02:00
Vladyslav Vildanov 1685693b83 Added support for Set Expiration commands (#1749)
* Added support for Set Expiration commands

* Skipped test no longer valid since 8.11

* changelog [skip ci]

---------

Co-authored-by: Till Krüss <tillkruss@users.noreply.github.com>
2026-11-04 10:50:46 +02:00
Till Krüss 2496e6d91b Prepare v3.7.1 (#1753) 2026-11-03 10:55:20 -07:00
Till Krüss 7779d6ceda Fix RelayConnection import ordering (#1752) 2026-11-03 10:36:59 -07:00
Till Krüss 3e12b8acdb Merge commit from fork
* Fix quadratic-time parsing of MONITOR events

Anchor the metadata pattern in `Monitor\Consumer` to the start of the
event. The unanchored pattern scanned command arguments even for events
with a valid header, because `preg_replace_callback()` searches once
more after reaching its limit. With PCRE JIT disabled, or with older
PCRE, a 64 KB argument of `[1 ` sequences took seconds to parse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Remove comment about metadata matching

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 10:32:02 -07:00
Till Krüss 21deb140e8 Fix Relay SELECT with a non-integer database and add Relay range test (#1751)
Relay::select() throws a TypeError for anything but an integer, where
other connections get an error response from the server. Wrap the call
and return the same error response, so the existing test runs against
Relay and no longer needs a Relay-only counterpart.

Relay warns before sending SELECT for out-of-range databases, so that
test keeps its Relay-specific counterpart.
2026-11-03 10:29:11 -07:00
mrze e1d96a8e6b Fix INFO parsing of section names containing spaces (#1747) (#1748) 2026-11-03 09:34:27 -07:00
Michał "DualFroz" Fox b00c1f810d Use SENTINEL REPLICAS for Sentinel replica discovery (#1745)
* Use SENTINEL REPLICAS for Sentinel replica discovery

* Add a connected Sentinel replicas test
2026-10-12 11:13:39 +03:00
Till Krüss c29b3c24f3 Improve Relay compatibility even further (#1743) 2026-10-09 17:16:48 -07:00
Till Krüss 307d7e2b6a Fix connection cleanup after interrupted pipelines (#1741)
Disconnect interrupted pipeline connections before they can be reused,
discard remaining commands, and reset running state after PHP errors.
Preserve the original failure when connection cleanup also fails.

Clear the cached connection resource when Relay is closed so the next
command reconnects and replays connection initialization. This fixes
client reuse after an interrupted pipeline disconnects the connection.
2026-10-09 16:57:05 -07:00
Till Krüss 78c91a5628 Support numbered databases in Valkey clusters (#1742) 2026-10-09 08:11:13 -07:00
Till Krüss 09a1882bad bump dev tag [skip ci] 2026-10-08 09:48:49 -07:00
Till Krüss 4d91f3b08a prepare v3.7.0 (#1740) 2026-10-08 09:46:04 -07:00
holystix 97ce126b9f Retry cluster slot map discovery on StreamInitException (#1717)
queryClusterNodeForSlotMap() overrides Retry's default catchable exception
list with [ConnectionException::class]. StreamInitException extends
PredisException directly, so a CLUSTER SLOTS refresh that cannot open a
connection to the node it was redirected to is neither retried nor allowed
to fall back to another node: the fail callback that evicts the unreachable
node never runs, and the exception escapes uncaught.
2026-10-08 09:36:04 -07:00
Michał "DualFroz" Fox 9f37e4bd2b Fix ConnectionErrorProof response count on single node read errors (#1739)
Co-authored-by: Till Krüss <tillkruss@users.noreply.github.com>
2026-10-08 09:34:40 -07:00
Michał "DualFroz" Fox 00611e08e0 Replace deprecated spl_object_hash() with spl_object_id() in ConnectionErrorProof (#1738)
php 8.6 deprecates spl_object_hash(). ConnectionErrorProof only uses it as an array key for per-connection exceptions, so spl_object_id() is a drop-in replacement. added a dedicated test for the pipeline.
2026-10-08 10:41:25 +03:00
Vladyslav Vildanov e964f78524 Added testing with new HNSW compression (#1737) 2026-10-07 10:08:14 -07:00
Till Krüss 5a9a7665cb Fix cluster transaction cleanup and CAS behavior (#1735) 2026-10-07 10:02:58 -07:00
Iain 0f3f616edb Fix infinite loop when the connection closes partway through a bulk reply (#1731) 2026-10-06 09:39:22 -07:00
Vladislav Kotsev c270c2d24e feat: bless commands family (#1733)
* feat: bless commands family

* fix: bless scan args processing
2026-10-06 14:36:19 +03:00
Midhun Monachan ed2ddeede5 Fix client iteration with master/slave and Sentinel replication (#1730)
* Fix client iteration with master/slave replication

* Fix client iteration with Sentinel replication

---------

Co-authored-by: Vladyslav Vildanov <117659936+vladvildanov@users.noreply.github.com>
2026-09-30 10:57:38 +03:00
Vladyslav Vildanov 4082600075 Added optional CELL_SIZE argument for CMS.INITBYDIM and CMS.INITBYPROB (#1729) 2026-09-29 11:31:27 -07:00
Till Krüss 35019cf292 bump dev version 2026-09-17 13:44:54 -07:00
Till Krüss e2db96312e tag v3.6.1 2026-09-17 13:41:00 -07:00
Vladyslav Vildanov 3edc442e55 Fixed CRLF command smuggling and node misrouting in AbstractAggregateConnection::write() and CommandInterface::deserializeCommand() (#1728)
* Fixed CRLF command injection / smuggling in AbstractAggregateConnection::write()

* Revert "Fixed CRLF command injection / smuggling in AbstractAggregateConnection::write()"

This reverts commit a4720b03ee.

* Fixed CRLF command smuggling and node misrouting in AbstractAggregateConnection::write() and CommandInterface::deserializeCommand()

* Revert change
2026-09-16 10:01:26 +03:00
Vladyslav Vildanov 37490865cc Fixed Stream::write()/read() leaving a dead connection when a host error handler throws exception (#1726) 2026-09-14 11:32:59 -07:00
Vladyslav Vildanov 3a5b55e46e Deprecated CommandInterface::deserializeCommand() (CVE GHSA-w6f5-v2h6-g786) (#1724) 2026-09-11 07:56:58 -07:00
Lazizbek Ergashev e7b89c14b7 Fixed client_info connection parameter being ignored (#1722)
* Fixed `client_info` connection parameter being ignored
* Documented the default value of the `client_info` parameter
2026-09-10 15:24:31 -07:00
Sergey Sannikov 675951360f Fix RESP3 double parsing returning positive INF for -inf (#1716)
parseDouble() returned positive INF for the RESP3 payload ',-inf',
inverting the sign. The value is reachable with protocol=3, for
example ZSCORE on a member whose score is -inf.

The existing infinity test asserted only is_infinite(), which cannot
detect the sign inversion, so it now checks exact values.

NaN payloads keep their current behavior; that is addressed
separately.
2026-08-27 16:46:39 +03:00
Till Krüss 0795d69d9e bump dev version 2026-08-14 16:09:00 -07:00
Till Krüss 2ff20c08bb tag v3.6.0 2026-08-14 16:07:56 -07:00
Vladyslav Vildanov ac3142abfe Added experimental support for HIMPORT bulk hash import feature (#1712)
* Added support for HIMPORT bulk hash import feature

* Fixed pre-server execution registry miutating, added pre-loaded registry feature

* Refactored retry logic to use existing configuration

* Marked feature as experimental

* Remvoed non-ASCII chars

* Ensure IteratorAggregator interface is enforced

* Fixed bug with updateCachableException adds duplicate entries

* Added explicit reconnect for Relay tests

* Testing with custom image

* Removed redundant comment

* Fixed exception handling

* Removed non-ASCII char

* Fixed merged conflict bugs
2026-08-10 10:54:34 +03:00
Róbert Kelčák 0bf4ba1c9f Added OBJECT and hash field expiration commands to ClusterStrategy (#1711)
Co-authored-by: Vladyslav Vildanov <117659936+vladvildanov@users.noreply.github.com>
2026-08-05 11:57:53 +03:00
Vladyslav Vildanov b1e2a26e7f Added support for MAXCOUNT and MAXSIZE arguments for XREAD and XREADGROUP (#1701)
* Added support for MAXCOUNT and MAXSIZE arguments for XREAD and XREADGROUP

* Improve deprecation, by introducing deprecated real methods

* Renamed from XREAD_NEW to XREAD_V4
2026-07-24 10:56:14 +03:00
Róbert Kelčák bb5ca97854 Added vector sets commands to ClusterStrategy (#1710) 2026-07-23 09:47:49 +03:00
Róbert Kelčák c9494ab124 Added stream commands to ClusterStrategy (#1708)
* Added stream commands to ClusterStrategy

* Fix edge case for XREADGROUP

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Fix merge conflict

---------

Co-authored-by: Vladyslav Vildanov <117659936+vladvildanov@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-22 12:26:19 +03:00
Vladyslav Vildanov 422990b631 Added support for LMOVEM and BLMOVEM commands (#1709)
* Added support for LMOVEM and BLMOVEM commands

* Removed background testing

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-22 10:01:21 +03:00
Vladyslav Vildanov bc08b36094 Added support for TS.QUERYLABELS command (#1706) 2026-07-21 11:20:07 +03:00
Vladyslav Vildanov 96c634ef90 Added support for FT.ALIASLIST command (#1705) 2026-07-21 11:00:18 +03:00
Vladyslav Vildanov bc406c7f55 Added support for EXCLUDEEMPTY argument for TS.MRANGE and TS.MREVRANGE commands (#1704) 2026-07-21 10:59:59 +03:00
Vladyslav Vildanov b1e40f4250 Added support for TS.READ command (#1702)
* Added support for TS.READ command

* Added more testing and cluster support
2026-07-20 10:27:43 +03:00
Vladyslav Vildanov 9302204964 Added support for SDIFFCARD and SUNIONCARD command (#1700)
* Added support for SDIFFCARD and SUNIONCARD command

* Fixed broken test

* Fixed failing tests
2026-07-17 10:36:00 +03:00
Vladyslav Vildanov d7bc1c4748 Added support for new COLLECT reducer for FT.AGGREGATE (#1699)
* Added support for new COLLECT reducer for FT.AGGREGATE

* Added tests cleanup

* Updated CHANGELOG.md
2026-07-15 11:26:23 +03:00
Kyle f97b473fe1 Fix annotation of cmsincrby (#1698) 2026-07-06 07:05:02 -07:00
Vladyslav Vildanov efb3958fb7 Added support for new TS commands + Indonesian language support integration test (#1695)
* Added support for new TS commands

* Fixed version constraints

* Codestyle fixes

* Remvoed TS.BGET command
2026-06-25 21:11:59 +03:00
Vladyslav Vildanov 09b8ce59dd Fixed Sentinel does not wipe servers on exception caused (#1694) 2026-06-22 10:55:28 -07:00
Vladyslav Vildanov b6b7f0d4e0 Make ZMSCORE command Prefixable and add to a ClusterStrategy (#1692)
* Make ZMSCORE command Prefixable and add to a ClusterStrategy

* Updated CHANGELOG.md

* Codestyle fixes
2026-06-18 17:50:20 +03:00
Copilot d55b3072fa Correct pack/unpack PHPDoc types, clean up UNLINK test typing (#1689) 2026-06-15 10:32:18 -07:00
Till Krüss 5c996db191 tag v3.5.1 2026-06-11 09:56:53 -07:00
Adrian Brajkovic fc345603a4 Fix UNLINK missing single-array argument normalization (#1687)
* Allow  to accept an array of keys as a single argument

* fix signature

* update changelog
2026-06-11 11:01:07 +03:00