couchbase: Changelog

Version Message
4.2.4 Enhancements
============

* PCBC-832: Management API - Analytics Management (#177).

* Core updated to 1.0.3. Release notes:
https://docs.couchbase.com/cxx-sdk/current/project-docs/sdk-release-notes.html#version-1-0-3-22-october-2024

Fixes
=====

* PCBC-1009: do not use IS_RESOURCE in function signatures.

* PCBC-1010: use explicit nullable types where applicable to avoid deprecation warning in PHP 8.4.

* Fix SearchQuery API docs link in API reference.
4.2.3 Enhancements
============

* Core updated to 1.0.1. Release notes:
https://docs.couchbase.com/cxx-sdk/current/project-docs/sdk-release-notes.html#version-1-0-1-22-august-2024
4.2.2 Fixes
=====

* PCBC-997: Do not export development files. (#172)
Exclude C++ files, tests and development scripts, so that Packagist will
not install them to the application ./vendor directory.

* PCBC-991: Add consistency utility for testing (#168)

* PCBC-989: Rollback to cmake 3.19 (#167)

* PCBC-988: Fix type annotation for JsonSerializable implementations (#166)

Enhancements
============

* PCBC-994: Support for base64 encoded vector types (#169, #170)

* Core updated to 1.0.0. Release notes:
https://docs.couchbase.com/cxx-sdk/current/project-docs/sdk-release-notes.html#version-1-0-0-26-june-2024
4.2.1 Fixes
=====

* PCBC-987: Fix consistency vector encoding for FTS (#163)
* PCBC-985: Use system DNS config by default, and disable DNS-SRV if
system does not provide DNS server. (#159)

Enhancements
============

* PCBC-859: Update build scripts and instructions for Windows (#158, #164)
* PCBC-984, PCBC-987: Improve compatiblity with pcntl_fork() (#157, #162)

Notable changes in core C++
===========================

1.0.0-dp.14
-----------

## Enhancements

* CXXCBC-489: Support scoped eventing functions. (#548)
* CXXCBC-489: Add `version_7_2_0 eventing` function language compatibility. (#554)
* CXXCBC-470: Distinguish between 'unset' and 'off' query_profile (#551)

## Fixes

* CXXCBC-487: Check if alternate addressing is used when bootstrapping. (#545)
* CXXCBC-503: Ignore configuration if it contains an empty vBucketMap. (#556, #558)
* CXXCBC-30: Inconsistent behaviour when using subdoc opcodes incorrectly (#559)
* CXXCBC-492: Use retry strategy in collections_component's get_collection_id. (#552)
* CXXCBC-494: Fix memory issue in range scan implementation. (#549)
* Always attempt to extract common query code if error has not been
set. (#561) Fixes quota/rate limit checks for older servers.

## Build and Tests Fixes

* CXXCBC-502: Apply `/bigobj` for SDK objects only. (#550) Avoid using
global add_definitions() as it might leak to non-CXX languages (like
`ASM_NASM` on Windows).
* Add feature check for scoped analyze_document in tests (#555)
4.2.0 Enhancements
============

* PCBC-979: Add static helpers to SearchQuery types (#149)
* PCBC-970: SDK Support for Scoped Search Indexes (#147)
* PCBC-968: Support for maxTTL value of -1 for collection "no expiry" (#144)
* PCBC-967: Support for vector search (#143)
* PCBC-965: Support DocNotLockedException and core update (#142)
* PCBC-960: Merge protostellar branch to master (#138, #153)

Fixes
=====

* PCBC-964: Wait until the core connection is closed (#141)
* PCBC-972: Fix C++ detection on MacOS X (#145)
* Add missing use statement in class DecrementOptions (#146)
* Update core and rename query_index_create fields to keys (#148)

Notable changes in core C++
===========================

Since 1.0.0-dp.14
-----------------

## Fixes

* CXXCBC-482: Range scan orchestrator should use best effort retry strategy by default. (#542)
* CXXCBC-481: Fix potential crash when parsing search result hits. (#541)
* CXXCBC-461: Do not send ping to nodes that have not completed bootstrap. (#540)
* CXXCBC-480: LookupInAnyReplica should not enforce any limits on number of specs in the library. (#539)
* CXXCBC-479: Fix capabilities check for replica LookupIn operations. (#537)
* CXXCBC-336: Do not fallback to 8.8.8.8, if we cannot obtain system DNS server (#533)

Since 1.0.0-dp.13
-----------------

## New features and enhancements

* CXXCBC-456: handle 0x0d (config_only) status from KV (#523).
* CXXCBC-191: Create Index Key Encoding (#519)
* CXXCBC-442: Add support for raw_json and raw_string transcoders (#514, #515)
* Add full_set option to view query options (#517)

## Fixes

* CXXCBC-345: Range scan improvements resolve concurrency issues (#525).
* CXXCBC-284: Do not use session that is not bootstrapped to poll for config (#528)
* CXXCBC-447: Use addresses from the config to bootstrap bucket (#516)
* CXXCBC-450: Reset bootstrap handler before re-bootstrap (#524).
* Update view design_document rev to be optional (#526).
* Change encoded search request showrequest param from string to boolean. (#518)
* CXXCBC-452: Update capabilities and fail fast when selected feature is not available. (#522, #513)
* CXXCBC-431: Add check for history retention bucket capability in collection create/update (#502, #505)
* CXXCBC-421: Return feature_not_available when query preserve expiry is not supported (#510)

Since 1.0.0-dp.12
-----------------

## New features and enhancements

* CXXCBC-346: Support for maxTTL value of -1 for collection 'no expiry'. (#500)
* CXXCBC-442: Support for raw_json and raw_string transcoders. (#514)
* CXXCBC-440: Support for Scoped Search Indexes. (#512, #513)

## Fixes

* CXXCBC-284: Reduce network traffic when polling for cluster configuration. (#504)
* CXXCBC-422: Add insufficient credentials error code to common query error code conversion. (#511)
* CXXCBC-421: Return `feature_not_available` when query preserve expiry is not supported. (#510)
* CXXCBC-426: Get with very large projection test is returning fields outside of the projection. (#499)

Since 1.0.0-dp.11
-----------------

## Fixes

* CXXCBC-404: KV_LOCKED status should be exposed as `cas_mismatch` for unlock. (#479)
* CXXCBC-403: Allow retries for KV `not_my_vbucket` response. (#480)
* CXXCBC-368: Subscribe to clustermap notifications to speedup failover. (#490)'
* CXXCBC-419: Ensure that MCBP protocol parser starts with clean state. Fixes protocol parsing issues when bootstrap sequence is being retried. (#496)
* CXXCBC-409: Add handling for 'index does not exist' query error. (#492)
* CXXCBC-391: Fix transactions API inconsistencies. (#482)
* Remove `kv_timeout`
* Rename `expiration_time` to `timeout`


## New features and enhancements

* CXXCBC-100: Add ability to set timeout for ping. (#486)
* CXXCBC-412: Support `document_not_locked` response. (#491)

Since 1.0.0-dp.10
-----------------

## Fixes

* CXXCBC-383: Map `subdoc_doc_too_deep` KV status to `path_too_deep` error code. (#455)
* CXXCBC-382: Fix `raw_binary_transcoder` so that `get`s on binary data are possible. (#459)

## New features and enhancements

* CXXCBC-377: Implement ExtParallelUnstaging in transactions. (#457)
* CXXCBC-363: Add examples for bulk operations. (#442)
* Add more information to diagnose timeouts on NMV responses. (#475)
* Migrate cbc tools from `docopt` to `CLI11`. (#466)
4.1.6 * PCBC-956: Update wrapper side bucket settings (#132)
* PCBC-950: Support bucket settings for no dedup feature (#131)
* Updates to support PHP 8.3. `zend_bool` was removed from 8.3.

Notable changes in core C++
---------------------------
* CXXCBC-376: Revisit what 'create' and 'update' bucket operations send to the server. Make optional bucket
settings fields optional, and do not send anything unless the settings explicitly specified. (#451)
* CXXCBC-359: Reduce default HTTP idle timeout to 1 second (#448)
* CXXCBC-367, CXXCBC-370: Add 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)
4.1.5 PCBC-939: Support query with read from replica. (#118)
PCBC-831: Implement search index management. (#115)
PCBC-945: Expose expiry options for increment/decrement. (#120)
PCBC-937: Fix `removeMulti`, which didn't remove documents. (#123)
PCBC-938: Override exception constructor in PHP Extension, which allows to initialize context in derived classes. (#117)
PCBC-940: Support for subdoc read from replica. (#121)
PCBC-884: Support for Native KV range scans. (#122, #127)

Notable changes in core C++
---------------------------
CXXCBC-333: Fix parsing resolv.conf on Linux (#416)
CXXCBC-335: Log connection options (#417)
CXXCBC-343: Continue bootsrap if DNS-SRV resolution fails (#422)
CXXCBC-242: SDK Support for Native KV Range Scans (#419, #423, #424, #428, #431, #432, #433, #434, #426)
CXXCBC-339: Disable older TLS protocols (#418)
4.1.4 * Add `couchbase::` namespace to `durability_level`, fixes using Sync Durability. (#102)
* PCBC-934: Fixed setting timeout for transaction.

Notable changes in core C++
---------------------------

* CXXCBC-327: bundle Mozilla certificates with the library (#405, #408)
* CXXCBC-324: check port and network name on session restart (#401)
* CXXCBC-323: parse bootstrap_timeout and resolve_timeout in connection string (#400)
* introduce option dump_configuration for debugging (#398)
4.1.3 * PCBC-915: Fixed timestamp as expiry in mutation options (#88)
* PCBC-828: Implemented collection management (#89)
* PCBC-918: Extra attributes in ExistsResult now optional (deleted, expiry, flags, and sequenceNumber) (#95)

Notable changes in core C++
---------------------------

* CXXCBC-31: Allow to use schema-less connection strings (#394)
* CXXCBC-318: Always try TCP if UDP fails in DNS-SRV resolver (#390)
* CXXCBC-320: Negative expiry in atr can 'stuck' docs. (#393)
* CXXCBC-310: Improve shutdown of the LostTxnCleanup thread. (#389)
4.1.2 * PCBC-888 handle query context changes (#68)
* Added optional context to CouchbaseException constructor (#85)

Notable changes in core C++
---------------------------

* OpenSSL and CentOS 7 (#382)
* CXXCBC-144: Search query on collections should not require you to pass in the scope name (#379)
* CXXCBC-145: Search query request raw option not used (#380)
* CXXCBC-194: Support ExtThreadSafe transaction extension. (#374, #376)
* CXXCBC-316: Core txn get_optional after query issue (#385)
* CXXCBC-310: Fixed race condition in transaction_context state machine (#386, #378)
4.1.1 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-902: Make sure that new account is usable in changePassword test (#72)
* 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)

Notable changes in core C++ 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
* Replace `minstd_rand` with `mt19937_64`, as it gives less
collisions.
* CXXCBC-285: Write to sockets from IO threads, to eliminate
potential race conditions.
* Eliminate looping transform in `mcbp_parser::next`.
* CXXCBC-205: Use thread-local UUID generator.
* CXXCBC-293: Other performance improvements:
* Speed up UUID serialization to string
* Don't allow to copy `mcbp_message` objects
* Avoid extra allocation and initialization

* Build system fixes:
* Fix build with gcc-13
* Fix gcc 12 issue

* Enhancements:
* Include OS name in SDK identifier
4.1.0 * PCBC-824: implement replica reads
* PCBC-630: implement legacy durability for mutations
* PCBC-880 support for configuration profiles
* PCBC-889 'Skip' SearchOption has no effect
* Bug fixes, logger and build improvements
4.0.0 * Migrate core to C++ SDK
* Update query index management API to accept collections
* PCBC-836: implemented Transactions API
3.2.2 PCBC-796: add storage backend option for bucket manager
PCBC-788: handle rate/quota limit error codes
PCBC-799: implement {get,upsert,remove}Multi
Update jsonSerialize methods to stop deprecations errors in php 8.1
3.2.1 PCBC-770: Fixed memory leak while decoding subdoc JSON.
PCBC-782: Updated minimal requirement for libcouchbase to 3.2.2.
Other memory fixes and improvements.
3.2.0 PCBC-750: Deprecate `getScope` in collections manager.
PCBC-725: Add support for collections to Full Text Search.
PCBC-764: Serialize `BooleanSearchQuery->mustNot` to `"must_not"`.
PCBC-709: Add scope level analytics queries.
PCBC-732: Expose partition information for query indexes.
PCBC-733: Add analytics index manager.
PCBC-769: Do not allow using CAS with counter operations, which are always atomic.
PCBC-767: Fix URL for collection create method.
PCBC-738: Add `preserveExpiry` support for mutations (`replace`, `upsert` and `mutateIn`).
PCBC-700: Manage remote links for analytics service.
PCBC-706: Provide tracing interface.
PCBC-743: Provide metrics interface.
3.1.2 PCBC-761: fix return interface for expiryTime methods.
PCBC-760: expose error messages in query exceptions.
PCBC-759: take into account 'decoder.json_arrays' INI setting when decoding Query rows.
PCBC-758: raise exception if invalid CAS passed to unlock.
PCBC-729: update URLs for Collections management API.
3.1.1 PCBC-745: throw BadInputException when string cannot be used as CAS
PCBC-746: add tests for transcoding empty value
PCBC-748: fix *Option#expiry() return value in documentation stubs
3.1.0 PCBC-742: Propagate custom value transcoder to results
PCBC-707: Add scope-level query and scope qualifier support for QueryOptions.
PCBC-741: Fix memory leak in Bucket::viewQuery()
PCBC-734: Fix destruction of SearchOptions.
PCBC-591: KeyNotFoundException is an alias for DocumentNotFoundException
3.0.5 * PCBC-699: Add support for minimal durability settings for bucket manager
* PCBC-718: Deprecate expiry() on GetResult and LookupInResult. expiry() is deprecated in favour to expiryTime()
which returns DateTimeInterface
* PCBC-715: refactor document expiry duration
- allow to specify DateTimeInterface objects as expiry value in mutation options
- when expiration is set as long in seconds, treat the value as relative if it is less than 50 years in
seconds. In this case take current time and add to the expiration value
* PCBC-733: Add missing fields for SearchFacet results
* PCBC-720: allow to disable FTS scoring
* Support PHP 8. Drop support for PHP older than 7.2
3.0.4 * PCBC-722: Fix boolean search query encoding
* PCBC-703: Add support for query with FlexIndex (FTS)
* PCBC-719: Enhance user management for collections
* PCBC-702: Implement geopolygon FTS query
* PCBC-705: Update eviction policy types. Now it covers ephemeral buckets
* PCBC-721: Allow to fallback to bucket connection for older servers
3.0.0beta1 * First beta release
3.0.0alpha4 * fourth alpha release
3.0.0alpha3 * third alpha release
3.0.0alpha2 * second alpha release
3.0.0alpha1 * first alpha release
2.6.2 * fixed possible segfault in N1QL request
* fixed windows build for PHP 7.4
* PCBC-646: Fixed issue with blank string decoding.
2.6.1 * documentation updates
* improved test integration with CouchbaseMock
2.6.0 * PCBC-562: Allow disabling caching (persistent) connections by setting couchbase.pool.max_idle_time_sec to zero.
* PCBC-560: Positional, named and raw parameters for Analytics
2.5.0 * PCBC-551: Do not complain about missing igbinary on start
* PCBC-552: Pass logger to lcb_create to catch all log messages
* PCBC-553: Check if crypto provider implements IV and signatures
* PCBC-554: Fix search query descending order to use "desc"
* PCBC-544: Implement CertAuthenticator for extra checks
* Fixes for PHP 7.3
2.4.7 * PCBC-534: Add profile N1QL query parameter.
* PCBC-538: do not dereference NULL values after encoding.
* PCBC-549, PCBC-541: Update crypto interfaces.
2.4.6 * PCBC-523: Add tracing support for queries and the rest of KV commands.
* PCBC-536: Make it clear that timeout properties use microseconds.
* PCBC-531: Field encryption (See https://packagist.org/packages/couchbase/couchbase-encryption).
* PCBC-537: Implement Bucket#getName() returning bucket name.
2.4.5 * PCBC-527: Initial tracing implementation. The extension checks if libcouchbase has tracing support, and sets up hooks for fetch/persist operations to report encoding/decoding times. This functionality is preview and is not enabled by default.
* PCBC-519: Implement log redaction. When `log_redaction=on` is specified in the connection string, the library will wrap sensitive data in the logs in special tags, which can be processed by the `cblogredaction` tool from the server distribution.
2.4.4 * PCBC-508: Add support for FTS advanced sorting
2.4.3 * PCBC-518: Detect and cleanup connections left in bad state
* PCBC-525: Fix memory leak for schemaless connspec
* PCBC-497: Add health check functions
* PCBC-524: Fix memory leak when using authenticateAs()
* PCBC-520: Add example for authentication with x.509 certificate
* PCBC-522: Check username/password for NULL in Classic Authenticator
* PCBC-516: Append information about runtime to HELLO string
2.4.2 * PCBC-515: allow to specify expiration for subdocument mutations
* PCBC-509: implement fulldoc operations for subdoc API
* PCBC-442: fail fast view requests on ephemeral buckets
* PCBC-513: make public API non-final (remove final attribute from classes and methods)
2.4.1 * PCBC-493: Implement subdoc GET_COUNT API.
* Update AnalyticsQuery API: removed experimental hostname() method as it derived from cluster config now.
* Allow to override default pool connectime idle time with `couchbase.pool.max_idle_time_sec` INI setting.
* PCBC-503, PCBC-504: Improve running tests.
2.4.0 * Add more examples (XATTRs and RBAC user management).
* PCBC-505: Enable error maps for libcouchbase 2.8.0. For higher versions it will be enabled by libcouchbase.
* PCBC-499: Expose more query options on N1QL query for advanced tuning query performance
* PCBC-485: Expose enhanced error message. The server might fill properties "context" and "ref" of the error.
2.3.4 * PCBC-495: update user management APIs
* PCBC-478: add tests for Error Map using CouchbaseMock
2.3.3 * PCBC-487: Fix adhoc vs prepared query logic. It should be inversed manually before 2.3.3.
* PCBC-494: Fix double free error in passthruEncoder
* PCBC-475: Add support for Term Range Query (full text search).
* PCBC-475: Add support for geo search queries.
* PCBC-468: Add support for user CRUD in ClusterManager
* PCBC-489: Add shortcut for PasswordAuthenticator as Cluster->authenticateAs($username, $password)
2.3.2 * PCBC-473: fix incorrect bucket reference copy in subdocument
mutation/lookup builders, which might lead to segfault.
* PCBC-474: fix segfault when using ViewQuery::keys()
* PCBC-476: do not call destructors on unintialized ZVALs. Fixes possible
segfaults with view queries on PHP 5.x.
* PCBC-477: lookup JsonSerializable interface in run time, instead of compile time
using php_json_serializable_ce symbol. This fixes support on some 5.4-5.5 builds.
* PCBC-479: do not allow to create objects in invalid state. For example Cluster
might return an instance, and only show PHP warning on invalid arguments.
* PCBC-481: Bucket->counter() without specifying delta value results in
null pointer dereference.
* PCBC-482: mapSize/setExists/setRemove methods of Bucket did not check if 'get'
sub-request had thrown exception. This cause segfault, if operation executed on
keys which do not exist.
* PCBC-453: verify that ClusterManager supports ephemeral buckets
* PCBC-451: add RBAC support in \Couchbase\PasswordAuthenticator class (Couchbase
Server 5.x feature).
* PCBC-440: add experimental support of extended attributes for subdocument operations.
2.3.1 * PCBC-459: restore \Couchbase\Bucket::unlock() method, which has been
lost in refactoring
* PCBC-460: prefer managed strings to persistent when storing document
values.
* PCBC-461: deallocate intermediate results when using encoder compression
* PCBC-462: replace new lines in log entries with space
* PCBC-464: fix NumericRangeFacet with NULL boundary on PHP 5.4
* PCBC-463: fix incorrect reference counting on Search API. (might lead to
segfaults and leaks)
* PCBC-465: check encoded ViewQuery before sending to libcouchbase
* PCBC-467: intermediate values in Datastructures API might leak.
(e.g. result of internal "get" to find out size of the list)
* PCBC-469: implement SearchQuery->sort() function to support sorting FTS
results, which is accessible in Couchbase Server 4.6+
* PCBC-471: fixed issue, when the library always use credentials for the
first bucket in Authenticator.
* PCBC-441: add experimental support of Analytics query.
https://developer.couchbase.com/documentation/server/4.5/analytics/introduction.html
2.3.0 * PCBC-443: Remove PCS dependency and rewrite PHP stubs using Zend C API
* PCBC-382: Implement cluster-level authorization using ClassicAuthenticator
* Migrate API to \Couchbase namespace (old API still available on toplevel as aliases,
see tests/AliasesTest.php)
* PCBC-383: Cross-bucket joins for N1QL (see examples/api/couchbase.N1qlQuery.crossBucket.php)
* Refresh API documentation, describe all input options, put everything into single file
(see api/*.php), and prepare them for PHPStorm (https://github.com/JetBrains/phpstorm-stubs/pull/180)
* PCBC-386: Implement Datastructures API: List, Set, Map and Queue (see tests/DatastructuresTest.php)
* Improve connection management, persistent connections by default, track and close idle connections.
2.2.4 This is the GA release of the 2.2.4 SDK. It is a maitenance release
with several fixes:

Changes:
* PCBC-401: embed PHP classes using pcs. This fixes performance issue,
where the extension spending time during each request to evaluate
and load Couchbase classes written in PHP. The pecl/pcs extension
have to be installed and loaded before loading couchbase SDK.
* PCBC-439: reset MCISCOMPRESSED before type detection.
This fixes decoding compressed values.
* PCBC-438: install callback for replica read command.
This fixes getFromReplica() returning NULL.
* Documentation updates and bug fixes
2.2.3 This is the GA release of the 2.2.3 SDK. It is a maitenance release
with several fixes:

Changes:
* PCBC-389: deserialize legacy docs as JSON with falling back to old behaviour
* PCBC-428: use correct exception when credentials missing for CouchbaseClusterManager
* Documentation updates and bug fixes
2.2.2 This is the GA release of the 2.2.2 SDK. It is a maitenance release
with several fixes:

Changes:
* PCBC-410: consolidate libcouchbase and extension loggers, and expose them through PHP logger
* PCBC-409: bubble errors from server on view upsert
* PCBC-417: do not send duplicated requests for multi-get
* PCBC-423: report N1QL error details via logger
* Documentation updates and bug fixes
2.2.1 This is the GA release of the 2.2.1 SDK. It is a maitenance release
with several fixes:

Changes:
* PCBC-416: fix segfault on multi-get for duplicated keys.
* PCBC-414: return $this from N1qlQuery methods
* Documentation updates and bug fixes
2.2.0 This is the GA release of the 2.2.0 SDK. It includes more features
to support new Couchbase Server 4.5 release and bug fixes.

Changes:
* PCBC-393: Support for enhanced durability
* PCBC-398: expose methods for parameterized N1QL queries
* PCBC-382: cluster level authentication
* Expose meta for N1QL and Search queries
* Documentation updates and bug fixes
2.2.0beta4 This is fourth beta release of 2.2.0 SDK. It includes more features
to support new Couchbase Server 4.5 release and bug fixes.

Changes:
* PCBC-380: support AT_PLUS consistency
* PCBC-381: support for Full Text Search queries
* Various minor fixes and improvements
2.2.0beta3 This is third beta release of 2.2.0 SDK. It includes more features
to support upcoming Couchbase Server release, stability fixes and
smaller improvements.

Changes:
* PCBC-379: Support for Subdocument API
* PCBC-385: Support for Index Management
* PCBC-394: Expose CAS as a bytestring
* PCBC-392: Client announce its version in the server logs
* PCBC-397: Additive connection string options are not clobbered anymore
* PCBC-395: Type checks properly enforced for booleans
* Various minor changes
2.2.0beta2 This is a minor update to the PHP 2.2.0 Beta SDK.

It includes fixes in package manifest and build script.
2.2.0beta1 This is a major update to the PHP 2.2 SDK.

Changes:
* PCBC-360: refactoring to support PHP 7
* PCBC-376: reentrant transcoders
* PCBC-369: allow to use system fastlz
* PCBC-373: ensure view query values are properly url encoded
* Various minor changes
2.1.0 This is a minor update to the PHP 2.1 SDK.

Changes:
* PCBC-356: Added support for N1QL prepared statements.
* PCBC-363: Fix issue related to passing invalid ID arguments.
* PCBC-366: Correct issue with legacy transcoder compression.
* Various minor changes
2.0.7 This is a patch update to the PHP 2.0 SDK.

Changes:
* PCBC-339: Add support for using N1QL with CB Server 4.0.0.
* PCBC-343: Added missing touch method to CouchbaseBucket.
2.0.6 This is a patch update to the PHP 2.0 SDK.

Changes:
* PCBC-331: CouchbaseBucketManager now has a flush operation to clear a bucket.
* Orphan: Minor fix to view management return values.
* Orphan: ViewQuery::group_level now can be chained as expected.
* PCBC-334: PHP 5.4 transcoder compatibility issues have been fixed.
* PHP 5.3 support has been deprecated and PHP 5.6 is now fully supported.
* Corrected various memory leaks and segfaults.
2.0.5 This is a patch update to the PHP 2.0 SDK.

Changes:
* Orphan: Corrected issue where durability checking may not propagate errors.
* PCBC-327: group_level semantics now support server 3.x.
* Orphan: Corrected issue with some ViewQuery methods.
* PCBC-326: Zero-length strings no longer decode as NULL.
2.0.4 This is a patch update to the PHP 2.0 SDK.

Changes:
* PCBC-321: Corrected issue when passing incorrect option parameter type.
* Corrected issue related to setting timeouts.
* PCBC-317: Updated N1QL querying to support DP4.
* Fixed issue with design document management methods.
2.0.3 This is a patch update to the PHP 2.0 SDK.

Changes:
* PCBC-318: Fix append/prepend operations failing on new libcouchbase.
* PCBC-319: Correct segfault when using persist_to/replicate_to.
* Corrected typo in N1QL query interface.
2.0.2 This is a patch update to the PHP 2.0 SDK.

Changes:
* PCBC-310: Corrected segfault occuring in some cases when
running under Apache and IIS.
* Updated PHP script executer to provide accurate error
information in Exception stack traces.
* Refactored code base for better maintainability.
2.0.1 This is a patch update to the PHP 2.0 SDK.

Changes:
* PCBC-303: Allow JSON decoding as associative array.
* Added missing append/prepend forwarders.
* Fixed various issues with query creation and execution.
* Corrected various build issues.
2.0.0 This is the first GA release of the new 2.0 PHP SDK.

No changes since release 2.0.0beta2.
1.2.2 - PCBC-219: Fixed bad access.
- PCBC-256: Corrected missing connect for management operations.
- Fixed minor documentation issues.
1.2.1 - PCBC-251 Fix missing prefix from incr/decr/delete and unlock
- Fixup observe test failure
- Updated create function to include error message with lcb_create failures.
- PCBC-226 Use HTTP POST if "keys" are specified
- PCBC-246 Add support for LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT
- PCBC-240: Fixup API descr of return value for touch
- PCBC-241: Fix compile warnings
- Added example of a Client wrapper for complete & partial updates
- Updated support for getReplica
- PCBC-236: Throw exceptions from constructor
- PCBC-229: Fix --with-couchbase help text
- PCBC-231: Remove obsolete version string
- PCBC-228: Preserve extra error information
1.2.0 - PCBC-251 Fix missing prefix from incr/decr/delete and unlock
- Fixup observe test failure
- Updated create function to include error message with lcb_create failures.
- PCBC-226 Use HTTP POST if "keys" are specified
- PCBC-246 Add support for LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT
- PCBC-240: Fixup API descr of return value for touch
- PCBC-241: Fix compile warnings
- Added example of a Client wrapper for complete & partial updates
- Updated support for getReplica
- PCBC-236: Throw exceptions from constructor
- PCBC-229: Fix --with-couchbase help text
- PCBC-231: Remove obsolete version string
- PCBC-228: Preserve extra error information
1.1.5 Same release as 1.1.4, fixed pecl package:
- Don't check for JSON. It's part of the php core
- Adjust parameter names in reflection to match couchbase-api.php
- Prototype trying to get the thing working for PECL
- Reset the error code between each request of a persistent connection
- Report libcouchbase version in phpinfo
- Remove gettimeofday implementation for win32
- PCBC-206: Prototype for configuration caching
- Fixup memory allocation for URL path
- PCBC-186: Add method to list all design docs
- PCBC-178: Add support for connection_timeout
- Update GetReplica test
- PCBC-218: Detect invalid characters in CAS
- Add bucket manipulation example
- PCBC-172: Add design document examples
- PCBC-191 Don't coredump for invalid argument
- Update the list of supported PHP versions
1.1.4 - Prototype trying to get the thing working for PECL
- Reset the error code between each request of a persistent connection
- Report libcouchbase version in phpinfo
- Remove gettimeofday implementation for win32
- PCBC-206: Prototype for configuration caching
- Fixup memory allocation for URL path
- PCBC-186: Add method to list all design docs
- PCBC-178: Add support for connection_timeout
- Update GetReplica test
- PCBC-218: Detect invalid characters in CAS
- Add bucket manipulation example
- PCBC-172: Add design document examples
- PCBC-191 Don't coredump for invalid argument
- Update the list of supported PHP versions