couchbase 4.2.8-dev.1 → 4.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) 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-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/CMakeLists.txt +0 -23
  278. package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/example.cpp +0 -398
  279. package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
  280. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
  281. package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
  282. package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
  283. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
  284. package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
  285. package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
  286. package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
  287. package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
  288. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
  289. package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
  290. package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
  291. package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
  292. package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
  293. package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
  294. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
  295. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
  296. package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
  297. package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
  298. package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
  299. package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
  300. package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
  301. package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
  302. package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
  303. package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
  304. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
  305. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
  306. package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
  307. package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
  308. package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
  309. package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
  310. package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
  311. package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
  312. package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
  313. package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
  314. package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
  315. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
  316. package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
  317. /package/deps/couchbase-cxx-client/core/impl/{streaming_json_lexter_error_category.cxx → streaming_json_lexer_error_category.cxx} +0 -0
@@ -109,6 +109,9 @@ struct fmt::formatter<couchbase::core::protocol::hello_feature> {
109
109
  case couchbase::core::protocol::hello_feature::subdoc_replica_read:
110
110
  name = "subdoc_replica_read";
111
111
  break;
112
+ case couchbase::core::protocol::hello_feature::deduplicate_not_my_vbucket_clustermap:
113
+ name = "deduplicate_not_my_vbucket_clustermap";
114
+ break;
112
115
  }
113
116
  return format_to(ctx.out(), "{}", name);
114
117
  }
@@ -75,8 +75,14 @@ map_status_code(protocol::client_opcode opcode, std::uint16_t status)
75
75
  return errc::common::bucket_not_found;
76
76
 
77
77
  case key_value_status_code::locked:
78
+ if (opcode == protocol::client_opcode::unlock) {
79
+ return errc::common::cas_mismatch;
80
+ }
78
81
  return errc::key_value::document_locked;
79
82
 
83
+ case key_value_status_code::not_locked:
84
+ return errc::key_value::document_not_locked;
85
+
80
86
  case key_value_status_code::auth_stale:
81
87
  case key_value_status_code::auth_error:
82
88
  case key_value_status_code::no_access:
@@ -41,6 +41,7 @@ is_valid_status(std::uint16_t code)
41
41
  case key_value_status_code::not_my_vbucket:
42
42
  case key_value_status_code::no_bucket:
43
43
  case key_value_status_code::locked:
44
+ case key_value_status_code::not_locked:
44
45
  case key_value_status_code::auth_stale:
45
46
  case key_value_status_code::auth_error:
46
47
  case key_value_status_code::auth_continue:
@@ -27,22 +27,23 @@ class query_context
27
27
  {
28
28
  public:
29
29
  query_context() = default;
30
+
30
31
  query_context(std::string namespace_id, std::string bucket_name, std::string scope_name)
31
- : namespace_id_(namespace_id)
32
- , bucket_name_(bucket_name)
33
- , scope_name_(scope_name)
32
+ : namespace_id_(std::move(namespace_id))
33
+ , bucket_name_(std::move(bucket_name))
34
+ , scope_name_(std::move(scope_name))
34
35
  {
35
36
  }
36
37
 
37
38
  query_context(std::string bucket_name, std::string scope_name)
38
- : bucket_name_(bucket_name)
39
- , scope_name_(scope_name)
39
+ : bucket_name_(std::move(bucket_name))
40
+ , scope_name_(std::move(scope_name))
40
41
  {
41
42
  }
42
43
 
43
44
  bool has_value() const
44
45
  {
45
- return bucket_name_.has_value() && scope_name_.has_value();
46
+ return bucket_name_.has_value() && !bucket_name_->empty() && scope_name_.has_value() && !scope_name_->empty();
46
47
  }
47
48
 
48
49
  std::string value() const
@@ -52,6 +53,7 @@ class query_context
52
53
  }
53
54
  return {};
54
55
  }
56
+
55
57
  std::string bucket_name() const
56
58
  {
57
59
  if (has_value()) {
@@ -59,6 +61,7 @@ class query_context
59
61
  }
60
62
  return "";
61
63
  }
64
+
62
65
  std::string scope_name() const
63
66
  {
64
67
  if (has_value()) {
@@ -66,6 +69,7 @@ class query_context
66
69
  }
67
70
  return "";
68
71
  }
72
+
69
73
  std::string namespace_id() const
70
74
  {
71
75
  return namespace_id_;
@@ -76,4 +80,4 @@ class query_context
76
80
  std::optional<std::string> bucket_name_;
77
81
  std::optional<std::string> scope_name_;
78
82
  };
79
- } // namespace couchbase::core
83
+ } // namespace couchbase::core
@@ -673,7 +673,7 @@ class range_scan_orchestrator_impl
673
673
  topology::configuration::vbucket_map vbucket_map_;
674
674
  std::string scope_name_;
675
675
  std::string collection_name_;
676
- std::uint32_t collection_id_;
676
+ std::uint32_t collection_id_{ 0 };
677
677
  std::variant<std::monostate, range_scan, prefix_scan, sampling_scan> scan_type_;
678
678
  range_scan_orchestrator_options options_;
679
679
  std::map<std::size_t, std::optional<range_snapshot_requirements>> vbucket_to_snapshot_requirements_;
@@ -19,6 +19,7 @@
19
19
 
20
20
  #include "core/logger/logger.hxx"
21
21
  #include "core/service_type_fmt.hxx"
22
+ #include "core/utils/crc32.hxx"
22
23
 
23
24
  #include <gsl/narrow>
24
25
 
@@ -230,6 +231,28 @@ configuration::server_by_vbucket(std::uint16_t vbucket, std::size_t index)
230
231
  return {};
231
232
  }
232
233
 
234
+ std::pair<std::uint16_t, std::optional<std::size_t>>
235
+ configuration::map_key(const std::string& key, std::size_t index)
236
+ {
237
+ if (!vbmap.has_value()) {
238
+ return { 0, {} };
239
+ }
240
+ const std::uint32_t crc = utils::hash_crc32(key.data(), key.size());
241
+ auto vbucket = static_cast<std::uint16_t>(crc % vbmap->size());
242
+ return { vbucket, server_by_vbucket(vbucket, index) };
243
+ }
244
+
245
+ std::pair<std::uint16_t, std::optional<std::size_t>>
246
+ configuration::map_key(const std::vector<std::byte>& key, std::size_t index)
247
+ {
248
+ if (!vbmap.has_value()) {
249
+ return { 0, {} };
250
+ }
251
+ const std::uint32_t crc = utils::hash_crc32(key.data(), key.size());
252
+ auto vbucket = static_cast<std::uint16_t>(crc % vbmap->size());
253
+ return { vbucket, server_by_vbucket(vbucket, index) };
254
+ }
255
+
233
256
  configuration
234
257
  make_blank_configuration(const std::string& hostname, std::uint16_t plain_port, std::uint16_t tls_port)
235
258
  {
@@ -20,9 +20,7 @@
20
20
  #include "capabilities.hxx"
21
21
  #include "core/platform/uuid.h"
22
22
  #include "core/service_type.hxx"
23
- #include "core/utils/crc32.hxx"
24
23
 
25
- #include <fmt/core.h>
26
24
  #include <map>
27
25
  #include <optional>
28
26
  #include <set>
@@ -63,6 +61,12 @@ struct configuration {
63
61
  port_map services_tls{};
64
62
  std::map<std::string, alternate_address> alt{};
65
63
 
64
+ bool operator!=(const node& other) const
65
+ {
66
+ return hostname != other.hostname || services_plain.key_value != other.services_plain.key_value ||
67
+ services_tls.key_value != other.services_tls.key_value;
68
+ }
69
+
66
70
  [[nodiscard]] std::uint16_t port_or(service_type type, bool is_tls, std::uint16_t default_value) const;
67
71
 
68
72
  [[nodiscard]] std::uint16_t port_or(const std::string& network, service_type type, bool is_tls, std::uint16_t default_value) const;
@@ -146,16 +150,8 @@ struct configuration {
146
150
  const std::string& hostname,
147
151
  const std::string& port) const;
148
152
 
149
- template<typename Key>
150
- std::pair<std::uint16_t, std::optional<std::size_t>> map_key(const Key& key, std::size_t index)
151
- {
152
- if (!vbmap.has_value()) {
153
- return { 0, {} };
154
- }
155
- std::uint32_t crc = utils::hash_crc32(key.data(), key.size());
156
- auto vbucket = static_cast<std::uint16_t>(crc % vbmap->size());
157
- return { vbucket, server_by_vbucket(vbucket, index) };
158
- }
153
+ std::pair<std::uint16_t, std::optional<std::size_t>> map_key(const std::string& key, std::size_t index);
154
+ std::pair<std::uint16_t, std::optional<std::size_t>> map_key(const std::vector<std::byte>& key, std::size_t index);
159
155
 
160
156
  std::optional<std::size_t> server_by_vbucket(std::uint16_t vbucket, std::size_t index);
161
157
  };
@@ -159,8 +159,8 @@ struct fmt::formatter<couchbase::core::topology::configuration> {
159
159
  config.num_replicas ? fmt::format(", replicas={}", *config.num_replicas) : "",
160
160
  config.vbmap.has_value() ? fmt::format(", partitions={}", config.vbmap->size()) : "",
161
161
  config.nodes.size(),
162
- couchbase::core::utils::join_strings_fmt("{}", config.nodes, ", "),
163
- couchbase::core::utils::join_strings_fmt("{}", config.bucket_capabilities, ", "),
164
- couchbase::core::utils::join_strings_fmt("{}", config.cluster_capabilities, ", "));
162
+ couchbase::core::utils::join_strings_fmt(config.nodes, ", "),
163
+ couchbase::core::utils::join_strings_fmt(config.bucket_capabilities, ", "),
164
+ couchbase::core::utils::join_strings_fmt(config.cluster_capabilities, ", "));
165
165
  }
166
166
  };
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <tao/json/forward.hpp>
23
23
 
24
+ #include <limits>
25
+
24
26
  namespace tao::json
25
27
  {
26
28
  template<>
@@ -27,8 +27,8 @@
27
27
  namespace couchbase::core
28
28
  {
29
29
  struct error_map {
30
- uuid::uuid_t id;
31
- std::uint16_t version;
30
+ uuid::uuid_t id{};
31
+ std::uint16_t version{};
32
32
  std::uint16_t revision{};
33
33
  std::map<std::uint16_t, couchbase::key_value_error_map_info> errors{};
34
34
  };
@@ -77,6 +77,10 @@ struct traits<couchbase::core::error_map> {
77
77
  attributes.insert(couchbase::key_value_error_map_attribute::item_deleted);
78
78
  } else if (attr_val == "rate-limit") {
79
79
  attributes.insert(couchbase::key_value_error_map_attribute::rate_limit);
80
+ } else if (attr_val == "no-retry") {
81
+ attributes.insert(couchbase::key_value_error_map_attribute::no_retry);
82
+ } else if (attr_val == "system-constraint") {
83
+ attributes.insert(couchbase::key_value_error_map_attribute::system_constraint);
80
84
  } else {
81
85
  CB_LOG_WARNING(R"(skipping unknown attribute "{}" in error map for code={} and name="{}")", attr_val, code, name);
82
86
  }
@@ -0,0 +1,58 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2021-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #include "active_transaction_record.hxx"
19
+
20
+ namespace couchbase::core::transactions
21
+ {
22
+ active_transaction_record
23
+ active_transaction_record::map_to_atr(const operations::lookup_in_response& resp)
24
+ {
25
+ std::vector<atr_entry> entries;
26
+ if (resp.fields[0].status == key_value_status_code::success) {
27
+ auto attempts = core::utils::json::parse_binary(resp.fields[0].value);
28
+ auto vbucket = core::utils::json::parse_binary(resp.fields[1].value);
29
+ auto now_ns = now_ns_from_vbucket(vbucket);
30
+ entries.reserve(attempts.get_object().size());
31
+ for (const auto& [key, val] : attempts.get_object()) {
32
+ std::optional<tao::json::value> forward_compat;
33
+ if (const auto* compat = val.find(ATR_FIELD_FORWARD_COMPAT); compat != nullptr) {
34
+ forward_compat = *compat;
35
+ }
36
+ std::optional<uint32_t> expires_after_msec = std::max(val.optional<int32_t>(ATR_FIELD_EXPIRES_AFTER_MSECS).value_or(0), 0);
37
+ entries.emplace_back(resp.ctx.bucket(),
38
+ resp.ctx.id(),
39
+ key,
40
+ attempt_state_value(val.at(ATR_FIELD_STATUS).get_string()),
41
+ parse_mutation_cas(val.optional<std::string>(ATR_FIELD_START_TIMESTAMP).value_or("")),
42
+ parse_mutation_cas(val.optional<std::string>(ATR_FIELD_START_COMMIT).value_or("")),
43
+ parse_mutation_cas(val.optional<std::string>(ATR_FIELD_TIMESTAMP_COMPLETE).value_or("")),
44
+ parse_mutation_cas(val.optional<std::string>(ATR_FIELD_TIMESTAMP_ROLLBACK_START).value_or("")),
45
+ parse_mutation_cas(val.optional<std::string>(ATR_FIELD_TIMESTAMP_ROLLBACK_COMPLETE).value_or("")),
46
+ expires_after_msec,
47
+ process_document_ids(val, ATR_FIELD_DOCS_INSERTED),
48
+ process_document_ids(val, ATR_FIELD_DOCS_REPLACED),
49
+ process_document_ids(val, ATR_FIELD_DOCS_REMOVED),
50
+ forward_compat,
51
+ now_ns,
52
+ val.optional<std::string>(ATR_FIELD_DURABILITY_LEVEL));
53
+ }
54
+ }
55
+ return active_transaction_record(
56
+ { resp.ctx.bucket(), resp.ctx.scope(), resp.ctx.collection(), resp.ctx.id() }, resp.cas.value(), std::move(entries));
57
+ }
58
+ } // namespace couchbase::core::transactions
@@ -35,9 +35,8 @@ namespace couchbase::core::transactions
35
35
  class active_transaction_record
36
36
  {
37
37
  public:
38
- // TODO: we should get the kv_timeout and put it in the request (pass in the transactions_config)
39
38
  template<typename Callback>
40
- static void get_atr(std::shared_ptr<core::cluster> cluster, const core::document_id& atr_id, Callback&& cb)
39
+ static void get_atr(const core::cluster& cluster, const core::document_id& atr_id, Callback&& cb)
41
40
  {
42
41
  core::operations::lookup_in_request req{ atr_id };
43
42
  req.specs =
@@ -46,7 +45,7 @@ class active_transaction_record
46
45
  lookup_in_specs::get(subdoc::lookup_in_macro::vbucket).xattr(),
47
46
  }
48
47
  .specs();
49
- cluster->execute(req, [atr_id, cb = std::move(cb)](core::operations::lookup_in_response resp) mutable {
48
+ cluster.execute(req, [atr_id, cb = std::move(cb)](core::operations::lookup_in_response resp) mutable {
50
49
  try {
51
50
  if (resp.ctx.ec() == couchbase::errc::key_value::document_not_found) {
52
51
  // that's ok, just return an empty one.
@@ -69,7 +68,7 @@ class active_transaction_record
69
68
  });
70
69
  }
71
70
 
72
- static std::optional<active_transaction_record> get_atr(std::shared_ptr<core::cluster> cluster, const core::document_id& atr_id)
71
+ static std::optional<active_transaction_record> get_atr(const core::cluster& cluster, const core::document_id& atr_id)
73
72
  {
74
73
  auto barrier = std::promise<std::optional<active_transaction_record>>();
75
74
  auto f = barrier.get_future();
@@ -82,7 +81,7 @@ class active_transaction_record
82
81
  return f.get();
83
82
  }
84
83
 
85
- active_transaction_record(const core::document_id& id, uint64_t, std::vector<atr_entry> entries)
84
+ active_transaction_record(core::document_id id, uint64_t, std::vector<atr_entry> entries)
86
85
  : id_(std::move(id))
87
86
  , entries_(std::move(entries))
88
87
  {
@@ -140,41 +139,7 @@ class active_transaction_record
140
139
  return records;
141
140
  }
142
141
 
143
- static inline active_transaction_record map_to_atr(const core::operations::lookup_in_response& resp)
144
- {
145
- std::vector<atr_entry> entries;
146
- if (resp.fields[0].status == key_value_status_code::success) {
147
- auto attempts = core::utils::json::parse_binary(resp.fields[0].value);
148
- auto vbucket = core::utils::json::parse_binary(resp.fields[1].value);
149
- auto now_ns = now_ns_from_vbucket(vbucket);
150
- entries.reserve(attempts.get_object().size());
151
- for (const auto& [key, val] : attempts.get_object()) {
152
- std::optional<tao::json::value> forward_compat;
153
- if (const auto* compat = val.find(ATR_FIELD_FORWARD_COMPAT); compat != nullptr) {
154
- forward_compat = *compat;
155
- }
156
- std::optional<uint32_t> expires_after_msec = std::max(val.optional<int32_t>(ATR_FIELD_EXPIRES_AFTER_MSECS).value_or(0), 0);
157
- entries.emplace_back(resp.ctx.bucket(),
158
- resp.ctx.id(),
159
- key,
160
- attempt_state_value(val.at(ATR_FIELD_STATUS).get_string()),
161
- parse_mutation_cas(val.optional<std::string>(ATR_FIELD_START_TIMESTAMP).value_or("")),
162
- parse_mutation_cas(val.optional<std::string>(ATR_FIELD_START_COMMIT).value_or("")),
163
- parse_mutation_cas(val.optional<std::string>(ATR_FIELD_TIMESTAMP_COMPLETE).value_or("")),
164
- parse_mutation_cas(val.optional<std::string>(ATR_FIELD_TIMESTAMP_ROLLBACK_START).value_or("")),
165
- parse_mutation_cas(val.optional<std::string>(ATR_FIELD_TIMESTAMP_ROLLBACK_COMPLETE).value_or("")),
166
- expires_after_msec,
167
- process_document_ids(val, ATR_FIELD_DOCS_INSERTED),
168
- process_document_ids(val, ATR_FIELD_DOCS_REPLACED),
169
- process_document_ids(val, ATR_FIELD_DOCS_REMOVED),
170
- forward_compat,
171
- now_ns,
172
- val.optional<std::string>(ATR_FIELD_DURABILITY_LEVEL));
173
- }
174
- }
175
- return active_transaction_record(
176
- { resp.ctx.bucket(), resp.ctx.scope(), resp.ctx.collection(), resp.ctx.id() }, resp.cas.value(), std::move(entries));
177
- }
142
+ static active_transaction_record map_to_atr(const core::operations::lookup_in_response& resp);
178
143
  };
179
144
 
180
145
  } // namespace couchbase::core::transactions
@@ -0,0 +1,30 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2021-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #include <couchbase/scope.hxx>
19
+ #include <couchbase/transactions/async_attempt_context.hxx>
20
+
21
+ #include <fmt/core.h>
22
+
23
+ namespace couchbase::transactions
24
+ {
25
+ void
26
+ async_attempt_context::query(const scope& scope, std::string statement, transaction_query_options opts, async_query_handler&& handler)
27
+ {
28
+ return query(std::move(statement), std::move(opts), fmt::format("{}.{}", scope.bucket_name(), scope.name()), std::move(handler));
29
+ }
30
+ } // namespace couchbase::transactions
@@ -22,11 +22,13 @@
22
22
 
23
23
  #include "core/transactions.hxx"
24
24
  #include "internal/atr_cleanup_entry.hxx"
25
+ #include "internal/doc_record_fmt.hxx"
25
26
  #include "internal/exceptions_internal.hxx"
26
27
  #include "internal/logging.hxx"
27
28
  #include "internal/transactions_cleanup.hxx"
28
29
  #include "internal/utils.hxx"
29
30
  #include "result.hxx"
31
+ #include "result_fmt.hxx"
30
32
 
31
33
  #include <optional>
32
34
 
@@ -189,10 +191,9 @@ atr_cleanup_entry::do_per_doc(std::vector<doc_record> docs,
189
191
  }
190
192
  .specs();
191
193
  req.access_deleted = true;
192
- wrap_request(req, cleanup_->config());
193
194
  // now a blocking lookup_in...
194
195
  auto barrier = std::make_shared<std::promise<result>>();
195
- cleanup_->cluster_ref()->execute(
196
+ cleanup_->cluster_ref().execute(
196
197
  req, [barrier](core::operations::lookup_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
197
198
  auto f = barrier->get_future();
198
199
  auto res = wrap_operation_future(f);
@@ -253,10 +254,9 @@ atr_cleanup_entry::commit_docs(std::optional<std::vector<doc_record>> docs, dura
253
254
  core::operations::insert_request req{ doc.id(), content };
254
255
  auto barrier = std::make_shared<std::promise<result>>();
255
256
  auto f = barrier->get_future();
256
- cleanup_->cluster_ref()->execute(wrap_durable_request(req, cleanup_->config(), dl),
257
- [barrier](core::operations::insert_response resp) {
258
- barrier->set_value(result::create_from_mutation_response(resp));
259
- });
257
+ cleanup_->cluster_ref().execute(wrap_durable_request(req, dl), [barrier](core::operations::insert_response resp) {
258
+ barrier->set_value(result::create_from_mutation_response(resp));
259
+ });
260
260
  wrap_operation_future(f);
261
261
  } else {
262
262
  core::operations::mutate_in_request req{ doc.id() };
@@ -268,10 +268,10 @@ atr_cleanup_entry::commit_docs(std::optional<std::vector<doc_record>> docs, dura
268
268
  .specs();
269
269
  req.cas = doc.cas();
270
270
  req.store_semantics = couchbase::store_semantics::replace;
271
- wrap_durable_request(req, cleanup_->config(), dl);
271
+ wrap_durable_request(req, dl);
272
272
  auto barrier = std::make_shared<std::promise<result>>();
273
273
  auto f = barrier->get_future();
274
- cleanup_->cluster_ref()->execute(req, [barrier](core::operations::mutate_in_response resp) {
274
+ cleanup_->cluster_ref().execute(req, [barrier](core::operations::mutate_in_response resp) {
275
275
  barrier->set_value(result::create_from_subdoc_response(resp));
276
276
  });
277
277
  wrap_operation_future(f);
@@ -301,20 +301,20 @@ atr_cleanup_entry::remove_docs(std::optional<std::vector<doc_record>> docs, dura
301
301
  .specs();
302
302
  req.cas = doc.cas();
303
303
  req.access_deleted = true;
304
- wrap_durable_request(req, cleanup_->config(), dl);
304
+ wrap_durable_request(req, dl);
305
305
  auto barrier = std::make_shared<std::promise<result>>();
306
306
  auto f = barrier->get_future();
307
- cleanup_->cluster_ref()->execute(req, [barrier](core::operations::mutate_in_response resp) {
307
+ cleanup_->cluster_ref().execute(req, [barrier](core::operations::mutate_in_response resp) {
308
308
  barrier->set_value(result::create_from_subdoc_response(resp));
309
309
  });
310
310
  wrap_operation_future(f);
311
311
  } else {
312
312
  core::operations::remove_request req{ doc.id() };
313
313
  req.cas = doc.cas();
314
- wrap_durable_request(req, cleanup_->config(), dl);
314
+ wrap_durable_request(req, dl);
315
315
  auto barrier = std::make_shared<std::promise<result>>();
316
316
  auto f = barrier->get_future();
317
- cleanup_->cluster_ref()->execute(req, [barrier](core::operations::remove_response resp) {
317
+ cleanup_->cluster_ref().execute(req, [barrier](core::operations::remove_response resp) {
318
318
  barrier->set_value(result::create_from_mutation_response(resp));
319
319
  });
320
320
  wrap_operation_future(f);
@@ -336,10 +336,10 @@ atr_cleanup_entry::remove_docs_staged_for_removal(std::optional<std::vector<doc_
336
336
  }
337
337
  core::operations::remove_request req{ doc.id() };
338
338
  req.cas = doc.cas();
339
- wrap_durable_request(req, cleanup_->config(), dl);
339
+ wrap_durable_request(req, dl);
340
340
  auto barrier = std::make_shared<std::promise<result>>();
341
341
  auto f = barrier->get_future();
342
- cleanup_->cluster_ref()->execute(req, [barrier](core::operations::remove_response resp) {
342
+ cleanup_->cluster_ref().execute(req, [barrier](core::operations::remove_response resp) {
343
343
  barrier->set_value(result::create_from_mutation_response(resp));
344
344
  });
345
345
  wrap_operation_future(f);
@@ -370,10 +370,10 @@ atr_cleanup_entry::remove_txn_links(std::optional<std::vector<doc_record>> docs,
370
370
  .specs();
371
371
  req.access_deleted = true;
372
372
  req.cas = doc.cas();
373
- wrap_durable_request(req, cleanup_->config(), dl);
373
+ wrap_durable_request(req, dl);
374
374
  auto barrier = std::make_shared<std::promise<result>>();
375
375
  auto f = barrier->get_future();
376
- cleanup_->cluster_ref()->execute(
376
+ cleanup_->cluster_ref().execute(
377
377
  req, [barrier](core::operations::mutate_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
378
378
  wrap_operation_future(f);
379
379
  CB_ATTEMPT_CLEANUP_LOG_TRACE("remove_txn_links removed links for doc {}", doc.id());
@@ -397,10 +397,10 @@ atr_cleanup_entry::cleanup_entry(durability_level dl)
397
397
  }
398
398
  mut_specs.push_back(couchbase::mutate_in_specs::remove("attempts." + atr_entry_->attempt_id()).xattr());
399
399
  req.specs = mut_specs.specs();
400
- wrap_durable_request(req, cleanup_->config(), dl);
400
+ wrap_durable_request(req, dl);
401
401
  auto barrier = std::make_shared<std::promise<result>>();
402
402
  auto f = barrier->get_future();
403
- cleanup_->cluster_ref()->execute(
403
+ cleanup_->cluster_ref().execute(
404
404
  req, [barrier](core::operations::mutate_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
405
405
  wrap_operation_future(f);
406
406
  CB_ATTEMPT_CLEANUP_LOG_TRACE("successfully removed attempt {}", attempt_id_);
@@ -0,0 +1,36 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2021-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #include <couchbase/scope.hxx>
19
+ #include <couchbase/transactions/attempt_context.hxx>
20
+
21
+ #include <fmt/core.h>
22
+
23
+ namespace couchbase::transactions
24
+ {
25
+ std::pair<transaction_op_error_context, transaction_query_result>
26
+ attempt_context::query(const scope& scope, const std::string& statement, const transaction_query_options& opts)
27
+ {
28
+ return do_public_query(statement, opts, fmt::format("{}.{}", scope.bucket_name(), scope.name()));
29
+ }
30
+
31
+ std::pair<transaction_op_error_context, transaction_query_result>
32
+ attempt_context::query(const std::string& statement, const transaction_query_options& options)
33
+ {
34
+ return do_public_query(statement, options, {});
35
+ }
36
+ } // namespace couchbase::transactions