You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-4023 Pushdown WHERE conditions for UPDATE/DELETE.
For certain queries, such as: update cs1 set i = 41 where i = 42 or (i is null and 42 is null); the SELECT_LEX.where does not contain the required where conditions. Server sends the where conditions in the call to cond_push(), so we are storing them in a handler data member, condStack, and later push them down to getSelectPlan() for UPDATES/DELETEs.
This commit is contained in:
committed by
Patrick LeBlanc
parent
a8f5d353bd
commit
01ff2652a6
@ -29,7 +29,7 @@ extern int ha_mcs_impl_create(const char* name, TABLE* table_arg, HA_CREATE_INFO
|
||||
extern int ha_mcs_impl_delete_table(const char* name);
|
||||
extern int ha_mcs_impl_open(const char* name, int mode, uint32_t test_if_locked);
|
||||
extern int ha_mcs_impl_close(void);
|
||||
extern int ha_mcs_impl_rnd_init(TABLE* table);
|
||||
extern int ha_mcs_impl_rnd_init(TABLE* table, const std::vector<COND*>& condStack);
|
||||
extern int ha_mcs_impl_rnd_next(uchar* buf, TABLE* table);
|
||||
extern int ha_mcs_impl_rnd_end(TABLE* table, bool is_derived_hand = false);
|
||||
extern int ha_mcs_impl_write_row(const uchar* buf, TABLE* table, uint64_t rows_changed);
|
||||
@ -39,10 +39,10 @@ extern int ha_mcs_impl_rename_table(const char* from, const char* to);
|
||||
extern int ha_mcs_impl_commit (handlerton* hton, THD* thd, bool all);
|
||||
extern int ha_mcs_impl_rollback (handlerton* hton, THD* thd, bool all);
|
||||
extern int ha_mcs_impl_close_connection (handlerton* hton, THD* thd);
|
||||
extern COND* ha_mcs_impl_cond_push(COND* cond, TABLE* table);
|
||||
extern COND* ha_mcs_impl_cond_push(COND* cond, TABLE* table, std::vector<COND*>&);
|
||||
extern int ha_mcs_impl_external_lock(THD* thd, TABLE* table, int lock_type);
|
||||
extern int ha_mcs_impl_update_row();
|
||||
extern int ha_mcs_impl_direct_update_delete_rows(bool execute, ha_rows *affected_rows);
|
||||
extern int ha_mcs_impl_direct_update_delete_rows(bool execute, ha_rows *affected_rows, const std::vector<COND*>& condStack);
|
||||
extern int ha_mcs_impl_delete_row();
|
||||
extern int ha_mcs_impl_rnd_pos(uchar* buf, uchar* pos);
|
||||
extern int ha_cs_impl_pushdown_init(mcs_handler_info* handler_info, TABLE* table);
|
||||
|
Reference in New Issue
Block a user