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
|
@@ -26,6 +26,12 @@ namespace couchbase::transactions
|
|
|
26
26
|
{
|
|
27
27
|
class transaction_context;
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* The transaction_query_options are options specific to a query.
|
|
31
|
+
*
|
|
32
|
+
* Some of the options will override the corresponding elements in the @ref transactions_query_config section of the
|
|
33
|
+
* @ref transactions_config.
|
|
34
|
+
*/
|
|
29
35
|
class transaction_query_options
|
|
30
36
|
{
|
|
31
37
|
public:
|
|
@@ -34,120 +40,227 @@ class transaction_query_options
|
|
|
34
40
|
// set defaults specific to query in transactions.
|
|
35
41
|
opts_.metrics(true);
|
|
36
42
|
}
|
|
37
|
-
/*transaction_query_options(const core::operations::query_request& req)
|
|
38
|
-
: query_req_(req)
|
|
39
|
-
{
|
|
40
|
-
}*/
|
|
41
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Set an option which isn't exposed explicitly in transaction_query_options.
|
|
46
|
+
*
|
|
47
|
+
* @see query_options::raw for details.
|
|
48
|
+
*
|
|
49
|
+
* @tparam Value type of the value.
|
|
50
|
+
* @param key The name of the option.
|
|
51
|
+
* @param value The value of this option.
|
|
52
|
+
* @return reference to this object, convenient for chaining calls.
|
|
53
|
+
*/
|
|
42
54
|
template<typename Value>
|
|
43
55
|
transaction_query_options& raw(const std::string& key, const Value& value)
|
|
44
56
|
{
|
|
45
57
|
opts_.raw(key, value);
|
|
46
58
|
return *this;
|
|
47
59
|
}
|
|
48
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Set ad_hoc.
|
|
62
|
+
*
|
|
63
|
+
* Inform query service that this query is, or is not, a prepared statement query. @see query_options::adhoc for
|
|
64
|
+
* detailed discussion.
|
|
65
|
+
*
|
|
66
|
+
* @param value if set to false this query will be turned into a prepared statement query.
|
|
67
|
+
* @return reference to this object, convenient for chaining calls.
|
|
68
|
+
*/
|
|
49
69
|
transaction_query_options& ad_hoc(bool value)
|
|
50
70
|
{
|
|
51
71
|
opts_.adhoc(value);
|
|
52
72
|
return *this;
|
|
53
73
|
}
|
|
54
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Set the query_scan_consistency for this query.
|
|
76
|
+
*
|
|
77
|
+
* @see query_options::scan_consistency for details.
|
|
78
|
+
*
|
|
79
|
+
* @param scan_consistency Desired scan consistency.
|
|
80
|
+
* @return reference to this object, convenient for chaining calls.
|
|
81
|
+
*/
|
|
55
82
|
transaction_query_options& scan_consistency(query_scan_consistency scan_consistency)
|
|
56
83
|
{
|
|
57
84
|
opts_.scan_consistency(scan_consistency);
|
|
58
85
|
return *this;
|
|
59
86
|
}
|
|
60
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Set the profile mode for this query.
|
|
90
|
+
*
|
|
91
|
+
* @see query_options::profile for details.
|
|
92
|
+
*
|
|
93
|
+
* @param mode desired profile mode.
|
|
94
|
+
* @return reference to this object, convenient for chaining calls.
|
|
95
|
+
*/
|
|
61
96
|
transaction_query_options& profile(query_profile mode)
|
|
62
97
|
{
|
|
63
98
|
opts_.profile(mode);
|
|
64
99
|
return *this;
|
|
65
100
|
}
|
|
66
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Set a client id for this query.
|
|
103
|
+
*
|
|
104
|
+
* @see query_options::client_context_id for details.
|
|
105
|
+
*
|
|
106
|
+
* @param id Desired id
|
|
107
|
+
* @return reference to this object, convenient for chaining calls.
|
|
108
|
+
*/
|
|
67
109
|
transaction_query_options& client_context_id(const std::string& id)
|
|
68
110
|
{
|
|
69
111
|
opts_.client_context_id(id);
|
|
70
112
|
return *this;
|
|
71
113
|
}
|
|
72
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Set the scan_wait time
|
|
117
|
+
*
|
|
118
|
+
* @see query_options::scan_wait for details.
|
|
119
|
+
*
|
|
120
|
+
* @param scan_wait Desired time for scan_wait.
|
|
121
|
+
* @return reference to this object, convenient for chaining calls.
|
|
122
|
+
*/
|
|
73
123
|
transaction_query_options& scan_wait(std::chrono::milliseconds scan_wait)
|
|
74
124
|
{
|
|
75
125
|
opts_.scan_wait(scan_wait);
|
|
76
126
|
return *this;
|
|
77
127
|
}
|
|
78
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Set the readonly hint for this query.
|
|
131
|
+
*
|
|
132
|
+
* @see query_options::readonly
|
|
133
|
+
*
|
|
134
|
+
* @param readonly True if query doesn't mutate documents.
|
|
135
|
+
* @return reference to this object, convenient for chaining calls.
|
|
136
|
+
*/
|
|
79
137
|
transaction_query_options& readonly(bool readonly)
|
|
80
138
|
{
|
|
81
139
|
opts_.readonly(readonly);
|
|
82
140
|
return *this;
|
|
83
141
|
}
|
|
84
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Set the scan cap for this query.
|
|
144
|
+
*
|
|
145
|
+
* @see query_options::scan_cap for details.
|
|
146
|
+
*
|
|
147
|
+
* @param cap Desired cap.
|
|
148
|
+
* @return reference to this object, convenient for chaining calls.
|
|
149
|
+
*/
|
|
85
150
|
transaction_query_options& scan_cap(std::uint64_t cap)
|
|
86
151
|
{
|
|
87
152
|
opts_.scan_cap(cap);
|
|
88
153
|
return *this;
|
|
89
154
|
}
|
|
90
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Set pipeline_batch size for this query.
|
|
157
|
+
*
|
|
158
|
+
* @see query_options::pipeline_batch for details.
|
|
159
|
+
*
|
|
160
|
+
* @param batch desired batch size.
|
|
161
|
+
* @return reference to this object, convenient for chaining calls.
|
|
162
|
+
*/
|
|
91
163
|
transaction_query_options& pipeline_batch(std::uint64_t batch)
|
|
92
164
|
{
|
|
93
165
|
opts_.pipeline_batch(batch);
|
|
94
166
|
return *this;
|
|
95
167
|
}
|
|
96
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Set pipeline cap for this query.
|
|
171
|
+
*
|
|
172
|
+
* @see query_options::pipeline_cap for details.
|
|
173
|
+
*
|
|
174
|
+
* @param cap desired cap.
|
|
175
|
+
* @return reference to this object, convenient for chaining calls.
|
|
176
|
+
*/
|
|
97
177
|
transaction_query_options& pipeline_cap(std::uint64_t cap)
|
|
98
178
|
{
|
|
99
179
|
opts_.pipeline_cap(cap);
|
|
100
180
|
return *this;
|
|
101
181
|
}
|
|
102
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Set positional parameters for this query.
|
|
185
|
+
*
|
|
186
|
+
* @see query_options::positional_parameters for details.
|
|
187
|
+
*
|
|
188
|
+
* @tparam Parameters Types of the parameters
|
|
189
|
+
* @param parameters the sequence of positional parameters for this query.
|
|
190
|
+
* @return reference to this object, convenient for chaining calls.
|
|
191
|
+
*/
|
|
103
192
|
template<typename... Parameters>
|
|
104
193
|
auto positional_parameters(const Parameters&... parameters)
|
|
105
194
|
{
|
|
106
195
|
opts_.positional_parameters(parameters...);
|
|
107
196
|
return *this;
|
|
108
197
|
}
|
|
109
|
-
|
|
198
|
+
/**
|
|
199
|
+
* Set named parameters for this query.
|
|
200
|
+
*
|
|
201
|
+
* @see query_options::named_parameters for details.
|
|
202
|
+
*
|
|
203
|
+
* @tparam Parameters Types of the parameter pairs.
|
|
204
|
+
* @param parameters the sequence of name-value pairs. Each value will be encoded into JSON.
|
|
205
|
+
* @return reference to this object, convenient for chaining calls.
|
|
206
|
+
*/
|
|
110
207
|
template<typename... Parameters>
|
|
111
208
|
transaction_query_options& named_parameters(const Parameters&... parameters)
|
|
112
209
|
{
|
|
113
210
|
opts_.named_parameters(parameters...);
|
|
114
211
|
return *this;
|
|
115
212
|
}
|
|
116
|
-
|
|
213
|
+
/**
|
|
214
|
+
* Set metrics for this query.
|
|
215
|
+
*
|
|
216
|
+
* If true, the query results will contain metrics. This is true by default for transactional queries.
|
|
217
|
+
* @see query_options::metrics for details.
|
|
218
|
+
*
|
|
219
|
+
* @param metrics True if metrics are desired.
|
|
220
|
+
* @return reference to this object, convenient for chaining calls.
|
|
221
|
+
*/
|
|
117
222
|
transaction_query_options& metrics(bool metrics)
|
|
118
223
|
{
|
|
119
224
|
opts_.metrics(metrics);
|
|
120
225
|
return *this;
|
|
121
226
|
}
|
|
122
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Set max parallelism for this query.
|
|
230
|
+
*
|
|
231
|
+
* @see query_options::max_parallelism for details.
|
|
232
|
+
*
|
|
233
|
+
* @param max Desired max parallelism
|
|
234
|
+
* @return reference to this object, convenient for chaining calls.
|
|
235
|
+
*/
|
|
123
236
|
transaction_query_options& max_parallelism(std::uint64_t max)
|
|
124
237
|
{
|
|
125
238
|
opts_.max_parallelism(max);
|
|
126
239
|
return *this;
|
|
127
240
|
}
|
|
128
241
|
|
|
129
|
-
/** @
|
|
242
|
+
/** @private */
|
|
130
243
|
transaction_query_options& encoded_raw_options(std::map<std::string, codec::binary, std::less<>> options)
|
|
131
244
|
{
|
|
132
245
|
opts_.encoded_raw_options(options);
|
|
133
246
|
return *this;
|
|
134
247
|
}
|
|
135
248
|
|
|
136
|
-
/** @
|
|
249
|
+
/** @private */
|
|
137
250
|
transaction_query_options& encoded_positional_parameters(std::vector<codec::binary> parameters)
|
|
138
251
|
{
|
|
139
252
|
opts_.encoded_positional_parameters(parameters);
|
|
140
253
|
return *this;
|
|
141
254
|
}
|
|
142
255
|
|
|
143
|
-
/** @
|
|
256
|
+
/** @private */
|
|
144
257
|
transaction_query_options& encoded_named_parameters(std::map<std::string, codec::binary, std::less<>> parameters)
|
|
145
258
|
{
|
|
146
259
|
opts_.encoded_named_parameters(parameters);
|
|
147
260
|
return *this;
|
|
148
261
|
}
|
|
149
262
|
|
|
150
|
-
/** @
|
|
263
|
+
/** @private */
|
|
151
264
|
const query_options& get_query_options() const
|
|
152
265
|
{
|
|
153
266
|
return opts_;
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
namespace couchbase::transactions
|
|
22
22
|
{
|
|
23
|
+
/**
|
|
24
|
+
* Transactional queries will return a transaction_query_result. Note that this is currently identical
|
|
25
|
+
* to a @ref query_result. See @ref query_result for details.
|
|
26
|
+
*/
|
|
23
27
|
class transaction_query_result : public query_result
|
|
24
28
|
{
|
|
25
29
|
public:
|
|
@@ -25,7 +25,7 @@ namespace couchbase::transactions
|
|
|
25
25
|
* @volatile
|
|
26
26
|
*
|
|
27
27
|
* Contains internal information on a transaction,
|
|
28
|
-
* returned by @ref
|
|
28
|
+
* returned by @ref couchbase::transactions::transactions::run()
|
|
29
29
|
*/
|
|
30
30
|
struct transaction_result {
|
|
31
31
|
std::string transaction_id;
|
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
#include <couchbase/transactions/transaction_keyspace.hxx>
|
|
22
22
|
namespace couchbase::transactions
|
|
23
23
|
{
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Configuration parameters for the background transaction cleanup threads.
|
|
26
|
+
*/
|
|
25
27
|
class transactions_cleanup_config
|
|
26
28
|
{
|
|
27
29
|
public:
|
|
@@ -117,7 +119,7 @@ class transactions_cleanup_config
|
|
|
117
119
|
return *this;
|
|
118
120
|
}
|
|
119
121
|
|
|
120
|
-
/** @
|
|
122
|
+
/** @private */
|
|
121
123
|
struct built {
|
|
122
124
|
bool cleanup_lost_attempts;
|
|
123
125
|
bool cleanup_client_attempts;
|
|
@@ -125,7 +127,7 @@ class transactions_cleanup_config
|
|
|
125
127
|
std::list<couchbase::transactions::transaction_keyspace> collections;
|
|
126
128
|
};
|
|
127
129
|
|
|
128
|
-
/** @
|
|
130
|
+
/** @private */
|
|
129
131
|
[[nodiscard]] auto build() const -> built
|
|
130
132
|
{
|
|
131
133
|
return { cleanup_lost_attempts_, cleanup_client_attempts_, cleanup_window_, collections_ };
|
|
@@ -53,6 +53,8 @@ class transactions_config
|
|
|
53
53
|
/**
|
|
54
54
|
* @brief Get the default durability level for all transaction operations
|
|
55
55
|
*
|
|
56
|
+
* @see couchbase::durability_level for details.
|
|
57
|
+
*
|
|
56
58
|
* @return The default durability level used for write operations.
|
|
57
59
|
*/
|
|
58
60
|
[[nodiscard]] couchbase::durability_level durability_level() const
|
|
@@ -63,6 +65,8 @@ class transactions_config
|
|
|
63
65
|
/**
|
|
64
66
|
* @brief Set the default durability level for all transaction operations
|
|
65
67
|
*
|
|
68
|
+
* @see couchbase::durability_level for details.
|
|
69
|
+
*
|
|
66
70
|
* @param level The default durability level desired for write operations.
|
|
67
71
|
* @return reference to this, so calls can be chained.
|
|
68
72
|
*/
|
|
@@ -115,7 +119,7 @@ class transactions_config
|
|
|
115
119
|
/**
|
|
116
120
|
* @brief Set the expiration time for transactions.
|
|
117
121
|
*
|
|
118
|
-
* @param duration desired expiration for transactions.
|
|
122
|
+
* @param duration desired expiration for transactions.
|
|
119
123
|
* @return reference to this, so calls can be chained.
|
|
120
124
|
*/
|
|
121
125
|
template<typename T>
|
|
@@ -206,7 +210,7 @@ class transactions_config
|
|
|
206
210
|
return *this;
|
|
207
211
|
}
|
|
208
212
|
|
|
209
|
-
/** @
|
|
213
|
+
/** @private */
|
|
210
214
|
transactions_config& test_factories(std::shared_ptr<core::transactions::attempt_context_testing_hooks> hooks,
|
|
211
215
|
std::shared_ptr<core::transactions::cleanup_testing_hooks> cleanup_hooks)
|
|
212
216
|
{
|
|
@@ -215,19 +219,19 @@ class transactions_config
|
|
|
215
219
|
return *this;
|
|
216
220
|
}
|
|
217
221
|
|
|
218
|
-
/** @
|
|
222
|
+
/** @private */
|
|
219
223
|
[[nodiscard]] core::transactions::attempt_context_testing_hooks& attempt_context_hooks() const
|
|
220
224
|
{
|
|
221
225
|
return *attempt_context_hooks_;
|
|
222
226
|
}
|
|
223
227
|
|
|
224
|
-
/** @
|
|
228
|
+
/** @private */
|
|
225
229
|
[[nodiscard]] core::transactions::cleanup_testing_hooks& cleanup_hooks() const
|
|
226
230
|
{
|
|
227
231
|
return *cleanup_hooks_;
|
|
228
232
|
}
|
|
229
233
|
|
|
230
|
-
/** @
|
|
234
|
+
/** @private */
|
|
231
235
|
struct built {
|
|
232
236
|
couchbase::durability_level level;
|
|
233
237
|
std::chrono::nanoseconds expiration_time;
|
|
@@ -19,11 +19,14 @@
|
|
|
19
19
|
|
|
20
20
|
namespace couchbase::transactions
|
|
21
21
|
{
|
|
22
|
+
/**
|
|
23
|
+
* The transactions_query_config sets the defaults for all queries in the transactions.
|
|
24
|
+
*/
|
|
22
25
|
class transactions_query_config
|
|
23
26
|
{
|
|
24
27
|
public:
|
|
25
28
|
/**
|
|
26
|
-
* Set scan consistency for transactions.
|
|
29
|
+
* Set scan consistency for transactions. @see query_options::scan_consistency for details.
|
|
27
30
|
*
|
|
28
31
|
* @param consistency the query_scan_consistency to use.
|
|
29
32
|
* @return reference to this, so calls can be chained.
|
|
@@ -44,12 +47,12 @@ class transactions_query_config
|
|
|
44
47
|
return scan_consistency_;
|
|
45
48
|
}
|
|
46
49
|
|
|
47
|
-
/** @
|
|
50
|
+
/** @private */
|
|
48
51
|
struct built {
|
|
49
52
|
query_scan_consistency scan_consistency;
|
|
50
53
|
};
|
|
51
54
|
|
|
52
|
-
/** @
|
|
55
|
+
/** @private */
|
|
53
56
|
[[nodiscard]] auto build() const -> built
|
|
54
57
|
{
|
|
55
58
|
return { scan_consistency_ };
|
|
@@ -30,14 +30,47 @@ using txn_logic = std::function<void(attempt_context&)>;
|
|
|
30
30
|
using async_txn_logic = std::function<void(async_attempt_context&)>;
|
|
31
31
|
using async_txn_complete_logic = std::function<void(couchbase::transaction_error_context, transaction_result)>;
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The transactions object is used to initiate a transaction.
|
|
35
|
+
*
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
33
38
|
class transactions
|
|
34
39
|
{
|
|
35
40
|
public:
|
|
36
41
|
virtual ~transactions() = default;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Run a blocking transaction.
|
|
45
|
+
*
|
|
46
|
+
* You can supply a lambda or function which uses a yielded {@link attempt_context} to perform a transaction, where each transaction
|
|
47
|
+
* operation is blocking. A simple usage would be to get a document and replace the contents:
|
|
48
|
+
*
|
|
49
|
+
* @snippet{trimleft} test/test_transaction_examples.cxx simple-blocking-txn
|
|
50
|
+
*
|
|
51
|
+
* @param logic a lambda or function which uses the yielded {@link attempt_context} to perform the desired transactional operations.
|
|
52
|
+
* @param cfg if passed in, these options override the defaults, or those set in the {@link cluster_options}.
|
|
53
|
+
* @return an {@link transaction_error_context}, and a {@link transaction_result} representing the results of the transaction.
|
|
54
|
+
*/
|
|
37
55
|
virtual std::pair<transaction_error_context, transaction_result> run(txn_logic&& logic,
|
|
38
56
|
const transaction_options& cfg = transaction_options()) = 0;
|
|
57
|
+
/**
|
|
58
|
+
* Run an asynchronous transaction.
|
|
59
|
+
*
|
|
60
|
+
* You can supply a lambda or function which uses a yielded {@link async_attempt_context} to perform a transaction, where each
|
|
61
|
+
* transaction operation is asynchronous. A simple usage would be to get 3 document and replace the contents of each. In the example
|
|
62
|
+
* below, we get the 3 documents in parallel, and update each when the get returns the document. This can be significantly faster than
|
|
63
|
+
* getting each document in serial, and updating it using the blocking api:
|
|
64
|
+
*
|
|
65
|
+
* @snippet{trimleft} test/test_transaction_examples.cxx simple-async-txn
|
|
66
|
+
*
|
|
67
|
+
* @param logic a lambda or function which uses the yielded {@link async_attempt_context} to perform the desired transactional
|
|
68
|
+
* operations.
|
|
69
|
+
* @param complete_callback a lambda or function to which is yielded a {transaction_error_context} and {transaction_result}.
|
|
70
|
+
* @param cfg if passed in, these options override the defaults, or those set in the {@link cluster_options}.
|
|
71
|
+
*/
|
|
39
72
|
virtual void run(async_txn_logic&& logic,
|
|
40
73
|
async_txn_complete_logic&& complete_callback,
|
|
41
74
|
const transaction_options& cfg = transaction_options()) = 0;
|
|
42
75
|
};
|
|
43
|
-
} // namespace couchbase::transactions
|
|
76
|
+
} // namespace couchbase::transactions
|
|
@@ -89,8 +89,8 @@ initiate_unlock_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
|
89
89
|
std::string collection_name,
|
|
90
90
|
std::string document_key,
|
|
91
91
|
couchbase::cas cas,
|
|
92
|
-
unlock_options::built options,
|
|
93
|
-
unlock_handler&& handler);
|
|
92
|
+
couchbase::unlock_options::built options,
|
|
93
|
+
couchbase::unlock_handler&& handler);
|
|
94
94
|
#endif
|
|
95
95
|
} // namespace impl
|
|
96
96
|
} // namespace core
|
|
@@ -0,0 +1,41 @@
|
|
|
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 <functional>
|
|
21
|
+
#include <memory>
|
|
22
|
+
#include <optional>
|
|
23
|
+
#include <string>
|
|
24
|
+
|
|
25
|
+
namespace couchbase
|
|
26
|
+
{
|
|
27
|
+
struct update_bucket_options : public common_options<update_bucket_options> {
|
|
28
|
+
public:
|
|
29
|
+
struct built : public common_options<update_bucket_options>::built {
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
[[nodiscard]] auto build() const -> built
|
|
33
|
+
{
|
|
34
|
+
return { build_common_options() };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private:
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
using update_bucket_handler = std::function<void(couchbase::manager_error_context)>;
|
|
41
|
+
} // namespace couchbase
|
|
@@ -149,9 +149,9 @@ initiate_upsert_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
|
149
149
|
std::string scope_name,
|
|
150
150
|
std::string collection_name,
|
|
151
151
|
std::string document_key,
|
|
152
|
-
codec::encoded_value encoded,
|
|
153
|
-
upsert_options::built options,
|
|
154
|
-
upsert_handler&& handler);
|
|
152
|
+
couchbase::codec::encoded_value encoded,
|
|
153
|
+
couchbase::upsert_options::built options,
|
|
154
|
+
couchbase::upsert_handler&& handler);
|
|
155
155
|
#endif
|
|
156
156
|
} // namespace impl
|
|
157
157
|
} // namespace core
|
|
@@ -81,35 +81,4 @@ class watch_query_indexes_options : public common_options<watch_query_indexes_op
|
|
|
81
81
|
*/
|
|
82
82
|
|
|
83
83
|
using watch_query_indexes_handler = std::function<void(couchbase::manager_error_context)>;
|
|
84
|
-
|
|
85
|
-
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
86
|
-
namespace core
|
|
87
|
-
{
|
|
88
|
-
class cluster;
|
|
89
|
-
class query_context;
|
|
90
|
-
namespace impl
|
|
91
|
-
{
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* @since 1.0.0
|
|
95
|
-
* @internal
|
|
96
|
-
*/
|
|
97
|
-
void
|
|
98
|
-
initiate_watch_query_indexes(std::shared_ptr<couchbase::core::cluster> core,
|
|
99
|
-
std::string bucket_name,
|
|
100
|
-
std::vector<std::string> index_names,
|
|
101
|
-
couchbase::watch_query_indexes_options::built options,
|
|
102
|
-
query_context query_ctx,
|
|
103
|
-
std::string collection_name,
|
|
104
|
-
watch_query_indexes_handler&& handler);
|
|
105
|
-
void
|
|
106
|
-
initiate_watch_query_indexes(std::shared_ptr<couchbase::core::cluster> core,
|
|
107
|
-
std::string bucket_name,
|
|
108
|
-
std::vector<std::string> index_names,
|
|
109
|
-
couchbase::watch_query_indexes_options::built options,
|
|
110
|
-
watch_query_indexes_handler&& handler);
|
|
111
|
-
|
|
112
|
-
#endif
|
|
113
|
-
} // namespace impl
|
|
114
|
-
} // namespace core
|
|
115
84
|
} // namespace couchbase
|
|
@@ -0,0 +1,83 @@
|
|
|
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/search_query.hxx>
|
|
21
|
+
|
|
22
|
+
#include <optional>
|
|
23
|
+
#include <string>
|
|
24
|
+
|
|
25
|
+
namespace couchbase
|
|
26
|
+
{
|
|
27
|
+
/**
|
|
28
|
+
* A wildcard query is a query in which term the character `*` will match `0..n` occurrences of any characters and `?` will match `1`
|
|
29
|
+
* occurrence of any character.
|
|
30
|
+
*
|
|
31
|
+
* Match documents where field `reviews.content` contains words starting with `"inter"`:
|
|
32
|
+
* @snippet test_unit_search.cxx search-wildcard
|
|
33
|
+
*
|
|
34
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-supported-queries-wildcard.html server documentation
|
|
35
|
+
*
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @committed
|
|
38
|
+
*/
|
|
39
|
+
class wildcard_query : public search_query
|
|
40
|
+
{
|
|
41
|
+
public:
|
|
42
|
+
/**
|
|
43
|
+
* Create a new wildcard query.
|
|
44
|
+
*
|
|
45
|
+
* @param regexp the wildcard-containing term to be analyzed and searched
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @committed
|
|
49
|
+
*/
|
|
50
|
+
explicit wildcard_query(std::string regexp)
|
|
51
|
+
: wildcard_{ std::move(regexp) }
|
|
52
|
+
{
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* If a field is specified, only terms in that field will be matched.
|
|
57
|
+
*
|
|
58
|
+
* @param field_name name of the field to be matched
|
|
59
|
+
*
|
|
60
|
+
* @return this query for chaining purposes.
|
|
61
|
+
*
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
* @committed
|
|
64
|
+
*/
|
|
65
|
+
auto field(std::string field_name) -> wildcard_query&
|
|
66
|
+
{
|
|
67
|
+
field_ = std::move(field_name);
|
|
68
|
+
return *this;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @return encoded representation of the query.
|
|
73
|
+
*
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
[[nodiscard]] auto encode() const -> encoded_search_query override;
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
std::string wildcard_;
|
|
81
|
+
std::optional<std::string> field_{};
|
|
82
|
+
};
|
|
83
|
+
} // namespace couchbase
|
|
@@ -25,18 +25,21 @@ unit_test(json_streaming_lexer)
|
|
|
25
25
|
unit_test(jsonsl)
|
|
26
26
|
unit_test(config_profiles)
|
|
27
27
|
unit_test(options)
|
|
28
|
+
unit_test(search)
|
|
29
|
+
unit_test(query)
|
|
28
30
|
target_link_libraries(test_unit_jsonsl jsonsl)
|
|
29
31
|
|
|
30
32
|
integration_benchmark(get)
|
|
31
33
|
|
|
32
|
-
transaction_test(
|
|
33
|
-
transaction_test(
|
|
34
|
-
transaction_test(
|
|
35
|
-
transaction_test(
|
|
36
|
-
transaction_test(
|
|
34
|
+
transaction_test(context)
|
|
35
|
+
transaction_test(simple)
|
|
36
|
+
transaction_test(simple_async)
|
|
37
|
+
transaction_test(public_blocking_api)
|
|
38
|
+
transaction_test(public_async_api)
|
|
37
39
|
|
|
38
40
|
unit_test(transaction_logging)
|
|
39
41
|
unit_test(transaction_utils)
|
|
40
42
|
unit_test(waitable_op_list)
|
|
41
43
|
|
|
42
44
|
integration_test(examples)
|
|
45
|
+
transaction_test(examples)
|