couchbase 4.2.8 → 4.2.10
Sign up to get free protection for your applications and to get access to all the features.
- 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 +401 -424
- package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +7 -3
- package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +1 -0
- 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 +74 -10
- package/deps/couchbase-cxx-client/core/bucket.hxx +4 -2
- package/deps/couchbase-cxx-client/core/cluster.cxx +1491 -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 +102 -0
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +299 -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/diagnostics.cxx +294 -0
- package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +39 -0
- 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 +187 -0
- package/deps/couchbase-cxx-client/core/impl/search.cxx +81 -57
- package/deps/couchbase-cxx-client/core/impl/search.hxx +45 -0
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +712 -0
- package/deps/couchbase-cxx-client/core/impl/search_request.cxx +139 -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/vector_query.cxx +42 -0
- package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +40 -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.hxx +6 -3
- 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 +75 -53
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +3 -1
- package/deps/couchbase-cxx-client/core/logger/logger.cxx +1 -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 +38 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +23 -2
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/document_search.cxx +37 -1
- package/deps/couchbase-cxx-client/core/operations/document_search.hxx +11 -0
- 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 +9 -6
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +9 -8
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +9 -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 +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +23 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +23 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +23 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +39 -22
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +20 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +3 -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 +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +3 -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/collections_manifest.hxx +1 -1
- package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +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 +5 -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/core/vector_query_combination.hxx +23 -0
- 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 +42 -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 +151 -73
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
- package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +2 -1
- package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +78 -0
- package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +72 -0
- 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 +32 -3
- 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/diagnostics_options.hxx +75 -0
- package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +124 -0
- 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/endpoint_diagnostics.hxx +206 -0
- package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +205 -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 +1 -29
- 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/collection_spec.hxx +1 -1
- 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/ping_options.hxx +93 -0
- package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +118 -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 +37 -53
- package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +291 -0
- 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_request.hxx +120 -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/service_type.hxx +58 -0
- 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/update_collection_options.hxx +32 -3
- 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/deps/couchbase-cxx-client/couchbase/vector_query.hxx +99 -0
- package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +85 -0
- package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +76 -0
- package/dist/binding.d.ts +16 -9
- package/dist/binding.js +4 -1
- package/dist/bindingutilities.d.ts +6 -1
- package/dist/bindingutilities.js +17 -1
- package/dist/cluster.d.ts +12 -1
- package/dist/cluster.js +22 -0
- package/dist/collection.js +3 -3
- package/dist/couchbase.d.ts +1 -0
- package/dist/couchbase.js +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +14 -2
- package/dist/searchexecutor.d.ts +2 -2
- package/dist/searchexecutor.js +19 -3
- package/dist/searchtypes.d.ts +46 -0
- package/dist/searchtypes.js +81 -1
- package/dist/transactions.d.ts +2 -0
- package/dist/transactions.js +2 -3
- package/dist/usermanager.js +1 -1
- package/dist/vectorsearch.d.ts +99 -0
- package/dist/vectorsearch.js +132 -0
- 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 +14 -0
- package/src/instance.cpp +2 -2
- package/src/instance.hpp +1 -1
- package/src/jstocbpp_autogen.hpp +45 -45
- 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 +41 -16
- 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_;
|
@@ -41,7 +41,7 @@ struct traits<couchbase::core::topology::collections_manifest> {
|
|
41
41
|
collection.uid = std::stoull(c.at("uid").get_string(), nullptr, 16);
|
42
42
|
collection.name = c.at("name").get_string();
|
43
43
|
if (const auto* max_ttl = c.find("maxTTL"); max_ttl != nullptr) {
|
44
|
-
collection.max_expiry = max_ttl->template as<std::
|
44
|
+
collection.max_expiry = max_ttl->template as<std::int32_t>();
|
45
45
|
}
|
46
46
|
if (const auto* history = c.find("history"); history != nullptr) {
|
47
47
|
collection.history = history->template as<std::optional<bool>>();
|
@@ -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
|