Releases: couchbase/couchbase-cxx-client
1.0.4
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.4
Full changelog: 1.0.3...1.0.4
Fixes
- CXXCBC-620: Update core
analytics_link_get_all
to follow RFC by @thejcfactor in #687 - CXXCBC-615: Expose
insert_raw
andreplace_raw
in core transactions attempt context by @DemetrisChr in #686 - CXXCBC-622: Update OpenTelemetry metrics integration to use GA Metrics API by @DemetrisChr in #688
- CXXCBC-627: Performance degradation after
couchbase::error
changes by @Matt-Woz in #693 - CXXCBC-624: Fix user agent ID generation by @avsej in #692
- CXXCBC-611, CXXCBC-612: Follow RFC naming for metric operation names by @DemetrisChr in #695
- CXXCBC-632: Do not assume Analytics will always send meta fields in response by @avsej in #699
- URI encode user_upsert by @Matt-Woz in #700
Features
- CXXCBC-609: Expose
parent_span
in Public API options by @DemetrisChr in #690
Build and Test Infrastructure
- Updates for YUM/RPM builders by @avsej in #691
- Debian/Ubuntu packaging scripts by @avsej in #694
- Fix packaging scripts on MacOS by @avsej in #698
- Add scripts to produce APK files for Alpine Linux by @avsej in #685
Repository Links
MacOS X
brew tap couchbaselabs/homebrew-couchbase
brew install couchbase-cxx-client
RPM Linux Distributions
DIST=el9 # also: el8, amzn2023, fc40, fc41, suse.lp155
ARCH=x86_64 # also: aarch64
curl -L -o/etc/yum.repos.d/couchbase-cxx-client.repo \
https://packages.couchbase.com/clients/cxx/repos/rpm/${DIST}/${ARCH}/couchbase-cxx-client.repo
dnf install couchbase-cxx-client couchbase-cxx-client-devel couchbase-cxx-client-tools
https://packages.couchbase.com/clients/cxx/repos/rpm/amzn2023/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/amzn2023/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el8/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el8/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el9/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el9/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/fc40/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/fc40/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/fc41/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/fc41/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/suse.lp155/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/suse.lp155/x86_64/couchbase-cxx-client.repo
DEB Linux Distributions
apt update && apt install curl gpg
DIST=noble # also: jammy, bookworm
ARCH=x86_64 # also: aarch64
curl -L https://packages.couchbase.com/clients/cxx/repos/deb/${DIST}/${ARCH}/DEB-GPG-KEY.txt | \
gpg --yes --dearmor -o /usr/share/keyrings/couchbase-archive-keyring.gpg
curl -L -o/etc/apt/sources.list.d/couchbase-cxx-client.sources \
https://packages.couchbase.com/clients/cxx/repos/deb/${DIST}/${ARCH}/couchbase-cxx-client.sources
apt update
apt install couchbase-cxx-client couchbase-cxx-client-dev couchbase-cxx-client-tools
https://packages.couchbase.com/clients/cxx/repos/deb/bookworm/aarch64/couchbase-cxx-client.sources
https://packages.couchbase.com/clients/cxx/repos/deb/bookworm/x86_64/couchbase-cxx-client.sources
https://packages.couchbase.com/clients/cxx/repos/deb/jammy/aarch64/couchbase-cxx-client.sources
https://packages.couchbase.com/clients/cxx/repos/deb/jammy/x86_64/couchbase-cxx-client.sources
https://packages.couchbase.com/clients/cxx/repos/deb/noble/aarch64/couchbase-cxx-client.sources
https://packages.couchbase.com/clients/cxx/repos/deb/noble/x86_64/couchbase-cxx-client.sources
1.0.4-rc.1
Full Changelog: 1.0.3...1.0.4-rc.1
What's Changed
- CXXCBC-620: Update core analytics_link_get_all to follow RFC by @thejcfactor in #687
- CXXCBC-615: Expose insert_raw & replace_raw in core txns attempt ctx by @DemetrisChr in #686
- CXXCBC-622: Update OpenTelemetry metrics integration to use GA Metrics API by @DemetrisChr in #688
- CXXCBC-609: Expose
parent_span
in Public API options by @DemetrisChr in #690 - Updates for YUM/RPM builders by @avsej in #691
- Debian/Ubuntu packaging scripts by @avsej in #694
- CXXCBC-627: Performance degradation after couchbase::error changes by @Matt-Woz in #693
- CXXCBC-624: Fix user agent ID generation by @avsej in #692
- Add scripts to produce APK files for Alpine Linux by @avsej in #685
- CXXCBC-611 & CXXCBC-612: Follow RFC naming for metric operation names by @DemetrisChr in #695
Repository Links
RPM Linux Distributions
DIST=el9 # also: el8, amzn2023, fc40, fc41, suse.lp155
ARCH=x86_64 # also: aarch64
curl -L -o/etc/yum.repos.d/couchbase-cxx-client.repo \
https://packages.couchbase.com/clients/cxx/repos/rpm/${DIST}/${ARCH}/couchbase-cxx-client.repo
dnf install couchbase-cxx-client couchbase-cxx-client-devel couchbase-cxx-client-tools
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/amzn2023/aarch64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/amzn2023/x86_64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/el8/aarch64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/el8/x86_64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/el9/aarch64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/el9/x86_64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/fc40/aarch64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/fc40/x86_64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/fc41/aarch64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/fc41/x86_64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/suse.lp155/aarch64/couchbase-cxx-client.repo
https://sdk-snapshots.couchbase.com/clients/cxx/repos/rpm/suse.lp155/x86_64/couchbase-cxx-client.repo
DEB Linux Distributions
apt update && apt install curl gpg
DIST=noble # also: jammy, bookworm
ARCH=x86_64 # also: aarch64
curl -L https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/${DIST}/${ARCH}/DEB-GPG-KEY.txt | \
gpg --yes --dearmor -o /usr/share/keyrings/couchbase-archive-keyring.gpg
curl -L -o/etc/apt/sources.list.d/couchbase-cxx-client.sources \
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/${DIST}/${ARCH}/couchbase-cxx-client.sources
apt update
apt install couchbase-cxx-client couchbase-cxx-client-dev couchbase-cxx-client-tools
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/bookworm/aarch64/couchbase-cxx-client.sources
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/bookworm/x86_64/couchbase-cxx-client.sources
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/jammy/aarch64/couchbase-cxx-client.sources
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/jammy/x86_64/couchbase-cxx-client.sources
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/noble/aarch64/couchbase-cxx-client.sources
https://sdk-snapshots.couchbase.com/clients/cxx/repos/deb/noble/x86_64/couchbase-cxx-client.sources
1.0.3
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.3
Full Changelog: 1.0.2...1.0.3
Fixes
- CXXCBC-599: Update allowed connection string options by @thejcfactor in #668
- CXXCBC-311: SDKs must encode URIs by @Matt-Woz in #674
- CXXCBC-606: Fix detection of dysfunctional node by @avsej in #673
- Add missing template parameters to fix compiler warnings by @avsej in #671
- CXXCBC-574: fix memory leak when open fails in public API by @avsej in #649
- CXXCBC-614: fix memory leak in observe_poll by @avsej in #679
Features
- Allow to query current log level by @avsej in #672
- CXXCBC-582: Add cluster labels & system tag in spans by @DemetrisChr in #682
- CXXCBC-582: Add cluster labels, keyspace & outcome in metrics by @DemetrisChr in #677
Columnar changes
- CXXCBC-598: Propagate bootstrap errors to HTTP operations by @thejcfactor in #666
- CXXCBC-602: Report first non-retriable code/message in query error by @DemetrisChr in #667
- CXXCBC-604: Apply raw options last by @DemetrisChr in #669
- CXXCBC-616: Report retry information when receiving a timeout from the HTTP component by @DemetrisChr in #681
- CXXCBC-600: Reduce origin::to_json output for Columnar builds by @thejcfactor in #678
Build and Test Infrastructure
- CXXCBC-303: Fix RPM for AmazonLinux by @avsej in #663
- CXXCBC-303: Fix RPM for RHEL 8 by @avsej in #664
- Use timestamp from the tag for reproducible tarballs by @avsej in #665
- Update list of RPM-based platforms by @avsej in #676
Repository Links
RPM Linux Distributions
DIST=el9
ARCH=x86_64
curl -o/etc/yum.repos.d/couchbase-cxx-client.repo \
https://packages.couchbase.com/clients/cxx/repos/rpm/${DIST}/${ARCH}/couchbase-cxx-client.repo
dnf install couchbase-cxx-client couchbase-cxx-client-devel couchbase-cxx-client-tools
https://packages.couchbase.com/clients/cxx/repos/rpm/amzn2023/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/amzn2023/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el8/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el8/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el9/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/el9/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/fc40/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/fc40/x86_64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/suse.lp155/aarch64/couchbase-cxx-client.repo
https://packages.couchbase.com/clients/cxx/repos/rpm/suse.lp155/x86_64/couchbase-cxx-client.repo
1.0.3-rc.2
Full Changelog: 1.0.3-rc.1...1.0.3-rc.2
What's Changed
- CXXCBC-574: fix memory leak when open fails in public API by @avsej in #649
- CXXCBC-600: Reduce origin::to_json output for Columnar builds by @thejcfactor in #678
- CXXCBC-582: Add cluster labels, keyspace & outcome in metrics by @DemetrisChr in #677
- CXXCBC-614: fix memory leak in observe_poll by @avsej in #679
- Update list of RPM-based platforms by @avsej in #676
1.0.3-rc.1
Full Changelog: 1.0.2...1.0.3-rc.1
What's Changed
- CXXCBC-303: Fix RPM for AmazonLinux by @avsej in #663
- CXXCBC-303: Fix RPM for RHEL 8 by @avsej in #664
- Use timestamp from the tag for reproducible tarballs by @avsej in #665
- CXXCBC-598: Columnar - propagate bootstrap errors to HTTP operations by @thejcfactor in #666
- CXXCBC-602: Columnar - report first non-retriable code/message in query error by @DemetrisChr in #667
- CXXCBC-599: Update allowed connection string options by @thejcfactor in #668
- CXXCBC-604: Columnar - apply raw options last by @DemetrisChr in #669
- Allow to query current log level by @avsej in #672
- CXXCBC-311: SDKs must encode URIs by @Matt-Woz in #674
- CXXCBC-606: Fix detection of disfunctional node by @avsej in #673
- Add missing template parameters to fix compiler warnings by @avsej in #671
1.0.2
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.2
Full Changelog: 1.0.1...1.0.2
Fixes
- CXXCBC-577: Reduce duplicated code in http_component (#657).
- CXXCBC-593: Apply configuration profile as the last step (#655).
- CXXCBC-552: Cleanup network selection options (#651). Deprecates
behavior_options#network()
in favor tonetwork_options#preferred_network()
- Update code samples in API reference (#653).
- CXXCBC-576: Ensure all HTTP sessions are stopped when closing the core cluster (#648).
Columnar changes
- CXXCBC-577: Add columnar database management operations.
- CXXCBC-588: Update timeout sent to server on each columnar query retry (#654).
- CXXCBC-580: Report last error when timing out on columnar query retries (#650).
Build and Test Infrastructure
- CXXCBC-303: Update build scripts to produce RPM packages (#660).
- CXXCBC-597: Use static library for ASIO and update it to 1.31.0 (#658).
- CXXCBC-596: Do not include tao_json_serializer.hxx by default (#656).
- Include in string_hex.h (#652)
1.0.1
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.1
Full Changelog: 1.0.0...1.0.1
Enhancements
- CXXCBC-564: Allow to specify all operations (Get, Replace, Delete, Insert and Query) in pillowfight workload (#640).
- Improve logging of DNS client (#634).
- CXXCBC-568: Cancel deferred operations when closing HTTP session manager (#643).
Fixes
- CXXCBC-531: Fix memory leak in range scan implementation (#645, 610).
- CXXCBC-573: Avoid uninitialized reads in the logger test (#610).
- CXXCBC-572: Always initialize service_type (#610).
- CXXCBC-569: Resolve cycle in shared pointers for
transaction_context
(#641). - CXXCBC-550]: Fixed use-after-move issue in command handler (#628)
- Fix build of Ruby wrapper on Windows (#636).
- Fix behaviour when reading is complete before returning HTTP streaming resp (#624).
Columnar changes
In this release new build mode for Columnar has been introduced. The CMake flag -DCOUCHBASE_CXX_CLIENT_COLUMNAR
would produce special version of the library that is optimized for usage with Columnar deployments.
- Add initial Columnar core implementation (#616).
- CXXCBC-525: Open cluster connection in background (#621).
- Use
open_in_background
when creating test cluster in Columnar mode (#625). - CXXCBC-542: Richer error information from columnar core (#626).
- Update columnar log message, enable
dispatch_timeout
if in connection string (#627). - Add helper method for serializing ctx into columnar error message (#632).
- Add columnar query positional params (#635).
- CXXCBC-543: Add retries for columnar query (#637).
- CXXCBC-562: Provide HTTP session manager with updated cluster (#638).
- CXXCBC-556: Use versioned columnar query endpoint (#639).
- CXXCBC-557: Add global columnar timeout config (#642).
1.0.0
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0
Full Changelog: 1.0.0-dp.15...1.0.0
Enhancements
-
CXXCBC-509: Allow to restrict replica set to selected server group. This feature allows to implement network optimization when traffic cost between server groups is higher than in the local group. In this case the application might select preferred server group in the connection options, and later opt-in for local operations during replica reads. Related tickets: CXXCBC-546, CXXCBC-513, CXXCBC-513, CXXCBC-509 (#614, #593, #587, #571, #566).
-
CXXCBC-530: Include 'min' parameter when encoding disjunction FTS queries (#604)
-
CXXCBC-394: Hide tao::json where it is possible. We still have taocpp/json headers in places where default JSON transcoder is being used.
-
CXXCBC-449: Do not expose ASIO in public API.
-
CXXCBC-381: Use std::shared_ptr for transactions_context and attempt_context. (#590)
-
CXXCBC-510: Support binary objects in transactions. This changes allows to use transcoders in transactions API. (#576)
-
Improvements in Vector Search:
- Add invalid argument check. (#578)
- CXXCBC-514 Support for base64 encoded vector types (#575)
- CXXCBC-516: Return
feature_not_available
when upserting vector search index to incompatible cluster. (#572)
-
CXXCBC-407: Allow to use 0 as a max expiry for new collections. (#569)
-
CXXCBC-496: Convert C++ Public API Error handling to use
couchbase::error
. Related tickets: CXXCBC-492, CXXCBC-498, CXXCBC-499, CXXCBC-500, CXXCBC-508, CXXCBC-526 (#570, #557, #562, #560, #564, #567, #603, #597, #595, #594). -
Update stability levels for API 3.6 level. Remove deprecated
search_query
(#602).
Fixes
-
CXXCBC-517: Add HTTP session retries when SDK fails to resolve hostnames (#589).
-
CXXCBC-445: Return
request_canceled
on IO error in HTTP session. (#568) -
CXXCBC-511: Prevent use of HTTP session if idle timer has expired. (#565)
-
CXXCBC-523: Clean up dump_configuration config output (#577)
-
CXXCBC-531: Fix deadlock in cluster destructor (public API) (#608)
-
CXXCBC-534: Fix callbacks to avoid
bad_function_call
exception. (#606) -
CXXCBC-518: Handle alternate addresses when locating preferred_node. (#574)
Build and Tests Fixes
1.0.0-dp.15
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.15
Full Changelog: 1.0.0-dp.14...1.0.0-dp.15
Enhancements
- CXXCBC-443: Public API for Range Scan. (#546)
- 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 (likeASM_NASM
on Windows). - Add feature check for scoped analyze_document in tests (#555)
- Update dependencies (#543)
1.0.0-dp.14
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.14
Full Changelog: 1.0.0-dp.13...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-462: Fix hanging when specifying a custom metadata collection via the public API & expose errors. (#532)
-
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)
-
CXXCBC-448: Expose hooks for fork() scenarios. (#536)
See
example_fork::main()
intest/test_integration_examples.cxx
.
Build and Tests fixes
-
CXXCBC-458: Run transactions hooks asychronously. (#538)
-
Fix build with GCC 14. (#535)
-
Cleanup output of the transaction code sample. (#534)
-
Fix query error context fields. (#531)