couchbase 3.4.2 → 3.4.4
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 +2 -2
- data/ext/couchbase/CMakeLists.txt +71 -7
- data/ext/couchbase/cmake/Documentation.cmake +0 -1
- data/ext/couchbase/cmake/OpenSSL.cmake +98 -3
- data/ext/couchbase/cmake/Testing.cmake +12 -4
- data/ext/couchbase/cmake/build_config.hxx.in +3 -0
- data/ext/couchbase/core/bucket.cxx +183 -151
- data/ext/couchbase/core/bucket.hxx +23 -1
- data/ext/couchbase/core/cluster.hxx +51 -13
- data/ext/couchbase/core/cluster_options.cxx +2 -2
- data/ext/couchbase/core/cluster_options.hxx +7 -6
- data/ext/couchbase/core/cluster_options_fwd.hxx +26 -0
- data/ext/couchbase/core/config_profile.hxx +1 -54
- data/ext/couchbase/core/config_profiles.cxx +79 -0
- data/ext/couchbase/core/config_profiles.hxx +56 -0
- data/ext/couchbase/core/crud_component.cxx +51 -22
- data/ext/couchbase/core/error_context/key_value.cxx +2 -1
- data/ext/couchbase/core/error_context/key_value.hxx +10 -12
- data/ext/couchbase/core/error_context/search.hxx +1 -1
- data/ext/couchbase/core/impl/analytics.cxx +1 -0
- data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
- data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
- data/ext/couchbase/core/impl/build_deferred_query_indexes.cxx +115 -50
- data/ext/couchbase/core/impl/cluster.cxx +8 -0
- data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/create_bucket.cxx +155 -0
- data/ext/couchbase/core/impl/create_query_index.cxx +172 -59
- data/ext/couchbase/core/impl/date_range.cxx +89 -0
- data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
- data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +2 -1
- data/ext/couchbase/core/impl/drop_bucket.cxx +66 -0
- data/ext/couchbase/core/impl/drop_query_index.cxx +138 -59
- data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
- data/ext/couchbase/core/impl/flush_bucket.cxx +66 -0
- data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
- data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
- data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
- data/ext/couchbase/core/impl/get_all_buckets.cxx +163 -0
- data/ext/couchbase/core/impl/get_all_query_indexes.cxx +67 -37
- data/ext/couchbase/core/impl/get_bucket.cxx +153 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_manager_error_context.cxx +113 -0
- data/ext/couchbase/core/impl/internal_manager_error_context.hxx +60 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
- data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
- data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
- data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
- data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
- data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
- data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/key_value_error_category.cxx +2 -4
- data/ext/couchbase/core/impl/key_value_error_context.cxx +98 -0
- data/ext/couchbase/core/impl/lookup_in.cxx +1 -0
- data/ext/couchbase/core/impl/lookup_in_all_replicas.cxx +176 -0
- data/ext/couchbase/core/impl/lookup_in_all_replicas.hxx +80 -0
- data/ext/couchbase/core/impl/lookup_in_any_replica.cxx +167 -0
- data/ext/couchbase/core/impl/lookup_in_any_replica.hxx +75 -0
- data/ext/couchbase/core/impl/lookup_in_replica.cxx +97 -0
- data/ext/couchbase/core/impl/lookup_in_replica.hxx +67 -0
- data/ext/couchbase/core/impl/manager_error_context.cxx +100 -0
- data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
- data/ext/couchbase/core/impl/match_query.cxx +59 -0
- data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
- data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
- data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
- data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
- data/ext/couchbase/core/impl/query.cxx +1 -0
- data/ext/couchbase/core/impl/query_error_context.cxx +75 -0
- data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
- data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
- data/ext/couchbase/core/impl/search.cxx +191 -0
- data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
- data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
- data/ext/couchbase/core/impl/search_result.cxx +66 -0
- data/ext/couchbase/core/impl/search_row.cxx +74 -0
- data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
- data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
- data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
- data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
- data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
- data/ext/couchbase/core/impl/term_facet.cxx +36 -0
- data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/term_query.cxx +56 -0
- data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
- data/ext/couchbase/core/impl/update_bucket.cxx +130 -0
- data/ext/couchbase/core/impl/watch_query_indexes.cxx +53 -29
- data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
- data/ext/couchbase/core/io/dns_client.cxx +111 -40
- data/ext/couchbase/core/io/dns_config.cxx +5 -4
- data/ext/couchbase/core/io/http_context.hxx +1 -1
- data/ext/couchbase/core/io/http_session.hxx +34 -1
- data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
- data/ext/couchbase/core/io/mcbp_command.hxx +9 -2
- data/ext/couchbase/core/io/mcbp_session.cxx +106 -42
- data/ext/couchbase/core/io/mcbp_session.hxx +4 -3
- data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
- data/ext/couchbase/core/json_string.hxx +5 -0
- data/ext/couchbase/core/logger/custom_rotating_file_sink.cxx +1 -1
- data/ext/couchbase/core/logger/logger.cxx +80 -20
- data/ext/couchbase/core/logger/logger.hxx +31 -0
- data/ext/couchbase/core/meta/features.hxx +25 -0
- data/ext/couchbase/core/meta/version.cxx +18 -4
- data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
- data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
- data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
- data/ext/couchbase/core/operations/document_append.hxx +1 -1
- data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
- data/ext/couchbase/core/operations/document_exists.hxx +1 -1
- data/ext/couchbase/core/operations/document_get.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
- data/ext/couchbase/core/operations/document_increment.hxx +1 -1
- data/ext/couchbase/core/operations/document_insert.hxx +1 -1
- data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +192 -0
- data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +188 -0
- data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
- data/ext/couchbase/core/operations/document_query.cxx +13 -0
- data/ext/couchbase/core/operations/document_query.hxx +7 -0
- data/ext/couchbase/core/operations/document_remove.hxx +1 -1
- data/ext/couchbase/core/operations/document_replace.hxx +1 -1
- data/ext/couchbase/core/operations/document_search.cxx +4 -1
- data/ext/couchbase/core/operations/document_search.hxx +2 -1
- data/ext/couchbase/core/operations/document_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
- data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
- data/ext/couchbase/core/operations/document_view.hxx +1 -0
- data/ext/couchbase/core/operations.hxx +2 -0
- data/ext/couchbase/core/origin.cxx +270 -0
- data/ext/couchbase/core/origin.hxx +2 -0
- data/ext/couchbase/core/protocol/client_request.hxx +11 -2
- data/ext/couchbase/core/protocol/client_response.hxx +1 -0
- data/ext/couchbase/core/protocol/cmd_hello.hxx +1 -0
- data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +107 -0
- data/ext/couchbase/core/protocol/cmd_lookup_in_replica.hxx +137 -0
- data/ext/couchbase/core/protocol/hello_feature.hxx +6 -0
- data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +3 -0
- data/ext/couchbase/core/protocol/status.cxx +2 -2
- data/ext/couchbase/core/public_fwd.hxx +21 -0
- data/ext/couchbase/core/range_scan_options.cxx +3 -27
- data/ext/couchbase/core/range_scan_options.hxx +13 -17
- data/ext/couchbase/core/range_scan_orchestrator.cxx +388 -170
- data/ext/couchbase/core/range_scan_orchestrator.hxx +13 -2
- data/ext/couchbase/core/range_scan_orchestrator_options.hxx +5 -3
- data/ext/couchbase/core/scan_options.hxx +0 -19
- data/ext/couchbase/core/scan_result.cxx +19 -5
- data/ext/couchbase/core/scan_result.hxx +5 -2
- data/ext/couchbase/core/timeout_defaults.hxx +2 -3
- data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
- data/ext/couchbase/core/topology/capabilities.hxx +3 -0
- data/ext/couchbase/core/topology/capabilities_fmt.hxx +8 -0
- data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +1 -1
- data/ext/couchbase/core/topology/configuration.cxx +15 -2
- data/ext/couchbase/core/topology/configuration.hxx +20 -1
- data/ext/couchbase/core/topology/configuration_json.hxx +6 -1
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
- data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
- data/ext/couchbase/core/utils/connection_string.cxx +75 -43
- data/ext/couchbase/core/utils/connection_string.hxx +1 -0
- data/ext/couchbase/core/utils/json.cxx +4 -1
- data/ext/couchbase/couchbase/analytics_error_context.hxx +1 -1
- data/ext/couchbase/couchbase/behavior_options.hxx +27 -1
- data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
- data/ext/couchbase/couchbase/bucket_manager.hxx +135 -0
- data/ext/couchbase/couchbase/build_query_index_options.hxx +0 -30
- data/ext/couchbase/couchbase/cluster.hxx +56 -1
- data/ext/couchbase/couchbase/collection.hxx +111 -0
- data/ext/couchbase/couchbase/collection_query_index_manager.hxx +7 -48
- data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
- data/ext/couchbase/couchbase/create_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/create_primary_query_index_options.hxx +0 -29
- data/ext/couchbase/couchbase/create_query_index_options.hxx +0 -33
- data/ext/couchbase/couchbase/date_range.hxx +69 -0
- data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
- data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
- data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
- data/ext/couchbase/couchbase/drop_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/drop_primary_query_index_options.hxx +0 -30
- data/ext/couchbase/couchbase/drop_query_index_options.hxx +0 -31
- data/ext/couchbase/couchbase/error_codes.hxx +1 -2
- data/ext/couchbase/couchbase/error_context.hxx +17 -8
- data/ext/couchbase/couchbase/flush_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
- data/ext/couchbase/{core/topology/error_map_fmt.hxx → couchbase/fmt/key_value_error_map_attribute.hxx} +21 -21
- data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
- data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
- data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
- data/ext/couchbase/couchbase/geo_point.hxx +32 -0
- data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
- data/ext/couchbase/couchbase/get_all_buckets_options.hxx +44 -0
- data/ext/couchbase/couchbase/get_all_query_indexes_options.hxx +0 -30
- data/ext/couchbase/couchbase/get_and_lock_options.hxx +2 -2
- data/ext/couchbase/couchbase/get_and_touch_options.hxx +2 -2
- data/ext/couchbase/couchbase/get_bucket_options.hxx +43 -0
- data/ext/couchbase/couchbase/get_options.hxx +2 -2
- data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
- data/ext/couchbase/couchbase/insert_options.hxx +3 -3
- data/ext/couchbase/couchbase/key_value_error_context.hxx +7 -2
- data/ext/couchbase/couchbase/lookup_in_all_replicas_options.hxx +109 -0
- data/ext/couchbase/couchbase/lookup_in_any_replica_options.hxx +101 -0
- data/ext/couchbase/couchbase/lookup_in_options.hxx +2 -2
- data/ext/couchbase/couchbase/lookup_in_replica_result.hxx +74 -0
- data/ext/couchbase/couchbase/lookup_in_result.hxx +26 -0
- data/ext/couchbase/couchbase/management/bucket_settings.hxx +116 -0
- data/ext/couchbase/couchbase/manager_error_context.hxx +29 -53
- data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_operator.hxx +45 -0
- data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
- data/ext/couchbase/couchbase/match_query.hxx +163 -0
- data/ext/couchbase/couchbase/mutate_in_options.hxx +2 -2
- data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
- data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
- data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
- data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
- data/ext/couchbase/couchbase/query_error_context.hxx +3 -1
- data/ext/couchbase/couchbase/query_index_manager.hxx +16 -83
- data/ext/couchbase/couchbase/query_options.hxx +18 -0
- data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
- data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
- data/ext/couchbase/couchbase/remove_options.hxx +2 -2
- data/ext/couchbase/couchbase/replace_options.hxx +3 -3
- data/ext/couchbase/couchbase/scope.hxx +40 -0
- data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
- data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
- data/ext/couchbase/couchbase/search_facet.hxx +60 -0
- data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
- data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
- data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
- data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
- data/ext/couchbase/couchbase/search_options.hxx +509 -0
- data/ext/couchbase/couchbase/search_query.hxx +69 -0
- data/ext/couchbase/couchbase/search_result.hxx +77 -0
- data/ext/couchbase/couchbase/search_row.hxx +104 -0
- data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
- data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
- data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
- data/ext/couchbase/couchbase/search_sort.hxx +58 -0
- data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
- data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
- data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
- data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
- data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
- data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
- data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
- data/ext/couchbase/couchbase/security_options.hxx +18 -0
- data/ext/couchbase/couchbase/subdocument_error_context.hxx +4 -2
- data/ext/couchbase/couchbase/term_facet.hxx +48 -0
- data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/term_query.hxx +151 -0
- data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
- data/ext/couchbase/couchbase/touch_options.hxx +2 -2
- data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
- data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
- data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
- data/ext/couchbase/couchbase/transactions/attempt_context.hxx +67 -0
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
- data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
- data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
- data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
- data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
- data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
- data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
- data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
- data/ext/couchbase/couchbase/transactions.hxx +34 -1
- data/ext/couchbase/couchbase/unlock_options.hxx +2 -2
- data/ext/couchbase/couchbase/update_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
- data/ext/couchbase/couchbase/watch_query_indexes_options.hxx +0 -31
- data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
- data/ext/couchbase/test/CMakeLists.txt +8 -5
- data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
- data/ext/couchbase/test/test_helper.hxx +5 -5
- data/ext/couchbase/test/test_integration_analytics.cxx +28 -6
- data/ext/couchbase/test/test_integration_collections.cxx +13 -3
- data/ext/couchbase/test/test_integration_connect.cxx +7 -3
- data/ext/couchbase/test/test_integration_crud.cxx +18 -3
- data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
- data/ext/couchbase/test/test_integration_durability.cxx +12 -7
- data/ext/couchbase/test/test_integration_examples.cxx +419 -11
- data/ext/couchbase/test/test_integration_management.cxx +867 -368
- data/ext/couchbase/test/test_integration_query.cxx +87 -17
- data/ext/couchbase/test/test_integration_range_scan.cxx +363 -124
- data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
- data/ext/couchbase/test/test_integration_search.cxx +32 -3
- data/ext/couchbase/test/test_integration_subdoc.cxx +717 -11
- data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
- data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
- data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
- data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
- data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +13 -12
- data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +27 -21
- data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +17 -5
- data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
- data/ext/couchbase/test/test_unit_config_profiles.cxx +1 -1
- data/ext/couchbase/test/test_unit_connection_string.cxx +29 -0
- data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
- data/ext/couchbase/test/test_unit_query.cxx +75 -0
- data/ext/couchbase/test/test_unit_search.cxx +427 -0
- data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
- data/ext/couchbase/test/test_unit_utils.cxx +8 -4
- data/ext/couchbase.cxx +641 -45
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/authenticator.rb +0 -1
- data/lib/couchbase/cluster.rb +1 -5
- data/lib/couchbase/collection.rb +108 -0
- data/lib/couchbase/collection_options.rb +100 -0
- data/lib/couchbase/config_profiles.rb +1 -1
- data/lib/couchbase/errors.rb +5 -0
- data/lib/couchbase/json_transcoder.rb +12 -5
- data/lib/couchbase/key_value_scan.rb +125 -0
- data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
- data/lib/couchbase/management/query_index_manager.rb +70 -5
- data/lib/couchbase/options.rb +151 -0
- data/lib/couchbase/raw_binary_transcoder.rb +37 -0
- data/lib/couchbase/raw_json_transcoder.rb +38 -0
- data/lib/couchbase/raw_string_transcoder.rb +40 -0
- data/lib/couchbase/scope.rb +1 -1
- data/lib/couchbase/search_options.rb +5 -0
- data/lib/couchbase/transcoder_flags.rb +62 -0
- data/lib/couchbase/utils/time.rb +14 -1
- data/lib/couchbase/version.rb +1 -1
- metadata +175 -13
- data/ext/couchbase/core/config_profile.cxx +0 -47
- data/ext/couchbase/core/impl/collection_query_index_manager.cxx +0 -93
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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/conjunction_query.hxx>
|
|
21
|
+
#include <couchbase/disjunction_query.hxx>
|
|
22
|
+
#include <couchbase/match_all_query.hxx>
|
|
23
|
+
#include <couchbase/match_none_query.hxx>
|
|
24
|
+
#include <couchbase/search_query.hxx>
|
|
25
|
+
|
|
26
|
+
#include <cstdint>
|
|
27
|
+
#include <memory>
|
|
28
|
+
#include <vector>
|
|
29
|
+
|
|
30
|
+
namespace couchbase
|
|
31
|
+
{
|
|
32
|
+
/**
|
|
33
|
+
* The boolean query is a useful combination of conjunction and disjunction queries. A boolean query takes three lists of queries:
|
|
34
|
+
*
|
|
35
|
+
* * **must** - result documents must satisfy all of these queries.
|
|
36
|
+
* * **should** - result documents should satisfy these queries.
|
|
37
|
+
* * **must not** - result documents must not satisfy any of these queries.
|
|
38
|
+
*
|
|
39
|
+
* At execution, a boolean query that has no child queries in any 3 categories is not allowed and will fail fast.
|
|
40
|
+
*
|
|
41
|
+
* The inner representation of child queries in the `must`/`must_not`/`should` sections are respectively a @ref conjunction_query and two
|
|
42
|
+
* @ref disjunction_query.
|
|
43
|
+
*
|
|
44
|
+
* In the example below the following rules enforced by the boolean query:
|
|
45
|
+
* * retrieved documents MUST match `"hostel room"` in their `reviews.content` field AND have `true` in `free_breakfast` field.
|
|
46
|
+
* * also the documents SHOULD have EITHER `reviews.ratings.Overall > 4` OR `reviews.ratings.Service > 5`.
|
|
47
|
+
* * and finally, exclude documents with `city` `"Padfield"` or `"Gilingham"`.
|
|
48
|
+
*
|
|
49
|
+
* @snippet test_unit_search.cxx search-boolean
|
|
50
|
+
*
|
|
51
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-supported-queries-boolean-field-query.html server documentation
|
|
52
|
+
*
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @committed
|
|
55
|
+
*/
|
|
56
|
+
class boolean_query : public search_query
|
|
57
|
+
{
|
|
58
|
+
public:
|
|
59
|
+
/**
|
|
60
|
+
* Set @ref conjunction_query that groups all queries the documents **must** satisfy.
|
|
61
|
+
*
|
|
62
|
+
* @param query must-query
|
|
63
|
+
*
|
|
64
|
+
* @return this query for chaining purposes.
|
|
65
|
+
*
|
|
66
|
+
* @since 1.0.0
|
|
67
|
+
* @committed
|
|
68
|
+
*/
|
|
69
|
+
auto must(conjunction_query query) -> boolean_query&
|
|
70
|
+
{
|
|
71
|
+
must_ = std::move(query);
|
|
72
|
+
return *this;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Create @ref conjunction_query with given queries and set it as **must** query.
|
|
77
|
+
*
|
|
78
|
+
* @tparam SearchQuery any subclass of @ref search_query
|
|
79
|
+
* @param queries
|
|
80
|
+
*
|
|
81
|
+
* @return this query for chaining purposes.
|
|
82
|
+
*
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
* @committed
|
|
85
|
+
*/
|
|
86
|
+
template<typename... SearchQuery>
|
|
87
|
+
auto must(SearchQuery... queries) -> boolean_query&
|
|
88
|
+
{
|
|
89
|
+
must_ = conjunction_query(queries...);
|
|
90
|
+
return *this;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Returns @ref conjunction_query that groups all queries the documents **must** satisfy. Use it to add more queries.
|
|
95
|
+
*
|
|
96
|
+
* @return must-query
|
|
97
|
+
*
|
|
98
|
+
* @since 1.0.0
|
|
99
|
+
* @committed
|
|
100
|
+
*/
|
|
101
|
+
auto must() -> conjunction_query&
|
|
102
|
+
{
|
|
103
|
+
if (!must_) {
|
|
104
|
+
must_ = conjunction_query();
|
|
105
|
+
}
|
|
106
|
+
return must_.value();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Set @ref disjunction_query that groups queries the documents **should** satisfy.
|
|
111
|
+
*
|
|
112
|
+
* @param query should-query
|
|
113
|
+
*
|
|
114
|
+
* @return this query for chaining purposes.
|
|
115
|
+
*
|
|
116
|
+
* @since 1.0.0
|
|
117
|
+
* @committed
|
|
118
|
+
*/
|
|
119
|
+
auto should(disjunction_query query) -> boolean_query&
|
|
120
|
+
{
|
|
121
|
+
should_ = std::move(query);
|
|
122
|
+
return *this;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Create @ref disjunction_query with given queries and set it as **should** query.
|
|
127
|
+
*
|
|
128
|
+
* @tparam SearchQuery any subclass of @ref search_query
|
|
129
|
+
* @param queries
|
|
130
|
+
*
|
|
131
|
+
* @return this query for chaining purposes.
|
|
132
|
+
*
|
|
133
|
+
* @since 1.0.0
|
|
134
|
+
* @committed
|
|
135
|
+
*/
|
|
136
|
+
template<typename... SearchQuery>
|
|
137
|
+
auto should(SearchQuery... queries) -> boolean_query&
|
|
138
|
+
{
|
|
139
|
+
should_ = disjunction_query(queries...);
|
|
140
|
+
return *this;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Returns @ref disjunction_query that groups queries the documents **should** satisfy. Use it to add more queries or change
|
|
145
|
+
* @ref disjunction_query#min.
|
|
146
|
+
*
|
|
147
|
+
* @return should-query
|
|
148
|
+
*
|
|
149
|
+
* @since 1.0.0
|
|
150
|
+
* @committed
|
|
151
|
+
*/
|
|
152
|
+
auto should() -> disjunction_query&
|
|
153
|
+
{
|
|
154
|
+
if (!should_) {
|
|
155
|
+
should_ = disjunction_query();
|
|
156
|
+
}
|
|
157
|
+
return should_.value();
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Set @ref disjunction_query that groups queries the documents **must not** satisfy.
|
|
162
|
+
*
|
|
163
|
+
* @param query must_not-query
|
|
164
|
+
*
|
|
165
|
+
* @return this query for chaining purposes.
|
|
166
|
+
*
|
|
167
|
+
* @since 1.0.0
|
|
168
|
+
* @committed
|
|
169
|
+
*/
|
|
170
|
+
auto must_not(disjunction_query query) -> boolean_query&
|
|
171
|
+
{
|
|
172
|
+
must_not_ = std::move(query);
|
|
173
|
+
return *this;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Create @ref disjunction_query with given queries and set it as **must not** query.
|
|
178
|
+
*
|
|
179
|
+
* @tparam SearchQuery any subclass of @ref search_query
|
|
180
|
+
* @param queries
|
|
181
|
+
*
|
|
182
|
+
* @return this query for chaining purposes.
|
|
183
|
+
*
|
|
184
|
+
* @since 1.0.0
|
|
185
|
+
* @committed
|
|
186
|
+
*/
|
|
187
|
+
template<typename... SearchQuery>
|
|
188
|
+
auto must_not(SearchQuery... queries) -> boolean_query&
|
|
189
|
+
{
|
|
190
|
+
must_not_ = disjunction_query(queries...);
|
|
191
|
+
return *this;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Returns @ref disjunction_query that groups queries the documents **should** satisfy. Use it to add more queries.
|
|
196
|
+
*
|
|
197
|
+
* @return must_not-query
|
|
198
|
+
*
|
|
199
|
+
* @since 1.0.0
|
|
200
|
+
* @committed
|
|
201
|
+
*/
|
|
202
|
+
auto must_not() -> disjunction_query&
|
|
203
|
+
{
|
|
204
|
+
if (!must_not_) {
|
|
205
|
+
must_not_ = disjunction_query();
|
|
206
|
+
}
|
|
207
|
+
return must_not_.value();
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @return encoded representation of the query.
|
|
212
|
+
*
|
|
213
|
+
* @since 1.0.0
|
|
214
|
+
* @internal
|
|
215
|
+
*/
|
|
216
|
+
[[nodiscard]] auto encode() const -> encoded_search_query override;
|
|
217
|
+
|
|
218
|
+
private:
|
|
219
|
+
std::optional<conjunction_query> must_{};
|
|
220
|
+
std::optional<disjunction_query> should_{};
|
|
221
|
+
std::optional<disjunction_query> must_not_{};
|
|
222
|
+
};
|
|
223
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,135 @@
|
|
|
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/create_bucket_options.hxx>
|
|
21
|
+
#include <couchbase/drop_bucket_options.hxx>
|
|
22
|
+
#include <couchbase/flush_bucket_options.hxx>
|
|
23
|
+
#include <couchbase/get_all_buckets_options.hxx>
|
|
24
|
+
#include <couchbase/get_bucket_options.hxx>
|
|
25
|
+
#include <couchbase/update_bucket_options.hxx>
|
|
26
|
+
|
|
27
|
+
#include <future>
|
|
28
|
+
#include <memory>
|
|
29
|
+
|
|
30
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
31
|
+
namespace couchbase::core
|
|
32
|
+
{
|
|
33
|
+
class cluster;
|
|
34
|
+
} // namespace couchbase::core
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
namespace couchbase
|
|
38
|
+
{
|
|
39
|
+
class cluster;
|
|
40
|
+
|
|
41
|
+
class bucket_manager
|
|
42
|
+
{
|
|
43
|
+
public:
|
|
44
|
+
/**
|
|
45
|
+
* Get specific bucket within the cluster
|
|
46
|
+
*
|
|
47
|
+
* @param bucket_name the name of the bucket to get
|
|
48
|
+
* @param options optional parameters
|
|
49
|
+
* @param handler handler that implements @ref get_bucket_handler
|
|
50
|
+
*
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
* @committed
|
|
53
|
+
*/
|
|
54
|
+
void get_bucket(std::string bucket_name, const get_bucket_options& options, get_bucket_handler&& handler) const;
|
|
55
|
+
|
|
56
|
+
[[nodiscard]] auto get_bucket(std::string bucket_name, const get_bucket_options& options = {}) const
|
|
57
|
+
-> std::future<std::pair<manager_error_context, management::cluster::bucket_settings>>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get all buckets on the cluster
|
|
61
|
+
*
|
|
62
|
+
* @param options optional parameters
|
|
63
|
+
* @param handler handler that implements @ref get_all_buckets_handler
|
|
64
|
+
*
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @committed
|
|
67
|
+
*/
|
|
68
|
+
void get_all_buckets(const get_all_buckets_options& options, get_all_buckets_handler&& handler) const;
|
|
69
|
+
|
|
70
|
+
[[nodiscard]] auto get_all_buckets(const get_all_buckets_options& options = {}) const
|
|
71
|
+
-> std::future<std::pair<manager_error_context, std::vector<management::cluster::bucket_settings>>>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Create a bucket on the cluster
|
|
75
|
+
*
|
|
76
|
+
* @param bucket_settings the settings for the bucket
|
|
77
|
+
* @param options optional parameters
|
|
78
|
+
* @param handler handler that implements @ref create_bucket_handler
|
|
79
|
+
*/
|
|
80
|
+
void create_bucket(const management::cluster::bucket_settings& bucket_settings,
|
|
81
|
+
const create_bucket_options& options,
|
|
82
|
+
create_bucket_handler&& handler) const;
|
|
83
|
+
|
|
84
|
+
[[nodiscard]] auto create_bucket(const management::cluster::bucket_settings& bucket_settings,
|
|
85
|
+
const create_bucket_options& options = {}) const -> std::future<manager_error_context>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Update an existing bucket
|
|
89
|
+
*
|
|
90
|
+
* @param bucket_settings the settings for the bucket
|
|
91
|
+
* @param options optional parameters
|
|
92
|
+
* @param handler handler that implements @ref update_bucket_handler
|
|
93
|
+
*/
|
|
94
|
+
void update_bucket(const management::cluster::bucket_settings& bucket_settings,
|
|
95
|
+
const update_bucket_options& options,
|
|
96
|
+
update_bucket_handler&& handler) const;
|
|
97
|
+
|
|
98
|
+
[[nodiscard]] auto update_bucket(const management::cluster::bucket_settings& bucket_settings,
|
|
99
|
+
const update_bucket_options& options = {}) const -> std::future<manager_error_context>;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Drop an existing bucket
|
|
103
|
+
*
|
|
104
|
+
* @param bucket_name the name of the bucket to drop
|
|
105
|
+
* @param options optional parameters
|
|
106
|
+
* @param handler handler that implements @ref drop_bucket_handler
|
|
107
|
+
*/
|
|
108
|
+
void drop_bucket(std::string bucket_name, const drop_bucket_options& options, drop_bucket_handler&& handler) const;
|
|
109
|
+
|
|
110
|
+
[[nodiscard]] auto drop_bucket(std::string bucket_name, const drop_bucket_options& options = {}) const
|
|
111
|
+
-> std::future<manager_error_context>;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Flush an existing bucket
|
|
115
|
+
*
|
|
116
|
+
* @param bucket_name the name of the bucket to flush
|
|
117
|
+
* @param options optional parameters
|
|
118
|
+
* @param handler handler that implements @ref flush_bucket_handler
|
|
119
|
+
*/
|
|
120
|
+
void flush_bucket(std::string bucket_name, const flush_bucket_options& options, flush_bucket_handler&& handler) const;
|
|
121
|
+
|
|
122
|
+
[[nodiscard]] auto flush_bucket(std::string bucket_name, const flush_bucket_options& options = {}) const
|
|
123
|
+
-> std::future<manager_error_context>;
|
|
124
|
+
|
|
125
|
+
private:
|
|
126
|
+
friend class cluster;
|
|
127
|
+
|
|
128
|
+
explicit bucket_manager(std::shared_ptr<couchbase::core::cluster> core)
|
|
129
|
+
: core_(std::move(core))
|
|
130
|
+
{
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
std::shared_ptr<couchbase::core::cluster> core_;
|
|
134
|
+
};
|
|
135
|
+
} // namespace couchbase
|
|
@@ -66,34 +66,4 @@ class build_query_index_options : public common_options<build_query_index_option
|
|
|
66
66
|
* @uncommitted
|
|
67
67
|
*/
|
|
68
68
|
using build_deferred_query_indexes_handler = std::function<void(couchbase::manager_error_context)>;
|
|
69
|
-
|
|
70
|
-
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
71
|
-
namespace core
|
|
72
|
-
{
|
|
73
|
-
class cluster;
|
|
74
|
-
class query_context;
|
|
75
|
-
namespace impl
|
|
76
|
-
{
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @since 1.0.0
|
|
80
|
-
* @internal
|
|
81
|
-
*/
|
|
82
|
-
void
|
|
83
|
-
initiate_build_deferred_indexes(std::shared_ptr<couchbase::core::cluster> resp1,
|
|
84
|
-
std::string bucket_name,
|
|
85
|
-
build_query_index_options::built options,
|
|
86
|
-
query_context query_ctx,
|
|
87
|
-
std::string collection_name,
|
|
88
|
-
build_deferred_query_indexes_handler&& handler);
|
|
89
|
-
|
|
90
|
-
void
|
|
91
|
-
initiate_build_deferred_indexes(std::shared_ptr<couchbase::core::cluster> resp1,
|
|
92
|
-
std::string bucket_name,
|
|
93
|
-
build_query_index_options::built options,
|
|
94
|
-
build_deferred_query_indexes_handler&& handler);
|
|
95
|
-
|
|
96
|
-
#endif
|
|
97
|
-
} // namespace impl
|
|
98
|
-
} // namespace core
|
|
99
69
|
} // namespace couchbase
|
|
@@ -19,9 +19,12 @@
|
|
|
19
19
|
|
|
20
20
|
#include <couchbase/analytics_options.hxx>
|
|
21
21
|
#include <couchbase/bucket.hxx>
|
|
22
|
+
#include <couchbase/bucket_manager.hxx>
|
|
22
23
|
#include <couchbase/cluster_options.hxx>
|
|
23
24
|
#include <couchbase/query_index_manager.hxx>
|
|
24
25
|
#include <couchbase/query_options.hxx>
|
|
26
|
+
#include <couchbase/search_options.hxx>
|
|
27
|
+
#include <couchbase/search_query.hxx>
|
|
25
28
|
#include <couchbase/transactions.hxx>
|
|
26
29
|
|
|
27
30
|
#include <memory>
|
|
@@ -166,6 +169,43 @@ class cluster
|
|
|
166
169
|
return future;
|
|
167
170
|
}
|
|
168
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Performs a query against the full text search services.
|
|
174
|
+
*
|
|
175
|
+
* @param index_name name of the search index
|
|
176
|
+
* @param query query object, see hierarchy of @ref search_query for more details.
|
|
177
|
+
* @param options options to customize the query request.
|
|
178
|
+
* @param handler the handler that implements @ref search_handler
|
|
179
|
+
*
|
|
180
|
+
* @exception errc::common::ambiguous_timeout
|
|
181
|
+
* @exception errc::common::unambiguous_timeout
|
|
182
|
+
*
|
|
183
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-introduction.html
|
|
184
|
+
*
|
|
185
|
+
* @since 1.0.0
|
|
186
|
+
* @committed
|
|
187
|
+
*/
|
|
188
|
+
void search_query(std::string index_name, const search_query& query, const search_options& options, search_handler&& handler) const;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Performs a query against the full text search services.
|
|
192
|
+
*
|
|
193
|
+
* @param index_name name of the search index
|
|
194
|
+
* @param query query object, see hierarchy of @ref search_query for more details.
|
|
195
|
+
* @param options options to customize the query request.
|
|
196
|
+
* @return future object that carries result of the operation
|
|
197
|
+
*
|
|
198
|
+
* @exception errc::common::ambiguous_timeout
|
|
199
|
+
* @exception errc::common::unambiguous_timeout
|
|
200
|
+
*
|
|
201
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-introduction.html
|
|
202
|
+
*
|
|
203
|
+
* @since 1.0.0
|
|
204
|
+
* @committed
|
|
205
|
+
*/
|
|
206
|
+
[[nodiscard]] auto search_query(std::string index_name, const class search_query& query, const search_options& options = {}) const
|
|
207
|
+
-> std::future<std::pair<search_error_context, search_result>>;
|
|
208
|
+
|
|
169
209
|
/**
|
|
170
210
|
* Performs a query against the analytics services.
|
|
171
211
|
*
|
|
@@ -211,10 +251,25 @@ class cluster
|
|
|
211
251
|
return query_index_manager{ core_ };
|
|
212
252
|
}
|
|
213
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Provides access to the bucket management services.
|
|
256
|
+
*
|
|
257
|
+
* @return a manager instance
|
|
258
|
+
*
|
|
259
|
+
* @since 1.0.0
|
|
260
|
+
* @committed
|
|
261
|
+
*/
|
|
262
|
+
[[nodiscard]] auto buckets() const -> bucket_manager
|
|
263
|
+
{
|
|
264
|
+
return bucket_manager{ core_ };
|
|
265
|
+
}
|
|
266
|
+
|
|
214
267
|
/**
|
|
215
268
|
* Provides access to transaction services.
|
|
216
269
|
*
|
|
217
|
-
* @
|
|
270
|
+
* See {@link transactions} for details on using the transactions object.
|
|
271
|
+
*
|
|
272
|
+
* @return an {@link transactions} object
|
|
218
273
|
*
|
|
219
274
|
* @since 1.0.0
|
|
220
275
|
* @committed
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
#include <couchbase/get_any_replica_options.hxx>
|
|
29
29
|
#include <couchbase/get_options.hxx>
|
|
30
30
|
#include <couchbase/insert_options.hxx>
|
|
31
|
+
#include <couchbase/lookup_in_all_replicas_options.hxx>
|
|
32
|
+
#include <couchbase/lookup_in_any_replica_options.hxx>
|
|
31
33
|
#include <couchbase/lookup_in_options.hxx>
|
|
32
34
|
#include <couchbase/lookup_in_specs.hxx>
|
|
33
35
|
#include <couchbase/mutate_in_options.hxx>
|
|
@@ -856,6 +858,115 @@ class collection
|
|
|
856
858
|
return future;
|
|
857
859
|
}
|
|
858
860
|
|
|
861
|
+
/**
|
|
862
|
+
* Performs lookups to document fragments with default options from all replicas and the active node and returns the result as a vector.
|
|
863
|
+
*
|
|
864
|
+
* @tparam Handler type of the handler that implements @ref lookup_in_all_replicas_handler
|
|
865
|
+
*
|
|
866
|
+
* @param document_id the outer document ID
|
|
867
|
+
* @param specs an object that specifies the types of lookups to perform
|
|
868
|
+
* @param options custom options to modify the lookup options
|
|
869
|
+
* @param handler callable that implements @ref lookup_in_all_replicas_handler
|
|
870
|
+
*
|
|
871
|
+
* @exception errc::key_value::document_not_found the given document id is not found in the collection.
|
|
872
|
+
* @exception errc::common::ambiguous_timeout
|
|
873
|
+
* @exception errc::common::unambiguous_timeout
|
|
874
|
+
*
|
|
875
|
+
* @since 1.0.0
|
|
876
|
+
* @committed
|
|
877
|
+
*/
|
|
878
|
+
template<typename Handler>
|
|
879
|
+
void lookup_in_all_replicas(std::string document_id,
|
|
880
|
+
lookup_in_specs specs,
|
|
881
|
+
const lookup_in_all_replicas_options& options,
|
|
882
|
+
Handler&& handler) const
|
|
883
|
+
{
|
|
884
|
+
return core::impl::initiate_lookup_in_all_replicas_operation(
|
|
885
|
+
core_, bucket_name_, scope_name_, name_, std::move(document_id), specs.specs(), options.build(), std::forward<Handler>(handler));
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* Performs lookups to document fragments with default options from all replicas and the active node and returns the result as a vector.
|
|
890
|
+
*
|
|
891
|
+
* @param document_id the outer document ID
|
|
892
|
+
* @param specs an object that specifies the types of lookups to perform
|
|
893
|
+
* @param options custom options to modify the lookup options
|
|
894
|
+
* @return future object that carries result of the operation
|
|
895
|
+
*
|
|
896
|
+
* @exception errc::key_value::document_not_found the given document id is not found in the collection.
|
|
897
|
+
* @exception errc::common::ambiguous_timeout
|
|
898
|
+
* @exception errc::common::unambiguous_timeout
|
|
899
|
+
*
|
|
900
|
+
* @since 1.0.0
|
|
901
|
+
* @committed
|
|
902
|
+
*/
|
|
903
|
+
[[nodiscard]] auto lookup_in_all_replicas(std::string document_id,
|
|
904
|
+
lookup_in_specs specs,
|
|
905
|
+
const lookup_in_all_replicas_options& options = {}) const
|
|
906
|
+
-> std::future<std::pair<subdocument_error_context, lookup_in_all_replicas_result>>
|
|
907
|
+
{
|
|
908
|
+
auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_all_replicas_result>>>();
|
|
909
|
+
auto future = barrier->get_future();
|
|
910
|
+
lookup_in_all_replicas(std::move(document_id), std::move(specs), options, [barrier](auto ctx, auto result) {
|
|
911
|
+
barrier->set_value({ std::move(ctx), std::move(result) });
|
|
912
|
+
});
|
|
913
|
+
return future;
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
/**
|
|
917
|
+
* Performs lookups to document fragments with default options from all replicas and returns the first found.
|
|
918
|
+
*
|
|
919
|
+
* @tparam Handler type of the handler that implements @ref lookup_in_any_replica_handler
|
|
920
|
+
*
|
|
921
|
+
* @param document_id the outer document ID
|
|
922
|
+
* @param specs an object that specifies the types of lookups to perform
|
|
923
|
+
* @param options custom options to modify the lookup options
|
|
924
|
+
*
|
|
925
|
+
* @exception errc::key_value::document_not_found the given document id is not found in the collection.
|
|
926
|
+
* @exception errc::common::ambiguous_timeout
|
|
927
|
+
* @exception errc::common::unambiguous_timeout
|
|
928
|
+
*
|
|
929
|
+
* @since 1.0.0
|
|
930
|
+
* @committed
|
|
931
|
+
*/
|
|
932
|
+
template<typename Handler>
|
|
933
|
+
void lookup_in_any_replica(std::string document_id,
|
|
934
|
+
lookup_in_specs specs,
|
|
935
|
+
const lookup_in_any_replica_options& options,
|
|
936
|
+
Handler&& handler) const
|
|
937
|
+
{
|
|
938
|
+
return core::impl::initiate_lookup_in_any_replica_operation(
|
|
939
|
+
core_, bucket_name_, scope_name_, name_, std::move(document_id), specs.specs(), options.build(), std::forward<Handler>(handler));
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
/**
|
|
943
|
+
* Performs lookups to document fragments with default options from all replicas and returns the first found.
|
|
944
|
+
*
|
|
945
|
+
* @param document_id the outer document ID
|
|
946
|
+
* @param specs an object that specifies the types of lookups to perform
|
|
947
|
+
* @param options custom options to modify the lookup options
|
|
948
|
+
* @return future object that carries result of the operation
|
|
949
|
+
*
|
|
950
|
+
* @exception errc::key_value::document_not_found the given document id is not found in the collection.
|
|
951
|
+
* @exception errc::common::ambiguous_timeout
|
|
952
|
+
* @exception errc::common::unambiguous_timeout
|
|
953
|
+
*
|
|
954
|
+
* @since 1.0.0
|
|
955
|
+
* @committed
|
|
956
|
+
*/
|
|
957
|
+
[[nodiscard]] auto lookup_in_any_replica(std::string document_id,
|
|
958
|
+
lookup_in_specs specs,
|
|
959
|
+
const lookup_in_any_replica_options& options = {}) const
|
|
960
|
+
-> std::future<std::pair<subdocument_error_context, lookup_in_replica_result>>
|
|
961
|
+
{
|
|
962
|
+
auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_replica_result>>>();
|
|
963
|
+
auto future = barrier->get_future();
|
|
964
|
+
lookup_in_any_replica(std::move(document_id), std::move(specs), options, [barrier](auto ctx, auto result) {
|
|
965
|
+
barrier->set_value({ std::move(ctx), std::move(result) });
|
|
966
|
+
});
|
|
967
|
+
return future;
|
|
968
|
+
}
|
|
969
|
+
|
|
859
970
|
/**
|
|
860
971
|
* Gets a document for a given id and places a pessimistic lock on it for mutations
|
|
861
972
|
*
|