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.
- package/CMakeLists.txt +1 -1
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +139 -56
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/CMakeLists.txt +397 -424
- package/deps/couchbase-cxx-client/core/agent_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/agent_group.cxx +0 -1
- package/deps/couchbase-cxx-client/core/agent_group.hxx +9 -0
- package/deps/couchbase-cxx-client/core/agent_group_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/bucket.cxx +22 -8
- package/deps/couchbase-cxx-client/core/bucket.hxx +3 -1
- package/deps/couchbase-cxx-client/core/cluster.cxx +1453 -108
- package/deps/couchbase-cxx-client/core/cluster.hxx +183 -473
- package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/cluster_options.cxx +12 -2
- package/deps/couchbase-cxx-client/core/cluster_options.hxx +9 -8
- package/deps/couchbase-cxx-client/core/config_profiles.cxx +2 -2
- package/deps/couchbase-cxx-client/core/config_profiles.hxx +1 -1
- package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +1 -2
- package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +3 -2
- package/deps/couchbase-cxx-client/core/diagnostics.hxx +0 -1
- package/deps/couchbase-cxx-client/core/dispatcher.cxx +2 -2
- package/deps/couchbase-cxx-client/core/impl/analytics.cxx +38 -76
- package/deps/couchbase-cxx-client/core/impl/analytics.hxx +40 -0
- package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +820 -0
- package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +403 -0
- package/deps/couchbase-cxx-client/core/impl/bucket.cxx +78 -0
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +226 -44
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +1384 -0
- package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +306 -0
- package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +3 -1
- package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -0
- package/deps/couchbase-cxx-client/core/{operations/mcbp_noop.cxx → impl/doc_id_query.cxx} +19 -15
- package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +4 -2
- package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +0 -10
- package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +0 -10
- package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +24 -17
- package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/query.cxx +45 -68
- package/deps/couchbase-cxx-client/core/impl/query.hxx +34 -0
- package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +628 -0
- package/deps/couchbase-cxx-client/core/impl/scope.cxx +172 -0
- package/deps/couchbase-cxx-client/core/impl/search.cxx +12 -61
- package/deps/couchbase-cxx-client/core/impl/search.hxx +37 -0
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +469 -0
- package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +12 -0
- package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +87 -0
- package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +23 -25
- package/deps/couchbase-cxx-client/core/io/dns_config.cxx +28 -0
- package/deps/couchbase-cxx-client/core/io/dns_config.hxx +6 -25
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +9 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +1 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +3 -2
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +51 -21
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +2 -1
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -4
- package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -1
- package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +1 -1
- package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +1 -1
- package/deps/couchbase-cxx-client/core/meta/features.hxx +28 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +17 -1
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +6 -5
- package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +2 -2
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +4 -4
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +4 -4
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
- package/deps/couchbase-cxx-client/core/operations_fwd.hxx +260 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +146 -5
- package/deps/couchbase-cxx-client/core/origin.hxx +30 -140
- package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +3 -3
- package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -0
- package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +4 -4
- package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +6 -0
- package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +3 -0
- package/deps/couchbase-cxx-client/core/protocol/status.cxx +6 -0
- package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
- package/deps/couchbase-cxx-client/core/query_context.hxx +11 -7
- package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +1 -1
- package/deps/couchbase-cxx-client/core/topology/configuration.cxx +23 -0
- package/deps/couchbase-cxx-client/core/topology/configuration.hxx +8 -12
- package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +3 -3
- package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
- package/deps/couchbase-cxx-client/core/topology/error_map.hxx +2 -2
- package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +4 -0
- package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +58 -0
- package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +5 -40
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +30 -0
- package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +18 -18
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +36 -0
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +39 -41
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +2 -2
- package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +3 -1
- package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +2 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +32 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +4 -30
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +41 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +17 -15
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +1 -1
- package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +1 -13
- package/deps/couchbase-cxx-client/core/transactions/result.hxx +0 -26
- package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +46 -0
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +16 -14
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +6 -6
- package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +48 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +1 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +61 -4
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +9 -8
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +9 -16
- package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +7 -6
- package/deps/couchbase-cxx-client/core/transactions.hxx +6 -5
- package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +4 -3
- package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +4 -4
- package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +463 -0
- package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/append_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +19 -115
- package/deps/couchbase-cxx-client/couchbase/bucket.hxx +13 -30
- package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +8 -7
- package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -1
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +41 -73
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
- package/deps/couchbase-cxx-client/couchbase/collection.hxx +176 -386
- package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +8 -9
- package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +21 -24
- package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +116 -0
- package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +3 -3
- package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +3 -2
- package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +120 -0
- package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +85 -0
- package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +103 -0
- package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +63 -0
- package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +105 -0
- package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +103 -0
- package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +84 -0
- package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +103 -0
- package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +63 -0
- package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +22 -1
- package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +6 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +37 -0
- package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +66 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +65 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +1 -4
- package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +45 -0
- package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +121 -0
- package/deps/couchbase-cxx-client/couchbase/get_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +67 -0
- package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +12 -0
- package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +48 -0
- package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +48 -0
- package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +239 -0
- package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +3 -3
- package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +40 -0
- package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -1
- package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/network_options.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +19 -0
- package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +99 -20
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +0 -21
- package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +63 -0
- package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/scope.hxx +13 -45
- package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +1 -7
- package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +26 -0
- package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +292 -0
- package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +10 -0
- package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +84 -0
- package/deps/couchbase-cxx-client/couchbase/security_options.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +10 -7
- package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +10 -10
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +8 -58
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +28 -70
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +7 -2
- package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +2 -1
- package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +11 -38
- package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
- package/dist/binding.d.ts +7 -9
- package/dist/bindingutilities.js +2 -0
- package/dist/collection.js +3 -3
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +14 -2
- package/dist/transactions.d.ts +2 -0
- package/dist/transactions.js +2 -3
- package/dist/usermanager.js +1 -1
- package/package.json +7 -7
- package/src/binding.cpp +1 -0
- package/src/connection.cpp +12 -9
- package/src/connection.hpp +3 -3
- package/src/connection_autogen.cpp +7 -5
- package/src/constants.cpp +3 -0
- package/src/instance.cpp +2 -2
- package/src/instance.hpp +1 -1
- package/src/jstocbpp_autogen.hpp +21 -38
- package/src/jstocbpp_basic.hpp +2 -0
- package/src/jstocbpp_errors.hpp +1 -0
- package/src/jstocbpp_transactions.hpp +6 -22
- package/src/mutationtoken.hpp +1 -0
- package/tools/gen-bindings-json.py +39 -16
- package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/CMakeLists.txt +0 -23
- package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/example.cpp +0 -398
- package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
- package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
- package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
- package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
- package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
- package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
- package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
- package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
- package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
- package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
- package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
- package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
- package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
- package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
- package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
- package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
- package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
- package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
- package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
- package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
- package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
- package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
- package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
- package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
- package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
- package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
- package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
- package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
- package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
- package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
- package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
- package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
- package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
- package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
- package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
- package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
- package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
- package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
- /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
|
-
|
|
150
|
-
std::pair<std::uint16_t, std::optional<std::size_t>> map_key(const
|
|
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(
|
|
163
|
-
couchbase::core::utils::join_strings_fmt(
|
|
164
|
-
couchbase::core::utils::join_strings_fmt(
|
|
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
|
};
|
|
@@ -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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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()
|
|
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()
|
|
257
|
-
|
|
258
|
-
|
|
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,
|
|
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()
|
|
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,
|
|
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()
|
|
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,
|
|
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()
|
|
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,
|
|
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()
|
|
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,
|
|
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()
|
|
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,
|
|
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()
|
|
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
|