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,43 @@
|
|
|
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/management/bucket_settings.hxx>
|
|
21
|
+
|
|
22
|
+
#include <functional>
|
|
23
|
+
#include <memory>
|
|
24
|
+
#include <optional>
|
|
25
|
+
#include <string>
|
|
26
|
+
|
|
27
|
+
namespace couchbase
|
|
28
|
+
{
|
|
29
|
+
struct get_bucket_options : public common_options<get_bucket_options> {
|
|
30
|
+
public:
|
|
31
|
+
struct built : public common_options<get_bucket_options>::built {
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
[[nodiscard]] auto build() const -> built
|
|
35
|
+
{
|
|
36
|
+
return { build_common_options() };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private:
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
using get_bucket_handler = std::function<void(couchbase::manager_error_context, couchbase::management::cluster::bucket_settings)>;
|
|
43
|
+
} // namespace couchbase
|
|
@@ -129,8 +129,8 @@ initiate_get_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
|
129
129
|
std::string scope_name,
|
|
130
130
|
std::string collection_name,
|
|
131
131
|
std::string document_key,
|
|
132
|
-
get_options::built options,
|
|
133
|
-
get_handler&& handler);
|
|
132
|
+
couchbase::get_options::built options,
|
|
133
|
+
couchbase::get_handler&& handler);
|
|
134
134
|
#endif
|
|
135
135
|
} // namespace impl
|
|
136
136
|
} // namespace core
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
namespace couchbase
|
|
21
|
+
{
|
|
22
|
+
/**
|
|
23
|
+
* Enumeration of the highlighting styles recognized by the FTS engine.
|
|
24
|
+
*
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
* @committed
|
|
27
|
+
*/
|
|
28
|
+
enum class highlight_style {
|
|
29
|
+
/**
|
|
30
|
+
* Use HTML tags `<mark>` and `</mark>` to indicate matches in the fields.
|
|
31
|
+
*
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @committed
|
|
34
|
+
*/
|
|
35
|
+
html,
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Use ANSI code sequences `\\x1b[43m>` and `\\x1b[0m` to indicate matches in the fields.
|
|
39
|
+
*
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
* @committed
|
|
42
|
+
*/
|
|
43
|
+
ansi,
|
|
44
|
+
};
|
|
45
|
+
} // namespace couchbase
|
|
@@ -127,9 +127,9 @@ initiate_insert_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
|
127
127
|
std::string scope_name,
|
|
128
128
|
std::string collection_name,
|
|
129
129
|
std::string document_key,
|
|
130
|
-
codec::encoded_value encoded,
|
|
131
|
-
insert_options::built options,
|
|
132
|
-
insert_handler&& handler);
|
|
130
|
+
couchbase::codec::encoded_value encoded,
|
|
131
|
+
couchbase::insert_options::built options,
|
|
132
|
+
couchbase::insert_handler&& handler);
|
|
133
133
|
#endif
|
|
134
134
|
} // namespace impl
|
|
135
135
|
} // namespace core
|
|
@@ -48,6 +48,7 @@ class key_value_error_context : public error_context
|
|
|
48
48
|
/**
|
|
49
49
|
* Creates and initializes error context with given parameters.
|
|
50
50
|
*
|
|
51
|
+
* @param operation_id
|
|
51
52
|
* @param ec
|
|
52
53
|
* @param last_dispatched_to
|
|
53
54
|
* @param last_dispatched_from
|
|
@@ -66,7 +67,8 @@ class key_value_error_context : public error_context
|
|
|
66
67
|
* @since 1.0.0
|
|
67
68
|
* @internal
|
|
68
69
|
*/
|
|
69
|
-
key_value_error_context(std::
|
|
70
|
+
key_value_error_context(std::string operation_id,
|
|
71
|
+
std::error_code ec,
|
|
70
72
|
std::optional<std::string> last_dispatched_to,
|
|
71
73
|
std::optional<std::string> last_dispatched_from,
|
|
72
74
|
std::size_t retry_attempts,
|
|
@@ -80,7 +82,8 @@ class key_value_error_context : public error_context
|
|
|
80
82
|
couchbase::cas cas,
|
|
81
83
|
std::optional<key_value_error_map_info> error_map_info,
|
|
82
84
|
std::optional<key_value_extended_error_info> extended_error_info)
|
|
83
|
-
: error_context{ ec, std::move(last_dispatched_to), std::move(last_dispatched_from), retry_attempts,
|
|
85
|
+
: error_context{ std::move(operation_id), ec, std::move(last_dispatched_to), std::move(last_dispatched_from), retry_attempts,
|
|
86
|
+
std::move(retry_reasons) }
|
|
84
87
|
, id_{ std::move(id) }
|
|
85
88
|
, bucket_{ std::move(bucket) }
|
|
86
89
|
, scope_{ std::move(scope) }
|
|
@@ -210,6 +213,8 @@ class key_value_error_context : public error_context
|
|
|
210
213
|
return extended_error_info_;
|
|
211
214
|
}
|
|
212
215
|
|
|
216
|
+
[[nodiscard]] auto to_json() const -> std::string;
|
|
217
|
+
|
|
213
218
|
private:
|
|
214
219
|
std::string id_{};
|
|
215
220
|
std::string bucket_{};
|
|
@@ -0,0 +1,109 @@
|
|
|
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/subdoc/fwd/command_bundle.hxx>
|
|
21
|
+
|
|
22
|
+
#include <core/impl/subdoc/command.hxx>
|
|
23
|
+
#include <couchbase/codec/encoded_value.hxx>
|
|
24
|
+
#include <couchbase/common_options.hxx>
|
|
25
|
+
#include <couchbase/expiry.hxx>
|
|
26
|
+
#include <couchbase/lookup_in_replica_result.hxx>
|
|
27
|
+
#include <couchbase/store_semantics.hxx>
|
|
28
|
+
#include <couchbase/subdocument_error_context.hxx>
|
|
29
|
+
|
|
30
|
+
#include <chrono>
|
|
31
|
+
#include <functional>
|
|
32
|
+
#include <memory>
|
|
33
|
+
#include <optional>
|
|
34
|
+
#include <vector>
|
|
35
|
+
|
|
36
|
+
namespace couchbase
|
|
37
|
+
{
|
|
38
|
+
/**
|
|
39
|
+
* Options for @ref collection#lookup_in_all_replicas().
|
|
40
|
+
*
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @committed
|
|
43
|
+
*/
|
|
44
|
+
struct lookup_in_all_replicas_options : common_options<lookup_in_all_replicas_options> {
|
|
45
|
+
/**
|
|
46
|
+
* Immutable value object representing consistent options.
|
|
47
|
+
*
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
struct built : public common_options<lookup_in_all_replicas_options>::built {
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Validates options and returns them as an immutable value.
|
|
56
|
+
*
|
|
57
|
+
* @return consistent options as an immutable value
|
|
58
|
+
*
|
|
59
|
+
* @exception std::system_error with code errc::common::invalid_argument if the options are not valid
|
|
60
|
+
*
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
[[nodiscard]] auto build() const -> built
|
|
65
|
+
{
|
|
66
|
+
return { build_common_options() };
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The result for the @ref collection#lookup_in_all_replicas() operation
|
|
72
|
+
*
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @uncommitted
|
|
75
|
+
*/
|
|
76
|
+
using lookup_in_all_replicas_result = std::vector<lookup_in_replica_result>;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The signature for the handler of the @ref collection#lookup_in_all_replicas() operation
|
|
80
|
+
*
|
|
81
|
+
* @since 1.0.0
|
|
82
|
+
* @uncommitted
|
|
83
|
+
*/
|
|
84
|
+
using lookup_in_all_replicas_handler = std::function<void(couchbase::subdocument_error_context, lookup_in_all_replicas_result)>;
|
|
85
|
+
|
|
86
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
87
|
+
namespace core
|
|
88
|
+
{
|
|
89
|
+
class cluster;
|
|
90
|
+
namespace impl
|
|
91
|
+
{
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @since 1.0.0
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
void
|
|
98
|
+
initiate_lookup_in_all_replicas_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
99
|
+
const std::string& bucket_name,
|
|
100
|
+
const std::string& scope_name,
|
|
101
|
+
const std::string& collection_name,
|
|
102
|
+
std::string document_key,
|
|
103
|
+
const std::vector<couchbase::core::impl::subdoc::command>& specs,
|
|
104
|
+
lookup_in_all_replicas_options::built options,
|
|
105
|
+
lookup_in_all_replicas_handler&& handler);
|
|
106
|
+
#endif
|
|
107
|
+
} // namespace impl
|
|
108
|
+
} // namespace core
|
|
109
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,101 @@
|
|
|
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/subdoc/fwd/command_bundle.hxx>
|
|
21
|
+
|
|
22
|
+
#include <core/impl/subdoc/command.hxx>
|
|
23
|
+
#include <couchbase/codec/encoded_value.hxx>
|
|
24
|
+
#include <couchbase/common_options.hxx>
|
|
25
|
+
#include <couchbase/expiry.hxx>
|
|
26
|
+
#include <couchbase/lookup_in_replica_result.hxx>
|
|
27
|
+
#include <couchbase/store_semantics.hxx>
|
|
28
|
+
#include <couchbase/subdocument_error_context.hxx>
|
|
29
|
+
|
|
30
|
+
#include <chrono>
|
|
31
|
+
#include <functional>
|
|
32
|
+
#include <memory>
|
|
33
|
+
#include <optional>
|
|
34
|
+
#include <vector>
|
|
35
|
+
|
|
36
|
+
namespace couchbase
|
|
37
|
+
{
|
|
38
|
+
/**
|
|
39
|
+
* Options for @ref collection#lookup_in_any_replica().
|
|
40
|
+
*
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @committed
|
|
43
|
+
*/
|
|
44
|
+
struct lookup_in_any_replica_options : common_options<lookup_in_any_replica_options> {
|
|
45
|
+
/**
|
|
46
|
+
* Immutable value object representing consistent options.
|
|
47
|
+
*
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
struct built : public common_options<lookup_in_any_replica_options>::built {
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Validates options and returns them as an immutable value.
|
|
56
|
+
*
|
|
57
|
+
* @return consistent options as an immutable value
|
|
58
|
+
*
|
|
59
|
+
* @exception std::system_error with code errc::common::invalid_argument if the options are not valid
|
|
60
|
+
*
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
[[nodiscard]] auto build() const -> built
|
|
65
|
+
{
|
|
66
|
+
return { build_common_options() };
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The signature for the handler of the @ref collection#lookup_in_any_replica() operation
|
|
72
|
+
*
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @uncommitted
|
|
75
|
+
*/
|
|
76
|
+
using lookup_in_any_replica_handler = std::function<void(couchbase::subdocument_error_context, lookup_in_replica_result)>;
|
|
77
|
+
|
|
78
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
79
|
+
namespace core
|
|
80
|
+
{
|
|
81
|
+
class cluster;
|
|
82
|
+
namespace impl
|
|
83
|
+
{
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @since 1.0.0
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
89
|
+
void
|
|
90
|
+
initiate_lookup_in_any_replica_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
91
|
+
const std::string& bucket_name,
|
|
92
|
+
const std::string& scope_name,
|
|
93
|
+
const std::string& collection_name,
|
|
94
|
+
std::string document_key,
|
|
95
|
+
const std::vector<couchbase::core::impl::subdoc::command>& specs,
|
|
96
|
+
lookup_in_any_replica_options::built options,
|
|
97
|
+
lookup_in_any_replica_handler&& handler);
|
|
98
|
+
#endif
|
|
99
|
+
} // namespace impl
|
|
100
|
+
} // namespace core
|
|
101
|
+
} // namespace couchbase
|
|
@@ -111,8 +111,8 @@ initiate_lookup_in_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
|
111
111
|
std::string collection_name,
|
|
112
112
|
std::string document_key,
|
|
113
113
|
const std::vector<couchbase::core::impl::subdoc::command>& specs,
|
|
114
|
-
lookup_in_options::built options,
|
|
115
|
-
lookup_in_handler&& handler);
|
|
114
|
+
couchbase::lookup_in_options::built options,
|
|
115
|
+
couchbase::lookup_in_handler&& handler);
|
|
116
116
|
#endif
|
|
117
117
|
} // namespace impl
|
|
118
118
|
} // namespace core
|
|
@@ -0,0 +1,74 @@
|
|
|
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/lookup_in_result.hxx>
|
|
21
|
+
|
|
22
|
+
#include <vector>
|
|
23
|
+
|
|
24
|
+
namespace couchbase
|
|
25
|
+
{
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Represents result of lookup_in_replica operations.
|
|
29
|
+
*
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
* @committed
|
|
32
|
+
*/
|
|
33
|
+
class lookup_in_replica_result : public lookup_in_result
|
|
34
|
+
{
|
|
35
|
+
public:
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
lookup_in_replica_result() = default;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Constructs result for lookup_in_replica operation
|
|
44
|
+
*
|
|
45
|
+
* @param cas
|
|
46
|
+
* @param entries list of the fields returned by the server
|
|
47
|
+
* @param is_deleted
|
|
48
|
+
* @param is_replica true if document originates from replica node
|
|
49
|
+
*
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
* @committed
|
|
52
|
+
*/
|
|
53
|
+
lookup_in_replica_result(couchbase::cas cas, std::vector<entry> entries, bool is_deleted, bool is_replica)
|
|
54
|
+
: lookup_in_result{ cas, std::move(entries), is_deleted }
|
|
55
|
+
, is_replica_{ is_replica }
|
|
56
|
+
{
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Returns whether this document originates from a replica node
|
|
61
|
+
*
|
|
62
|
+
* @return whether document originates from a replica node
|
|
63
|
+
*
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
*/
|
|
66
|
+
[[nodiscard]] auto is_replica() const -> bool
|
|
67
|
+
{
|
|
68
|
+
return is_replica_;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private:
|
|
72
|
+
bool is_replica_{ false };
|
|
73
|
+
};
|
|
74
|
+
} // namespace couchbase
|
|
@@ -44,6 +44,7 @@ class lookup_in_result : public result
|
|
|
44
44
|
codec::binary value;
|
|
45
45
|
std::size_t original_index;
|
|
46
46
|
bool exists;
|
|
47
|
+
std::error_code ec;
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
/**
|
|
@@ -84,6 +85,11 @@ class lookup_in_result : public result
|
|
|
84
85
|
{
|
|
85
86
|
for (const entry& e : entries_) {
|
|
86
87
|
if (e.original_index == index) {
|
|
88
|
+
if (e.ec) {
|
|
89
|
+
throw std::system_error(
|
|
90
|
+
e.ec, "error getting result for spec at index " + std::to_string(index) + ", path \"" + e.path + "\"");
|
|
91
|
+
}
|
|
92
|
+
|
|
87
93
|
return codec::tao_json_serializer::deserialize<Document>(e.value);
|
|
88
94
|
}
|
|
89
95
|
}
|
|
@@ -105,6 +111,10 @@ class lookup_in_result : public result
|
|
|
105
111
|
{
|
|
106
112
|
for (const entry& e : entries_) {
|
|
107
113
|
if (e.path == path) {
|
|
114
|
+
if (e.ec) {
|
|
115
|
+
throw std::system_error(e.ec, "error getting result for path \"" + e.path + "\"");
|
|
116
|
+
}
|
|
117
|
+
|
|
108
118
|
return codec::tao_json_serializer::deserialize<Document>(e.value);
|
|
109
119
|
}
|
|
110
120
|
}
|
|
@@ -127,6 +137,10 @@ class lookup_in_result : public result
|
|
|
127
137
|
const auto& macro_string = subdoc::to_string(macro);
|
|
128
138
|
for (const entry& e : entries_) {
|
|
129
139
|
if (e.path == macro_string) {
|
|
140
|
+
if (e.ec) {
|
|
141
|
+
throw std::system_error(e.ec, "error getting result for macro \"" + macro_string + "\"");
|
|
142
|
+
}
|
|
143
|
+
|
|
130
144
|
return codec::tao_json_serializer::deserialize<Document>(e.value);
|
|
131
145
|
}
|
|
132
146
|
}
|
|
@@ -147,6 +161,10 @@ class lookup_in_result : public result
|
|
|
147
161
|
{
|
|
148
162
|
for (const entry& e : entries_) {
|
|
149
163
|
if (e.original_index == index) {
|
|
164
|
+
if (e.ec && e.ec != couchbase::errc::key_value::path_not_found) {
|
|
165
|
+
throw std::system_error(e.ec, "error getting result for path \"" + e.path + "\"");
|
|
166
|
+
}
|
|
167
|
+
|
|
150
168
|
return e.exists;
|
|
151
169
|
}
|
|
152
170
|
}
|
|
@@ -167,6 +185,10 @@ class lookup_in_result : public result
|
|
|
167
185
|
const auto& macro_string = subdoc::to_string(macro);
|
|
168
186
|
for (const entry& e : entries_) {
|
|
169
187
|
if (e.path == macro_string) {
|
|
188
|
+
if (e.ec && e.ec != couchbase::errc::key_value::path_not_found) {
|
|
189
|
+
throw std::system_error(e.ec, "error getting result for macro \"" + macro_string + "\"");
|
|
190
|
+
}
|
|
191
|
+
|
|
170
192
|
return e.exists;
|
|
171
193
|
}
|
|
172
194
|
}
|
|
@@ -186,6 +208,10 @@ class lookup_in_result : public result
|
|
|
186
208
|
{
|
|
187
209
|
for (const entry& e : entries_) {
|
|
188
210
|
if (e.path == path) {
|
|
211
|
+
if (e.ec && e.ec != couchbase::errc::key_value::path_not_found) {
|
|
212
|
+
throw std::system_error(e.ec, "error getting result for path \"" + e.path + "\"");
|
|
213
|
+
}
|
|
214
|
+
|
|
189
215
|
return e.exists;
|
|
190
216
|
}
|
|
191
217
|
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2020-2021 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/durability_level.hxx>
|
|
21
|
+
|
|
22
|
+
#include <map>
|
|
23
|
+
#include <optional>
|
|
24
|
+
#include <string>
|
|
25
|
+
#include <vector>
|
|
26
|
+
|
|
27
|
+
namespace couchbase::management::cluster
|
|
28
|
+
{
|
|
29
|
+
enum class bucket_type { unknown, couchbase, memcached, ephemeral };
|
|
30
|
+
enum class bucket_compression { unknown, off, active, passive };
|
|
31
|
+
enum class bucket_eviction_policy {
|
|
32
|
+
unknown,
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* During ejection, everything (including key, metadata, and value) will be ejected.
|
|
36
|
+
*
|
|
37
|
+
* Full Ejection reduces the memory overhead requirement, at the cost of performance.
|
|
38
|
+
*
|
|
39
|
+
* This value is only valid for buckets of type COUCHBASE.
|
|
40
|
+
*/
|
|
41
|
+
full,
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* During ejection, only the value will be ejected (key and metadata will remain in memory).
|
|
45
|
+
*
|
|
46
|
+
* Value Ejection needs more system memory, but provides better performance than Full Ejection.
|
|
47
|
+
*
|
|
48
|
+
* This value is only valid for buckets of type COUCHBASE.
|
|
49
|
+
*/
|
|
50
|
+
value_only,
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Couchbase Server keeps all data until explicitly deleted, but will reject
|
|
54
|
+
* any new data if you reach the quota (dedicated memory) you set for your bucket.
|
|
55
|
+
*
|
|
56
|
+
* This value is only valid for buckets of type EPHEMERAL.
|
|
57
|
+
*/
|
|
58
|
+
no_eviction,
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* When the memory quota is reached, Couchbase Server ejects data that has not been used recently.
|
|
62
|
+
*
|
|
63
|
+
* This value is only valid for buckets of type EPHEMERAL.
|
|
64
|
+
*/
|
|
65
|
+
not_recently_used,
|
|
66
|
+
};
|
|
67
|
+
enum class bucket_conflict_resolution {
|
|
68
|
+
unknown,
|
|
69
|
+
/**
|
|
70
|
+
* Use timestamp conflict resolution.
|
|
71
|
+
*
|
|
72
|
+
* Timestamp-based conflict resolution (often referred to as Last Write Wins, or LWW) uses the document
|
|
73
|
+
* timestamp (stored in the CAS) to resolve conflicts. The timestamps associated with the most recent
|
|
74
|
+
* updates of source and target documents are compared. The document whose update has the more recent
|
|
75
|
+
* timestamp prevails.
|
|
76
|
+
*/
|
|
77
|
+
timestamp,
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Use sequence number conflict resolution
|
|
81
|
+
*
|
|
82
|
+
* Conflicts can be resolved by referring to documents' sequence numbers. Sequence numbers are maintained
|
|
83
|
+
* per document, and are incremented on every document-update. The sequence numbers of source and
|
|
84
|
+
* target documents are compared; and the document with the higher sequence number prevails.
|
|
85
|
+
*/
|
|
86
|
+
sequence_number,
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* VOLATILE: This API is subject to change at any time.
|
|
90
|
+
*
|
|
91
|
+
* In Couchbase Server 7.1, this feature is only available in "developer-preview" mode. See the UI XDCR settings.
|
|
92
|
+
*/
|
|
93
|
+
custom,
|
|
94
|
+
};
|
|
95
|
+
enum class bucket_storage_backend { unknown, couchstore, magma };
|
|
96
|
+
|
|
97
|
+
struct bucket_settings {
|
|
98
|
+
|
|
99
|
+
std::string name;
|
|
100
|
+
cluster::bucket_type bucket_type{ cluster::bucket_type::unknown };
|
|
101
|
+
std::uint64_t ram_quota_mb{ 100 };
|
|
102
|
+
std::uint32_t max_expiry{ 0 };
|
|
103
|
+
bucket_compression compression_mode{ bucket_compression::unknown };
|
|
104
|
+
std::optional<couchbase::durability_level> minimum_durability_level{};
|
|
105
|
+
std::uint32_t num_replicas{ 1 };
|
|
106
|
+
bool replica_indexes{ false };
|
|
107
|
+
bool flush_enabled{ false };
|
|
108
|
+
bucket_eviction_policy eviction_policy{ bucket_eviction_policy::unknown };
|
|
109
|
+
bucket_conflict_resolution conflict_resolution_type{ bucket_conflict_resolution::unknown };
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* UNCOMMITTED: This API may change in the future
|
|
113
|
+
*/
|
|
114
|
+
bucket_storage_backend storage_backend{ bucket_storage_backend::unknown };
|
|
115
|
+
};
|
|
116
|
+
} // namespace couchbase::management::cluster
|