You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
fix(plugin): MCOL-4740: This fixes update rows counter for multi-table update
For UPDATEs involving a single table, the server call to handler::direct_update_rows() is used to correctly set the count for the number of updated rows in the UPDATE statement. However, for UPDATEs involving multi-tables, the server does not call handler::direct_update_rows(). This patch adds support to correctly report the number of updated rows to the client by setting multi_update::updated and multi_update::found in handler::rnd_end().
This commit is contained in:
@ -399,11 +399,6 @@ void gp_walk(const Item* item, void* arg);
|
||||
void parse_item(Item* item, std::vector<Item_field*>& field_vec, bool& hasNonSupportItem, uint16& parseInfo,
|
||||
gp_walk_info* gwip = NULL);
|
||||
const std::string bestTableName(const Item_field* ifp);
|
||||
bool isMCSTable(TABLE* table_ptr);
|
||||
bool isForeignTableUpdate(THD* thd);
|
||||
bool isUpdateHasForeignTable(THD* thd);
|
||||
bool isMCSTableUpdate(THD* thd);
|
||||
bool isMCSTableDelete(THD* thd);
|
||||
|
||||
// execution plan util functions prototypes
|
||||
execplan::ReturnedColumn* buildReturnedColumn(Item* item, gp_walk_info& gwi, bool& nonSupport,
|
||||
@ -450,27 +445,6 @@ bool buildEqualityPredicate(execplan::ReturnedColumn* lhs, execplan::ReturnedCol
|
||||
boost::shared_ptr<execplan::Operator>& sop, const Item_func::Functype& funcType,
|
||||
const std::vector<Item*>& itemList, bool isInSubs = false);
|
||||
|
||||
inline bool isUpdateStatement(const enum_sql_command& command)
|
||||
{
|
||||
return ((command == SQLCOM_UPDATE) || (command == SQLCOM_UPDATE_MULTI));
|
||||
}
|
||||
|
||||
inline bool isDeleteStatement(const enum_sql_command& command)
|
||||
{
|
||||
return (command == SQLCOM_DELETE) || (command == SQLCOM_DELETE_MULTI);
|
||||
}
|
||||
|
||||
inline bool isUpdateOrDeleteStatement(const enum_sql_command& command)
|
||||
{
|
||||
return isUpdateStatement(command) || isDeleteStatement(command);
|
||||
}
|
||||
|
||||
inline bool isDMLStatement(const enum_sql_command& command)
|
||||
{
|
||||
return (command == SQLCOM_INSERT || command == SQLCOM_INSERT_SELECT || command == SQLCOM_TRUNCATE ||
|
||||
command == SQLCOM_LOAD || isUpdateOrDeleteStatement(command));
|
||||
}
|
||||
|
||||
#ifdef DEBUG_WALK_COND
|
||||
void debug_walk(const Item* item, void* arg);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user