couchbase 3.4.2 → 3.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/couchbase/CMakeLists.txt +57 -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 +3 -2
- data/ext/couchbase/core/bucket.hxx +9 -0
- data/ext/couchbase/core/cluster.hxx +17 -0
- data/ext/couchbase/core/cluster_options.cxx +2 -2
- data/ext/couchbase/core/cluster_options.hxx +4 -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/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/cluster.cxx +2 -0
- data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
- 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/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/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/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_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/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_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/wildcard_query.cxx +40 -0
- data/ext/couchbase/core/io/http_context.hxx +1 -1
- data/ext/couchbase/core/io/http_session.hxx +10 -0
- data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
- data/ext/couchbase/core/io/mcbp_session.cxx +28 -1
- data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
- data/ext/couchbase/core/json_string.hxx +5 -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_mutate_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
- data/ext/couchbase/core/operations/document_query.cxx +2 -0
- data/ext/couchbase/core/operations/document_query.hxx +6 -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/protocol/client_request.hxx +11 -2
- data/ext/couchbase/core/public_fwd.hxx +21 -0
- data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
- data/ext/couchbase/core/topology/configuration.cxx +15 -2
- data/ext/couchbase/core/topology/configuration.hxx +5 -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 +17 -0
- data/ext/couchbase/core/utils/json.cxx +4 -1
- data/ext/couchbase/couchbase/behavior_options.hxx +10 -1
- data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
- data/ext/couchbase/couchbase/cluster.hxx +42 -1
- data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
- 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/error_context.hxx +7 -6
- data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
- 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/highlight_style.hxx +45 -0
- 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/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_string_query.hxx +72 -0
- data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
- 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 +3 -0
- 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/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/wildcard_query.hxx +83 -0
- data/ext/couchbase/test/CMakeLists.txt +7 -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 +7 -3
- data/ext/couchbase/test/test_integration_connect.cxx +7 -3
- data/ext/couchbase/test/test_integration_crud.cxx +13 -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 +283 -11
- data/ext/couchbase/test/test_integration_management.cxx +147 -91
- data/ext/couchbase/test/test_integration_query.cxx +68 -10
- data/ext/couchbase/test/test_integration_range_scan.cxx +12 -12
- data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
- data/ext/couchbase/test/test_integration_search.cxx +22 -2
- data/ext/couchbase/test/test_integration_subdoc.cxx +62 -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_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_json_transcoder.cxx +4 -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 +58 -16
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/authenticator.rb +0 -1
- data/lib/couchbase/cluster.rb +0 -4
- data/lib/couchbase/config_profiles.rb +1 -1
- data/lib/couchbase/json_transcoder.rb +12 -5
- data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
- data/lib/couchbase/management/query_index_manager.rb +70 -5
- 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/search_options.rb +5 -0
- data/lib/couchbase/transcoder_flags.rb +62 -0
- data/lib/couchbase/version.rb +1 -1
- metadata +139 -11
- data/ext/couchbase/core/config_profile.cxx +0 -47
- /data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +0 -0
- /data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
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 <string>
|
|
23
|
+
|
|
24
|
+
namespace couchbase
|
|
25
|
+
{
|
|
26
|
+
/**
|
|
27
|
+
* The query string query allows humans to describe complex queries using a simple syntax.
|
|
28
|
+
*
|
|
29
|
+
* 1. When you specify multiple query-clauses, you can specify the relative importance to a given clause by suffixing it with the `^`
|
|
30
|
+
* operator, followed by a number or by specifying the boost parameter with the number to boost the search. For example perform
|
|
31
|
+
* @ref match_query for pool in both the name and description fields, but documents having the term in the name field score higher.
|
|
32
|
+
* @snippet test_unit_search.cxx search-query-string-boosting
|
|
33
|
+
*
|
|
34
|
+
* 2. You can perform date or numeric range searches by using the `>`, `>=`, `<`, and `<=` operators, followed by a date value in quotes.
|
|
35
|
+
* For example, perform a @ref date_range_query on the created field for values after September 21, 2016.
|
|
36
|
+
* @snippet test_unit_search.cxx search-query-string-date-range
|
|
37
|
+
* Or, perform a @ref numeric_range_query on the `reviews.ratings.Cleanliness` field, for values greater than 4.
|
|
38
|
+
* @snippet test_unit_search.cxx search-query-string-numeric-range
|
|
39
|
+
*
|
|
40
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-query-string-syntax.html definition of query syntax
|
|
41
|
+
*
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
* @committed
|
|
44
|
+
*/
|
|
45
|
+
class query_string_query : public search_query
|
|
46
|
+
{
|
|
47
|
+
public:
|
|
48
|
+
/**
|
|
49
|
+
* Create a new query string query.
|
|
50
|
+
*
|
|
51
|
+
* @param query the query string to be analyzed and used against
|
|
52
|
+
*
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @committed
|
|
55
|
+
*/
|
|
56
|
+
explicit query_string_query(std::string query)
|
|
57
|
+
: query_{ std::move(query) }
|
|
58
|
+
{
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @return encoded representation of the query.
|
|
63
|
+
*
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
[[nodiscard]] auto encode() const -> encoded_search_query override;
|
|
68
|
+
|
|
69
|
+
private:
|
|
70
|
+
std::string query_;
|
|
71
|
+
};
|
|
72
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
* Finds documents containing terms that match the specified regular expression.
|
|
29
|
+
*
|
|
30
|
+
* Match documents where field `reviews.content` contains words starting with `"inter"`:
|
|
31
|
+
* @snippet test_unit_search.cxx search-regexp
|
|
32
|
+
*
|
|
33
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-supported-queries-regexp.html server documentation
|
|
34
|
+
*
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
* @committed
|
|
37
|
+
*/
|
|
38
|
+
class regexp_query : public search_query
|
|
39
|
+
{
|
|
40
|
+
public:
|
|
41
|
+
/**
|
|
42
|
+
* Create a new regexp query.
|
|
43
|
+
*
|
|
44
|
+
* @param regexp the input string to be matched against
|
|
45
|
+
*
|
|
46
|
+
* @since 1.0.0
|
|
47
|
+
* @committed
|
|
48
|
+
*/
|
|
49
|
+
explicit regexp_query(std::string regexp)
|
|
50
|
+
: regexp_{ std::move(regexp) }
|
|
51
|
+
{
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* If a field is specified, only terms in that field will be matched.
|
|
56
|
+
*
|
|
57
|
+
* @param field_name name of the field to be matched
|
|
58
|
+
*
|
|
59
|
+
* @return this query for chaining purposes.
|
|
60
|
+
*
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
* @committed
|
|
63
|
+
*/
|
|
64
|
+
auto field(std::string field_name) -> regexp_query&
|
|
65
|
+
{
|
|
66
|
+
field_ = std::move(field_name);
|
|
67
|
+
return *this;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @return encoded representation of the query.
|
|
72
|
+
*
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
[[nodiscard]] auto encode() const -> encoded_search_query override;
|
|
77
|
+
|
|
78
|
+
private:
|
|
79
|
+
std::string regexp_;
|
|
80
|
+
std::optional<std::string> field_{};
|
|
81
|
+
};
|
|
82
|
+
} // namespace couchbase
|
|
@@ -18,7 +18,10 @@
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
20
|
#include <couchbase/analytics_options.hxx>
|
|
21
|
+
#include <couchbase/collection.hxx>
|
|
21
22
|
#include <couchbase/query_options.hxx>
|
|
23
|
+
#include <couchbase/search_options.hxx>
|
|
24
|
+
#include <couchbase/search_query.hxx>
|
|
22
25
|
|
|
23
26
|
#include <memory>
|
|
24
27
|
|
|
@@ -133,6 +136,43 @@ class scope
|
|
|
133
136
|
return future;
|
|
134
137
|
}
|
|
135
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Performs a query against the full text search services.
|
|
141
|
+
*
|
|
142
|
+
* @param index_name name of the search index
|
|
143
|
+
* @param query query object, see hierarchy of @ref search_query for more details.
|
|
144
|
+
* @param options options to customize the query request.
|
|
145
|
+
* @param handler the handler that implements @ref search_handler
|
|
146
|
+
*
|
|
147
|
+
* @exception errc::common::ambiguous_timeout
|
|
148
|
+
* @exception errc::common::unambiguous_timeout
|
|
149
|
+
*
|
|
150
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-introduction.html
|
|
151
|
+
*
|
|
152
|
+
* @since 1.0.0
|
|
153
|
+
* @committed
|
|
154
|
+
*/
|
|
155
|
+
void search_query(std::string index_name, const search_query& query, const search_options& options, search_handler&& handler) const;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Performs a query against the full text search services.
|
|
159
|
+
*
|
|
160
|
+
* @param index_name name of the search index
|
|
161
|
+
* @param query query object, see hierarchy of @ref search_query for more details.
|
|
162
|
+
* @param options options to customize the query request.
|
|
163
|
+
* @return future object that carries result of the operation
|
|
164
|
+
*
|
|
165
|
+
* @exception errc::common::ambiguous_timeout
|
|
166
|
+
* @exception errc::common::unambiguous_timeout
|
|
167
|
+
*
|
|
168
|
+
* @see https://docs.couchbase.com/server/current/fts/fts-introduction.html
|
|
169
|
+
*
|
|
170
|
+
* @since 1.0.0
|
|
171
|
+
* @committed
|
|
172
|
+
*/
|
|
173
|
+
[[nodiscard]] auto search_query(std::string index_name, const class search_query& query, const search_options& options = {}) const
|
|
174
|
+
-> std::future<std::pair<search_error_context, search_result>>;
|
|
175
|
+
|
|
136
176
|
/**
|
|
137
177
|
* Performs a query against the analytics services.
|
|
138
178
|
*
|
|
@@ -0,0 +1,68 @@
|
|
|
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 <chrono>
|
|
21
|
+
#include <cinttypes>
|
|
22
|
+
#include <optional>
|
|
23
|
+
#include <string>
|
|
24
|
+
|
|
25
|
+
namespace couchbase
|
|
26
|
+
{
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
* @committed
|
|
30
|
+
*/
|
|
31
|
+
class search_date_range
|
|
32
|
+
{
|
|
33
|
+
public:
|
|
34
|
+
search_date_range(std::string name, std::optional<std::string> start, std::optional<std::string> end, std::uint64_t count)
|
|
35
|
+
: name_{ std::move(name) }
|
|
36
|
+
, start_{ std::move(start) }
|
|
37
|
+
, end_{ std::move(end) }
|
|
38
|
+
, count_{ count }
|
|
39
|
+
{
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[[nodiscard]] auto name() const -> const std::string&
|
|
43
|
+
{
|
|
44
|
+
return name_;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
[[nodiscard]] auto start() const -> const std::optional<std::string>&
|
|
48
|
+
{
|
|
49
|
+
return start_;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
[[nodiscard]] auto end() const -> const std::optional<std::string>&
|
|
53
|
+
{
|
|
54
|
+
return end_;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
[[nodiscard]] auto count() const -> std::uint64_t
|
|
58
|
+
{
|
|
59
|
+
return count_;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private:
|
|
63
|
+
std::string name_;
|
|
64
|
+
std::optional<std::string> start_;
|
|
65
|
+
std::optional<std::string> end_;
|
|
66
|
+
std::uint64_t count_;
|
|
67
|
+
};
|
|
68
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,138 @@
|
|
|
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/error_context.hxx>
|
|
21
|
+
|
|
22
|
+
#include <cstdint>
|
|
23
|
+
#include <memory>
|
|
24
|
+
|
|
25
|
+
namespace couchbase
|
|
26
|
+
{
|
|
27
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
28
|
+
class internal_search_error_context;
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The error context returned with Search operations.
|
|
33
|
+
*
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
* @committed
|
|
36
|
+
*/
|
|
37
|
+
class search_error_context : public error_context
|
|
38
|
+
{
|
|
39
|
+
public:
|
|
40
|
+
search_error_context();
|
|
41
|
+
explicit search_error_context(internal_search_error_context ctx);
|
|
42
|
+
search_error_context(search_error_context&& other);
|
|
43
|
+
search_error_context& operator=(search_error_context&& other);
|
|
44
|
+
search_error_context(const search_error_context& other) = delete;
|
|
45
|
+
search_error_context& operator=(const search_error_context& other) = delete;
|
|
46
|
+
~search_error_context() override;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns status of the operation.
|
|
50
|
+
*
|
|
51
|
+
* @see couchbase::errc error codes that might be generated by the library
|
|
52
|
+
*
|
|
53
|
+
* @return error code or false-like value for success
|
|
54
|
+
*
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
* @committed
|
|
57
|
+
*/
|
|
58
|
+
[[nodiscard]] auto ec() const -> std::error_code override;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The hostname/ip where this request got last dispatched to.
|
|
62
|
+
*
|
|
63
|
+
* @return address encoded as a string
|
|
64
|
+
*
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @committed
|
|
67
|
+
*/
|
|
68
|
+
[[nodiscard]] auto last_dispatched_to() const -> const std::optional<std::string>& override;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The hostname/ip where this request got last dispatched from.
|
|
72
|
+
*
|
|
73
|
+
* @return address encoded as a string
|
|
74
|
+
*
|
|
75
|
+
* @since 1.0.0
|
|
76
|
+
* @committed
|
|
77
|
+
*/
|
|
78
|
+
[[nodiscard]] auto last_dispatched_from() const -> const std::optional<std::string>& override;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The number of times the attached request has been retried.
|
|
82
|
+
*
|
|
83
|
+
* @return number of retries.
|
|
84
|
+
*
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
* @committed
|
|
87
|
+
*/
|
|
88
|
+
[[nodiscard]] auto retry_attempts() const -> std::size_t override;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Set of reasons recorded during retrying the operation.
|
|
92
|
+
*
|
|
93
|
+
* @return set of reasons (empty if the operation was not retried)
|
|
94
|
+
*
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
* @committed
|
|
97
|
+
*/
|
|
98
|
+
[[nodiscard]] auto retry_reasons() const -> const std::set<retry_reason>& override;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Check if the operation was retried because of given reason.
|
|
102
|
+
*
|
|
103
|
+
* @param reason reason to check
|
|
104
|
+
* @return true if the reason exists in set of recorded reasons.
|
|
105
|
+
*
|
|
106
|
+
* @since 1.0.0
|
|
107
|
+
* @uncommitted
|
|
108
|
+
*/
|
|
109
|
+
[[nodiscard]] auto retried_because_of(retry_reason reason) const -> bool override;
|
|
110
|
+
|
|
111
|
+
[[nodiscard]] auto index_name() const -> const std::string&;
|
|
112
|
+
|
|
113
|
+
[[nodiscard]] auto client_context_id() const -> const std::string&;
|
|
114
|
+
|
|
115
|
+
[[nodiscard]] auto query() const -> const std::string&;
|
|
116
|
+
|
|
117
|
+
[[nodiscard]] auto parameters() const -> const std::optional<std::string>&;
|
|
118
|
+
|
|
119
|
+
[[nodiscard]] auto method() const -> const std::string&;
|
|
120
|
+
|
|
121
|
+
[[nodiscard]] auto path() const -> const std::string&;
|
|
122
|
+
|
|
123
|
+
[[nodiscard]] auto http_status() const -> std::uint32_t;
|
|
124
|
+
|
|
125
|
+
[[nodiscard]] auto http_body() const -> const std::string&;
|
|
126
|
+
|
|
127
|
+
[[nodiscard]] auto hostname() const -> const std::string&;
|
|
128
|
+
|
|
129
|
+
[[nodiscard]] auto port() const -> std::uint16_t;
|
|
130
|
+
|
|
131
|
+
[[nodiscard]] auto error() const -> const std::string&;
|
|
132
|
+
|
|
133
|
+
[[nodiscard]] auto status() const -> const std::string&;
|
|
134
|
+
|
|
135
|
+
private:
|
|
136
|
+
std::unique_ptr<internal_search_error_context> internal_;
|
|
137
|
+
};
|
|
138
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,60 @@
|
|
|
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 <cstdint>
|
|
21
|
+
#include <string>
|
|
22
|
+
|
|
23
|
+
namespace couchbase
|
|
24
|
+
{
|
|
25
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
26
|
+
struct encoded_search_facet;
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Base class for full text facets of search queries.
|
|
31
|
+
*/
|
|
32
|
+
class search_facet
|
|
33
|
+
{
|
|
34
|
+
public:
|
|
35
|
+
virtual ~search_facet() = default;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @return encoded representation of the search facet.
|
|
39
|
+
*
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
[[nodiscard]] virtual auto encode() const -> encoded_search_facet = 0;
|
|
44
|
+
|
|
45
|
+
protected:
|
|
46
|
+
search_facet(std::string field, std::uint32_t size)
|
|
47
|
+
: field_{ std::move(field) }
|
|
48
|
+
, size_{ size }
|
|
49
|
+
{
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
search_facet(std::string field)
|
|
53
|
+
: field_{ std::move(field) }
|
|
54
|
+
{
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
std::string field_;
|
|
58
|
+
std::optional<std::uint32_t> size_{};
|
|
59
|
+
};
|
|
60
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2020-Present Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#pragma once
|
|
19
|
+
|
|
20
|
+
#include <couchbase/codec/tao_json_serializer.hxx>
|
|
21
|
+
#include <couchbase/search_meta_data.hxx>
|
|
22
|
+
|
|
23
|
+
#include "search_row.hxx"
|
|
24
|
+
#include <chrono>
|
|
25
|
+
#include <cinttypes>
|
|
26
|
+
#include <optional>
|
|
27
|
+
#include <vector>
|
|
28
|
+
|
|
29
|
+
namespace couchbase
|
|
30
|
+
{
|
|
31
|
+
/**
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @committed
|
|
34
|
+
*/
|
|
35
|
+
class search_facet_result
|
|
36
|
+
{
|
|
37
|
+
public:
|
|
38
|
+
virtual ~search_facet_result() = default;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
[[nodiscard]] virtual auto name() const -> const std::string& = 0;
|
|
45
|
+
[[nodiscard]] virtual auto field() const -> const std::string& = 0;
|
|
46
|
+
[[nodiscard]] virtual auto total() const -> std::uint64_t = 0;
|
|
47
|
+
[[nodiscard]] virtual auto missing() const -> std::uint64_t = 0;
|
|
48
|
+
[[nodiscard]] virtual auto other() const -> std::uint64_t = 0;
|
|
49
|
+
};
|
|
50
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2020-Present Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#pragma once
|
|
19
|
+
|
|
20
|
+
#include <couchbase/codec/json_transcoder.hxx>
|
|
21
|
+
#include <couchbase/search_metrics.hxx>
|
|
22
|
+
|
|
23
|
+
#include <cinttypes>
|
|
24
|
+
#include <map>
|
|
25
|
+
#include <memory>
|
|
26
|
+
#include <optional>
|
|
27
|
+
#include <vector>
|
|
28
|
+
|
|
29
|
+
namespace couchbase
|
|
30
|
+
{
|
|
31
|
+
#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
|
|
32
|
+
class internal_search_meta_data;
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Stores any non-rows results related to the execution of a particular N1QL search.
|
|
37
|
+
*
|
|
38
|
+
* @since 1.0.0
|
|
39
|
+
* @committed
|
|
40
|
+
*/
|
|
41
|
+
class search_meta_data
|
|
42
|
+
{
|
|
43
|
+
public:
|
|
44
|
+
/**
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
* @volatile
|
|
47
|
+
*/
|
|
48
|
+
explicit search_meta_data(internal_search_meta_data internal);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Returns the client context identifier string set on the search request.
|
|
52
|
+
*
|
|
53
|
+
* @return client context identifier
|
|
54
|
+
*
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
* @committed
|
|
57
|
+
*/
|
|
58
|
+
[[nodiscard]] auto client_context_id() const -> const std::string&;
|
|
59
|
+
/**
|
|
60
|
+
* Returns any warnings returned by the search engine.
|
|
61
|
+
*
|
|
62
|
+
* It returns an empty vector if no warnings were returned.
|
|
63
|
+
*
|
|
64
|
+
* @return vector of the reported warnings.
|
|
65
|
+
*
|
|
66
|
+
* @since 1.0.0
|
|
67
|
+
* @committed
|
|
68
|
+
*/
|
|
69
|
+
[[nodiscard]] auto errors() const -> const std::map<std::string, std::string>&;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Returns the {@link search_metrics} as returned by the search engine if enabled.
|
|
73
|
+
*
|
|
74
|
+
* @return metrics
|
|
75
|
+
*
|
|
76
|
+
* @since 1.0.0
|
|
77
|
+
* @committed
|
|
78
|
+
*/
|
|
79
|
+
[[nodiscard]] auto metrics() const -> const search_metrics&;
|
|
80
|
+
|
|
81
|
+
private:
|
|
82
|
+
std::unique_ptr<internal_search_meta_data> internal_;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
} // namespace couchbase
|