couchbase 4.2.8 → 4.2.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (315) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +139 -56
  3. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  4. package/deps/couchbase-cxx-client/CMakeLists.txt +397 -424
  5. package/deps/couchbase-cxx-client/core/agent_config.hxx +1 -1
  6. package/deps/couchbase-cxx-client/core/agent_group.cxx +0 -1
  7. package/deps/couchbase-cxx-client/core/agent_group.hxx +9 -0
  8. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +1 -1
  9. package/deps/couchbase-cxx-client/core/bucket.cxx +22 -8
  10. package/deps/couchbase-cxx-client/core/bucket.hxx +3 -1
  11. package/deps/couchbase-cxx-client/core/cluster.cxx +1453 -108
  12. package/deps/couchbase-cxx-client/core/cluster.hxx +183 -473
  13. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +1 -1
  14. package/deps/couchbase-cxx-client/core/cluster_options.cxx +12 -2
  15. package/deps/couchbase-cxx-client/core/cluster_options.hxx +9 -8
  16. package/deps/couchbase-cxx-client/core/config_profiles.cxx +2 -2
  17. package/deps/couchbase-cxx-client/core/config_profiles.hxx +1 -1
  18. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +1 -2
  19. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +3 -2
  20. package/deps/couchbase-cxx-client/core/diagnostics.hxx +0 -1
  21. package/deps/couchbase-cxx-client/core/dispatcher.cxx +2 -2
  22. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +38 -76
  23. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +40 -0
  24. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +820 -0
  25. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +403 -0
  26. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +78 -0
  27. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
  28. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +226 -44
  29. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1384 -0
  30. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +306 -0
  31. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +3 -1
  32. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -0
  33. package/deps/couchbase-cxx-client/core/{operations/mcbp_noop.cxx → impl/doc_id_query.cxx} +19 -15
  34. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +4 -2
  35. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +0 -10
  36. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +0 -10
  37. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +24 -17
  38. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  39. package/deps/couchbase-cxx-client/core/impl/query.cxx +45 -68
  40. package/deps/couchbase-cxx-client/core/impl/query.hxx +34 -0
  41. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +628 -0
  42. package/deps/couchbase-cxx-client/core/impl/scope.cxx +172 -0
  43. package/deps/couchbase-cxx-client/core/impl/search.cxx +12 -61
  44. package/deps/couchbase-cxx-client/core/impl/search.hxx +37 -0
  45. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +469 -0
  46. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +12 -0
  47. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +87 -0
  48. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +23 -25
  49. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +28 -0
  50. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +6 -25
  51. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +9 -1
  52. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +1 -1
  53. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +3 -2
  54. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +51 -21
  55. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +2 -1
  56. package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -4
  57. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -1
  58. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +1 -1
  59. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +1 -1
  60. package/deps/couchbase-cxx-client/core/meta/features.hxx +28 -0
  61. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +17 -1
  62. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
  63. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +2 -0
  64. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +2 -0
  65. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +2 -0
  66. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +2 -0
  67. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +2 -0
  68. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +2 -0
  69. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +2 -0
  70. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +2 -0
  71. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +2 -0
  72. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +2 -0
  73. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +1 -1
  74. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -0
  75. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +2 -0
  76. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +2 -0
  77. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +2 -0
  78. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +3 -1
  79. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +2 -0
  80. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
  81. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +2 -0
  82. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +6 -5
  83. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +2 -0
  84. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +2 -0
  85. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +2 -0
  86. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +2 -0
  87. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +2 -0
  88. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +2 -0
  89. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +2 -0
  90. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +2 -0
  91. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +2 -0
  92. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +1 -1
  93. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +2 -2
  94. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +4 -1
  95. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +4 -1
  96. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +1 -1
  97. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +1 -1
  98. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -0
  99. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +2 -0
  100. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +2 -0
  101. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +4 -4
  102. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +4 -4
  103. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +2 -0
  104. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +2 -0
  105. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +2 -0
  106. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +2 -0
  107. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +2 -0
  108. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +2 -0
  109. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +1 -1
  110. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +2 -0
  111. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +2 -0
  112. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +2 -0
  113. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -0
  114. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -0
  115. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +2 -0
  116. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -0
  117. package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
  118. package/deps/couchbase-cxx-client/core/operations_fwd.hxx +260 -0
  119. package/deps/couchbase-cxx-client/core/origin.cxx +146 -5
  120. package/deps/couchbase-cxx-client/core/origin.hxx +30 -140
  121. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +3 -3
  122. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -0
  123. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +4 -4
  124. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +6 -0
  125. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +3 -0
  126. package/deps/couchbase-cxx-client/core/protocol/status.cxx +6 -0
  127. package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
  128. package/deps/couchbase-cxx-client/core/query_context.hxx +11 -7
  129. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +1 -1
  130. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +23 -0
  131. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +8 -12
  132. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +3 -3
  133. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
  134. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +2 -2
  135. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +4 -0
  136. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +58 -0
  137. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +5 -40
  138. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +30 -0
  139. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +18 -18
  140. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +36 -0
  141. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +39 -41
  142. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +2 -2
  143. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +3 -1
  144. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +2 -0
  145. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +32 -0
  146. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +4 -30
  147. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +41 -0
  148. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +17 -15
  149. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +1 -1
  150. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +4 -4
  151. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +1 -13
  152. package/deps/couchbase-cxx-client/core/transactions/result.hxx +0 -26
  153. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +46 -0
  154. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +16 -14
  155. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +6 -6
  156. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +48 -0
  157. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +1 -0
  158. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +61 -4
  159. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +9 -8
  160. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +9 -16
  161. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +7 -6
  162. package/deps/couchbase-cxx-client/core/transactions.hxx +6 -5
  163. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +4 -3
  164. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +4 -4
  165. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +44 -0
  166. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +463 -0
  167. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +44 -0
  168. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +0 -24
  169. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +1 -1
  170. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +19 -115
  171. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +13 -30
  172. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +8 -7
  173. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -1
  174. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +41 -73
  175. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
  176. package/deps/couchbase-cxx-client/couchbase/collection.hxx +176 -386
  177. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +8 -9
  178. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +21 -24
  179. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +116 -0
  180. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +3 -3
  181. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +3 -2
  182. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +120 -0
  183. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +85 -0
  184. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +103 -0
  185. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +63 -0
  186. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +0 -23
  187. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +43 -0
  188. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +105 -0
  189. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +103 -0
  190. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +84 -0
  191. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +103 -0
  192. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +63 -0
  193. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +43 -0
  194. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +22 -1
  195. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +0 -23
  196. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +6 -0
  197. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -0
  198. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +37 -0
  199. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +43 -0
  200. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +66 -0
  201. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +65 -0
  202. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +1 -4
  203. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +0 -23
  204. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +45 -0
  205. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +0 -24
  206. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +0 -24
  207. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +0 -23
  208. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +43 -0
  209. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +121 -0
  210. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +0 -23
  211. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +67 -0
  212. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +44 -0
  213. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +0 -23
  214. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +0 -24
  215. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +12 -0
  216. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
  217. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +0 -24
  218. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +48 -0
  219. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +48 -0
  220. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +239 -0
  221. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +3 -3
  222. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +40 -0
  223. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -1
  224. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +0 -24
  225. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +1 -1
  226. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +43 -0
  227. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +19 -0
  228. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +0 -24
  229. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +99 -20
  230. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +0 -21
  231. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +0 -23
  232. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +63 -0
  233. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +0 -24
  234. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +43 -0
  235. package/deps/couchbase-cxx-client/couchbase/scope.hxx +13 -45
  236. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +1 -7
  237. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +26 -0
  238. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +292 -0
  239. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +10 -0
  240. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +84 -0
  241. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +1 -1
  242. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +0 -24
  243. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +1 -1
  244. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +10 -7
  245. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +10 -10
  246. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +8 -58
  247. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +28 -70
  248. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +7 -2
  249. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +2 -1
  250. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +11 -38
  251. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +43 -0
  252. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +0 -24
  253. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +0 -24
  254. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
  255. package/dist/binding.d.ts +7 -9
  256. package/dist/bindingutilities.js +2 -0
  257. package/dist/collection.js +3 -3
  258. package/dist/errors.d.ts +9 -0
  259. package/dist/errors.js +14 -2
  260. package/dist/transactions.d.ts +2 -0
  261. package/dist/transactions.js +2 -3
  262. package/dist/usermanager.js +1 -1
  263. package/package.json +7 -7
  264. package/src/binding.cpp +1 -0
  265. package/src/connection.cpp +12 -9
  266. package/src/connection.hpp +3 -3
  267. package/src/connection_autogen.cpp +7 -5
  268. package/src/constants.cpp +3 -0
  269. package/src/instance.cpp +2 -2
  270. package/src/instance.hpp +1 -1
  271. package/src/jstocbpp_autogen.hpp +21 -38
  272. package/src/jstocbpp_basic.hpp +2 -0
  273. package/src/jstocbpp_errors.hpp +1 -0
  274. package/src/jstocbpp_transactions.hpp +6 -22
  275. package/src/mutationtoken.hpp +1 -0
  276. package/tools/gen-bindings-json.py +39 -16
  277. package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
  278. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
  279. package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
  280. package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
  281. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
  282. package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
  283. package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
  284. package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
  285. package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
  286. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
  287. package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
  288. package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
  289. package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
  290. package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
  291. package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
  292. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
  293. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
  294. package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
  295. package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
  296. package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
  297. package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
  298. package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
  299. package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
  300. package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
  301. package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
  302. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
  303. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
  304. package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
  305. package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
  306. package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
  307. package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
  308. package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
  309. package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
  310. package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
  311. package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
  312. package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
  313. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
  314. package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
  315. /package/deps/couchbase-cxx-client/core/impl/{streaming_json_lexter_error_category.cxx → streaming_json_lexer_error_category.cxx} +0 -0
@@ -20,8 +20,6 @@
20
20
  #include "core/timeout_defaults.hxx"
21
21
 
22
22
  #include <cstdint>
23
- #include <filesystem>
24
- #include <fstream>
25
23
  #include <string>
26
24
 
27
25
  namespace couchbase::core::io::dns
@@ -32,31 +30,14 @@ class dns_config
32
30
  static constexpr auto default_nameserver = "8.8.8.8";
33
31
  static constexpr std::uint16_t default_port = 53;
34
32
 
35
- dns_config() = default;
36
-
37
- dns_config(const std::string& nameserver, std::uint16_t port, std::chrono::milliseconds timeout = timeout_defaults::dns_srv_timeout)
38
- : nameserver_{ nameserver }
39
- , port_{ port }
40
- , timeout_{ timeout }
41
- {
42
- }
43
-
44
- [[nodiscard]] std::uint16_t port() const
45
- {
46
- return port_;
47
- }
48
-
49
- [[nodiscard]] const std::string& nameserver() const
50
- {
51
- return nameserver_;
52
- }
33
+ static const dns_config& system_config();
53
34
 
54
- [[nodiscard]] std::chrono::milliseconds timeout() const
55
- {
56
- return timeout_;
57
- }
35
+ dns_config() = default;
36
+ dns_config(std::string nameserver, std::uint16_t port, std::chrono::milliseconds timeout = timeout_defaults::dns_srv_timeout);
58
37
 
59
- static const dns_config& system_config();
38
+ [[nodiscard]] std::uint16_t port() const;
39
+ [[nodiscard]] const std::string& nameserver() const;
40
+ [[nodiscard]] std::chrono::milliseconds timeout() const;
60
41
 
61
42
  private:
62
43
  std::string nameserver_{ default_nameserver };
@@ -29,6 +29,8 @@
29
29
 
30
30
  #include <gsl/narrow>
31
31
 
32
+ #include <chrono>
33
+ #include <optional>
32
34
  #include <random>
33
35
 
34
36
  namespace couchbase::core::io
@@ -104,6 +106,7 @@ class http_session_manager
104
106
 
105
107
  template<typename Collector>
106
108
  void ping(std::set<service_type> services,
109
+ std::optional<std::chrono::milliseconds> timeout,
107
110
  std::shared_ptr<Collector> collector,
108
111
  const couchbase::core::cluster_credentials& credentials)
109
112
  {
@@ -153,6 +156,7 @@ class http_session_manager
153
156
  }
154
157
  operations::http_noop_request request{};
155
158
  request.type = type;
159
+ request.timeout = timeout;
156
160
  auto cmd = std::make_shared<operations::http_command<operations::http_noop_request>>(
157
161
  ctx_, request, tracer_, meter_, options_.default_timeout_for(request.type));
158
162
  cmd->start([start = std::chrono::steady_clock::now(),
@@ -163,7 +167,11 @@ class http_session_manager
163
167
  diag::ping_state state = diag::ping_state::ok;
164
168
  std::optional<std::string> error{};
165
169
  if (ec) {
166
- state = diag::ping_state::error;
170
+ if (ec == errc::common::unambiguous_timeout || ec == errc::common::ambiguous_timeout) {
171
+ state = diag::ping_state::timeout;
172
+ } else {
173
+ state = diag::ping_state::error;
174
+ }
167
175
  error.emplace(fmt::format("code={}, message={}, http_code={}", ec.value(), ec.message(), msg.status_code));
168
176
  }
169
177
  handler->report(diag::endpoint_ping_info{
@@ -269,7 +269,7 @@ struct mcbp_command : public std::enable_shared_from_this<mcbp_command<Manager,
269
269
  : errc::common::ambiguous_timeout));
270
270
  }
271
271
  if (ec == errc::common::request_canceled) {
272
- if (reason == retry_reason::do_not_retry) {
272
+ if (!self->request.retries.idempotent() && !allows_non_idempotent_retry(reason)) {
273
273
  if (self->span_->uses_tags())
274
274
  self->span_->add_tag(tracing::attributes::orphan, "canceled");
275
275
  return self->invoke_handler(ec);
@@ -46,9 +46,10 @@ struct binary_header {
46
46
  };
47
47
 
48
48
  struct mcbp_message {
49
- binary_header header;
50
- std::vector<std::byte> body;
49
+ binary_header header{};
50
+ std::vector<std::byte> body{};
51
51
 
52
+ mcbp_message() = default;
52
53
  mcbp_message(const mcbp_message& other) = delete;
53
54
  mcbp_message& operator=(const mcbp_message& other) = delete;
54
55
  mcbp_message(mcbp_message&& other) = default;
@@ -51,6 +51,7 @@
51
51
  #include "streams.hxx"
52
52
 
53
53
  #include <couchbase/build_config.hxx>
54
+ #include <couchbase/error_codes.hxx>
54
55
  #include <couchbase/fmt/retry_reason.hxx>
55
56
 
56
57
  #include <asio.hpp>
@@ -153,12 +154,12 @@ struct connection_endpoints {
153
154
  connection_endpoints(asio::ip::tcp::endpoint remote_endpoint, asio::ip::tcp::endpoint local_endpoint)
154
155
  : remote{ std::move(remote_endpoint) }
155
156
  , remote_address{ remote.address().to_string() }
156
- , remote_address_with_port{ fmt::format(remote.protocol() == asio::ip::tcp::v6() ? "[{}]:{}" : "{}:{}",
157
- remote_address,
158
- remote.port()) }
157
+ , remote_address_with_port{ remote.protocol() == asio::ip::tcp::v6() ? fmt::format("[{}]:{}", remote_address, remote.port())
158
+ : fmt::format("{}:{}", remote_address, remote.port()) }
159
159
  , local{ std::move(local_endpoint) }
160
160
  , local_address{ local.address().to_string() }
161
- , local_address_with_port{ fmt::format(local.protocol() == asio::ip::tcp::v6() ? "[{}]:{}" : "{}:{}", local_address, local.port()) }
161
+ , local_address_with_port{ local.protocol() == asio::ip::tcp::v6() ? fmt::format("[{}]:{}", local_address, local.port())
162
+ : fmt::format("{}:{}", local_address, local.port()) }
162
163
  {
163
164
  }
164
165
 
@@ -245,6 +246,7 @@ class mcbp_session_impl
245
246
  }
246
247
  if (session_->origin_.options().enable_clustermap_notification) {
247
248
  hello_req.body().enable_clustermap_change_notification();
249
+ hello_req.body().enable_deduplicate_not_my_vbucket_clustermap();
248
250
  }
249
251
  if (session_->origin_.options().enable_compression) {
250
252
  hello_req.body().enable_compression();
@@ -259,7 +261,7 @@ class mcbp_session_impl
259
261
  CB_LOG_DEBUG("{} user_agent={}, requested_features=[{}]",
260
262
  session_->log_prefix_,
261
263
  user_agent,
262
- utils::join_strings_fmt("{}", hello_req.body().features(), ", "));
264
+ utils::join_strings_fmt(hello_req.body().features(), ", "));
263
265
  session_->write(hello_req.data());
264
266
 
265
267
  if (!session_->origin_.credentials().uses_certificate()) {
@@ -347,7 +349,7 @@ class mcbp_session_impl
347
349
  session_->supported_features_ = resp.body().supported_features();
348
350
  CB_LOG_DEBUG("{} supported_features=[{}]",
349
351
  session_->log_prefix_,
350
- utils::join_strings_fmt("{}", session_->supported_features_, ", "));
352
+ utils::join_strings_fmt(session_->supported_features_, ", "));
351
353
  if (session_->origin_.credentials().uses_certificate()) {
352
354
  CB_LOG_DEBUG("{} skip SASL authentication, because TLS certificate was specified",
353
355
  session_->log_prefix_);
@@ -664,7 +666,18 @@ class mcbp_session_impl
664
666
  Expects(protocol::is_valid_server_request_opcode(msg.header.opcode));
665
667
  switch (static_cast<protocol::server_opcode>(msg.header.opcode)) {
666
668
  case protocol::server_opcode::cluster_map_change_notification: {
667
- protocol::server_request<protocol::cluster_map_change_notification_request_body> req(std::move(msg));
669
+ protocol::cmd_info info{ session_->bootstrap_hostname_, session_->bootstrap_port_number_ };
670
+ if (session_->origin_.options().dump_configuration) {
671
+ std::string_view config_text{ reinterpret_cast<const char*>(msg.body.data()), msg.body.size() };
672
+ CB_LOG_TRACE(
673
+ "{} configuration from cluster_map_change_notification request (size={}, endpoint=\"{}:{}\"), {}",
674
+ session_->log_prefix_,
675
+ config_text.size(),
676
+ info.endpoint_address,
677
+ info.endpoint_port,
678
+ config_text);
679
+ }
680
+ protocol::server_request<protocol::cluster_map_change_notification_request_body> req(std::move(msg), info);
668
681
  std::optional<topology::configuration> config = req.body().config();
669
682
  if (session_ && config.has_value()) {
670
683
  if ((!config->bucket.has_value() && req.body().bucket().empty()) ||
@@ -730,6 +743,7 @@ class mcbp_session_impl
730
743
  , bootstrap_deadline_(ctx_)
731
744
  , connection_deadline_(ctx_)
732
745
  , retry_backoff_(ctx_)
746
+ , ping_deadline_(ctx_)
733
747
  , origin_{ std::move(origin) }
734
748
  , bucket_name_{ std::move(bucket_name) }
735
749
  , supported_features_{ std::move(known_features) }
@@ -754,6 +768,7 @@ class mcbp_session_impl
754
768
  , bootstrap_deadline_(ctx_)
755
769
  , connection_deadline_(ctx_)
756
770
  , retry_backoff_(ctx_)
771
+ , ping_deadline_(ctx_)
757
772
  , origin_(std::move(origin))
758
773
  , bucket_name_(std::move(bucket_name))
759
774
  , supported_features_(std::move(known_features))
@@ -798,7 +813,7 @@ class mcbp_session_impl
798
813
  bucket_name_ };
799
814
  }
800
815
 
801
- void ping(std::shared_ptr<diag::ping_reporter> handler)
816
+ void ping(std::shared_ptr<diag::ping_reporter> handler, std::optional<std::chrono::milliseconds> timeout)
802
817
  {
803
818
  protocol::client_request<protocol::mcbp_noop_request_body> req;
804
819
  req.opaque(next_opaque());
@@ -812,7 +827,11 @@ class mcbp_session_impl
812
827
  diag::ping_state state = diag::ping_state::ok;
813
828
  std::optional<std::string> error{};
814
829
  if (ec) {
815
- state = diag::ping_state::error;
830
+ if (ec == errc::common::unambiguous_timeout || ec == errc::common::ambiguous_timeout) {
831
+ state = diag::ping_state::timeout;
832
+ } else {
833
+ state = diag::ping_state::error;
834
+ }
816
835
  error.emplace(fmt::format("code={}, message={}, reason={}", ec.value(), ec.message(), reason));
817
836
  }
818
837
  handler->report({
@@ -826,6 +845,13 @@ class mcbp_session_impl
826
845
  error,
827
846
  });
828
847
  });
848
+ ping_deadline_.expires_after(timeout.value_or(origin_.options().key_value_timeout));
849
+ ping_deadline_.async_wait([self = this->shared_from_this(), opaque = req.opaque()](std::error_code ec) {
850
+ if (ec == asio::error::operation_aborted) {
851
+ return;
852
+ }
853
+ static_cast<void>(self->cancel(opaque, errc::common::unambiguous_timeout, retry_reason::do_not_retry));
854
+ });
829
855
  }
830
856
 
831
857
  [[nodiscard]] mcbp_context context() const
@@ -850,8 +876,9 @@ class mcbp_session_impl
850
876
  self->state_listener_->report_bootstrap_error(fmt::format("{}:{}", self->bootstrap_hostname_, self->bootstrap_port_), ec);
851
877
  }
852
878
  CB_LOG_WARNING("{} unable to bootstrap in time", self->log_prefix_);
853
- auto h = std::move(self->bootstrap_callback_);
854
- h(ec, {});
879
+ if (auto h = std::move(self->bootstrap_callback_); h) {
880
+ h(ec, {});
881
+ }
855
882
  self->stop(retry_reason::do_not_retry);
856
883
  });
857
884
  initiate_bootstrap();
@@ -926,6 +953,7 @@ class mcbp_session_impl
926
953
  bootstrap_deadline_.cancel();
927
954
  connection_deadline_.cancel();
928
955
  retry_backoff_.cancel();
956
+ ping_deadline_.cancel();
929
957
  resolver_.cancel();
930
958
  stream_->close([](std::error_code) {});
931
959
  if (auto h = std::move(bootstrap_handler_); h) {
@@ -1024,8 +1052,10 @@ class mcbp_session_impl
1024
1052
  }
1025
1053
  }
1026
1054
 
1055
+ auto reason = status == static_cast<std::uint16_t>(key_value_status_code::not_my_vbucket) ? retry_reason::key_value_not_my_vbucket
1056
+ : retry_reason::do_not_retry;
1027
1057
  if (fun) {
1028
- fun(protocol::map_status_code(opcode, status), retry_reason::do_not_retry, std::move(msg), decode_error_code(status));
1058
+ fun(protocol::map_status_code(opcode, status), reason, std::move(msg), decode_error_code(status));
1029
1059
  return true;
1030
1060
  }
1031
1061
 
@@ -1043,11 +1073,8 @@ class mcbp_session_impl
1043
1073
  }
1044
1074
  }
1045
1075
  if (request) {
1046
- handler->handle_response(std::move(request),
1047
- protocol::map_status_code(opcode, status),
1048
- retry_reason::do_not_retry,
1049
- std::move(msg),
1050
- decode_error_code(status));
1076
+ handler->handle_response(
1077
+ std::move(request), protocol::map_status_code(opcode, status), reason, std::move(msg), decode_error_code(status));
1051
1078
  return true;
1052
1079
  }
1053
1080
  return false;
@@ -1245,11 +1272,12 @@ class mcbp_session_impl
1245
1272
  }
1246
1273
  }
1247
1274
  }
1275
+ config_.reset();
1248
1276
  config_.emplace(std::move(config));
1249
1277
  configured_ = true;
1250
1278
  for (const auto& listener : config_listeners_) {
1251
- asio::post(asio::bind_executor(
1252
- ctx_, [listener, config = config_.value()]() mutable { return listener->update_config(std::move(config)); }));
1279
+ asio::post(
1280
+ asio::bind_executor(ctx_, [listener, c = config_.value()]() mutable { return listener->update_config(std::move(c)); }));
1253
1281
  }
1254
1282
  }
1255
1283
 
@@ -1453,6 +1481,7 @@ class mcbp_session_impl
1453
1481
  bootstrap_hostname_,
1454
1482
  connection_endpoints_.remote_address,
1455
1483
  connection_endpoints_.remote.port());
1484
+ parser_.reset();
1456
1485
  bootstrap_handler_ = std::make_shared<bootstrap_handler>(shared_from_this());
1457
1486
  connection_deadline_.cancel();
1458
1487
  }
@@ -1602,6 +1631,7 @@ class mcbp_session_impl
1602
1631
  asio::steady_timer bootstrap_deadline_;
1603
1632
  asio::steady_timer connection_deadline_;
1604
1633
  asio::steady_timer retry_backoff_;
1634
+ asio::steady_timer ping_deadline_;
1605
1635
  couchbase::core::origin origin_;
1606
1636
  std::optional<std::string> bucket_name_;
1607
1637
  mcbp_parser parser_;
@@ -1827,9 +1857,9 @@ mcbp_session::supported_features() const
1827
1857
  }
1828
1858
 
1829
1859
  void
1830
- mcbp_session::ping(std::shared_ptr<diag::ping_reporter> handler) const
1860
+ mcbp_session::ping(std::shared_ptr<diag::ping_reporter> handler, std::optional<std::chrono::milliseconds> timeout) const
1831
1861
  {
1832
- return impl_->ping(std::move(handler));
1862
+ return impl_->ping(std::move(handler), std::move(timeout));
1833
1863
  }
1834
1864
 
1835
1865
  bool
@@ -23,6 +23,7 @@
23
23
  #include "mcbp_context.hxx"
24
24
  #include "mcbp_message.hxx"
25
25
 
26
+ #include <chrono>
26
27
  #include <cinttypes>
27
28
  #include <memory>
28
29
  #include <optional>
@@ -118,7 +119,7 @@ class mcbp_session
118
119
  [[nodiscard]] bool has_config() const;
119
120
  [[nodiscard]] diag::endpoint_diag_info diag_info() const;
120
121
  void on_configuration_update(std::shared_ptr<config_listener> handler);
121
- void ping(std::shared_ptr<diag::ping_reporter> handler) const;
122
+ void ping(std::shared_ptr<diag::ping_reporter> handler, std::optional<std::chrono::milliseconds> = {}) const;
122
123
  [[nodiscard]] bool supports_gcccp() const;
123
124
  [[nodiscard]] std::optional<key_value_error_map_info> decode_error_code(std::uint16_t code);
124
125
  void handle_not_my_vbucket(const io::mcbp_message& msg) const;
@@ -178,16 +178,16 @@ log_protocol(const char* file, int line, const char* function, std::string_view
178
178
  * @param msg message to log
179
179
  * @param args the formatting arguments
180
180
  */
181
- template<typename String, typename... Args>
181
+ template<typename... Args>
182
182
  inline void
183
- log(const char* file, int line, const char* function, level lvl, const String& msg, Args&&... args)
183
+ log(const char* file, int line, const char* function, level lvl, fmt::format_string<Args...> msg, Args&&... args)
184
184
  {
185
185
  detail::log(file, line, function, lvl, fmt::format(msg, std::forward<Args>(args)...));
186
186
  }
187
187
 
188
- template<typename String, typename... Args>
188
+ template<typename... Args>
189
189
  inline void
190
- log_protocol(const char* file, int line, const char* function, const String& msg, Args&&... args)
190
+ log_protocol(const char* file, int line, const char* function, fmt::format_string<Args...> msg, Args&&... args)
191
191
  {
192
192
  detail::log_protocol(file, line, function, fmt::format(msg, std::forward<Args>(args)...));
193
193
  }
@@ -116,7 +116,7 @@ struct bucket_settings {
116
116
  bucket_eviction_policy eviction_policy{ bucket_eviction_policy::unknown };
117
117
  bucket_conflict_resolution conflict_resolution_type{ bucket_conflict_resolution::unknown };
118
118
  std::optional<bool> history_retention_collection_default{};
119
- std::optional<std::uint32_t> history_retention_bytes;
119
+ std::optional<std::uint32_t> history_retention_bytes{};
120
120
  std::optional<std::uint32_t> history_retention_duration{};
121
121
 
122
122
  /**
@@ -86,7 +86,7 @@ packet::debug_string() const
86
86
  }
87
87
  }
88
88
 
89
- fmt::format_to(std::back_insert_iterator(out), "}");
89
+ fmt::format_to(std::back_insert_iterator(out), "}}");
90
90
  return { out.begin(), out.end() };
91
91
  }
92
92
  } // namespace couchbase::core::mcbp
@@ -17,7 +17,7 @@
17
17
 
18
18
  #pragma once
19
19
 
20
- #include "../utils/movable_function.hxx"
20
+ #include "core/utils/movable_function.hxx"
21
21
 
22
22
  #include <functional>
23
23
  #include <memory>
@@ -73,3 +73,31 @@
73
73
  #define COUCHBASE_CXX_CLIENT_HAS_COLLECTION_QUERY_INDEX_MANAGEMENT 1
74
74
 
75
75
  #define COUCHBASE_CXX_CLIENT_TRANSACTIONS_EXT_PARALLEL_UNSTAGING
76
+
77
+ /**
78
+ * core cluster implementation has been hidden and not accessible through the public API
79
+ */
80
+ #define COUCHBASE_CXX_CLIENT_HAS_CORE_CLUSTER_HIDDEN 1
81
+
82
+ /**
83
+ * expiration_time has been renamed to timeout in transactions_options and transactions_config
84
+ * kv_timeout removed from transactions_options and transactions_config
85
+ */
86
+ #define COUCHBASE_CXX_CLIENT_TRANSACTIONS_OPTIONS_HAVE_TIMEOUT 1
87
+
88
+ /**
89
+ * Search index management is accessible from the public API
90
+ * couchbase::cluster::search_indexes() support
91
+ */
92
+ #define COUCHBASE_CXX_CLIENT_HAS_PUBLIC_SEARCH_INDEX_MANAGEMENT 1
93
+
94
+ /**
95
+ * FTS is accessible from the public API
96
+ * couchbase::cluster::search_query() and couchbase::scope::search_query() support
97
+ */
98
+ #define COUCHBASE_CXX_CLIENT_HAS_PUBLIC_SEARCH 1
99
+
100
+ /**
101
+ * The document not locked (couchbase::errc::key_value::document_not_locked) error code is supported
102
+ */
103
+ #define COUCHBASE_CXX_CLIENT_HAS_ERRC_DOCUMENT_NOT_LOCKED 1
@@ -26,6 +26,7 @@
26
26
  #include <couchbase/error_codes.hxx>
27
27
 
28
28
  #include <gsl/assert>
29
+ #include <regex>
29
30
 
30
31
  namespace couchbase::core::operations
31
32
  {
@@ -236,7 +237,9 @@ query_request::make_response(error_context::query&& ctx, const encoded_response_
236
237
  response.ctx.client_context_id);
237
238
  }
238
239
  }
239
- response.meta.status = payload.at("status").get_string();
240
+ if (const auto* s = payload.find("status"); s != nullptr) {
241
+ response.meta.status = payload.at("status").get_string();
242
+ }
240
243
  if (const auto* s = payload.find("signature"); s != nullptr) {
241
244
  response.meta.signature = couchbase::core::utils::json::generate(*s);
242
245
  }
@@ -342,6 +345,19 @@ query_request::make_response(error_context::query&& ctx, const encoded_response_
342
345
  case 4090: /* IKey: "plan.build_prepared.name_not_in_encoded_plan" */
343
346
  response.ctx.ec = errc::query::prepared_statement_failure;
344
347
  break;
348
+ case 4300: /* IKey: "plan.new_index_already_exists" */
349
+ response.ctx.ec = errc::common::index_exists;
350
+ break;
351
+ case 5000: /* IKey: "Internal Error" */
352
+ if (std::regex_search(response.ctx.first_error_message, std::regex{ ".*[iI]ndex .*already exist.*" })) {
353
+ response.ctx.ec = errc::common::index_exists;
354
+ } else if (response.ctx.first_error_message.find("Index does not exist") != std::string::npos ||
355
+ std::regex_search(response.ctx.first_error_message, std::regex{ ".*[iI]ndex .*[nN]ot [fF]ound.*" })) {
356
+ response.ctx.ec = errc::common::index_not_found;
357
+ } else if (response.ctx.first_error_message.find("Bucket Not Found") != std::string::npos) {
358
+ response.ctx.ec = errc::common::bucket_not_found;
359
+ }
360
+ break;
345
361
  case 12009: /* IKey: "datastore.couchbase.DML_error" */
346
362
  if (response.ctx.first_error_message.find("CAS mismatch") != std::string::npos) {
347
363
  response.ctx.ec = errc::common::cas_mismatch;
@@ -34,7 +34,7 @@
34
34
  namespace couchbase::tracing
35
35
  {
36
36
  class request_span;
37
- }
37
+ } // namespace couchbase::tracing
38
38
 
39
39
  namespace couchbase::core::operations
40
40
  {
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -20,6 +20,8 @@
20
20
  #include "core/utils/json.hxx"
21
21
  #include "error_utils.hxx"
22
22
 
23
+ #include <fmt/core.h>
24
+
23
25
  namespace couchbase::core::operations::management
24
26
  {
25
27
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/name_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/url_codec.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -24,6 +24,8 @@
24
24
  #include "core/utils/url_codec.hxx"
25
25
  #include "error_utils.hxx"
26
26
 
27
+ #include <fmt/core.h>
28
+
27
29
  namespace couchbase::core::operations::management
28
30
  {
29
31
  std::error_code
@@ -31,7 +31,7 @@ std::error_code
31
31
  bucket_create_request::encode_to(encoded_request_type& encoded, http_context& /* context */) const
32
32
  {
33
33
  encoded.method = "POST";
34
- encoded.path = fmt::format("/pools/default/buckets");
34
+ encoded.path = "/pools/default/buckets";
35
35
 
36
36
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
37
37
  encoded.body.append(fmt::format("name={}", utils::string_codec::form_encode(bucket.name)));
@@ -20,6 +20,8 @@
20
20
  #include "core/utils/json.hxx"
21
21
  #include "error_utils.hxx"
22
22
 
23
+ #include <fmt/core.h>
24
+
23
25
  namespace couchbase::core::operations::management
24
26
  {
25
27
  std::error_code
@@ -19,6 +19,8 @@
19
19
 
20
20
  #include "error_utils.hxx"
21
21
 
22
+ #include <fmt/core.h>
23
+
22
24
  namespace couchbase::core::operations::management
23
25
  {
24
26
  std::error_code
@@ -19,6 +19,8 @@
19
19
 
20
20
  #include "error_utils.hxx"
21
21
 
22
+ #include <fmt/core.h>
23
+
22
24
  namespace couchbase::core::operations::management
23
25
  {
24
26
  std::error_code
@@ -21,6 +21,8 @@
21
21
  #include "core/utils/json.hxx"
22
22
  #include "error_utils.hxx"
23
23
 
24
+ #include <fmt/core.h>
25
+
24
26
  namespace couchbase::core::operations::management
25
27
  {
26
28
  std::error_code
@@ -19,13 +19,15 @@
19
19
  #include "core/utils/url_codec.hxx"
20
20
  #include "error_utils.hxx"
21
21
 
22
+ #include <fmt/core.h>
23
+
22
24
  namespace couchbase::core::operations::management
23
25
  {
24
26
  std::error_code
25
27
  change_password_request::encode_to(encoded_request_type& encoded, http_context& /* context */) const
26
28
  {
27
29
  encoded.method = "POST";
28
- encoded.path = fmt::format("/controller/changePassword");
30
+ encoded.path = "/controller/changePassword";
29
31
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
30
32
  encoded.body = fmt::format("password={}", utils::string_codec::form_encode(newPassword));
31
33
 
@@ -23,6 +23,8 @@
23
23
 
24
24
  #include <regex>
25
25
 
26
+ #include <fmt/core.h>
27
+
26
28
  namespace couchbase::core::operations::management
27
29
  {
28
30
  std::error_code