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:1011
 
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:2880
 
Definition: set_operation.h:33