1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-3672 Fix regression in deletes

Deletes appear to only use the direct delete path. This allows that to
happen.
This commit is contained in:
Andrew Hutchings
2019-12-13 07:33:29 +00:00
parent 9734a25a35
commit b7396129c7
3 changed files with 11 additions and 5 deletions

View File

@ -360,14 +360,14 @@ int ha_mcs::direct_update_rows_init(List<Item> *update_fields)
int ha_mcs::direct_update_rows(ha_rows *update_rows) int ha_mcs::direct_update_rows(ha_rows *update_rows)
{ {
DBUG_ENTER("ha_mcs::direct_update_rows"); DBUG_ENTER("ha_mcs::direct_update_rows");
int rc = ha_mcs_impl_direct_update_delete_rows(update_rows); int rc = ha_mcs_impl_direct_update_delete_rows(false, update_rows);
DBUG_RETURN(rc); DBUG_RETURN(rc);
} }
int ha_mcs::direct_update_rows(ha_rows *update_rows, ha_rows *found_rows) int ha_mcs::direct_update_rows(ha_rows *update_rows, ha_rows *found_rows)
{ {
DBUG_ENTER("ha_mcs::direct_update_rows"); DBUG_ENTER("ha_mcs::direct_update_rows");
int rc = ha_mcs_impl_direct_update_delete_rows(update_rows); int rc = ha_mcs_impl_direct_update_delete_rows(false, update_rows);
*found_rows = *update_rows; *found_rows = *update_rows;
DBUG_RETURN(rc); DBUG_RETURN(rc);
} }
@ -381,7 +381,7 @@ int ha_mcs::direct_delete_rows_init()
int ha_mcs::direct_delete_rows(ha_rows *deleted_rows) int ha_mcs::direct_delete_rows(ha_rows *deleted_rows)
{ {
DBUG_ENTER("ha_mcs::direct_delete_rows"); DBUG_ENTER("ha_mcs::direct_delete_rows");
int rc = ha_mcs_impl_direct_update_delete_rows(deleted_rows); int rc = ha_mcs_impl_direct_update_delete_rows(true, deleted_rows);
DBUG_RETURN(rc); DBUG_RETURN(rc);
} }
/** /**

View File

@ -2281,12 +2281,18 @@ int ha_mcs_impl_discover_existence(const char* schema, const char* name)
return 0; return 0;
} }
int ha_mcs_impl_direct_update_delete_rows(ha_rows *affected_rows) int ha_mcs_impl_direct_update_delete_rows(bool execute, ha_rows *affected_rows)
{ {
THD* thd = current_thd; THD* thd = current_thd;
int rc = 0;
cal_impl_if::gp_walk_info gwi; cal_impl_if::gp_walk_info gwi;
gwi.thd = thd; gwi.thd = thd;
if (execute)
{
rc = doUpdateDelete(thd, gwi);
}
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr()); cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
if (ci) if (ci)
{ {

View File

@ -42,7 +42,7 @@ 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);
extern int ha_mcs_impl_external_lock(THD* thd, TABLE* table, int lock_type); 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_update_row();
extern int ha_mcs_impl_direct_update_delete_rows(ha_rows *affected_rows); extern int ha_mcs_impl_direct_update_delete_rows(bool execute, ha_rows *affected_rows);
extern int ha_mcs_impl_delete_row(); extern int ha_mcs_impl_delete_row();
extern int ha_mcs_impl_rnd_pos(uchar* buf, uchar* pos); 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); extern int ha_cs_impl_pushdown_init(mcs_handler_info* handler_info, TABLE* table);