You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-08 14:22:09 +03:00
Merge branch 'develop-1.2' into develop-merge-up-20190425
This commit is contained in:
@@ -98,4 +98,23 @@ BEGIN
|
||||
SELECT CONCAT((SELECT SUM(data_size) FROM information_schema.columnstore_extents ce left join information_schema.columnstore_columns cc on ce.object_id = cc.object_id where compression_type='Snappy') / (SELECT SUM(compressed_data_size) FROM information_schema.columnstore_files WHERE compressed_data_size IS NOT NULL), ':1') COMPRESSION_RATIO;
|
||||
END //
|
||||
|
||||
create procedure columnstore_upgrade()
|
||||
`columnstore_upgrade`: BEGIN
|
||||
DECLARE done INTEGER DEFAULT 0;
|
||||
DECLARE schema_table VARCHAR(100) DEFAULT "";
|
||||
DECLARE table_list CURSOR FOR select concat('`', table_schema,'`.`',table_name,'`') from information_schema.tables where engine='columnstore';
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||||
OPEN table_list;
|
||||
tlist: LOOP
|
||||
FETCH table_list INTO schema_table;
|
||||
IF done = 1 THEN LEAVE tlist;
|
||||
END IF;
|
||||
SET @sql_query = concat('ALTER TABLE ', schema_table, ' COMMENT=\'\'');
|
||||
PREPARE stmt FROM @sql_query;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END LOOP;
|
||||
END //
|
||||
delimiter ;
|
||||
|
||||
DELIMITER ;
|
||||
|
@@ -2095,8 +2095,7 @@ int ha_calpont_impl_create_(const char* name, TABLE* table_arg, HA_CREATE_INFO*
|
||||
if ( schemaSyncOnly && isCreate)
|
||||
return rc;
|
||||
|
||||
//this is replcated DDL, treat it just like SSO
|
||||
if (thd->slave_thread)
|
||||
if (thd->slave_thread && !ci.replicationEnabled)
|
||||
return rc;
|
||||
|
||||
//@bug 5660. Error out REAL DDL/DML on slave node.
|
||||
@@ -2294,8 +2293,7 @@ int ha_calpont_impl_delete_table_(const char* db, const char* name, cal_connecti
|
||||
return 0;
|
||||
}
|
||||
|
||||
//this is replcated DDL, treat it just like SSO
|
||||
if (thd->slave_thread)
|
||||
if (thd->slave_thread && !ci.replicationEnabled)
|
||||
return 0;
|
||||
|
||||
//@bug 5660. Error out REAL DDL/DML on slave node.
|
||||
@@ -2434,8 +2432,7 @@ int ha_calpont_impl_rename_table_(const char* from, const char* to, cal_connecti
|
||||
pair<string, string> toPair;
|
||||
string stmt;
|
||||
|
||||
//this is replicated DDL, treat it just like SSO
|
||||
if (thd->slave_thread)
|
||||
if (thd->slave_thread && !ci.replicationEnabled)
|
||||
return 0;
|
||||
|
||||
//@bug 5660. Error out REAL DDL/DML on slave node.
|
||||
|
@@ -2080,7 +2080,8 @@ int ha_calpont_impl_commit_ (handlerton* hton, THD* thd, bool all, cal_connectio
|
||||
thd->infinidb_vtable.vtable_state == THD::INFINIDB_SELECT_VTABLE )
|
||||
return rc;
|
||||
|
||||
if (thd->slave_thread) return 0;
|
||||
if (thd->slave_thread && !ci.replicationEnabled)
|
||||
return 0;
|
||||
|
||||
std::string command("COMMIT");
|
||||
#ifdef INFINIDB_DEBUG
|
||||
|
@@ -7140,7 +7140,9 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
|
||||
// for subquery, order+limit by will be supported in infinidb. build order by columns
|
||||
// @todo union order by and limit support
|
||||
if (gwi.hasWindowFunc || gwi.subSelectType != CalpontSelectExecutionPlan::MAIN_SELECT)
|
||||
if (gwi.hasWindowFunc
|
||||
|| gwi.subSelectType != CalpontSelectExecutionPlan::MAIN_SELECT
|
||||
|| ( isUnion && ordercol ))
|
||||
{
|
||||
for (; ordercol; ordercol = ordercol->next)
|
||||
{
|
||||
|
@@ -1012,7 +1012,6 @@ uint32_t doUpdateDelete(THD* thd)
|
||||
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
//@bug 5660. Error out DDL/DML on slave node, or on local query node
|
||||
if (ci->isSlaveNode && !thd->slave_thread)
|
||||
{
|
||||
string emsg = logging::IDBErrorInfo::instance()->errorMsg(ERR_DML_DDL_SLAVE);
|
||||
@@ -1034,7 +1033,14 @@ uint32_t doUpdateDelete(THD* thd)
|
||||
// stats start
|
||||
ci->stats.reset();
|
||||
ci->stats.setStartTime();
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
if (thd->main_security_ctx.user)
|
||||
{
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
}
|
||||
else
|
||||
{
|
||||
ci->stats.fUser = "";
|
||||
}
|
||||
|
||||
if (thd->main_security_ctx.host)
|
||||
ci->stats.fHost = thd->main_security_ctx.host;
|
||||
@@ -2129,8 +2135,9 @@ int ha_calpont_impl_rnd_init(TABLE* table)
|
||||
// prevent "create table as select" from running on slave
|
||||
thd->infinidb_vtable.hasInfiniDBTable = true;
|
||||
|
||||
/* If this node is the slave, ignore DML to IDB tables */
|
||||
if (thd->slave_thread && (
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(thd->infinidb_vtable.cal_conn_info);
|
||||
|
||||
if (thd->slave_thread && !ci->replicationEnabled && (
|
||||
thd->lex->sql_command == SQLCOM_INSERT ||
|
||||
thd->lex->sql_command == SQLCOM_INSERT_SELECT ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE ||
|
||||
@@ -2184,7 +2191,6 @@ int ha_calpont_impl_rnd_init(TABLE* table)
|
||||
set_fe_conn_info_ptr((void*)new cal_connection_info());
|
||||
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
idbassert(ci != 0);
|
||||
|
||||
// MySQL sometimes calls rnd_init multiple times, plan should only be
|
||||
@@ -2296,7 +2302,14 @@ int ha_calpont_impl_rnd_init(TABLE* table)
|
||||
{
|
||||
ci->stats.reset(); // reset query stats
|
||||
ci->stats.setStartTime();
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
if (thd->main_security_ctx.user)
|
||||
{
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
}
|
||||
else
|
||||
{
|
||||
ci->stats.fUser = "";
|
||||
}
|
||||
|
||||
if (thd->main_security_ctx.host)
|
||||
ci->stats.fHost = thd->main_security_ctx.host;
|
||||
@@ -2661,8 +2674,9 @@ int ha_calpont_impl_rnd_next(uchar* buf, TABLE* table)
|
||||
{
|
||||
THD* thd = current_thd;
|
||||
|
||||
/* If this node is the slave, ignore DML to IDB tables */
|
||||
if (thd->slave_thread && (
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(thd->infinidb_vtable.cal_conn_info);
|
||||
|
||||
if (thd->slave_thread && !ci->replicationEnabled && (
|
||||
thd->lex->sql_command == SQLCOM_INSERT ||
|
||||
thd->lex->sql_command == SQLCOM_INSERT_SELECT ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE ||
|
||||
@@ -2673,7 +2687,6 @@ int ha_calpont_impl_rnd_next(uchar* buf, TABLE* table)
|
||||
thd->lex->sql_command == SQLCOM_LOAD))
|
||||
return 0;
|
||||
|
||||
|
||||
if (thd->infinidb_vtable.vtable_state == THD::INFINIDB_ERROR)
|
||||
return ER_INTERNAL_ERROR;
|
||||
|
||||
@@ -2703,7 +2716,6 @@ int ha_calpont_impl_rnd_next(uchar* buf, TABLE* table)
|
||||
set_fe_conn_info_ptr((void*)new cal_connection_info());
|
||||
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
// @bug 3078
|
||||
if (thd->killed == KILL_QUERY || thd->killed == KILL_QUERY_HARD)
|
||||
{
|
||||
@@ -2767,8 +2779,17 @@ int ha_calpont_impl_rnd_end(TABLE* table)
|
||||
int rc = 0;
|
||||
THD* thd = current_thd;
|
||||
cal_connection_info* ci = NULL;
|
||||
bool replicationEnabled = false;
|
||||
|
||||
if (thd->slave_thread && (
|
||||
if (thd->infinidb_vtable.cal_conn_info)
|
||||
ci = reinterpret_cast<cal_connection_info*>(thd->infinidb_vtable.cal_conn_info);
|
||||
|
||||
if (ci && ci->replicationEnabled)
|
||||
{
|
||||
replicationEnabled = true;
|
||||
}
|
||||
|
||||
if (thd->slave_thread && !replicationEnabled && (
|
||||
thd->lex->sql_command == SQLCOM_INSERT ||
|
||||
thd->lex->sql_command == SQLCOM_INSERT_SELECT ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE ||
|
||||
@@ -2783,7 +2804,6 @@ int ha_calpont_impl_rnd_end(TABLE* table)
|
||||
|
||||
if (get_fe_conn_info_ptr() != NULL)
|
||||
ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
if (thd->infinidb_vtable.vtable_state == THD::INFINIDB_ORDER_BY )
|
||||
{
|
||||
thd->infinidb_vtable.vtable_state = THD::INFINIDB_SELECT_VTABLE; // flip back to normal state
|
||||
@@ -3042,9 +3062,8 @@ int ha_calpont_impl_write_row(uchar* buf, TABLE* table)
|
||||
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
if (thd->slave_thread) return 0;
|
||||
|
||||
|
||||
if (thd->slave_thread && !ci->replicationEnabled)
|
||||
return 0;
|
||||
|
||||
if (ci->alterTableState > 0) return 0;
|
||||
|
||||
@@ -3129,7 +3148,8 @@ void ha_calpont_impl_start_bulk_insert(ha_rows rows, TABLE* table)
|
||||
if (thd->infinidb_vtable.vtable_state != THD::INFINIDB_ALTER_VTABLE)
|
||||
thd->infinidb_vtable.isInfiniDBDML = true;
|
||||
|
||||
if (thd->slave_thread) return;
|
||||
if (thd->slave_thread && !ci->replicationEnabled)
|
||||
return;
|
||||
|
||||
//@bug 5660. Error out DDL/DML on slave node, or on local query node
|
||||
if (ci->isSlaveNode && thd->infinidb_vtable.vtable_state != THD::INFINIDB_ALTER_VTABLE)
|
||||
@@ -3568,7 +3588,14 @@ void ha_calpont_impl_start_bulk_insert(ha_rows rows, TABLE* table)
|
||||
// query stats. only collect execution time and rows inserted for insert/load_data_infile
|
||||
ci->stats.reset();
|
||||
ci->stats.setStartTime();
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
if (thd->main_security_ctx.user)
|
||||
{
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
}
|
||||
else
|
||||
{
|
||||
ci->stats.fUser = "";
|
||||
}
|
||||
|
||||
if (thd->main_security_ctx.host)
|
||||
ci->stats.fHost = thd->main_security_ctx.host;
|
||||
@@ -3654,7 +3681,8 @@ int ha_calpont_impl_end_bulk_insert(bool abort, TABLE* table)
|
||||
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
if (thd->slave_thread) return 0;
|
||||
if (thd->slave_thread && !ci->replicationEnabled)
|
||||
return 0;
|
||||
|
||||
int rc = 0;
|
||||
|
||||
@@ -4317,7 +4345,14 @@ int ha_calpont_impl_group_by_init(ha_calpont_group_by_handler* group_hand, TABLE
|
||||
{
|
||||
ci->stats.reset(); // reset query stats
|
||||
ci->stats.setStartTime();
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
if (thd->main_security_ctx.user)
|
||||
{
|
||||
ci->stats.fUser = thd->main_security_ctx.user;
|
||||
}
|
||||
else
|
||||
{
|
||||
ci->stats.fUser = "";
|
||||
}
|
||||
|
||||
if (thd->main_security_ctx.host)
|
||||
ci->stats.fHost = thd->main_security_ctx.host;
|
||||
@@ -4736,19 +4771,6 @@ int ha_calpont_impl_group_by_next(ha_calpont_group_by_handler* group_hand, TABLE
|
||||
{
|
||||
THD* thd = current_thd;
|
||||
|
||||
/* If this node is the slave, ignore DML to IDB tables */
|
||||
if (thd->slave_thread && (
|
||||
thd->lex->sql_command == SQLCOM_INSERT ||
|
||||
thd->lex->sql_command == SQLCOM_INSERT_SELECT ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE_MULTI ||
|
||||
thd->lex->sql_command == SQLCOM_DELETE ||
|
||||
thd->lex->sql_command == SQLCOM_DELETE_MULTI ||
|
||||
thd->lex->sql_command == SQLCOM_TRUNCATE ||
|
||||
thd->lex->sql_command == SQLCOM_LOAD))
|
||||
return 0;
|
||||
|
||||
|
||||
if (thd->infinidb_vtable.vtable_state == THD::INFINIDB_ERROR)
|
||||
return ER_INTERNAL_ERROR;
|
||||
|
||||
@@ -4774,6 +4796,17 @@ int ha_calpont_impl_group_by_next(ha_calpont_group_by_handler* group_hand, TABLE
|
||||
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
if (thd->slave_thread && !ci->replicationEnabled && (
|
||||
thd->lex->sql_command == SQLCOM_INSERT ||
|
||||
thd->lex->sql_command == SQLCOM_INSERT_SELECT ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE_MULTI ||
|
||||
thd->lex->sql_command == SQLCOM_DELETE ||
|
||||
thd->lex->sql_command == SQLCOM_DELETE_MULTI ||
|
||||
thd->lex->sql_command == SQLCOM_TRUNCATE ||
|
||||
thd->lex->sql_command == SQLCOM_LOAD))
|
||||
return 0;
|
||||
|
||||
// @bug 3078
|
||||
if (thd->killed == KILL_QUERY || thd->killed == KILL_QUERY_HARD)
|
||||
{
|
||||
@@ -4839,7 +4872,19 @@ int ha_calpont_impl_group_by_end(ha_calpont_group_by_handler* group_hand, TABLE*
|
||||
THD* thd = current_thd;
|
||||
cal_connection_info* ci = NULL;
|
||||
|
||||
if (thd->slave_thread && (
|
||||
thd->infinidb_vtable.isNewQuery = true;
|
||||
thd->infinidb_vtable.isUnion = false;
|
||||
|
||||
if (get_fe_conn_info_ptr() != NULL)
|
||||
ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
if (!ci)
|
||||
{
|
||||
thd->infinidb_vtable.cal_conn_info = (void*)(new cal_connection_info());
|
||||
ci = reinterpret_cast<cal_connection_info*>(thd->infinidb_vtable.cal_conn_info);
|
||||
}
|
||||
|
||||
if (thd->slave_thread && !ci->replicationEnabled && (
|
||||
thd->lex->sql_command == SQLCOM_INSERT ||
|
||||
thd->lex->sql_command == SQLCOM_INSERT_SELECT ||
|
||||
thd->lex->sql_command == SQLCOM_UPDATE ||
|
||||
@@ -4850,12 +4895,6 @@ int ha_calpont_impl_group_by_end(ha_calpont_group_by_handler* group_hand, TABLE*
|
||||
thd->lex->sql_command == SQLCOM_LOAD))
|
||||
return 0;
|
||||
|
||||
thd->infinidb_vtable.isNewQuery = true;
|
||||
thd->infinidb_vtable.isUnion = false;
|
||||
|
||||
if (get_fe_conn_info_ptr() != NULL)
|
||||
ci = reinterpret_cast<cal_connection_info*>(get_fe_conn_info_ptr());
|
||||
|
||||
if (((thd->lex)->sql_command == SQLCOM_INSERT) ||
|
||||
((thd->lex)->sql_command == SQLCOM_INSERT_SELECT) )
|
||||
{
|
||||
|
@@ -251,10 +251,18 @@ struct cal_connection_info
|
||||
useXbit(false),
|
||||
utf8(false),
|
||||
useCpimport(1),
|
||||
delimiter('\7')
|
||||
delimiter('\7'),
|
||||
replicationEnabled(false)
|
||||
{
|
||||
// check if this is a slave mysql daemon
|
||||
isSlaveNode = checkSlave();
|
||||
|
||||
std::string option = config::Config::makeConfig()->getConfig("SystemConfig", "ReplicationEnabled");
|
||||
|
||||
if (!option.compare("Y"))
|
||||
{
|
||||
replicationEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
static bool checkSlave()
|
||||
@@ -319,6 +327,7 @@ struct cal_connection_info
|
||||
char delimiter;
|
||||
char enclosed_by;
|
||||
std::vector <execplan::CalpontSystemCatalog::ColType> columnTypes;
|
||||
bool replicationEnabled;
|
||||
// MCOL-1101 remove compilation unit variable rmParms
|
||||
std::vector <execplan::RMParam> rmParms;
|
||||
};
|
||||
|
Reference in New Issue
Block a user