1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-08 14:22:09 +03:00

chore(ci): collect asan ubsan and libc++ build with mtr and regression status ignored (#3672)

* MSan added with fixes for libc++

* libc++ sepatare build

* add libc++ to ci

* libstdc++ in CI

* libcpp and msan to external projects

* std::sqrt

* awful_hack(ci): install whole llvm instead of libc++ in terrible way for test containers

* Adding ddeb packages for teststages and repos

* libc++ more for test container

* save some money on debug

* colored coredumps

* revert ci

* chore(ci): collect asan ubsan and libc++ build with mtr and regression status ignored
This commit is contained in:
Leonid Fedorov
2025-07-31 00:32:32 +04:00
committed by GitHub
parent 2e2b4b3f82
commit 82421c208f
130 changed files with 715 additions and 549 deletions

View File

@@ -24,12 +24,11 @@
/** @file */
/** class FromSubSelect definition */
//#define NDEBUG
// #define NDEBUG
#define PREFER_MY_CONFIG_H
#include <my_config.h>
#include <cassert>
#include <map>
using namespace std;
#include "idb_mysql.h"
@@ -39,7 +38,7 @@ using namespace std;
#include "constantcolumn.h"
#include "simplecolumn.h"
using namespace execplan;
using namespace std;
#include "ha_subquery.h"
namespace cal_impl_if

View File

@@ -27,10 +27,9 @@
#define PREFER_MY_CONFIG_H
#include <my_config.h>
#include <stdint.h>
//#define NDEBUG
// #define NDEBUG
#include <cassert>
#include <vector>
using namespace std;
#include "idb_mysql.h"
@@ -50,6 +49,8 @@ using namespace logging;
#include "ha_subquery.h"
using namespace std;
namespace cal_impl_if
{
extern void parse_item(Item* item, vector<Item_field*>& field_vec, bool& hasNonSupportItem,

View File

@@ -585,7 +585,7 @@ extern "C"
stmt->serialize(bytestream);
ByteStream::byte b = 0;
THD* thd = current_thd;
string emsg;
std::string emsg;
mq.write(bytestream);
try
@@ -606,7 +606,7 @@ extern "C"
bytestream >> emsg;
}
}
catch (runtime_error&)
catch (std::runtime_error&)
{
thd->get_stmt_da()->set_overwrite_status(true);
thd->raise_error_printf(ER_INTERNAL_ERROR, "Lost connection to DDLProc");

View File

@@ -25,16 +25,14 @@
#include <string>
#include <iostream>
#include <stack>
#include <tr1/unordered_map>
#include <fstream>
#include <sstream>
#include <cerrno>
#include <cstring>
#include <regex>
#include <tr1/unordered_set>
#include <unordered.h>
#include <utility>
#include <cassert>
using namespace std;
#include <boost/shared_ptr.hpp>
#include <boost/tokenizer.hpp>
@@ -81,6 +79,7 @@ using namespace execplan;
#include "resourcemanager.h"
using namespace joblist;
using namespace std;
namespace
{
@@ -761,7 +760,7 @@ int ProcessDDLStatement(string& ddlStatement, string& schema, const string& /*ta
#ifdef MCS_DEBUG
cout << "ProcessDDLStatement: " << schema << "." << table << ":" << ddlStatement << endl;
#endif
parser.setDefaultSchema(schema);
parser.setDefaultCharset(default_table_charset);
int rc = 0;
@@ -2203,34 +2202,46 @@ int ProcessDDLStatement(string& ddlStatement, string& schema, const string& /*ta
if (ddlStatement.find("AUTO_INCREMENT") != string::npos)
{
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "The syntax auto_increment is not supported in Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.");
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED,
"The syntax auto_increment is not supported in Columnstore. Please check the "
"Columnstore syntax guide for supported syntax or data types.");
}
else if(ddlStatement.find("RENAME COLUMN") != string::npos)
else if (ddlStatement.find("RENAME COLUMN") != string::npos)
{
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "The syntax rename column is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.");
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED,
"The syntax rename column is not supported by Columnstore. Please check the "
"Columnstore syntax guide for supported syntax or data types.");
}
else if(ddlStatement.find("MAX_ROWS") != string::npos || ddlStatement.find("MIN_ROWS") != string::npos)
else if (ddlStatement.find("MAX_ROWS") != string::npos || ddlStatement.find("MIN_ROWS") != string::npos)
{
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "The syntax min_rows/max_rows is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.");
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED,
"The syntax min_rows/max_rows is not supported by Columnstore. Please check "
"the Columnstore syntax guide for supported syntax or data types.");
}
else if(ddlStatement.find("REPLACE TABLE") != string::npos)
else if (ddlStatement.find("REPLACE TABLE") != string::npos)
{
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "The syntax replace table is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.");
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED,
"The syntax replace table is not supported by Columnstore. Please check the "
"Columnstore syntax guide for supported syntax or data types.");
}
else if(ddlStatement.find("DROP COLUMN IF EXISTS") != string::npos)
else if (ddlStatement.find("DROP COLUMN IF EXISTS") != string::npos)
{
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "The syntax drop column if exists is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.");
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED,
"The syntax drop column if exists is not supported by Columnstore. Please "
"check the Columnstore syntax guide for supported syntax or data types.");
}
else
{
//@Bug 1888,1885. update error message
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.");
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED,
"The syntax or the data type(s) is not supported by Columnstore. Please check "
"the Columnstore syntax guide for supported syntax or data types.");
}
ci->alterTableState = cal_connection_info::NOT_ALTER;
ci->isAlter = false;
}
return rc;
}

View File

@@ -25,13 +25,11 @@
#include <string>
#include <iostream>
#include <stack>
#include <tr1/unordered_map>
#include <tr1/unordered_set>
#include <unordered.h>
#include <fstream>
#include <sstream>
#include <cerrno>
#include <cstring>
using namespace std;
#include <boost/shared_ptr.hpp>
using namespace boost;
@@ -75,6 +73,8 @@ using namespace joblist;
#include "nullstring.h"
using namespace std;
namespace
{
#define BATCH_INSERT_GROUP_ROWS_FOR_CACHE 100000

View File

@@ -21,8 +21,7 @@
#include <string>
#include <iostream>
#include <stack>
#include <tr1/unordered_map>
#include <tr1/unordered_set>
#include <unordered.h>
#include <fstream>
#include <sstream>
#include <cerrno>
@@ -36,8 +35,6 @@
#include <string.h>
using namespace std;
#include <boost/scoped_ptr.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/algorithm/string/case_conv.hpp>
@@ -99,6 +96,8 @@ using namespace funcexp;
#include "ha_view.h"
using namespace std;
namespace cal_impl_if
{
// This is taken from Item_cond::fix_fields in sql/item_cmpfunc.cc.

View File

@@ -26,6 +26,8 @@
#include "rowcolumn.h"
#include "simplefilter.h"
using namespace std;
namespace cal_impl_if
{
// In certain cases, gp_walk is called recursively. When done so,
@@ -121,15 +123,15 @@ void gp_walk(const Item* item, void* arg)
if (!scp)
break;
string aliasTableName(scp->tableAlias());
std::string aliasTableName(scp->tableAlias());
scp->tableAlias(aliasTableName);
gwip->rcWorkStack.push(scp->clone());
boost::shared_ptr<execplan::SimpleColumn> scsp(scp);
gwip->scsp = scsp;
gwip->funcName.clear();
gwip->columnMap.insert(
execplan::CalpontSelectExecutionPlan::ColumnMap::value_type(string(ifp->field_name.str), scsp));
gwip->columnMap.insert(execplan::CalpontSelectExecutionPlan::ColumnMap::value_type(
std::string(ifp->field_name.str), scsp));
//@bug4636 take where clause column as dummy projection column, but only on local column.
// varbinary aggregate is not supported yet, so rule it out
@@ -138,7 +140,7 @@ void gp_walk(const Item* item, void* arg)
{
TABLE_LIST* tmp = (ifp->cached_table ? ifp->cached_table : 0);
gwip->tableMap[execplan::make_aliastable(scp->schemaName(), scp->tableName(), scp->tableAlias(),
scp->isColumnStore())] = make_pair(1, tmp);
scp->isColumnStore())] = std::make_pair(1, tmp);
}
}
@@ -162,7 +164,8 @@ void gp_walk(const Item* item, void* arg)
if (item->type_handler() == &type_handler_hex_hybrid)
{
Item_hex_hybrid* hip = static_cast<Item_hex_hybrid*>(const_cast<Item*>(item));
gwip->rcWorkStack.push(new execplan::ConstantColumn((int64_t)hip->val_int(), execplan::ConstantColumn::NUM));
gwip->rcWorkStack.push(
new execplan::ConstantColumn((int64_t)hip->val_int(), execplan::ConstantColumn::NUM));
execplan::ConstantColumn* cc = dynamic_cast<execplan::ConstantColumn*>(gwip->rcWorkStack.top());
cc->timeZone(gwip->timeZone);
break;
@@ -175,7 +178,7 @@ void gp_walk(const Item* item, void* arg)
String val, *str = isp->val_str(&val);
if (str)
{
string cval;
std::string cval;
if (str->ptr())
{
@@ -218,7 +221,7 @@ void gp_walk(const Item* item, void* arg)
break;
}
ostringstream oss;
std::ostringstream oss;
oss << "Unhandled Item type(): " << item->type();
gwip->parseErrorText = oss.str();
gwip->fatalParseError = true;
@@ -248,7 +251,7 @@ void gp_walk(const Item* item, void* arg)
Item* ncitem = const_cast<Item*>(item);
Item_func* ifp = static_cast<Item_func*>(ncitem);
string funcName = ifp->func_name();
std::string funcName = ifp->func_name();
if (!gwip->condPush)
{
@@ -323,14 +326,14 @@ void gp_walk(const Item* item, void* arg)
}
// try to evaluate const F&E
vector<Item_field*> tmpVec;
std::vector<Item_field*> tmpVec;
uint16_t parseInfo = 0;
parse_item(ifp, tmpVec, gwip->fatalParseError, parseInfo, gwip);
// table mode takes only one table filter
if (gwip->condPush)
{
set<string> tableSet;
std::set<std::string> tableSet;
for (uint32_t i = 0; i < tmpVec.size(); i++)
{
@@ -389,7 +392,8 @@ void gp_walk(const Item* item, void* arg)
{
logging::Message::Args args;
args.add(funcName);
gwip->parseErrorText = logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_NON_SUPPORTED_FUNCTION, args);
gwip->parseErrorText =
logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_NON_SUPPORTED_FUNCTION, args);
}
return;
@@ -463,14 +467,15 @@ void gp_walk(const Item* item, void* arg)
//@bug3495, @bug5865 error out non-supported OR with correlated subquery
if (isOr)
{
vector<Item_field*> fieldVec;
std::vector<Item_field*> fieldVec;
uint16_t parseInfo = 0;
parse_item(it, fieldVec, gwip->fatalParseError, parseInfo, gwip);
if (parseInfo & CORRELATED)
{
gwip->fatalParseError = true;
gwip->parseErrorText = logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_CORRELATED_SUB_OR);
gwip->parseErrorText =
logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_CORRELATED_SUB_OR);
return;
}
}
@@ -664,7 +669,8 @@ void gp_walk(const Item* item, void* arg)
else if (col->type() == Item::FIELD_ITEM && gwip->clauseType == HAVING)
{
// ReturnedColumn* rc = buildAggFrmTempField(const_cast<Item*>(item), *gwip);
execplan::ReturnedColumn* rc = buildReturnedColumn(const_cast<Item*>(item), *gwip, gwip->fatalParseError);
execplan::ReturnedColumn* rc =
buildReturnedColumn(const_cast<Item*>(item), *gwip, gwip->fatalParseError);
if (rc)
gwip->rcWorkStack.push(rc);
@@ -735,7 +741,8 @@ void gp_walk(const Item* item, void* arg)
// temp change clause type because the elements of row column are not walked yet
gwip->clauseType = SELECT;
for (uint32_t i = 0; i < row->cols(); i++)
cols.push_back(execplan::SRCP(buildReturnedColumn(row->element_index(i), *gwip, gwip->fatalParseError)));
cols.push_back(
execplan::SRCP(buildReturnedColumn(row->element_index(i), *gwip, gwip->fatalParseError)));
gwip->clauseType = WHERE;
rowCol->columnVec(cols);
@@ -971,7 +978,8 @@ void parse_item(Item* item, vector<Item_field*>& field_vec, bool& hasNonSupportI
gwi->fatalParseError = true;
// DRRTUY The questionable error text. I've seen
// ERR_CORRELATED_SUB_OR
string parseErrorText = logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_NON_SUPPORT_SUB_QUERY_TYPE);
string parseErrorText =
logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_NON_SUPPORT_SUB_QUERY_TYPE);
setError(gwi->thd, ER_CHECK_NOT_IMPLEMENTED, parseErrorText);
break;
}
@@ -1633,4 +1641,4 @@ void debug_walk(const Item* item, void* arg)
}
}
}
} // namespace cal_impl_if

View File

@@ -24,8 +24,8 @@
#include <string>
#include <iostream>
#include <stack>
#include <tr1/unordered_map>
#include <tr1/unordered_set>
#include <unordered.h>
#include <fstream>
#include <sstream>
#include <cerrno>
@@ -36,7 +36,6 @@
#include <map>
#include <limits>
#include <wait.h> //wait()
using namespace std;
#include <boost/shared_ptr.hpp>
#include <boost/algorithm/string/case_conv.hpp>
@@ -132,6 +131,8 @@ using namespace funcexp;
#include "ha_subquery.h"
#include "statistics_manager/statistics.h"
using namespace std;
namespace cal_impl_if
{
extern bool nonConstFunc(Item_func* ifp);
@@ -176,26 +177,26 @@ const string infinidb_autoswitch_warning =
"was switched to standard mode with downgraded performance.";
// copied from item_timefunc.cc
static const string interval_names[] = {"year",
"quarter",
"month",
"week",
"day",
"hour",
"minute",
"second",
"microsecond",
"year_month",
"day_hour",
"day_minute",
"day_second",
"hour_minute",
"hour_second",
"minute_second",
"day_microsecond",
"hour_microsecond",
"minute_microsecond",
"second_microsecond"};
[[maybe_unused]] static const string interval_names[] = {"year",
"quarter",
"month",
"week",
"day",
"hour",
"minute",
"second",
"microsecond",
"year_month",
"day_hour",
"day_minute",
"day_second",
"hour_minute",
"hour_second",
"minute_second",
"day_microsecond",
"hour_microsecond",
"minute_microsecond",
"second_microsecond"};
// HDFS is never used nowadays, so don't bother
bool useHdfs = false; // ResourceManager::instance()->useHdfs();
@@ -4108,7 +4109,7 @@ int ha_mcs_impl_pushdown_init(mcs_handler_info* handler_info, TABLE* table, bool
boost::shared_ptr<CalpontSystemCatalog> csc = CalpontSystemCatalog::makeCalpontSystemCatalog(sessionID);
csc->identity(CalpontSystemCatalog::FE);
if (!get_fe_conn_info_ptr())
if (!get_fe_conn_info_ptr())
{
set_fe_conn_info_ptr((void*)new cal_connection_info());
thd_set_ha_data(thd, mcs_hton, get_fe_conn_info_ptr());

View File

@@ -21,7 +21,7 @@
#include <bitset>
#include <string>
#include <stdint.h>
#include <tr1/unordered_map>
#include <unordered.h>
#include <iosfwd>
#include <boost/shared_ptr.hpp>
#include <stack>

View File

@@ -29,7 +29,6 @@
#include <sstream>
// #include <unistd.h>
#include <iomanip>
using namespace std;
#include <boost/tokenizer.hpp>
@@ -65,6 +64,7 @@ using namespace logging;
#include <boost/algorithm/string/case_conv.hpp>
using namespace boost;
using namespace std;
namespace
{

View File

@@ -21,7 +21,8 @@
*/
#include <my_config.h>
#include <tr1/unordered_map>
#include <unordered.h>
using namespace std;
#include "idb_mysql.h"

View File

@@ -3,7 +3,6 @@
// #include <cmath>
#include <iostream>
#include <sstream>
using namespace std;
#include "idb_mysql.h"
@@ -24,6 +23,7 @@ using namespace execplan;
#include "ha_mcs_impl_if.h"
#include "ha_mcs_sysvars.h"
using namespace cal_impl_if;
using namespace std;
namespace
{

View File

@@ -24,12 +24,11 @@
/** @file */
/** class ScalarSub definition */
//#define NDEBUG
// #define NDEBUG
#define PREFER_MY_CONFIG_H
#include <my_config.h>
#include <cassert>
#include <vector>
using namespace std;
#include "idb_mysql.h"
@@ -49,6 +48,8 @@ using namespace logging;
#include "ha_subquery.h"
using namespace std;
namespace cal_impl_if
{
ScalarSub::ScalarSub(gp_walk_info& gwip) : WhereSubQuery(gwip), fReturnedColPos(0)

View File

@@ -23,11 +23,10 @@
***********************************************************************/
/** class SelectSubQuery definition */
//#define NDEBUG
// #define NDEBUG
#define PREFER_MY_CONFIG_H
#include <my_config.h>
#include <cassert>
using namespace std;
#include "idb_mysql.h"
@@ -44,6 +43,7 @@ using namespace execplan;
using namespace logging;
#include "ha_subquery.h"
using namespace std;
namespace cal_impl_if
{

View File

@@ -25,7 +25,6 @@
#include <my_config.h>
#include <iostream>
#include <string>
using namespace std;
#include "idb_mysql.h"
#include "ha_mcs_impl_if.h"
@@ -53,6 +52,8 @@ using namespace mcsv1sdk;
#include "vlarray.h"
using namespace std;
namespace cal_impl_if
{
ReturnedColumn* nullOnError(gp_walk_info& gwi)
@@ -96,7 +97,8 @@ WF_FRAME frame(Window_frame_bound::Bound_precedence_type bound, Item* offset)
}
ReturnedColumn* buildBoundExp(WF_Boundary& bound, SRCP& order, gp_walk_info& gwi)
{
if (get_fe_conn_info_ptr() == NULL) {
if (get_fe_conn_info_ptr() == NULL)
{
set_fe_conn_info_ptr((void*)new cal_connection_info());
thd_set_ha_data(current_thd, mcs_hton, get_fe_conn_info_ptr());
}
@@ -305,7 +307,8 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
// String str;
// item->print(&str, QT_INFINIDB_NO_QUOTE);
// cout << str.c_ptr() << endl;
if (get_fe_conn_info_ptr() == NULL) {
if (get_fe_conn_info_ptr() == NULL)
{
set_fe_conn_info_ptr((void*)new cal_connection_info());
thd_set_ha_data(current_thd, mcs_hton, get_fe_conn_info_ptr());
}
@@ -530,8 +533,8 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
return nullOnError(gwi);
srcp->asc(orderCol->direction == ORDER::ORDER_ASC ? true : false);
// srcp->nullsFirst(orderCol->nulls); // nulls 2-default, 1-nulls first,
//0-nulls last
// srcp->nullsFirst(orderCol->nulls); // nulls 2-default, 1-nulls
//first, 0-nulls last
srcp->nullsFirst(orderCol->direction == ORDER::ORDER_ASC
? 1
: 0); // WINDOWS TODO: implement NULLS FIRST/LAST in 10.2 front end
@@ -881,7 +884,7 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
}
#if 0
if (item_sum->sum_func() != Item_sum::UDF_SUM_FUNC &&
item_sum->sum_func() != Item_sum::SUM_FUNC &&
item_sum->sum_func() != Item_sum::SUM_FUNC &&
item_sum->sum_func() != Item_sum::SUM_DISTINCT_FUNC &&
item_sum->sum_func() != Item_sum::AVG_FUNC &&
item_sum->sum_func() != Item_sum::AVG_DISTINCT_FUNC)