libmongocrypt
Loading...
Searching...
No Matches
mc-fle2-find-range-payload-private-v2.h
1/*
2 * Copyright 2022-present MongoDB, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef MC_FLE2_FIND_RANGE_PAYLOAD_PRIVATE_V2_H
18#define MC_FLE2_FIND_RANGE_PAYLOAD_PRIVATE_V2_H
19
20#include "mongocrypt-buffer-private.h"
21#include "mongocrypt-private.h"
22#include "mongocrypt.h"
23
24#include "mc-array-private.h"
25#include "mc-fle2-range-operator-private.h"
26#include "mc-optional-private.h"
27
31typedef struct {
32 mc_array_t edgeFindTokenSetArray; // g
33 int64_t maxContentionFactor; // cm
35
60typedef struct {
61 struct {
63 bool set;
64 } payload;
65
66 // payloadId Id of payload - must be paired with another payload.
67 int32_t payloadId;
68 // firstOperator represents the first query operator for which this payload
69 // was generated.
70 mc_FLE2RangeOperator_t firstOperator;
71 // secondOperator represents the second query operator for which this payload
72 // was generated. Only populated for two-sided ranges. It is 0 if unset.
73 mc_FLE2RangeOperator_t secondOperator;
74 mc_optional_int64_t sparsity; // sp
75 mc_optional_int32_t precision; // pn
76 mc_optional_int32_t trimFactor; // tf
77 bson_value_t indexMin; // mn
78 bson_value_t indexMax; // mx
80
81// `mc_FLE2FindRangePayloadV2_t` inherits extended alignment from libbson. To dynamically allocate, use aligned
82// allocation (e.g. BSON_ALIGNED_ALLOC)
83BSON_STATIC_ASSERT2(alignof_mc_FLE2FindRangePayloadV2_t,
84 BSON_ALIGNOF(mc_FLE2FindRangePayloadV2_t) >= BSON_ALIGNOF(bson_value_t));
85
96typedef struct {
97 _mongocrypt_buffer_t edcDerivedToken; // d
98 _mongocrypt_buffer_t escDerivedToken; // s
99 _mongocrypt_buffer_t serverDerivedFromDataToken; // l
101
102void mc_FLE2FindRangePayloadV2_init(mc_FLE2FindRangePayloadV2_t *payload);
103
104bool mc_FLE2FindRangePayloadV2_serialize(const mc_FLE2FindRangePayloadV2_t *payload, bson_t *out, bool use_range_v2);
105
106void mc_FLE2FindRangePayloadV2_cleanup(mc_FLE2FindRangePayloadV2_t *payload);
107
108#endif /* MC_FLE2_FIND_RANGE_PAYLOAD_PRIVATE_V2_H */
Definition mc-fle2-find-range-payload-private-v2.h:96
Definition mc-fle2-find-range-payload-private-v2.h:31
Definition mc-fle2-find-range-payload-private-v2.h:60