26#ifndef ROUTER_SRC_REST_MRS_SRC_MRS_DATABASE_FILTER_OBJECT_GENERATOR_H_
27#define ROUTER_SRC_REST_MRS_SRC_MRS_DATABASE_FILTER_OBJECT_GENERATOR_H_
34#ifdef RAPIDJSON_NO_SIZETYPEDEFINE
38#include <rapidjson/document.h>
47 using Object = Document::ConstObject;
48 using Value =
const Document::ValueType;
52 bool joins_allowed =
false, uint64_t wait_timeout = 0,
53 bool use_wait_in_where =
true);
55 void reconfigure(uint64_t wait_timeout = 0,
bool use_wait_in_where =
true);
56 void parse(
const std::string &filter_query);
59 bool has_where(
bool filter_only =
true)
const;
70 const std::string_view &column_name,
Value *
value);
72 const std::string_view &column_name,
Value *
value,
73 const std::string_view &complex_key);
75 const std::string_view &column_name,
Value *
value);
77 const std::string_view &column_name,
Value *
value,
78 const std::string_view &complex_key);
80 const std::string_view &column_name,
Value *
value);
82 const std::string_view &column_name,
Value *
value);
88 std::pair<std::shared_ptr<entry::Table>, std::shared_ptr<entry::Column>>
91 const std::shared_ptr<entry::Table> &
table,
92 const std::shared_ptr<entry::Column> &dfield,
93 const std::string_view &name,
bool for_sorting)
const;
Definition: filter_object_generator.h:44
mysqlrouter::sqlstring get_result() const
Definition: filter_object_generator.cc:287
bool has_where(bool filter_only=true) const
Definition: filter_object_generator.cc:720
std::optional< mysqlrouter::sqlstring > parse_complex_value(const std::string_view &column_name, Value *value)
Definition: filter_object_generator.cc:365
bool has_asof() const
Definition: filter_object_generator.cc:729
const Document::ValueType Value
Definition: filter_object_generator.h:48
void parse_order(Object object)
Definition: filter_object_generator.cc:764
mysqlrouter::sqlstring order_
Definition: filter_object_generator.h:100
std::optional< mysqlrouter::sqlstring > parse_direct_value(const std::string_view &column_name, Value *value)
Definition: filter_object_generator.cc:583
bool empty_
Definition: filter_object_generator.h:97
std::optional< mysqlrouter::sqlstring > parse_complex_operator_object(const std::string_view &column_name, Value *value, const std::string_view &complex_key)
Definition: filter_object_generator.cc:392
Clear
Definition: filter_object_generator.h:63
@ kAll
Definition: filter_object_generator.h:63
@ kWhere
Definition: filter_object_generator.h:63
@ kAsof
Definition: filter_object_generator.h:63
@ kOrder
Definition: filter_object_generator.h:63
std::list< std::string > argument_
Definition: filter_object_generator.h:99
uint64_t wait_timeout_
Definition: filter_object_generator.h:102
bool parse_wmember(const std::string_view &name, Value *value)
Definition: filter_object_generator.cc:736
std::optional< mysqlrouter::sqlstring > parse_simple_operator_object(const std::string_view &column_name, Value *value)
Definition: filter_object_generator.cc:413
mysqlrouter::sqlstring resolve_field_name(const std::shared_ptr< entry::Table > &table, const std::shared_ptr< entry::Column > &dfield, const std::string_view &name, bool for_sorting) const
Definition: filter_object_generator.cc:824
void parse_orderby_asof_wmember(Object object)
Definition: filter_object_generator.cc:338
void reset(const Clear clear=Clear::kAll)
Definition: filter_object_generator.cc:304
bool use_wait_in_where_
Definition: filter_object_generator.h:103
std::shared_ptr< database::entry::Object > object_metadata_
Definition: filter_object_generator.h:95
void parse(const std::string &filter_query)
Definition: filter_object_generator.cc:330
rapidjson::Document Document
Definition: filter_object_generator.h:46
std::optional< mysqlrouter::sqlstring > parse_match(Value *value)
Definition: filter_object_generator.cc:521
void parse_asof(Value *value)
Definition: filter_object_generator.cc:756
std::optional< mysqlrouter::sqlstring > parse_complex_values(const std::string_view &column_name, Value *value, const std::string_view &complex_key)
Definition: filter_object_generator.cc:621
mysqlrouter::sqlstring get_asof() const
Definition: filter_object_generator.cc:716
mysqlrouter::sqlstring asof_gtid_
Definition: filter_object_generator.h:101
bool has_order() const
Definition: filter_object_generator.cc:727
mysqlrouter::sqlstring where_
Definition: filter_object_generator.h:98
Document::ConstObject Object
Definition: filter_object_generator.h:47
void reconfigure(uint64_t wait_timeout=0, bool use_wait_in_where=true)
Definition: filter_object_generator.cc:281
FilterObjectGenerator(std::shared_ptr< database::entry::Object > object={}, bool joins_allowed=false, uint64_t wait_timeout=0, bool use_wait_in_where=true)
Definition: filter_object_generator.cc:273
std::optional< mysqlrouter::sqlstring > parse_column_object(const std::string_view &column_name, Value *value)
Definition: filter_object_generator.cc:691
std::pair< std::shared_ptr< entry::Table >, std::shared_ptr< entry::Column > > resolve_field(const std::string_view &name)
Definition: filter_object_generator.cc:817
bool joins_allowed_
Definition: filter_object_generator.h:96
Definition: utils_sqlstring.h:67
Define rapidjson::SizeType to be std::uint64_t.
static PFS_engine_table_share_proxy table
Definition: pfs.cc:61
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
FilterObjectGenerator::Value Value
Definition: filter_object_generator.cc:51
Definition: authorize_manager.h:48
static mysql_service_status_t clear(reference_caching_channel channel) noexcept
Definition: component.cc:146