Skip to content

Releases: tarantool-php/client

v0.10.1

20 Jun 23:13
9b02251
Compare
Choose a tag to compare
  • Enhanced error messages with more details for failed connections (see #89)
  • Updated dependencies: allowed symfony/uid v7.x and bumped tarantool/phpunit-extras to v0.2.0
  • Made integration tests compatible with Tarantool v3.x
  • Added Tarantool 3.0, 3.1 and PHP 8.2, 8.3 to the CI test matrix

v0.10.0

05 Jul 17:59
Compare
Choose a tag to compare
  • Dropped PHP 7.1 support
  • Dropped PeclPacker
  • The rybakit/msgpack and symfony/uid dependencies are now mandatory and are installed with the main package
  • The MiddlewareHandler::create() method is replaced with MiddlewareHandler::prepend() and MiddlewareHandler::append()
  • Added microseconds timeout support
  • Enhanced tests
  • Added more examples
  • Switched to GitHub actions
  • Added reusable testing workflow which is now called from the Tarantool CI workflow
  • Added Tarantool 2.7, 2.8, 2.10 and PHP 8.1 to the test matrix

v0.9.0

13 Dec 21:12
Compare
Choose a tag to compare
  • Added PHP 8 support
  • Added the ability to prepend middleware via Client::withPrependedMiddleware() (see #69)
  • The signature of MiddlewareHandler::create() changed to:
    - public static function create(Handler $handler, Middleware $middleware, Middleware ...$middlewares) : Handler
    + public static function create(Handler $handler, array $middleware, bool $prepend = false) : Handler
  • Added the ClientException interface, all client exception classes now implement this interface
  • Enhanced RetryMiddleware:
    • Added protection against infinite retries (the maximum number of retries allowed is 10)
    • Only сlient exceptions (implementing the ClientException interface) can be retried
    • Tuned default parameters for exponential retries (changed baseMs from 100 to 10)
    • Limit the maximum retry interval to 1 min
    • Added equal jitter to retry intervals
  • Reverted ee6bc94 (see 8a8765b)
  • QA:
    • Added the PhpUnitCompat trait
    • Added SpyMiddleware
    • Switched to travis-ci.com
    • Added Scrutinizer configuration

v0.8.1

10 Sep 09:04
Compare
Choose a tag to compare
  • Updated StreamConnection::close() to close persistent connections opened in a previous session to avoid potential issues with re-authentication
  • Added metadata keys (Keys::METADATA_FIELD_*) to work with the extended SQL result sets (can be enabled with SET SESSION "sql_full_metadata" = true)
  • Removed PHPUnit dependency from example scripts
  • Fixed some tests which were failing on MacOS
  • Updated test matrix to test against Tarantool 2.5 and 2.6

v0.8.0

14 Jun 21:16
Compare
Choose a tag to compare
  • Added UUID support (Tarantool 2.4+) (example)
  • Added extended error support (Tarantool 2.4.1+), including new protocol format and MessagePack extension
  • Added CustomErrorMiddleware, that allows to transparently convert Lua errors into PHP exceptions (Tarantool 2.4.1+) (example)
  • Made MessagePack extension classes final
  • Added PurePacker::fromAvailableExtensions()
  • Renamed Keys::ERROR to Keys::ERROR_24 (0x31), added Keys::ERROR (0x52) and error map keys

v0.7.1

21 May 13:37
Compare
Choose a tag to compare
  • Fixed edge case error when StreamConnection::open() was returning null instead of the Greeting object, applied other minor improvements on StreamConnection
  • Implemented ArrayAccess on SqlQueryResult. Now you can access the elements of the resulting set using the array syntax, for example:
    $result = $client->executeQuery(...);
    var_dump($result[0], $result[1]);
  • Enriched tests with tarantool/phpunit-extras
  • Setup GitHub Sponsors funding

v0.7.0

26 Mar 23:48
Compare
Choose a tag to compare
  • Added support for prepared statements (Tarantool 2.3.2+) (example)
  • Added generic Client::execute() method to execute dynamic SQL statements whose type (query or update) is unknown
  • Dropped nullable return type from SqlUpdateResult::getAutoincrementIds(), now it always returns an array
  • Dropped nullable return type from Connection::open(), now it always returns the Greeting object
  • Added unknown(), equals() and getServerVersion() to the Greeting class, removed getServerVersionId()
  • Added optional second argument $packer to Client::fromOptions() and Client::fromDsn()
  • Bumped rybakit/msgpack requirement to ^0.7, if ext-decimal extension is enabled, overflowed integers will now be automatically converted to Decimal\Decimal
  • Renamed bitwise methods in the Operations class, e.g. Operations::bitOr()Operations::bitwiseOr()
  • Added Keys::SQL_INFO_ROW_COUNT and Keys::SQL_INFO_AUTO_INCREMENT_IDS
  • Added Psalm, a static analysis tool for PHP
  • Added more tests and usage examples

v0.6.0

11 Nov 21:23
Compare
Choose a tag to compare
  • Added support for persistent connections
  • Added support for decimals (Tarantool 2.3+) (example)
  • Allowed to use field names in update/upsert operations (Tarantool 2.3+) (example)
  • Moved the Greeting class into the Connection namespace, added Greeting::getServerVersionId()
  • Renamed AuthMiddleware to AuthenticationMiddleware and optimized scramble calculation
  • Added request/response pair matching based on the sync id
  • Chose the default iterator type (ALL or EQ) automatically based on the key value
  • Renamed Criteria::[and|get]iteratorType to Criteria::[and|get]iterator
  • Added auto-reconnect functionality to RetryMiddleware, stopped retrying on UnexpectedResponse
  • Cleaned up exceptions classes, removed ClientException, UnpackingFailed and InvalidGreeting
  • Removed Schema\IndexIds
  • Optimized request classes
  • Optimized PurePacker
  • Optimized unpacking the IProto packet length
  • Added php 7.4.0RC5 to the test matrix

v0.5.2

13 Jun 20:59
Compare
Choose a tag to compare

Fixed Client::fromDsn() to correctly parse the 'tcp_nodelay' option.

v0.5.1

22 May 18:05
Compare
Choose a tag to compare

Added

  • Tarantool\Client\Schema\Criteria::iteratorType()
  • Tarantool\Client\Schema\Criteria::andIteratorType()
  • Tarantool\Client\SqlQueryResult::isEmpty()
  • Tarantool\Client\SqlQueryResult::getFirst()
  • Tarantool\Client\SqlQueryResult::getLast()
  • Tarantool\Client\SqlQueryResult::count()