couchbase 3.8.2 → 3.9.1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/CMakeLists.txt +16 -1
- data/ext/cache/cpm/{CPM_0.42.0.cmake → CPM_0.43.1.cmake} +18 -2
- data/ext/cache/extconf_include.rb +6 -6
- data/ext/cache/mozilla-ca-bundle.crt +121 -55
- data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
- data/ext/couchbase/CMakeLists.txt +136 -23
- data/ext/couchbase/cmake/APKBUILD.in +25 -4
- data/ext/couchbase/cmake/Bundler.cmake +143 -34
- data/ext/couchbase/cmake/CPM.cmake +126 -12
- data/ext/couchbase/cmake/Cache.cmake +7 -1
- data/ext/couchbase/cmake/CompilerOptions.cmake +1 -1
- data/ext/couchbase/cmake/CompilerWarnings.cmake +17 -6
- data/ext/couchbase/cmake/GrpcProtobuf.cmake +481 -0
- data/ext/couchbase/cmake/OpenSSL.cmake +82 -7
- data/ext/couchbase/cmake/Packaging.cmake +519 -65
- data/ext/couchbase/cmake/Protostellar.cmake +250 -0
- data/ext/couchbase/cmake/Sanitizers.cmake +61 -50
- data/ext/couchbase/cmake/StaticAnalyzers.cmake +16 -5
- data/ext/couchbase/cmake/TestFramework.cmake +283 -0
- data/ext/couchbase/cmake/TestFrameworkAddTests.cmake +51 -0
- data/ext/couchbase/cmake/Testing.cmake +27 -9
- data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +141 -8
- data/ext/couchbase/cmake/VersionInfo.cmake +50 -0
- data/ext/couchbase/cmake/build_config.hxx.in +2 -1
- data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +101 -23
- data/ext/couchbase/cmake/couchbase_cxx_client_static-config.cmake.in +7 -0
- data/ext/couchbase/cmake/couchbase_cxx_client_static.pc.in +2 -0
- data/ext/couchbase/cmake/gRPC_Generate.cmake +58 -0
- data/ext/couchbase/cmake/protobuf_Generate.cmake +69 -0
- data/ext/couchbase/cmake/require-git-checkout.cmake +25 -0
- data/ext/couchbase/cmake/tarball_glob.txt +49 -0
- data/ext/couchbase/core/agent_group.cxx +0 -8
- data/ext/couchbase/core/agent_group.hxx +0 -4
- data/ext/couchbase/core/analytics_stream.cxx +314 -0
- data/ext/couchbase/core/analytics_stream.hxx +129 -0
- data/ext/couchbase/core/analytics_stream_component.cxx +245 -0
- data/ext/couchbase/core/analytics_stream_component.hxx +67 -0
- data/ext/couchbase/core/app_telemetry_meter.cxx +25 -3
- data/ext/couchbase/core/app_telemetry_meter.hxx +77 -0
- data/ext/couchbase/core/app_telemetry_reporter.cxx +7 -6
- data/ext/couchbase/core/bucket.cxx +381 -87
- data/ext/couchbase/core/bucket.hxx +105 -25
- data/ext/couchbase/core/bucket_unit_test_api.hxx +57 -0
- data/ext/couchbase/core/capella.hxx +91 -0
- data/ext/couchbase/core/cluster.cxx +1551 -397
- data/ext/couchbase/core/cluster.hxx +39 -8
- data/ext/couchbase/core/cluster_agent.cxx +0 -8
- data/ext/couchbase/core/cluster_agent.hxx +0 -4
- data/ext/couchbase/core/cluster_options.hxx +26 -3
- data/ext/couchbase/core/collections_component.cxx +39 -15
- data/ext/couchbase/core/config_profiles.cxx +1 -1
- data/ext/couchbase/core/crud_component.cxx +2 -2
- data/ext/couchbase/core/crud_options.hxx +34 -0
- data/ext/couchbase/core/crypto/cbcrypto.cc +18 -13
- data/ext/couchbase/core/document_id_redaction.hxx +81 -0
- data/ext/couchbase/core/error_context/base_error_context.hxx +7 -6
- data/ext/couchbase/core/error_context/key_value.cxx +25 -2
- data/ext/couchbase/core/error_context/key_value.hxx +60 -33
- data/ext/couchbase/core/error_context/key_value_error_context.hxx +16 -15
- data/ext/couchbase/core/error_context/search.hxx +5 -0
- data/ext/couchbase/core/error_context/search_json.hxx +3 -0
- data/ext/couchbase/core/error_context/subdocument_error_context.hxx +19 -18
- data/ext/couchbase/core/error_context/view.hxx +5 -0
- data/ext/couchbase/core/free_form_http_request.cxx +237 -4
- data/ext/couchbase/core/free_form_http_request.hxx +41 -8
- data/ext/couchbase/core/http_component.cxx +300 -284
- data/ext/couchbase/core/http_component.hxx +0 -4
- data/ext/couchbase/core/impl/analytics.cxx +38 -5
- data/ext/couchbase/core/impl/analytics.hxx +34 -0
- data/ext/couchbase/core/impl/bootstrap_error.hxx +0 -3
- data/ext/couchbase/core/impl/collection.cxx +215 -202
- data/ext/couchbase/core/impl/collection_manager.cxx +1 -1
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +45 -18
- data/ext/couchbase/core/impl/error.cxx +22 -2
- data/ext/couchbase/core/impl/internal_analytics_stream_result.hxx +111 -0
- data/ext/couchbase/core/impl/internal_query_stream_result.hxx +110 -0
- data/ext/couchbase/core/impl/invoke_with_node_id.hxx +15 -7
- data/ext/couchbase/core/impl/key_value_error_category.cxx +6 -0
- data/ext/couchbase/core/impl/lookup_in_replica.cxx +10 -10
- data/ext/couchbase/core/impl/lookup_in_replica.hxx +4 -4
- data/ext/couchbase/core/impl/node_id.cxx +49 -13
- data/ext/couchbase/core/impl/observability_recorder.cxx +12 -2
- data/ext/couchbase/core/impl/observe_poll.cxx +63 -23
- data/ext/couchbase/core/impl/public_analytics_stream_result.cxx +372 -0
- data/ext/couchbase/core/impl/public_bucket.cxx +48 -2
- data/ext/couchbase/core/impl/public_cluster.cxx +229 -42
- data/ext/couchbase/core/impl/public_query_stream_result.cxx +380 -0
- data/ext/couchbase/core/impl/public_transaction_get_multi_replicas_from_preferred_server_group_result.cxx +42 -0
- data/ext/couchbase/core/impl/public_transaction_get_multi_result.cxx +42 -0
- data/ext/couchbase/core/impl/query.cxx +76 -7
- data/ext/couchbase/core/impl/query.hxx +36 -0
- data/ext/couchbase/core/impl/query_index_manager.cxx +54 -1
- data/ext/couchbase/core/impl/replica_utils.cxx +101 -0
- data/ext/couchbase/core/impl/replica_utils.hxx +64 -0
- data/ext/couchbase/core/impl/resolve_node_id.hxx +125 -0
- data/ext/couchbase/core/impl/scope.cxx +70 -0
- data/ext/couchbase/core/impl/search.cxx +31 -1
- data/ext/couchbase/core/impl/transactions.cxx +130 -0
- data/ext/couchbase/core/impl/wait_until_ready.cxx +439 -0
- data/ext/couchbase/core/impl/wait_until_ready.hxx +110 -0
- data/ext/couchbase/core/impl/with_bucket_config_or_timeout.hxx +180 -0
- data/ext/couchbase/core/impl/with_cancellation.hxx +11 -3
- data/ext/couchbase/core/io/configuration_belongs_to_session.hxx +1 -2
- data/ext/couchbase/core/io/dns_client.cxx +122 -45
- data/ext/couchbase/core/io/dns_codec.hxx +21 -21
- data/ext/couchbase/core/io/dns_config.cxx +21 -6
- data/ext/couchbase/core/io/http_command.hxx +149 -121
- data/ext/couchbase/core/io/http_error.hxx +107 -0
- data/ext/couchbase/core/io/http_parser.cxx +4 -0
- data/ext/couchbase/core/io/http_session.cxx +606 -154
- data/ext/couchbase/core/io/http_session.hxx +147 -30
- data/ext/couchbase/core/io/http_session_manager.hxx +329 -382
- data/ext/couchbase/core/io/http_streaming_parser.cxx +4 -0
- data/ext/couchbase/core/io/http_streaming_response.cxx +328 -43
- data/ext/couchbase/core/io/http_streaming_response.hxx +37 -3
- data/ext/couchbase/core/io/mcbp_buffer_pool.hxx +122 -0
- data/ext/couchbase/core/io/mcbp_command.hxx +150 -51
- data/ext/couchbase/core/io/mcbp_command_id.hxx +45 -0
- data/ext/couchbase/core/io/mcbp_message.cxx +9 -1
- data/ext/couchbase/core/io/mcbp_message.hxx +19 -0
- data/ext/couchbase/core/io/mcbp_output_queue.hxx +150 -0
- data/ext/couchbase/core/io/mcbp_parser.cxx +24 -7
- data/ext/couchbase/core/io/mcbp_session.cxx +309 -301
- data/ext/couchbase/core/io/mcbp_session.hxx +27 -18
- data/ext/couchbase/core/io/opaque_ring_table.hxx +145 -0
- data/ext/couchbase/core/io/retry_orchestrator.hxx +6 -5
- data/ext/couchbase/core/io/stream_deadline.hxx +50 -0
- data/ext/couchbase/core/io/streams.cxx +151 -21
- data/ext/couchbase/core/io/streams.hxx +48 -1
- data/ext/couchbase/core/logger/logger.cxx +36 -0
- data/ext/couchbase/core/logger/logger.hxx +46 -6
- data/ext/couchbase/core/logger/redaction.hxx +503 -0
- data/ext/couchbase/core/management/eventing_status.hxx +10 -0
- data/ext/couchbase/core/management/eventing_status_json.hxx +4 -0
- data/ext/couchbase/core/mcbp/big_endian.cxx +1 -1
- data/ext/couchbase/core/mcbp/codec.cxx +27 -18
- data/ext/couchbase/core/mcbp/operation_queue.cxx +2 -2
- data/ext/couchbase/core/mcbp/packet.hxx +2 -2
- data/ext/couchbase/core/mcbp/queue_request.cxx +23 -6
- data/ext/couchbase/core/mcbp/queue_request.hxx +21 -0
- data/ext/couchbase/core/meta/features.hxx +13 -0
- data/ext/couchbase/core/meta/version.cxx +6 -3
- data/ext/couchbase/core/metrics/logging_meter.cxx +5 -10
- data/ext/couchbase/core/metrics/meter_wrapper.cxx +63 -33
- data/ext/couchbase/core/metrics/meter_wrapper.hxx +55 -3
- data/ext/couchbase/core/operations/analytics_response_parsing.cxx +177 -0
- data/ext/couchbase/core/operations/analytics_response_parsing.hxx +55 -0
- data/ext/couchbase/core/operations/document_analytics.cxx +48 -130
- data/ext/couchbase/core/operations/document_analytics.hxx +14 -2
- data/ext/couchbase/core/operations/document_get_all_replicas.hxx +15 -7
- data/ext/couchbase/core/operations/document_get_any_replica.hxx +19 -8
- data/ext/couchbase/core/operations/document_get_projected.cxx +1 -1
- data/ext/couchbase/core/{impl/get_replica.cxx → operations/document_get_replica.cxx} +21 -3
- data/ext/couchbase/core/{impl/get_replica.hxx → operations/document_get_replica.hxx} +31 -4
- data/ext/couchbase/core/operations/document_lookup_in.cxx +10 -10
- data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +228 -198
- data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +215 -217
- data/ext/couchbase/core/operations/document_query.cxx +108 -221
- data/ext/couchbase/core/operations/document_query.hxx +18 -4
- data/ext/couchbase/core/operations/document_search.cxx +52 -8
- data/ext/couchbase/core/operations/document_search.hxx +3 -0
- data/ext/couchbase/core/operations/document_view.cxx +3 -3
- data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +15 -8
- data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +4 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +11 -6
- data/ext/couchbase/core/operations/management/analytics_dataset_get_all.cxx +3 -2
- data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +10 -5
- data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +10 -5
- data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +2 -1
- data/ext/couchbase/core/operations/management/analytics_index_create.cxx +33 -8
- data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +12 -7
- data/ext/couchbase/core/operations/management/analytics_index_get_all.cxx +3 -2
- data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +11 -6
- data/ext/couchbase/core/operations/management/analytics_link_create.cxx +3 -3
- data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +10 -4
- data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +6 -4
- data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +4 -3
- data/ext/couchbase/core/operations/management/analytics_link_replace.cxx +3 -3
- data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +1 -1
- data/ext/couchbase/core/operations/management/change_password.cxx +2 -0
- data/ext/couchbase/core/operations/management/collection_drop.cxx +5 -1
- data/ext/couchbase/core/operations/management/error_utils.cxx +60 -6
- data/ext/couchbase/core/operations/management/error_utils.hxx +29 -1
- data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +8 -3
- data/ext/couchbase/core/operations/management/eventing_get_all_functions.cxx +4 -2
- data/ext/couchbase/core/operations/management/eventing_get_function.cxx +5 -3
- data/ext/couchbase/core/operations/management/eventing_get_status.cxx +4 -2
- data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/group_drop.cxx +3 -1
- data/ext/couchbase/core/operations/management/group_get.cxx +3 -1
- data/ext/couchbase/core/operations/management/group_upsert.cxx +11 -8
- data/ext/couchbase/core/operations/management/query_index_build.cxx +5 -2
- data/ext/couchbase/core/operations/management/query_index_create.cxx +9 -3
- data/ext/couchbase/core/operations/management/query_index_drop.cxx +11 -4
- data/ext/couchbase/core/operations/management/query_index_get_all.cxx +1 -1
- data/ext/couchbase/core/operations/management/query_index_get_all_deferred.cxx +1 -1
- data/ext/couchbase/core/operations/management/scope_drop.cxx +5 -1
- data/ext/couchbase/core/operations/management/scope_get_all.cxx +6 -1
- data/ext/couchbase/core/operations/management/search_get_stats.cxx +10 -0
- data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +3 -2
- data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +4 -3
- data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +4 -3
- data/ext/couchbase/core/operations/management/search_index_control_query.cxx +4 -3
- data/ext/couchbase/core/operations/management/search_index_drop.cxx +2 -2
- data/ext/couchbase/core/operations/management/search_index_get.cxx +2 -2
- data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +3 -2
- data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +3 -1
- data/ext/couchbase/core/operations/management/search_index_upsert.cxx +2 -2
- data/ext/couchbase/core/operations/management/user_drop.cxx +3 -1
- data/ext/couchbase/core/operations/management/user_get.cxx +3 -1
- data/ext/couchbase/core/operations/management/user_upsert.cxx +12 -9
- data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
- data/ext/couchbase/core/operations/operation_traits.hxx +18 -0
- data/ext/couchbase/core/operations/query_response_parsing.cxx +211 -0
- data/ext/couchbase/core/operations/query_response_parsing.hxx +60 -0
- data/ext/couchbase/core/operations_fwd.hxx +3 -3
- data/ext/couchbase/core/origin.cxx +54 -26
- data/ext/couchbase/core/origin.hxx +12 -0
- data/ext/couchbase/core/orphan_reporter.cxx +2 -1
- data/ext/couchbase/core/platform/random.cc +7 -7
- data/ext/couchbase/core/protocol/client_request.cxx +2 -2
- data/ext/couchbase/core/protocol/client_request.hxx +38 -21
- data/ext/couchbase/core/protocol/client_response.cxx +11 -3
- data/ext/couchbase/core/protocol/client_response.hxx +27 -6
- data/ext/couchbase/core/protocol/cmd_append.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_cluster_map_change_notification.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_decrement.cxx +6 -6
- data/ext/couchbase/core/protocol/cmd_get.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_get_and_lock.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_get_and_touch.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_get_cluster_config.cxx +6 -4
- data/ext/couchbase/core/protocol/cmd_get_collection_id.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_get_error_map.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_get_meta.cxx +4 -4
- data/ext/couchbase/core/protocol/cmd_get_replica.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_hello.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_increment.cxx +6 -6
- data/ext/couchbase/core/protocol/cmd_insert.cxx +4 -4
- data/ext/couchbase/core/protocol/cmd_lookup_in.cxx +4 -3
- data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +4 -3
- data/ext/couchbase/core/protocol/cmd_mutate_in.cxx +10 -9
- data/ext/couchbase/core/protocol/cmd_mutate_in.hxx +10 -10
- data/ext/couchbase/core/protocol/cmd_observe_seqno.cxx +7 -7
- data/ext/couchbase/core/protocol/cmd_prepend.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_remove.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_replace.cxx +4 -4
- data/ext/couchbase/core/protocol/cmd_touch.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_upsert.cxx +4 -4
- data/ext/couchbase/core/protocol/datatype.hxx +118 -1
- data/ext/couchbase/core/protocol/frame_info_utils.cxx +1 -1
- data/ext/couchbase/core/protocol/magic.hxx +4 -0
- data/ext/couchbase/core/protocol/magic_fmt.hxx +3 -0
- data/ext/couchbase/core/protocol/server_request.hxx +3 -1
- data/ext/couchbase/core/protocol/status.cxx +1 -1
- data/ext/couchbase/core/protostellar/analytics_converter.hxx +171 -0
- data/ext/couchbase/core/protostellar/bucket_admin_converter.hxx +301 -0
- data/ext/couchbase/core/protostellar/collection_admin_converter.hxx +92 -0
- data/ext/couchbase/core/protostellar/component.cxx +2445 -0
- data/ext/couchbase/core/protostellar/component.hxx +391 -0
- data/ext/couchbase/core/{columnar/bootstrap_notification_subscriber.hxx → protostellar/compression_settings.hxx} +11 -10
- data/ext/couchbase/core/protostellar/credentials.cxx +233 -0
- data/ext/couchbase/core/protostellar/credentials.hxx +88 -0
- data/ext/couchbase/core/protostellar/dispatcher.cxx +57 -0
- data/ext/couchbase/core/protostellar/dispatcher.hxx +482 -0
- data/ext/couchbase/core/protostellar/error_utils.cxx +293 -0
- data/ext/couchbase/core/protostellar/error_utils.hxx +97 -0
- data/ext/couchbase/core/protostellar/json_payload.hxx +49 -0
- data/ext/couchbase/core/protostellar/kv_converter.cxx +70 -0
- data/ext/couchbase/core/protostellar/kv_converter.hxx +600 -0
- data/ext/couchbase/core/protostellar/query_converter.hxx +265 -0
- data/ext/couchbase/core/protostellar/query_index_admin_converter.hxx +291 -0
- data/ext/couchbase/core/protostellar/query_proto.hxx +73 -0
- data/ext/couchbase/core/protostellar/search_converter.hxx +244 -0
- data/ext/couchbase/core/protostellar/search_index_admin_converter.hxx +156 -0
- data/ext/couchbase/core/protostellar/view_converter.hxx +158 -0
- data/ext/couchbase/core/query_stream.cxx +447 -0
- data/ext/couchbase/core/query_stream.hxx +141 -0
- data/ext/couchbase/core/query_stream_component.cxx +243 -0
- data/ext/couchbase/core/query_stream_component.hxx +68 -0
- data/ext/couchbase/core/range_scan_load_balancer.cxx +15 -8
- data/ext/couchbase/core/range_scan_orchestrator.cxx +15 -3
- data/ext/couchbase/core/response_handler.hxx +41 -4
- data/ext/couchbase/core/row_streamer.cxx +332 -46
- data/ext/couchbase/core/row_streamer.hxx +31 -1
- data/ext/couchbase/core/row_streamer_options.hxx +55 -0
- data/ext/couchbase/core/sasl/client.h +3 -0
- data/ext/couchbase/core/search_scoring.hxx +66 -0
- data/ext/couchbase/core/stream_error_details.hxx +69 -0
- data/ext/couchbase/core/timeout_defaults.hxx +0 -1
- data/ext/couchbase/core/topology/capabilities.hxx +6 -0
- data/ext/couchbase/core/topology/capabilities_fmt.hxx +3 -0
- data/ext/couchbase/core/topology/configuration.cxx +21 -6
- data/ext/couchbase/core/topology/configuration.hxx +29 -8
- data/ext/couchbase/core/topology/configuration_json.hxx +3 -0
- data/ext/couchbase/core/topology/error_map_json.hxx +3 -1
- data/ext/couchbase/core/tracing/threshold_logging_tracer.cxx +70 -4
- data/ext/couchbase/core/tracing/threshold_logging_tracer.hxx +10 -0
- data/ext/couchbase/core/transactions/active_transaction_record.cxx +0 -34
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +108 -63
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +19 -2
- data/ext/couchbase/core/transactions/error_list.hxx +2 -2
- data/ext/couchbase/core/transactions/get_multi_fetch.hxx +160 -0
- data/ext/couchbase/core/transactions/get_multi_orchestrator.cxx +326 -125
- data/ext/couchbase/core/transactions/get_multi_transaction_id.hxx +62 -0
- data/ext/couchbase/core/transactions/internal/atr_entry.hxx +22 -2
- data/ext/couchbase/core/transactions/internal/transaction_context.hxx +2 -2
- data/ext/couchbase/core/transactions/internal/transactions_cleanup.hxx +23 -1
- data/ext/couchbase/core/transactions/internal/utils.hxx +50 -14
- data/ext/couchbase/core/transactions/staged_mutation.cxx +23 -18
- data/ext/couchbase/core/transactions/staged_mutation.hxx +15 -4
- data/ext/couchbase/core/transactions/transaction_context.cxx +55 -40
- data/ext/couchbase/core/transactions/transaction_get_result.hxx +16 -0
- data/ext/couchbase/core/transactions/transactions.cxx +3 -55
- data/ext/couchbase/core/transactions/transactions_cleanup.cxx +165 -72
- data/ext/couchbase/core/transactions/transactions_config.cxx +0 -11
- data/ext/couchbase/core/transactions/utils.cxx +10 -0
- data/ext/couchbase/core/transactions/waitable_op_list.hxx +2 -2
- data/ext/couchbase/core/transactions.hxx +9 -9
- data/ext/couchbase/core/utils/byteswap.hxx +166 -9
- data/ext/couchbase/core/utils/connection_string.cxx +50 -85
- data/ext/couchbase/core/utils/connection_string.hxx +15 -0
- data/ext/couchbase/core/{columnar/backoff_calculator.hxx → utils/deadline.hxx} +13 -13
- data/ext/couchbase/core/utils/duration_parser.cxx +1 -1
- data/ext/couchbase/core/utils/json_streaming_lexer.cxx +48 -5
- data/ext/couchbase/core/utils/json_streaming_lexer.hxx +4 -1
- data/ext/couchbase/core/utils/movable_function.hxx +301 -52
- data/ext/couchbase/core/utils/name_codec.hxx +154 -11
- data/ext/couchbase/core/{columnar/retry_info.hxx → utils/process_id.hxx} +18 -13
- data/ext/couchbase/core/utils/url_codec.cxx +12 -51
- data/ext/couchbase/core/websocket_codec.cxx +13 -37
- data/ext/couchbase/couchbase/analytics_options.hxx +21 -10
- data/ext/couchbase/couchbase/analytics_row.hxx +105 -0
- data/ext/couchbase/couchbase/analytics_stream_result.hxx +266 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +3 -3
- data/ext/couchbase/couchbase/bucket.hxx +57 -0
- data/ext/couchbase/couchbase/cluster.hxx +183 -5
- data/ext/couchbase/{core/columnar/security_options.hxx → couchbase/cluster_state.hxx} +18 -14
- data/ext/couchbase/couchbase/codec/lenient_json_transcoder.hxx +69 -0
- data/ext/couchbase/couchbase/collection.hxx +234 -14
- data/ext/couchbase/couchbase/common_durability_options.hxx +18 -3
- data/ext/couchbase/couchbase/conjunction_query.hxx +1 -1
- data/ext/couchbase/couchbase/create_dataset_analytics_options.hxx +6 -1
- data/ext/couchbase/couchbase/date_range_query.hxx +2 -2
- data/ext/couchbase/couchbase/decrement_options.hxx +1 -1
- data/ext/couchbase/couchbase/disjunction_query.hxx +1 -1
- data/ext/couchbase/couchbase/error.hxx +32 -0
- data/ext/couchbase/couchbase/error_codes.hxx +33 -1
- data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +1 -1
- data/ext/couchbase/couchbase/geo_distance_query.hxx +1 -1
- data/ext/couchbase/couchbase/geo_polygon_query.hxx +1 -1
- data/ext/couchbase/couchbase/get_replica_options.hxx +68 -0
- data/ext/couchbase/couchbase/get_replica_result.hxx +5 -3
- data/ext/couchbase/couchbase/get_replica_strategy.hxx +161 -0
- data/ext/couchbase/couchbase/get_result.hxx +1 -0
- data/ext/couchbase/couchbase/increment_options.hxx +1 -1
- data/ext/couchbase/couchbase/insert_options.hxx +1 -1
- data/ext/couchbase/couchbase/match_phrase_query.hxx +1 -1
- data/ext/couchbase/couchbase/match_query.hxx +1 -1
- data/ext/couchbase/couchbase/mutate_in_options.hxx +3 -3
- data/ext/couchbase/couchbase/network_options.hxx +1 -1
- data/ext/couchbase/couchbase/node_id.hxx +42 -14
- data/ext/couchbase/couchbase/node_id_for_options.hxx +7 -1
- data/ext/couchbase/couchbase/node_ids_options.hxx +8 -2
- data/ext/couchbase/couchbase/numeric_range_query.hxx +1 -1
- data/ext/couchbase/couchbase/phrase_query.hxx +1 -1
- data/ext/couchbase/couchbase/prefix_query.hxx +1 -1
- data/ext/couchbase/couchbase/query_options.hxx +23 -12
- data/ext/couchbase/couchbase/query_row.hxx +111 -0
- data/ext/couchbase/couchbase/query_stream_result.hxx +302 -0
- data/ext/couchbase/couchbase/query_string_query.hxx +3 -3
- data/ext/couchbase/couchbase/regexp_query.hxx +1 -1
- data/ext/couchbase/couchbase/replace_options.hxx +3 -3
- data/ext/couchbase/couchbase/result.hxx +14 -3
- data/ext/couchbase/couchbase/scan_result_item.hxx +1 -0
- data/ext/couchbase/couchbase/scope.hxx +85 -2
- data/ext/couchbase/couchbase/search_options.hxx +58 -8
- data/ext/couchbase/couchbase/search_scoring.hxx +94 -0
- data/ext/couchbase/couchbase/search_scoring_none.hxx +51 -0
- data/ext/couchbase/couchbase/search_scoring_reciprocal_rank_fusion.hxx +88 -0
- data/ext/couchbase/couchbase/search_scoring_relative_score_fusion.hxx +70 -0
- data/ext/couchbase/couchbase/term_range_query.hxx +1 -1
- data/ext/couchbase/couchbase/tracing/request_span.hxx +46 -0
- data/ext/couchbase/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +23 -21
- data/ext/couchbase/couchbase/transactions/transaction_get_multi_result.hxx +24 -19
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +17 -3
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +4 -2
- data/ext/couchbase/couchbase/transactions.hxx +27 -18
- data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
- data/ext/couchbase/couchbase/vector_query.hxx +1 -1
- data/ext/couchbase/couchbase/wait_until_ready_options.hxx +111 -0
- data/ext/couchbase/couchbase/wildcard_query.hxx +1 -1
- data/ext/extconf.rb +15 -10
- data/ext/rcb_analytics.cxx +82 -102
- data/ext/rcb_backend.cxx +42 -36
- data/ext/rcb_backend.hxx +2 -0
- data/ext/rcb_buckets.cxx +47 -59
- data/ext/rcb_collections.cxx +42 -52
- data/ext/rcb_crud.cxx +345 -224
- data/ext/rcb_diagnostics.cxx +117 -27
- data/ext/rcb_exceptions.cxx +152 -99
- data/ext/rcb_exceptions.hxx +25 -0
- data/ext/rcb_extras.cxx +18 -19
- data/ext/rcb_hdr_histogram.cxx +19 -4
- data/ext/rcb_logger.cxx +202 -27
- data/ext/rcb_logger.hxx +12 -0
- data/ext/rcb_multi.cxx +40 -40
- data/ext/rcb_observability.cxx +7 -5
- data/ext/rcb_query.cxx +99 -142
- data/ext/rcb_range_scan.cxx +41 -35
- data/ext/rcb_search.cxx +98 -99
- data/ext/rcb_users.cxx +36 -56
- data/ext/rcb_utils.cxx +100 -37
- data/ext/rcb_utils.hxx +287 -33
- data/ext/rcb_version.cxx +1 -1
- data/ext/rcb_views.cxx +55 -51
- data/lib/active_support/cache/couchbase_store.rb +77 -12
- data/lib/couchbase/bucket.rb +20 -0
- data/lib/couchbase/cluster.rb +17 -0
- data/lib/couchbase/collection.rb +36 -1
- data/lib/couchbase/errors.rb +18 -0
- data/lib/couchbase/fork_hooks.rb +16 -7
- data/lib/couchbase/get_replica_strategy.rb +89 -0
- data/lib/couchbase/logger.rb +1 -1
- data/lib/couchbase/management/analytics_index_manager.rb +15 -15
- data/lib/couchbase/management/bucket_manager.rb +6 -6
- data/lib/couchbase/management/collection_manager.rb +6 -6
- data/lib/couchbase/management/query_index_manager.rb +7 -7
- data/lib/couchbase/management/search_index_manager.rb +13 -13
- data/lib/couchbase/management/user_manager.rb +10 -10
- data/lib/couchbase/management/view_index_manager.rb +5 -5
- data/lib/couchbase/options.rb +174 -42
- data/lib/couchbase/protostellar/bucket.rb +4 -0
- data/lib/couchbase/protostellar/cluster.rb +4 -0
- data/lib/couchbase/protostellar/collection.rb +4 -0
- data/lib/couchbase/protostellar/error_handling.rb +2 -1
- data/lib/couchbase/protostellar/request.rb +1 -0
- data/lib/couchbase/protostellar/request_generator/kv.rb +16 -2
- data/lib/couchbase/protostellar/request_generator/search.rb +17 -1
- data/lib/couchbase/protostellar/retry/orchestrator.rb +3 -2
- data/lib/couchbase/protostellar/retry/strategies/fail_fast.rb +33 -0
- data/lib/couchbase/protostellar/retry/strategies.rb +1 -0
- data/lib/couchbase/search_options.rb +95 -6
- data/lib/couchbase/version.rb +1 -1
- metadata +91 -33
- data/ext/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +0 -40
- data/ext/couchbase/core/columnar/agent.hxx +0 -71
- data/ext/couchbase/core/columnar/agent_config.hxx +0 -59
- data/ext/couchbase/core/columnar/background_bootstrap_listener.hxx +0 -42
- data/ext/couchbase/core/columnar/backoff_calculator.cxx +0 -62
- data/ext/couchbase/core/columnar/columnar_agent.cxx +0 -147
- data/ext/couchbase/core/columnar/columnar_agent_config.cxx +0 -48
- data/ext/couchbase/core/columnar/columnar_error.cxx +0 -51
- data/ext/couchbase/core/columnar/database_management_options.hxx +0 -56
- data/ext/couchbase/core/columnar/error.hxx +0 -51
- data/ext/couchbase/core/columnar/error_codes.cxx +0 -107
- data/ext/couchbase/core/columnar/error_codes.hxx +0 -75
- data/ext/couchbase/core/columnar/management_component.cxx +0 -300
- data/ext/couchbase/core/columnar/management_component.hxx +0 -56
- data/ext/couchbase/core/columnar/query_component.cxx +0 -523
- data/ext/couchbase/core/columnar/query_component.hxx +0 -57
- data/ext/couchbase/core/columnar/query_options.hxx +0 -59
- data/ext/couchbase/core/columnar/query_result.cxx +0 -130
- data/ext/couchbase/core/columnar/query_result.hxx +0 -78
- data/ext/couchbase/core/io/config_tracker.cxx +0 -687
- data/ext/couchbase/core/io/config_tracker.hxx +0 -123
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
#include <couchbase/collection_manager.hxx>
|
|
22
22
|
#include <couchbase/ping_options.hxx>
|
|
23
23
|
#include <couchbase/scope.hxx>
|
|
24
|
+
#include <couchbase/wait_until_ready_options.hxx>
|
|
24
25
|
|
|
26
|
+
#include <chrono>
|
|
25
27
|
#include <memory>
|
|
26
28
|
|
|
27
29
|
namespace couchbase
|
|
@@ -88,8 +90,13 @@ public:
|
|
|
88
90
|
* @param options custom options to change the default behavior.
|
|
89
91
|
* @param handler the handler that implements @ref ping_handler.
|
|
90
92
|
*
|
|
93
|
+
* @note Not served over the @ref couchbase2 "couchbase2" transport, which opens no per-bucket
|
|
94
|
+
* sessions to probe and reports @ref errc::common::feature_not_available instead.
|
|
95
|
+
*
|
|
91
96
|
* @since 1.0.0
|
|
92
97
|
* @committed
|
|
98
|
+
* @cng_since{1.4.0}
|
|
99
|
+
* @cng_uncommitted
|
|
93
100
|
*/
|
|
94
101
|
void ping(const ping_options& options, ping_handler&& handler) const;
|
|
95
102
|
|
|
@@ -102,12 +109,62 @@ public:
|
|
|
102
109
|
* @param options custom options to change the default behavior.
|
|
103
110
|
* @return future object that carries result of the operation.
|
|
104
111
|
*
|
|
112
|
+
* @note Not served over the @ref couchbase2 "couchbase2" transport, which opens no per-bucket
|
|
113
|
+
* sessions to probe and reports @ref errc::common::feature_not_available instead.
|
|
114
|
+
*
|
|
105
115
|
* @since 1.0.0
|
|
106
116
|
* @committed
|
|
117
|
+
* @cng_since{1.4.0}
|
|
118
|
+
* @cng_uncommitted
|
|
107
119
|
*/
|
|
108
120
|
[[nodiscard]] auto ping(const ping_options& options = {}) const
|
|
109
121
|
-> std::future<std::pair<error, ping_result>>;
|
|
110
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Waits until the desired state of the bucket is reached, actively pinging its services until
|
|
125
|
+
* they respond or the timeout elapses.
|
|
126
|
+
*
|
|
127
|
+
* When the desired state is @c cluster_state::online, this additionally waits until the bucket's
|
|
128
|
+
* vbucket map is fully placed -- every vbucket has its active and all replica copies assigned to
|
|
129
|
+
* a node. That is the readiness durable writes require and that a freshly created bucket does not
|
|
130
|
+
* satisfy immediately. The @c cluster_state::degraded target is ping-only, since it deliberately
|
|
131
|
+
* tolerates partial availability.
|
|
132
|
+
*
|
|
133
|
+
* Over couchbase2, the wait ends once the gRPC channel to the gateway is connected. Neither the
|
|
134
|
+
* bucket nor the credentials are checked, the requested services are not considered, and
|
|
135
|
+
* @c cluster_state::online and @c cluster_state::degraded are the same state.
|
|
136
|
+
*
|
|
137
|
+
* Closing the cluster ends a wait in flight with @ref errc::network::cluster_closed, and a wait
|
|
138
|
+
* started after the cluster is closed fails the same way.
|
|
139
|
+
*
|
|
140
|
+
* @param timeout the maximum time to wait for readiness.
|
|
141
|
+
* @param options custom options to change the default behavior.
|
|
142
|
+
* @param handler the handler that implements @ref wait_until_ready_handler.
|
|
143
|
+
*
|
|
144
|
+
* @since 1.4.0
|
|
145
|
+
* @committed
|
|
146
|
+
*/
|
|
147
|
+
void wait_until_ready(std::chrono::milliseconds timeout,
|
|
148
|
+
const wait_until_ready_options& options,
|
|
149
|
+
wait_until_ready_handler&& handler) const;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Waits until the desired state of the bucket is reached.
|
|
153
|
+
*
|
|
154
|
+
* @see wait_until_ready(std::chrono::milliseconds, const wait_until_ready_options&,
|
|
155
|
+
* wait_until_ready_handler&&) const
|
|
156
|
+
*
|
|
157
|
+
* @param timeout the maximum time to wait for readiness.
|
|
158
|
+
* @param options custom options to change the default behavior.
|
|
159
|
+
* @return future object that carries result of the operation.
|
|
160
|
+
*
|
|
161
|
+
* @since 1.4.0
|
|
162
|
+
* @committed
|
|
163
|
+
*/
|
|
164
|
+
[[nodiscard]] auto wait_until_ready(std::chrono::milliseconds timeout,
|
|
165
|
+
const wait_until_ready_options& options = {}) const
|
|
166
|
+
-> std::future<error>;
|
|
167
|
+
|
|
111
168
|
/**
|
|
112
169
|
* Provides access to the collection management services.
|
|
113
170
|
*
|
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
#include <couchbase/search_query.hxx>
|
|
33
33
|
#include <couchbase/search_request.hxx>
|
|
34
34
|
#include <couchbase/transactions.hxx>
|
|
35
|
+
#include <couchbase/wait_until_ready_options.hxx>
|
|
35
36
|
|
|
37
|
+
#include <chrono>
|
|
36
38
|
#include <memory>
|
|
37
39
|
|
|
38
40
|
namespace couchbase
|
|
@@ -67,8 +69,16 @@ public:
|
|
|
67
69
|
* over this options).
|
|
68
70
|
* @param handler the handler
|
|
69
71
|
*
|
|
72
|
+
* @note A connection string with the @c couchbase2:// scheme selects the @ref couchbase2
|
|
73
|
+
* "couchbase2" transport, which routes every operation through a Cloud Native Gateway (CNG). It
|
|
74
|
+
* requires a library built with that support and restricts how the connection string may be
|
|
75
|
+
* written; see
|
|
76
|
+
* @ref couchbase2.
|
|
77
|
+
*
|
|
70
78
|
* @since 1.0.0
|
|
71
79
|
* @committed
|
|
80
|
+
* @cng_since{1.4.0}
|
|
81
|
+
* @cng_uncommitted
|
|
72
82
|
*/
|
|
73
83
|
static void connect(const std::string& connection_string,
|
|
74
84
|
const cluster_options& options,
|
|
@@ -83,8 +93,16 @@ public:
|
|
|
83
93
|
*
|
|
84
94
|
* @return future object that carries cluster object and operation status
|
|
85
95
|
*
|
|
96
|
+
* @note A connection string with the @c couchbase2:// scheme selects the @ref couchbase2
|
|
97
|
+
* "couchbase2" transport, which routes every operation through a Cloud Native Gateway (CNG). It
|
|
98
|
+
* requires a library built with that support and restricts how the connection string may be
|
|
99
|
+
* written; see
|
|
100
|
+
* @ref couchbase2.
|
|
101
|
+
*
|
|
86
102
|
* @since 1.0.0
|
|
87
103
|
* @committed
|
|
104
|
+
* @cng_since{1.4.0}
|
|
105
|
+
* @cng_uncommitted
|
|
88
106
|
*/
|
|
89
107
|
[[nodiscard]] static auto connect(const std::string& connection_string,
|
|
90
108
|
const cluster_options& options)
|
|
@@ -153,11 +171,11 @@ public:
|
|
|
153
171
|
/**
|
|
154
172
|
* Replaces the current authenticator used by this cluster.
|
|
155
173
|
*
|
|
156
|
-
* NOTE:
|
|
157
|
-
|
|
174
|
+
* NOTE: Existing KV connections keep the certificate they were opened with. HTTP requests sent
|
|
175
|
+
* after the call use a new connection, and a request already in flight completes.
|
|
158
176
|
*
|
|
159
177
|
* @param authenticator the authenticator to replace
|
|
160
|
-
|
|
178
|
+
*
|
|
161
179
|
* @exception errc::common::invalid_argument if TLS is not enabled.
|
|
162
180
|
*
|
|
163
181
|
* @return error
|
|
@@ -221,6 +239,60 @@ public:
|
|
|
221
239
|
[[nodiscard]] auto query(std::string statement, const query_options& options) const
|
|
222
240
|
-> std::future<std::pair<error, query_result>>;
|
|
223
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Performs a streaming query against the query (N1QL) services.
|
|
244
|
+
*
|
|
245
|
+
* The handler resolves as soon as the response preamble has been parsed; rows are then pulled
|
|
246
|
+
* lazily from the @ref query_stream_result, so the full result is never buffered in memory.
|
|
247
|
+
*
|
|
248
|
+
* @note Prepared statements (@ref query_options#adhoc set to false) are not streamed: such a
|
|
249
|
+
* request falls back to the buffered @ref query() path and its rows are replayed through the
|
|
250
|
+
* returned handle.
|
|
251
|
+
*
|
|
252
|
+
* The handler runs on the library's I/O thread, so the stream must be drained with the callback
|
|
253
|
+
* @ref query_stream_result#next() overload rather than the blocking ones:
|
|
254
|
+
*
|
|
255
|
+
* @snippet{trimleft} test_integration_examples_streaming.cxx example-query-stream-async
|
|
256
|
+
*
|
|
257
|
+
* @param statement the N1QL query statement.
|
|
258
|
+
* @param options options to customize the query request.
|
|
259
|
+
* @param handler the handler that implements @ref query_stream_handler
|
|
260
|
+
*
|
|
261
|
+
* @since 1.4.0
|
|
262
|
+
* @volatile
|
|
263
|
+
*/
|
|
264
|
+
void query_stream(std::string statement,
|
|
265
|
+
const query_options& options,
|
|
266
|
+
query_stream_handler&& handler) const;
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Performs a streaming query against the query (N1QL) services.
|
|
270
|
+
*
|
|
271
|
+
* Rows are pulled from the returned handle one at a time, so a result of any size costs the same
|
|
272
|
+
* bounded amount of memory:
|
|
273
|
+
*
|
|
274
|
+
* @snippet{trimleft} test_integration_examples_streaming.cxx example-query-stream
|
|
275
|
+
*
|
|
276
|
+
* The document type the rows are decoded into:
|
|
277
|
+
*
|
|
278
|
+
* @snippet{trimleft} test_integration_examples_streaming.cxx streaming-product
|
|
279
|
+
*
|
|
280
|
+
* A failure surfaces either here, before the stream starts, or as the terminal of
|
|
281
|
+
* @ref query_stream_result#next() — possibly after rows have already been consumed, which a
|
|
282
|
+
* buffered @ref query() cannot produce. Both channels have to be handled:
|
|
283
|
+
*
|
|
284
|
+
* @snippet{trimleft} test_integration_examples_streaming.cxx example-query-stream-errors
|
|
285
|
+
*
|
|
286
|
+
* @param statement the N1QL query statement.
|
|
287
|
+
* @param options options to customize the query request.
|
|
288
|
+
* @return future object that carries the streaming result handle
|
|
289
|
+
*
|
|
290
|
+
* @since 1.4.0
|
|
291
|
+
* @volatile
|
|
292
|
+
*/
|
|
293
|
+
[[nodiscard]] auto query_stream(std::string statement, const query_options& options = {}) const
|
|
294
|
+
-> std::future<std::pair<error, query_stream_result>>;
|
|
295
|
+
|
|
224
296
|
/**
|
|
225
297
|
* Performs a request against the full text search services.
|
|
226
298
|
*
|
|
@@ -298,8 +370,48 @@ public:
|
|
|
298
370
|
* @since 1.0.0
|
|
299
371
|
* @committed
|
|
300
372
|
*/
|
|
301
|
-
[[nodiscard]] auto analytics_query(std::string statement,
|
|
302
|
-
|
|
373
|
+
[[nodiscard]] auto analytics_query(std::string statement,
|
|
374
|
+
const analytics_options& options = {}) const
|
|
375
|
+
-> std::future<std::pair<error, analytics_result>>;
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Performs a streaming query against the analytics services.
|
|
379
|
+
*
|
|
380
|
+
* The handler resolves as soon as the response preamble has been parsed; rows are then pulled
|
|
381
|
+
* lazily from the @ref analytics_stream_result, so the full result is never buffered in memory.
|
|
382
|
+
*
|
|
383
|
+
* The handler runs on the library's I/O thread, so the stream must be drained with the callback
|
|
384
|
+
* @ref analytics_stream_result#next() overload rather than the blocking ones. The query
|
|
385
|
+
* equivalent shows the pattern:
|
|
386
|
+
*
|
|
387
|
+
* @snippet{trimleft} test_integration_examples_streaming.cxx example-query-stream-async
|
|
388
|
+
*
|
|
389
|
+
* @param statement the analytics query statement.
|
|
390
|
+
* @param options options to customize the query request.
|
|
391
|
+
* @param handler the handler that implements @ref analytics_stream_handler
|
|
392
|
+
*
|
|
393
|
+
* @since 1.4.0
|
|
394
|
+
* @volatile
|
|
395
|
+
*/
|
|
396
|
+
void analytics_query_stream(std::string statement,
|
|
397
|
+
const analytics_options& options,
|
|
398
|
+
analytics_stream_handler&& handler) const;
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Performs a streaming query against the analytics services.
|
|
402
|
+
*
|
|
403
|
+
* @snippet{trimleft} test_integration_examples_streaming.cxx example-analytics-stream
|
|
404
|
+
*
|
|
405
|
+
* @param statement the analytics query statement.
|
|
406
|
+
* @param options options to customize the query request.
|
|
407
|
+
* @return future object that carries the streaming result handle
|
|
408
|
+
*
|
|
409
|
+
* @since 1.4.0
|
|
410
|
+
* @volatile
|
|
411
|
+
*/
|
|
412
|
+
[[nodiscard]] auto analytics_query_stream(std::string statement,
|
|
413
|
+
const analytics_options& options = {}) const
|
|
414
|
+
-> std::future<std::pair<error, analytics_stream_result>>;
|
|
303
415
|
|
|
304
416
|
/**
|
|
305
417
|
* Performs application-level ping requests against services in the Couchbase cluster.
|
|
@@ -310,8 +422,13 @@ public:
|
|
|
310
422
|
* @param options custom options to change the default behavior.
|
|
311
423
|
* @param handler the handler that implements @ref ping_handler.
|
|
312
424
|
*
|
|
425
|
+
* @note Not served over the @ref couchbase2 "couchbase2" transport, which has no per-node service
|
|
426
|
+
* endpoints to probe and reports @ref errc::common::feature_not_available instead.
|
|
427
|
+
*
|
|
313
428
|
* @since 1.0.0
|
|
314
429
|
* @committed
|
|
430
|
+
* @cng_since{1.4.0}
|
|
431
|
+
* @cng_uncommitted
|
|
315
432
|
*/
|
|
316
433
|
void ping(const ping_options& options, ping_handler&& handler) const;
|
|
317
434
|
|
|
@@ -324,8 +441,13 @@ public:
|
|
|
324
441
|
* @param options custom options to change the default behavior.
|
|
325
442
|
* @return future object that carries result of the operation.
|
|
326
443
|
*
|
|
444
|
+
* @note Not served over the @ref couchbase2 "couchbase2" transport, which has no per-node service
|
|
445
|
+
* endpoints to probe and reports @ref errc::common::feature_not_available instead.
|
|
446
|
+
*
|
|
327
447
|
* @since 1.0.0
|
|
328
448
|
* @committed
|
|
449
|
+
* @cng_since{1.4.0}
|
|
450
|
+
* @cng_uncommitted
|
|
329
451
|
*/
|
|
330
452
|
[[nodiscard]] auto ping(const ping_options& options = {}) const
|
|
331
453
|
-> std::future<std::pair<error, ping_result>>;
|
|
@@ -343,8 +465,14 @@ public:
|
|
|
343
465
|
* @param options custom options to change the default behavior.
|
|
344
466
|
* @param handler the handler that implements @ref diagnostics_handler.
|
|
345
467
|
*
|
|
468
|
+
* @note Not served over the @ref couchbase2 "couchbase2" transport, which keeps no per-node
|
|
469
|
+
* connection state to report on and returns @ref errc::common::feature_not_available rather than
|
|
470
|
+
* an empty report.
|
|
471
|
+
*
|
|
346
472
|
* @since 1.0.0
|
|
347
473
|
* @committed
|
|
474
|
+
* @cng_since{1.4.0}
|
|
475
|
+
* @cng_uncommitted
|
|
348
476
|
*/
|
|
349
477
|
void diagnostics(const diagnostics_options& options, diagnostics_handler&& handler) const;
|
|
350
478
|
|
|
@@ -361,12 +489,62 @@ public:
|
|
|
361
489
|
* @param options custom options to change the default behavior.
|
|
362
490
|
* @return future object that carries result of the operation.
|
|
363
491
|
*
|
|
492
|
+
* @note Not served over the @ref couchbase2 "couchbase2" transport, which keeps no per-node
|
|
493
|
+
* connection state to report on and returns @ref errc::common::feature_not_available rather than
|
|
494
|
+
* an empty report.
|
|
495
|
+
*
|
|
364
496
|
* @since 1.0.0
|
|
365
497
|
* @committed
|
|
498
|
+
* @cng_since{1.4.0}
|
|
499
|
+
* @cng_uncommitted
|
|
366
500
|
*/
|
|
367
501
|
[[nodiscard]] auto diagnostics(const diagnostics_options& options = {}) const
|
|
368
502
|
-> std::future<std::pair<error, diagnostics_result>>;
|
|
369
503
|
|
|
504
|
+
/**
|
|
505
|
+
* Waits until the desired state of the cluster is reached, actively pinging its services until
|
|
506
|
+
* they respond or the timeout elapses.
|
|
507
|
+
*
|
|
508
|
+
* Over couchbase2, the wait ends once the gRPC channel to the gateway is connected. No service is
|
|
509
|
+
* pinged, the requested services are not considered, and @c cluster_state::online and
|
|
510
|
+
* @c cluster_state::degraded are the same state.
|
|
511
|
+
*
|
|
512
|
+
* Closing the cluster ends a wait in flight with @ref errc::network::cluster_closed, and a wait
|
|
513
|
+
* started after the cluster is closed fails the same way.
|
|
514
|
+
*
|
|
515
|
+
* @param timeout the maximum time to wait for readiness.
|
|
516
|
+
* @param options custom options to change the default behavior.
|
|
517
|
+
* @param handler the handler that implements @ref wait_until_ready_handler.
|
|
518
|
+
*
|
|
519
|
+
* @since 1.4.0
|
|
520
|
+
* @committed
|
|
521
|
+
*/
|
|
522
|
+
void wait_until_ready(std::chrono::milliseconds timeout,
|
|
523
|
+
const wait_until_ready_options& options,
|
|
524
|
+
wait_until_ready_handler&& handler) const;
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Waits until the desired state of the cluster is reached, actively pinging its services until
|
|
528
|
+
* they respond or the timeout elapses.
|
|
529
|
+
*
|
|
530
|
+
* Over couchbase2, the wait ends once the gRPC channel to the gateway is connected. No service is
|
|
531
|
+
* pinged, the requested services are not considered, and @c cluster_state::online and
|
|
532
|
+
* @c cluster_state::degraded are the same state.
|
|
533
|
+
*
|
|
534
|
+
* Closing the cluster ends a wait in flight with @ref errc::network::cluster_closed, and a wait
|
|
535
|
+
* started after the cluster is closed fails the same way.
|
|
536
|
+
*
|
|
537
|
+
* @param timeout the maximum time to wait for readiness.
|
|
538
|
+
* @param options custom options to change the default behavior.
|
|
539
|
+
* @return future object that carries result of the operation.
|
|
540
|
+
*
|
|
541
|
+
* @since 1.4.0
|
|
542
|
+
* @committed
|
|
543
|
+
*/
|
|
544
|
+
[[nodiscard]] auto wait_until_ready(std::chrono::milliseconds timeout,
|
|
545
|
+
const wait_until_ready_options& options = {}) const
|
|
546
|
+
-> std::future<error>;
|
|
547
|
+
|
|
370
548
|
/**
|
|
371
549
|
* Provides access to the N1QL index management services.
|
|
372
550
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
2
|
/*
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026-Present Couchbase, Inc.
|
|
4
4
|
*
|
|
5
5
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
* you may not use this file except in compliance with the License.
|
|
@@ -17,18 +17,22 @@
|
|
|
17
17
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
#include <vector>
|
|
22
|
-
|
|
23
|
-
namespace couchbase::core::columnar
|
|
20
|
+
namespace couchbase
|
|
24
21
|
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Describes the readiness of the cluster (or a bucket) from the SDK's point of view. Used as the
|
|
24
|
+
* target state of @ref cluster::wait_until_ready() and @ref bucket::wait_until_ready().
|
|
25
|
+
*
|
|
26
|
+
* @since 1.4.0
|
|
27
|
+
* @committed
|
|
28
|
+
*/
|
|
29
|
+
enum class cluster_state {
|
|
30
|
+
/** Every reachable endpoint of every requested service is responsive. */
|
|
31
|
+
online,
|
|
32
|
+
/** At least one endpoint of every requested service is responsive. */
|
|
33
|
+
degraded,
|
|
34
|
+
/** Not a meaningful state to wait for; passing it is rejected with @c
|
|
35
|
+
* errc::common::invalid_argument. */
|
|
36
|
+
offline,
|
|
33
37
|
};
|
|
34
|
-
} // namespace couchbase
|
|
38
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2020-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
|
+
#pragma once
|
|
19
|
+
|
|
20
|
+
#include <couchbase/codec/codec_flags.hxx>
|
|
21
|
+
#include <couchbase/codec/encoded_value.hxx>
|
|
22
|
+
#include <couchbase/codec/transcoder_traits.hxx>
|
|
23
|
+
|
|
24
|
+
namespace couchbase::codec
|
|
25
|
+
{
|
|
26
|
+
class tao_json_serializer;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A JSON transcoder that encodes with JSON common flags like @ref json_transcoder, but does NOT
|
|
30
|
+
* validate the document's common flags when decoding.
|
|
31
|
+
*
|
|
32
|
+
* It backs the no-transcoder `content_as<Document>()` overloads of the transactions read results
|
|
33
|
+
* (@ref couchbase::transactions::transaction_get_result and the get-multi results): per the
|
|
34
|
+
* ExtBinarySupport spec the SDK "ignores [the flags] when reading", so e.g. a document written with
|
|
35
|
+
* binary common flags but holding valid JSON can still be read. This restores the
|
|
36
|
+
* pre-ExtBinarySupport behaviour where those accessors did not reject non-JSON flags. Ordinary KV
|
|
37
|
+
* reads continue to use the strict @ref json_transcoder.
|
|
38
|
+
*
|
|
39
|
+
* It is an implementation detail of the transactions read path and is not meant to be named
|
|
40
|
+
* explicitly by applications.
|
|
41
|
+
*
|
|
42
|
+
* @since 1.4.0
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
template<typename Serializer>
|
|
46
|
+
class lenient_json_transcoder
|
|
47
|
+
{
|
|
48
|
+
public:
|
|
49
|
+
template<typename Document>
|
|
50
|
+
static auto encode(Document document) -> encoded_value
|
|
51
|
+
{
|
|
52
|
+
return { Serializer::serialize(document), codec_flags::json_common_flags };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
template<typename Document>
|
|
56
|
+
static auto decode(const encoded_value& encoded) -> Document
|
|
57
|
+
{
|
|
58
|
+
return Serializer::template deserialize<Document>(encoded.data);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
using default_lenient_json_transcoder = lenient_json_transcoder<tao_json_serializer>;
|
|
63
|
+
|
|
64
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
65
|
+
template<>
|
|
66
|
+
struct is_transcoder<default_lenient_json_transcoder> : public std::true_type {
|
|
67
|
+
};
|
|
68
|
+
#endif
|
|
69
|
+
} // namespace couchbase::codec
|