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
|
@@ -17,17 +17,17 @@
|
|
|
17
17
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
|
-
#define CATCH_CONFIG_MAIN
|
|
21
|
-
|
|
22
20
|
#include "utils/binary.hxx"
|
|
23
21
|
#include "utils/test_context.hxx"
|
|
24
22
|
#include "utils/test_data.hxx"
|
|
25
23
|
|
|
26
|
-
#include <catch2/
|
|
24
|
+
#include <catch2/catch_test_macros.hpp>
|
|
27
25
|
|
|
28
|
-
#define REQUIRE_SUCCESS(ec)
|
|
26
|
+
#define REQUIRE_SUCCESS(ec) \
|
|
27
|
+
INFO((ec).message()); \
|
|
28
|
+
REQUIRE_FALSE(ec)
|
|
29
29
|
#define EXPECT_SUCCESS(result) \
|
|
30
30
|
if (!result) { \
|
|
31
|
-
INFO(result.error().message())
|
|
31
|
+
INFO(result.error().message()); \
|
|
32
32
|
} \
|
|
33
33
|
REQUIRE(result)
|
|
@@ -24,8 +24,12 @@ TEST_CASE("integration: analytics query")
|
|
|
24
24
|
{
|
|
25
25
|
test::utils::integration_test_guard integration;
|
|
26
26
|
|
|
27
|
+
if (integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
28
|
+
SKIP("elixir deployment does not support analytics");
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
if (!integration.cluster_version().supports_analytics()) {
|
|
28
|
-
|
|
32
|
+
SKIP("cluster does not support analytics");
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
@@ -180,8 +184,15 @@ TEST_CASE("integration: analytics scope query")
|
|
|
180
184
|
{
|
|
181
185
|
test::utils::integration_test_guard integration;
|
|
182
186
|
|
|
183
|
-
if (
|
|
184
|
-
|
|
187
|
+
if (integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
188
|
+
SKIP("elixir deployment does not support analytics");
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!integration.cluster_version().supports_analytics()) {
|
|
192
|
+
SKIP("cluster does not support analytics");
|
|
193
|
+
}
|
|
194
|
+
if (!integration.cluster_version().supports_collections()) {
|
|
195
|
+
SKIP("cluster does not support collections");
|
|
185
196
|
}
|
|
186
197
|
|
|
187
198
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
@@ -286,8 +297,12 @@ TEST_CASE("integration: public API analytics query")
|
|
|
286
297
|
{
|
|
287
298
|
test::utils::integration_test_guard integration;
|
|
288
299
|
|
|
300
|
+
if (integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
301
|
+
SKIP("elixir deployment does not support analytics");
|
|
302
|
+
}
|
|
303
|
+
|
|
289
304
|
if (!integration.cluster_version().supports_analytics()) {
|
|
290
|
-
|
|
305
|
+
SKIP("cluster does not support analytics");
|
|
291
306
|
}
|
|
292
307
|
|
|
293
308
|
auto cluster = couchbase::cluster(integration.cluster);
|
|
@@ -468,8 +483,15 @@ TEST_CASE("integration: public API analytics scope query")
|
|
|
468
483
|
{
|
|
469
484
|
test::utils::integration_test_guard integration;
|
|
470
485
|
|
|
471
|
-
if (
|
|
472
|
-
|
|
486
|
+
if (integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
487
|
+
SKIP("elixir deployment does not support analytics");
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
if (!integration.cluster_version().supports_analytics()) {
|
|
491
|
+
SKIP("cluster does not support analytics");
|
|
492
|
+
}
|
|
493
|
+
if (!integration.cluster_version().supports_collections()) {
|
|
494
|
+
SKIP("cluster does not support collections");
|
|
473
495
|
}
|
|
474
496
|
|
|
475
497
|
auto cluster = couchbase::cluster(integration.cluster);
|
|
@@ -25,7 +25,7 @@ TEST_CASE("integration: missing scope and collection", "[integration]")
|
|
|
25
25
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
26
26
|
|
|
27
27
|
if (!integration.cluster_version().supports_collections()) {
|
|
28
|
-
|
|
28
|
+
SKIP("cluster does not support collections");
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
SECTION("get missing scope")
|
|
@@ -77,7 +77,7 @@ TEST_CASE("integration: get and insert non default scope and collection", "[inte
|
|
|
77
77
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
78
78
|
|
|
79
79
|
if (!integration.cluster_version().supports_collections()) {
|
|
80
|
-
|
|
80
|
+
SKIP("cluster does not support collections");
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
auto scope_name = test::utils::uniq_id("scope");
|
|
@@ -113,6 +113,12 @@ TEST_CASE("integration: get and insert non default scope and collection", "[inte
|
|
|
113
113
|
REQUIRE_SUCCESS(resp.ctx.ec());
|
|
114
114
|
REQUIRE(resp.value == couchbase::core::utils::to_binary(key));
|
|
115
115
|
}
|
|
116
|
+
|
|
117
|
+
{
|
|
118
|
+
couchbase::core::operations::management::scope_drop_request req{ integration.ctx.bucket, scope_name };
|
|
119
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
|
120
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
|
121
|
+
}
|
|
116
122
|
}
|
|
117
123
|
|
|
118
124
|
TEST_CASE("integration: insert into dropped scope", "[integration]")
|
|
@@ -121,7 +127,7 @@ TEST_CASE("integration: insert into dropped scope", "[integration]")
|
|
|
121
127
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
122
128
|
|
|
123
129
|
if (!integration.cluster_version().supports_collections()) {
|
|
124
|
-
|
|
130
|
+
SKIP("cluster does not support collections");
|
|
125
131
|
}
|
|
126
132
|
|
|
127
133
|
auto scope_name = test::utils::uniq_id("scope");
|
|
@@ -166,6 +172,10 @@ TEST_CASE("integration: insert into dropped scope", "[integration]")
|
|
|
166
172
|
REQUIRE(dropped);
|
|
167
173
|
}
|
|
168
174
|
|
|
175
|
+
if (integration.cluster_version().is_mock()) {
|
|
176
|
+
SKIP("GOCAVES does not generate error when inserting into dropped collection. See "
|
|
177
|
+
"https://github.com/couchbaselabs/gocaves/issues/108");
|
|
178
|
+
}
|
|
169
179
|
{
|
|
170
180
|
couchbase::core::operations::upsert_request req{ id, couchbase::core::utils::to_binary(key) };
|
|
171
181
|
auto resp = test::utils::execute(integration.cluster, req);
|
|
@@ -42,9 +42,9 @@ TEST_CASE("integration: connecting with unresponsive first node in bootstrap nod
|
|
|
42
42
|
test::utils::init_logger();
|
|
43
43
|
asio::io_context io{};
|
|
44
44
|
auto ctx = test::utils::test_context::load_from_environment();
|
|
45
|
-
if (ctx.deployment == test::utils::deployment_type::capella) {
|
|
45
|
+
if (ctx.deployment == test::utils::deployment_type::capella || ctx.deployment == test::utils::deployment_type::elixir) {
|
|
46
46
|
// This breaks SRV assumptions (only one host in connection string)
|
|
47
|
-
|
|
47
|
+
SKIP("capella deployment uses single host in the connection string, which assumed to be reachable");
|
|
48
48
|
}
|
|
49
49
|
auto connstr = couchbase::core::utils::parse_connection_string(ctx.connection_string);
|
|
50
50
|
REQUIRE_FALSE(connstr.bootstrap_nodes.empty());
|
|
@@ -125,6 +125,10 @@ TEST_CASE("integration: destroy cluster without waiting for close completion", "
|
|
|
125
125
|
test::utils::init_logger();
|
|
126
126
|
auto ctx = test::utils::test_context::load_from_environment();
|
|
127
127
|
|
|
128
|
+
if (ctx.deployment == test::utils::deployment_type::elixir) {
|
|
129
|
+
SKIP("elixir deployment is incompatible with parts of this test, but it is probably bug in SDK. FIXME");
|
|
130
|
+
}
|
|
131
|
+
|
|
128
132
|
asio::io_context io{};
|
|
129
133
|
|
|
130
134
|
auto cluster = couchbase::core::cluster::create(io);
|
|
@@ -143,7 +147,7 @@ TEST_CASE("integration: destroy cluster without waiting for close completion", "
|
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
// hit Query
|
|
146
|
-
{
|
|
150
|
+
if (ctx.version.supports_query()) {
|
|
147
151
|
couchbase::core::operations::query_request req{ R"(SELECT 42 AS the_answer)" };
|
|
148
152
|
auto resp = test::utils::execute(cluster, req);
|
|
149
153
|
REQUIRE_SUCCESS(resp.ctx.ec);
|
|
@@ -35,6 +35,10 @@ TEST_CASE("integration: switching off mutation token", "[integration]")
|
|
|
35
35
|
opts.enable_mutation_tokens = false;
|
|
36
36
|
test::utils::integration_test_guard integration(opts);
|
|
37
37
|
|
|
38
|
+
if (integration.cluster_version().is_mock()) {
|
|
39
|
+
SKIP("GOCAVES does not allow to switching off mutation tokens. See https://github.com/couchbaselabs/gocaves/issues/100");
|
|
40
|
+
}
|
|
41
|
+
|
|
38
42
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
39
43
|
couchbase::core::document_id id{ integration.ctx.bucket, "_default", "_default", test::utils::uniq_id("foo") };
|
|
40
44
|
|
|
@@ -228,7 +232,8 @@ TEST_CASE("integration: pessimistic locking", "[integration]")
|
|
|
228
232
|
{
|
|
229
233
|
couchbase::core::operations::get_and_lock_request req{ id };
|
|
230
234
|
req.lock_time = lock_time;
|
|
231
|
-
if (integration.ctx.deployment == test::utils::deployment_type::capella
|
|
235
|
+
if (integration.ctx.deployment == test::utils::deployment_type::capella ||
|
|
236
|
+
integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
232
237
|
req.timeout = std::chrono::seconds{ 2 };
|
|
233
238
|
}
|
|
234
239
|
auto resp = test::utils::execute(integration.cluster, req);
|
|
@@ -310,6 +315,11 @@ TEST_CASE("integration: lock/unlock without lock time", "[integration]")
|
|
|
310
315
|
TEST_CASE("integration: touch with zero expiry resets expiry", "[integration]")
|
|
311
316
|
{
|
|
312
317
|
test::utils::integration_test_guard integration;
|
|
318
|
+
|
|
319
|
+
if (integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
320
|
+
SKIP("Timeout is too strict for sanity test env");
|
|
321
|
+
}
|
|
322
|
+
|
|
313
323
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
314
324
|
|
|
315
325
|
couchbase::core::document_id id{ integration.ctx.bucket, "_default", "_default", test::utils::uniq_id("get_reset_expiry_key") };
|
|
@@ -489,7 +499,7 @@ TEST_CASE("integration: upsert preserve expiry", "[integration]")
|
|
|
489
499
|
test::utils::integration_test_guard integration;
|
|
490
500
|
|
|
491
501
|
if (!integration.cluster_version().supports_preserve_expiry()) {
|
|
492
|
-
|
|
502
|
+
SKIP("cluster does not support preserve expiry");
|
|
493
503
|
}
|
|
494
504
|
|
|
495
505
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
@@ -670,6 +680,10 @@ TEST_CASE("integration: open bucket that does not exist", "[integration]")
|
|
|
670
680
|
{
|
|
671
681
|
test::utils::integration_test_guard integration;
|
|
672
682
|
|
|
683
|
+
if (integration.cluster_version().is_mock()) {
|
|
684
|
+
SKIP("GOCAVES returns not_found (0x01) instead of no_access (0x24). See https://github.com/couchbaselabs/gocaves/issues/102");
|
|
685
|
+
}
|
|
686
|
+
|
|
673
687
|
auto bucket_name = test::utils::uniq_id("missing_bucket");
|
|
674
688
|
|
|
675
689
|
auto barrier = std::make_shared<std::promise<std::error_code>>();
|
|
@@ -814,7 +828,8 @@ TEST_CASE("integration: pessimistic locking with public API", "[integration]")
|
|
|
814
828
|
// it is not allowed to lock the same key twice
|
|
815
829
|
{
|
|
816
830
|
couchbase::get_and_lock_options options{};
|
|
817
|
-
if (integration.ctx.deployment == test::utils::deployment_type::capella
|
|
831
|
+
if (integration.ctx.deployment == test::utils::deployment_type::capella ||
|
|
832
|
+
integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
818
833
|
options.timeout(std::chrono::seconds{ 2 });
|
|
819
834
|
}
|
|
820
835
|
auto [ctx, resp] = collection.get_and_lock(id, lock_time, options).get();
|
|
@@ -321,14 +321,18 @@ TEST_CASE("integration: fetch diagnostics after N1QL query", "[integration]")
|
|
|
321
321
|
{
|
|
322
322
|
test::utils::integration_test_guard integration;
|
|
323
323
|
|
|
324
|
+
if (!integration.cluster_version().supports_query() || integration.ctx.deployment == test::utils::deployment_type::elixir) {
|
|
325
|
+
SKIP("cluster does not support query or cluster level query");
|
|
326
|
+
}
|
|
327
|
+
|
|
324
328
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
325
329
|
{
|
|
326
330
|
couchbase::core::operations::query_request req{ "SELECT 'hello, couchbase' AS greetings" };
|
|
327
331
|
auto resp = test::utils::execute(integration.cluster, req);
|
|
328
332
|
REQUIRE_SUCCESS(resp.ctx.ec);
|
|
329
|
-
INFO("rows.size() =" << resp.rows.size())
|
|
333
|
+
INFO("rows.size() =" << resp.rows.size());
|
|
330
334
|
REQUIRE(resp.rows.size() == 1);
|
|
331
|
-
INFO("row=" << resp.rows[0])
|
|
335
|
+
INFO("row=" << resp.rows[0]);
|
|
332
336
|
REQUIRE(resp.rows[0] == R"({"greetings":"hello, couchbase"})");
|
|
333
337
|
}
|
|
334
338
|
{
|
|
@@ -365,8 +369,10 @@ TEST_CASE("integration: ping", "[integration]")
|
|
|
365
369
|
REQUIRE(res.services.count(couchbase::core::service_type::management) > 0);
|
|
366
370
|
REQUIRE(res.services[couchbase::core::service_type::management].size() > 0);
|
|
367
371
|
|
|
368
|
-
|
|
369
|
-
|
|
372
|
+
if (integration.ctx.deployment != test::utils::deployment_type::elixir) {
|
|
373
|
+
REQUIRE(res.services.count(couchbase::core::service_type::view) > 0);
|
|
374
|
+
REQUIRE(res.services[couchbase::core::service_type::view].size() > 0);
|
|
375
|
+
}
|
|
370
376
|
|
|
371
377
|
REQUIRE(res.services.count(couchbase::core::service_type::query) > 0);
|
|
372
378
|
REQUIRE(res.services[couchbase::core::service_type::query].size() > 0);
|
|
@@ -385,7 +391,7 @@ TEST_CASE("integration: ping", "[integration]")
|
|
|
385
391
|
}
|
|
386
392
|
|
|
387
393
|
REQUIRE(res.id == "my_report_id");
|
|
388
|
-
INFO(res.sdk)
|
|
394
|
+
INFO(res.sdk);
|
|
389
395
|
REQUIRE(res.sdk.find("cxx/") == 0);
|
|
390
396
|
}
|
|
391
397
|
}
|
|
@@ -25,7 +25,7 @@ TEST_CASE("integration: durable operations", "[integration]")
|
|
|
25
25
|
{
|
|
26
26
|
test::utils::integration_test_guard integration;
|
|
27
27
|
if (!integration.cluster_version().supports_enhanced_durability()) {
|
|
28
|
-
|
|
28
|
+
SKIP("cluster does not support enhanced durability");
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
@@ -68,7 +68,7 @@ TEST_CASE("integration: durable operations", "[integration]")
|
|
|
68
68
|
auto resp = test::utils::execute(integration.cluster, req);
|
|
69
69
|
REQUIRE_SUCCESS(resp.ctx.ec());
|
|
70
70
|
REQUIRE(!resp.cas.empty());
|
|
71
|
-
REQUIRE(resp.value == couchbase::core::utils::
|
|
71
|
+
REQUIRE(couchbase::core::utils::json::parse_binary(resp.value) == couchbase::core::utils::json::parse(R"({"foo":"bar","baz":42})"));
|
|
72
72
|
}
|
|
73
73
|
{
|
|
74
74
|
couchbase::core::operations::remove_request req{ id };
|
|
@@ -83,8 +83,13 @@ TEST_CASE("integration: durable operations", "[integration]")
|
|
|
83
83
|
TEST_CASE("integration: legacy durability persist to active and replicate to one", "[integration]")
|
|
84
84
|
{
|
|
85
85
|
test::utils::integration_test_guard integration;
|
|
86
|
-
if (integration.number_of_replicas() == 0
|
|
87
|
-
|
|
86
|
+
if (integration.number_of_replicas() == 0) {
|
|
87
|
+
SKIP("bucket has zero replicas");
|
|
88
|
+
}
|
|
89
|
+
if (integration.number_of_nodes() <= integration.number_of_replicas()) {
|
|
90
|
+
SKIP(fmt::format("number of nodes ({}) is less or equal to number of replicas ({})",
|
|
91
|
+
integration.number_of_nodes(),
|
|
92
|
+
integration.number_of_replicas()));
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
@@ -124,7 +129,7 @@ TEST_CASE("integration: low level legacy durability impossible if number of node
|
|
|
124
129
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
125
130
|
|
|
126
131
|
if (integration.number_of_replicas() == 3) {
|
|
127
|
-
|
|
132
|
+
SKIP("bucket has three replicas configured, so the test will not be applicable");
|
|
128
133
|
}
|
|
129
134
|
|
|
130
135
|
couchbase::core::document_id id{ integration.ctx.bucket, "_default", "_default", test::utils::uniq_id("foo") };
|
|
@@ -159,7 +164,7 @@ TEST_CASE("integration: low level legacy durability persist to active and replic
|
|
|
159
164
|
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
|
160
165
|
|
|
161
166
|
if (integration.number_of_replicas() < 1) {
|
|
162
|
-
|
|
167
|
+
SKIP("bucket does not have replicas configured");
|
|
163
168
|
}
|
|
164
169
|
|
|
165
170
|
couchbase::core::document_id id{ integration.ctx.bucket, "_default", "_default", test::utils::uniq_id("foo") };
|
|
@@ -211,7 +216,7 @@ TEST_CASE("integration: low level legacy durability persist to active and replic
|
|
|
211
216
|
auto resp = test::utils::execute(integration.cluster, req);
|
|
212
217
|
REQUIRE_SUCCESS(resp.ctx.ec());
|
|
213
218
|
REQUIRE(!resp.cas.empty());
|
|
214
|
-
REQUIRE(resp.value == couchbase::core::utils::
|
|
219
|
+
REQUIRE(couchbase::core::utils::json::parse_binary(resp.value) == couchbase::core::utils::json::parse(R"({"foo":"bar","baz":42})"));
|
|
215
220
|
}
|
|
216
221
|
{
|
|
217
222
|
couchbase::core::operations::remove_request_with_legacy_durability req{
|