SDK Release Notes

  • reference
    +
    Release notes for the Couchbase PHP Client.

    These pages cover the 4.x versions of the Couchbase PHP SDK.

    For download instructions, see the installation page.

    PHP SDK 4.2 Releases

    We always recommend using the latest version of the SDK — it contains all of the latest security patches and support for new and upcoming features. All patch releases for each dot minor release should be API compatible, and safe to upgrade; any changes to expected behavior are noted in the release notes that follow.

    PHP SDK 4.2 is written to version 3.5 of the SDK API specification (and matching the features available in Couchbase 7.6 and earlier).

    Version 4.2.0 (17 March 2024)

    Enhancements

    • PCBC-979: Added static helpers to SearchQuery types (#149).

    • PCBC-970: SDK support added for Scoped Search Indexes (#147).

    • PCBC-968: Support addd for maxTTL value of -1 for collection 'no expiry' (#144).

    • PCBC-967: Support added for vector search (#143).

    • PCBC-965: Adedd DocumentNotLocked error to corresponds with the C++ error code couchbase::errc::key_value::document_not_locked (#142).

    • PCBC-960: Merge protostellar branch to master, in preparation for couchbase2 protocol (#138, #153).

    Fixes

    • PCBC-964: The SDK no longer fires the close operation asynchronously, instead it will now wait until the core instance is completely destroyed Wait until the core connection is closed (#141).

    • PCBC-972: Fixed C++ detection on MacOS X, so that the SDK now installs correctly on Sonoma (#145).

    • Added missing use statement in class DecrementOptions (#146).

    • Updated core and renamed query_index_create fields to keys (#148).

    Notable changes in core C++

    Since 1.0.0-dp.14
    Fixes
    • CXXCBC-482: Updated range scan orchestrator to use best effort retry strategy by default (#542).

    • CXXCBC-481: Fixed potential crash when parsing search result hits (#541).

    • CXXCBC-461: Updated ping operation to not send to nodes that have not completed bootstrap (#540).

    • CXXCBC-480: Fixed capabilities check for replica LookupIn operations (#539).

    • CXXCBC-479: Fixed capabilities check for replica LookupIn operations (#537).

    • CXXCBC-336: Updated DNS config to not fallback to 8.8.8.8 if SDK cannot obtain system DNS server (#533).

    Since 1.0.0-dp.13
    New features and enhancements
    • CXXCBC-456: Updated configuration logic when 0x0d (EConfigOnly) status code is received to have the SDK request new configuration and send current operation to retry orchestrator (#523).

    • CXXCBC-191: Index Key Encoding (#519) — in line with the rfc, the fields paramaeter is now remamed to keys in the Public API’s create_index(), and each index key provided to create_index() is encoded by surrounding them with backticks.

    • Added full_set option to view query options (#517).

    Fixes
    • CXXCBC-345: Added range scan improvements and resolved concurrency issues (#525).

    • CXXCBC-284: Updated config polling to not use session that is not bootstrapped (#528).

    • CXXCBC-447: Updated bootstrap logic to use addresses from the config to bootstrap bucket (#516).

    • CXXCBC-450: Updated bootstrap logic to reset bootstrap handler before re-bootstrap (#524).

      • We do not want any actions from the old bootstrap handler once the session decided to re-bootstrap. For example, bucket could not be selected, but we might still get configuration responses before socket reset.

    • CXXCBC-452: Updated capabilities and fail fast when selected feature is not available (#522, #513).

    • CXXCBC-431: Added check for history retention bucket capability in collection create/update (#502, #505).

    • CXXCBC-421: Updated query operation to return feature_not_available if query preserve expiry is specified but is not supported on the server(#510).

    Since 1.0.0-dp.12
    New features and enhancements
    • CXXCBC-346: Support added for maxTTL value of -1 for collection 'no expiry' (#500).

    • CXXCBC-442: Transcoder support - which was previously limited in the SDK to JSON and RawBinary transcoders — has now been extended to raw_json and raw_string transcoders (#514, #515).

    • CXXCBC-440: Support added for Scoped Search Indexes (#512, #513).

    Fixes
    • CXXCBC-284: Updated config polling to not use session that is not bootstrapped, to reduce network traffic when polling for cluster configuration (#504, #528).

    • CXXCBC-422: Added insufficient credentials error code to common query error code conversion (#511).

    • CXXCBC-421: Updated query operation to return feature_not_available if query preserve expiry is specified but is not supported on the server(#510).

    • CXXCBC-426: Under testing, a get with very large projection was returning fields outside of the projection. This has been fixed, with the projections now set correctly, and the SDK should fall back to a full-doc fetch and return a valid projected result (#499).

    Since 1.0.0-dp.11
    Fixes
    • CXXCBC-404: Fixed unlock operations to expose KV_LOCKED status as cas_mismatch (#479).

    • CXXCBC-403: Updated not_my_vbucket KV response to allow retries (#480).

    • CXXCBC-368: Added support for subscribing to clustermap notifications to speed up failover (#490).

    • CXXCBC-419: Updated MCBP protocol parser to start with clean state. Fixes protocol parsing issues when bootstrap sequence is being retried (#496).

    • CXXCBC-409: Added handling for index does not exist query error (#492).

    • CXXCBC-391: Fixed transactions API inconsistencies (#482):

    • Removed kv_timeout,

    • Renamed expiration_time to timeout.

    New features and enhancements

    • CXXCBC-100: Added ability to set timeout for ping (#486).

    • CXXCBC-412: Added support for the document_not_locked (0x0e) KV status, mapping it to the errc::key_value::document_not_locked error code (#491).

    Since 1.0.0-dp.10
    Fixes
    • CXXCBC-383: The subdoc_doc_too_deep (0xc4) KV status now returns a`path_too_deep` error code (#455).

    New features and enhancements
    • CXXCBC-377: Implemented ExtParallelUnstaging in transactions (#457).

    • CXXCBC-363: Added examples for bulk operations (#442).

    • Added more information to diagnose timeouts on NMV responses (#475).

    Checksum

    couchbase-4.2.0.sha256sum

    Source

    couchbase-4.2.0.tgz

    Linux

    x86_64

    PHP 8.1

    NTS

    couchbase-4.2.0-php8.1-nts-linux-x86_64.tgz

    Linux

    x86_64

    PHP 8.1

    ZTS

    couchbase-4.2.0-php8.1-zts-linux-x86_64.tgz

    Linux

    x86_64

    PHP 8.2

    NTS

    couchbase-4.2.0-php8.2-nts-linux-x86_64.tgz

    Linux

    x86_64

    PHP 8.2

    ZTS

    couchbase-4.2.0-php8.2-zts-linux-x86_64.tgz

    Linux

    x86_64

    PHP 8.3

    NTS

    couchbase-4.2.0-php8.3-nts-linux-x86_64.tgz

    Linux

    x86_64

    PHP 8.3

    ZTS

    couchbase-4.2.0-php8.3-zts-linux-x86_64.tgz

    Linux

    x86_64 (musl)

    PHP 8.1

    NTS

    couchbase-4.2.0-php8.1-nts-linux-musl-x86_64.tgz

    Linux

    x86_64 (musl)

    PHP 8.2

    NTS

    couchbase-4.2.0-php8.2-nts-linux-musl-x86_64.tgz

    Linux

    x86_64 (musl)

    PHP 8.3

    NTS

    couchbase-4.2.0-php8.3-nts-linux-musl-x86_64.tgz

    MacOS

    x86_64

    PHP 8.1

    NTS

    couchbase-4.2.0-php8.1-nts-macos-x86_64.tgz

    MacOS

    x86_64

    PHP 8.1

    ZTS

    couchbase-4.2.0-php8.1-zts-macos-x86_64.tgz

    MacOS

    x86_64

    PHP 8.2

    NTS

    couchbase-4.2.0-php8.2-nts-macos-x86_64.tgz

    MacOS

    x86_64

    PHP 8.2

    ZTS

    couchbase-4.2.0-php8.2-zts-macos-x86_64.tgz

    MacOS

    x86_64

    PHP 8.3

    NTS

    couchbase-4.2.0-php8.3-nts-macos-x86_64.tgz

    MacOS

    x86_64

    PHP 8.3

    ZTS

    couchbase-4.2.0-php8.3-zts-macos-x86_64.tgz

    MacOS

    arm64

    PHP 8.1

    NTS

    couchbase-4.2.0-php8.1-nts-macos-arm64.tgz

    MacOS

    arm64

    PHP 8.1

    ZTS

    couchbase-4.2.0-php8.1-zts-macos-arm64.tgz

    MacOS

    arm64

    PHP 8.2

    NTS

    couchbase-4.2.0-php8.2-nts-macos-arm64.tgz

    MacOS

    arm64

    PHP 8.2

    ZTS

    couchbase-4.2.0-php8.2-zts-macos-arm64.tgz

    MacOS

    arm64

    PHP 8.3

    NTS

    couchbase-4.2.0-php8.3-nts-macos-arm64.tgz

    MacOS

    arm64

    PHP 8.3

    ZTS

    couchbase-4.2.0-php8.3-zts-macos-arm64.tgz

    PHP SDK 4.1 Releases

    Version 4.1.6 (10 October 2023)

    Source

    couchbase-4.1.6.tgz

    Checksum

    couchbase-4.1.6.sha256sum

    Enhancements

    • PCBC-956: Updated wrapper-side bucket settings — to now use new BucketSettings optional fields in underlying C++ core (#132).

    • PCBC-950: Added support to bucket settings for no dedup feature (#131).

    • PCBC-955: Preventing trailing garbage in encoded CAS value (#134).

    • Updates to support PHP 8.3: zend_bool was removed from 8.3.

    Underlying C++ SDK Core Changes

    • CXXCBC-376: Changed what 'create' and 'update' bucket operations send to the server. Unrequired BucketSettings fields are now set to optional, and are not sent unless the settings are explicitly specified. (#451).

    • CXXCBC-374: The SDK should now return a 'bucket_exists' error when the bucket already exists during a 'create' operation. (#449).

    • CXXCBC-359: Reduced the default timeout for idle HTTP connections to 1 second. The previous default (4.5 seconds) was too close to the 5-second server-side timeout, and could lead to spurious request failures. (#448).

    • CXXCBC-367, CXXCBC-370: Added history retention settings to buckets/collection management (#446).

    • CXXCBC-119: Return booleans for subdocument 'exists' operation, instead of error code (#444, #452).

    • Detect collection_not_found error in update_collection response (#450).

    Version 4.1.5 (21 August 2023)

    Source

    couchbase-4.1.5.tgz

    Checksum

    couchbase-4.1.5.sha256sum

    Enhancements

    • PCBC-939: Added support for query with Read from Replica (#118).

    • PCBC-831: Implemented search index management (#115).

    • PCBC-945: Expiry options for increment/decrement are now exposed, as they were before 4.0.0 (#120).

    • PCBC-937: Fixed removeMulti, which now correctly removes documents (#123).

    • PCBC-938: Override exception constructor in PHP Extension, which allows to initialize context in derived classes (#117).

    • PCBC-940: Added support for subdoc Read from Replica (#121).

    • PCBC-884: Added support for Native KV range scans (#122, #127).

    Underlying C++ SDK Core

    Version 4.1.4 (26 May 2023)

    Source

    couchbase-4.1.4.tgz

    Checksum

    couchbase-4.1.4.sha256sum

    Enhancements

    • Added couchbase:: namespace to durability_level, which fixes using Sync Durability. (#102)

    • PCBC-934: Fixed setting timeout for transactions.

    Underlying C++ SDK Core

    • CXXCBC-327: Bundled Mozilla certificates with the library (#405, #408). Source: https://curl.se/docs/caextract.html. Use the disable_mozilla_ca_certificates connection string option to disable the bundled certificates.

    • CXXCBC-324: Port and network name now checked on session restart, improving performance during rebalance (#401).

    • CXXCBC-323: bootstrap_timeout and resolve_timeout can now be used in the connection string (#400).

    • Introduced dump_configuration option for debugging. (#398) It logs cluster configuration at trace level.

    Version 4.1.3 (13 April 2023)

    Source

    couchbase-4.1.3.tgz

    Checksum

    couchbase-4.1.3.sha256sum

    Enhancements

    • PCBC-915: Fixed incorrect handling of timestamps as expiry in mutation options (#88).

    • PCBC-828: Implemented collection management (#89).

    • PCBC-918: Extra attributes in ExistsResult (deleted, expiry, flags, and sequenceNumber) are now optional (#95).

    Underlying C++ SDK Core

    • CXXCBC-31: Allow the use of schemaless connection strings (e.g. "cb1.example.com,cb2.example.com") (#394).

    • CXXCBC-318: Always try TCP if UDP fails in DNS-SRV resolver (#390).

    • CXXCBC-320: Negative expiry in atr was leaving docs in a stuck state — this has been fixed, with expiry atr now becoming an int32_t (#393).

    • CXXCBC-310: Improved shutdown of the LostTxnCleanup thread (#389).

    Version 4.1.2 (20 March 2023)

    Source

    couchbase-4.1.2.tgz

    Checksum

    couchbase-4.1.2.sha256sum

    Enhancements

    • PCBC-888: Added new method Collection#queryIndexes that allows to manage query indexes defined for the collection (#68).

    • Added optional context to CouchbaseException constructor (#85).

    Underlying C++ SDK Core

    • CXXCBC-144: Search query on collections no longer requires you to pass in the scope name — it is inferred from the index (#379).

    • CXXCBC-145: Search query request, raw option added (#380).

    • CXXCBC-194: The SDK now supports the ExtThreadSafe transaction extension (#374, #376).

    • CXXCBC-316: When a document is removed in a transaction, and then a call made to get_optional, we expect to just get an empty optional. However, the handling was raising a transaction_operation_failed This has been fixed, and an empty optional will now be returned (#385).

    • CXXCBC-310: Fixed race condition in transaction_context state machine (#386, #378).

    Version 4.1.1 (22 February 2023)

    Source

    couchbase-4.1.1.tgz

    Checksum

    couchbase-4.1.1.sha256sum

    Enhancements

    • PCBC-869: Implemented changePassword for management API (#55, #56)

    • PCBC-891: Append extension version info to HELLO indentifier (#58)

    • PCBC-901: Attach error details to management exceptions (#71)

    • Increase required PHP version up to 8.0 (#76)

    Fixes

    • PCBC-890: Scope must implement ScopeInterface (#57)

    • PCBC-899: Ensure the connection will be closed on error (#70)

    • PCBC-900: Don’t set "function" property on exceptions. (#74)

    • PCBC-905: Don’t dereference empty optional if option is not set (#75)

    • PCBC-907: Assign meta to view query result (#79)

    • Fix missing header for GCC 13 (#63)

    Underlying C++ SDK Core

    Notable Changes in C++ SDK 1.0.0-dp.4

    • CXXCBC-275: Update implementation query context fields passed to the server. In future versions of the server versions it will become mandatory to specify context of the statement (bucket, scope and collection). This change ensures that both future and current server releases supported transparently.

    • CXXCBC-296: Force PLAIN SASL auth if TLS enabled. Using SCRAM SASL mechanisms over TLS protocol is unnecesary complication, that slows down initial connection bootstrap and potentially limits server ability to improve security and evolve credentials management.

    • CXXCBC-295: The get with projections opration should not fail if one of the the paths is missing in the document, because the semantics is "get the partial document" and not "get individual fields" like in lookup_in operation.

    • CXXCBC-294: In the Public API, if get operation requested to return expiry time, zero expiry should not be interpreted as absolute expiry timestamp (zero seconds from UNIX epoch), but rather as absense of the expiry.

    • CXXCBC-291: Allow to disable mutation tokens for Key/Value mutations (use enable_mutation_tokens in connection string).

    • Resource management and performance improvements:

      • Fix tracer and meter ref-counting (#370)

      • Replace minstd_rand with mt19937_64, as it gives less collisions (#356)

      • CXXCBC-285: Write to sockets from IO threads, to eliminate potential race conditions. (#348)

      • Eliminate looping transform in mcbp_parser::next (#347)

      • CXXCBC-205: Use thread-local UUID generator (#340)

      • CXXCBC-293: Performance improvements:

        • Speed up UUID serialization to string (#346)

        • Don’t allow to copy mcbp_message objects (#345)

        • Avoid extra allocation and initialization (#344)

    • Build system fixes:

      • Fix build with gcc-13 (#372)

      • Fix gcc 12 issue (#367)

    • Enhancements:

      • Include bucketless KV service when ping is requested. (#339)

      • Include OS name in SDK identifier (#349)

    Version 4.1.0 (20 January 2023)

    Version 4.1.0 brings a number of improvements related to internal connection behavior.

    Source

    couchbase-4.0.0.tgz

    Checksum

    couchbase-4.0.0.sha256sum

    New Features

    • PCBC-824: Implemented replica reads.

    • PCBC-630: Implemented legacy durability for mutations (replicateTo/persistTo options)

    • PCBC-880: Support for configuration profiles

    Fixes

    • PCBC-889: Fixed behaviour of 'skip' SearchOption.

    • Bug fixes: logger and build improvements

    Caveats

    There are no pre-built binaries for the Windows platform of PHP SDK 4.1.0. But there are steps in WINDOWS.md, that describe how to build an extension along with PHP interpreter.

    PHP SDK 4.0 Releases

    PHP SDK 4.0 is written to version 3.3 of the SDK API specification (and matching the features available in Couchbase 7.1 and earlier).

    Version 4.0.0 (11 May 2022)

    Version 4.0.0 is the first major release of the next generation PHP SDK, built on the Couchbase++ library — featuring multi-document distributed ACID transactions, and bringing a number of improvements related to internal connection behavior.

    Source

    couchbase-4.0.0.tgz

    Checksum

    couchbase-4.0.0.sha256sum

    New Features

    • PCBC-806: Migrated core to Couchbase++.

    • PCBC-797: Updated the Query Index management API to use scopes and collections.

    • PCBC-836: Added support for the Transactions API.

    Caveats

    There are no pre-built binaries for the Windows platform of PHP SDK 4.0.0. But there are steps in WINDOWS.md, that describe how to build an extension along with PHP interpreter.

    Older Releases

    See: