26#ifndef ROUTER_SRC_MYSQL_REST_SERVICE_SRC_MRS_DATABASE_JSON_MAPPER_VIEW_CHANGE_H_
27#define ROUTER_SRC_MYSQL_REST_SERVICE_SRC_MRS_DATABASE_JSON_MAPPER_VIEW_CHANGE_H_
42#include "mysqld_error.h"
49class RowDeleteReferencing;
54 public std::enable_shared_from_this<JsonMappingUpdater::Operation> {
80 const std::shared_ptr<Table> &
table()
const {
return table_; }
82 std::shared_ptr<Operation>
parent()
const {
113 bool qualify_table)
const {
125 std::vector<std::shared_ptr<JsonMappingUpdater::Operation>> *parents)
142 std::shared_ptr<Table>
table,
147 std::shared_ptr<Table>
table,
162 virtual std::shared_ptr<RowChangeOperation>
168 bool error_if_not_found =
true);
200 std::optional<PrimaryKeyColumnValues> child_pk);
204 std::shared_ptr<RowChangeOperation> ref_op);
238 std::list<std::shared_ptr<Operation>>
before_;
239 std::list<std::shared_ptr<Operation>>
after_;
Definition: object_row_ownership.h:45
bool enabled() const
Definition: object_row_ownership.h:85
mysqlrouter::sqlstring owner_check_expr() const
Definition: object_row_ownership.h:98
virtual void execute(MySQLSession *session)
Definition: query.cc:91
std::shared_ptr< Operation > parent() const
Definition: change.h:82
virtual void process_to_one(const ForeignKeyReference &ref, JSONInputObject input)=0
virtual const PrimaryKeyColumnValues & primary_key() const
Definition: change.h:76
const std::shared_ptr< Table > & table() const
Definition: change.h:80
bool is_root() const
Definition: change.h:87
PrimaryKeyColumnValues pk_
Definition: change.h:134
mysqlrouter::sqlstring join_to_parent(std::vector< std::shared_ptr< JsonMappingUpdater::Operation > > *parents) const
Definition: change.cc:95
std::shared_ptr< Table > table_
Definition: change.h:60
size_t affected() const
Definition: change.h:89
const ObjectRowOwnership & row_ownership_
Definition: change.h:61
virtual void on_parent_pk_resolved(const PrimaryKeyColumnValues &)
Definition: change.h:93
virtual void on_value(const Column &, const JSONInputObject::MemberReference &)
Definition: change.h:99
virtual void append_match_condition(mysqlrouter::sqlstring &sql) const
Definition: change.cc:116
Operation(std::shared_ptr< Operation > parent, std::shared_ptr< Table > table, const PrimaryKeyColumnValues &pk, const ObjectRowOwnership &row_ownership)
Definition: change.h:68
void execute(MySQLSession *session) override
Definition: change.h:128
virtual void process_to_many(const ForeignKeyReference &ref, JSONInputArray input)=0
bool add_row_owner_check(mysqlrouter::sqlstring *sql, bool qualify_table) const
Definition: change.h:112
std::weak_ptr< Operation > parent_
Definition: change.h:59
Operation(std::shared_ptr< Operation > parent, std::shared_ptr< Table > table, const ObjectRowOwnership &row_ownership)
Definition: change.h:64
virtual void on_no_value(const Column &, const JSONInputObject::MemberReference &)
Definition: change.h:102
virtual void process(JSONInputObject input)
Definition: change.cc:47
size_t affected_
Definition: change.h:56
virtual void run(MySQLSession *session)=0
void on_referencing_row(const ForeignKeyReference &fk, std::shared_ptr< RowChangeOperation > ref_op)
Definition: change.cc:357
void on_parent_pk_resolved(const PrimaryKeyColumnValues &parent_pk) override
Definition: change.cc:368
void on_value(const Column &column, const JSONInputObject::MemberReference &value) override
Definition: change.cc:279
std::shared_ptr< RowDeleteReferencing > add_delete_referencing_this(const ForeignKeyReference &fk, const PrimaryKeyColumnValues &pk)
Definition: change.cc:256
std::shared_ptr< RowChangeOperation > add_clear_all_referencing_this(const ForeignKeyReference &fk)
Definition: change.cc:206
virtual void run_before(std::shared_ptr< Operation > op)
Definition: change.h:218
RowChangeOperation(std::shared_ptr< Operation > parent, std::shared_ptr< Table > table, const ObjectRowOwnership &row_ownership)
Definition: change.h:141
virtual std::shared_ptr< RowChangeOperation > add_dummy_update_referenced_from_this(const ForeignKeyReference &fk, const PrimaryKeyColumnValues &pk)
Definition: change.cc:181
std::list< std::shared_ptr< Operation > > before_
Definition: change.h:238
std::shared_ptr< RowChangeOperation > add_insert_referencing_this(const ForeignKeyReference &fk)
Definition: change.cc:237
std::list< std::shared_ptr< Operation > > after_
Definition: change.h:239
std::vector< mysqlrouter::sqlstring > columns_
Definition: change.h:233
std::vector< mysqlrouter::sqlstring > values_
Definition: change.h:234
void set_column_value(const Column &column, const mysqlrouter::sqlstring &value)
Definition: change.cc:418
std::shared_ptr< RowChangeOperation > add_update_referencing_this(const ForeignKeyReference &fk, const PrimaryKeyColumnValues &pk, bool error_if_not_found=true)
Definition: change.cc:192
std::shared_ptr< RowChangeOperation > add_upsert_referencing_this(const ForeignKeyReference &fk)
Definition: change.cc:246
virtual void on_referenced_row(const ForeignKeyReference &fk, const JSONInputObject &input, std::optional< PrimaryKeyColumnValues > child_pk)
Definition: change.cc:323
RowChangeOperation(std::shared_ptr< Operation > parent, std::shared_ptr< Table > table, const PrimaryKeyColumnValues &pk, const ObjectRowOwnership &row_ownership)
Definition: change.h:146
void resolve_fk_to_parent(const ForeignKeyReference &fk, const PrimaryKeyColumnValues &parent_pk)
Definition: change.cc:376
virtual void run_after(std::shared_ptr< Operation > op)
Definition: change.h:228
std::shared_ptr< RowChangeOperation > add_update_referenced_from_this(const ForeignKeyReference &fk, const PrimaryKeyColumnValues &pk)
Definition: change.cc:170
void cancel_before(std::shared_ptr< Operation > op)
Definition: change.h:222
std::shared_ptr< RowDeleteReferencing > add_delete_all_referencing_this(const ForeignKeyReference &fk)
Definition: change.cc:268
void on_no_value(const Column &column, const JSONInputObject::MemberReference &) override
Definition: change.cc:313
std::optional< ForeignKeyReference > pending_fk_to_parent_
Definition: change.h:236
std::vector< bool > not_updatable_
Definition: change.h:235
void process_to_one(const ForeignKeyReference &ref, JSONInputObject input) override
Definition: change.cc:127
virtual void set_column_sql_value(const Column &column, const mysqlrouter::sqlstring &value)
Definition: change.cc:391
std::shared_ptr< RowChangeOperation > add_insert_referenced_from_this(const ForeignKeyReference &fk)
Definition: change.cc:226
bool empty() const
Definition: change.h:153
Definition: mysql_session.h:157
virtual uint64_t affected_rows() noexcept
Definition: mysql_session.cc:936
Definition: utils_sqlstring.h:67
sqlstring & append_preformatted_sep(const std::string &separator, const sqlstring &s)
Definition: utils_sqlstring.cc:489
PT & ref(PT *tp)
Definition: tablespace_impl.cc:359
Container::const_iterator find(const Container &c, Value &&value)
Definition: generic.h:39
entry::ForeignKeyReference ForeignKeyReference
Definition: select.h:54
entry::Column Column
Definition: select.h:53
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
std::map< std::string, mysqlrouter::sqlstring > PrimaryKeyColumnValues
Definition: select.h:43
Definition: authorize_manager.h:48
std::vector< T, ut::allocator< T > > vector
Specialization of vector which uses allocator.
Definition: ut0new.h:2876
Definition: set_operation.h:33