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
@@ -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