You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-07 03:22:57 +03:00
Merge branch 'MCOL-597' into develop
This commit is contained in:
@@ -25,7 +25,7 @@ set_source_files_properties(ha_calpont.cpp PROPERTIES COMPILE_FLAGS "-fno-rtti -
|
||||
|
||||
add_library(calmysql SHARED ${libcalmysql_SRCS})
|
||||
|
||||
target_link_libraries(calmysql ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${NETSNMP_LIBRARIES} threadpool)
|
||||
target_link_libraries(calmysql ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${NETSNMP_LIBRARIES} ${SERVER_BUILD_INCLUDE_DIR}/../libservices/libmysqlservices.a threadpool)
|
||||
|
||||
set_target_properties(calmysql PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
||||
|
||||
@@ -34,7 +34,7 @@ SET ( is_columnstore_tables_SRCS
|
||||
)
|
||||
add_library(is_columnstore_tables SHARED ${is_columnstore_tables_SRCS})
|
||||
|
||||
target_link_libraries(is_columnstore_tables ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} threadpool)
|
||||
target_link_libraries(is_columnstore_tables ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${SERVER_BUILD_INCLUDE_DIR}/../libservices/libmysqlservices.a threadpool)
|
||||
|
||||
# Don't prepend .so file with 'lib'
|
||||
set_target_properties(is_columnstore_tables PROPERTIES PREFIX "")
|
||||
@@ -45,7 +45,7 @@ SET ( is_columnstore_columns_SRCS
|
||||
)
|
||||
add_library(is_columnstore_columns SHARED ${is_columnstore_columns_SRCS})
|
||||
|
||||
target_link_libraries(is_columnstore_columns ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} threadpool)
|
||||
target_link_libraries(is_columnstore_columns ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${SERVER_BUILD_INCLUDE_DIR}/../libservices/libmysqlservices.a threadpool)
|
||||
|
||||
# Don't prepend .so file with 'lib'
|
||||
set_target_properties(is_columnstore_columns PROPERTIES PREFIX "")
|
||||
@@ -56,7 +56,7 @@ SET ( is_columnstore_extents_SRCS
|
||||
)
|
||||
add_library(is_columnstore_extents SHARED ${is_columnstore_extents_SRCS})
|
||||
|
||||
target_link_libraries(is_columnstore_extents ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} threadpool)
|
||||
target_link_libraries(is_columnstore_extents ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${SERVER_BUILD_INCLUDE_DIR}/../libservices/libmysqlservices.a threadpool)
|
||||
|
||||
# Don't prepend .so file with 'lib'
|
||||
set_target_properties(is_columnstore_extents PROPERTIES PREFIX "")
|
||||
@@ -67,7 +67,7 @@ SET ( is_columnstore_files_SRCS
|
||||
)
|
||||
add_library(is_columnstore_files SHARED ${is_columnstore_files_SRCS})
|
||||
|
||||
target_link_libraries(is_columnstore_files ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} threadpool)
|
||||
target_link_libraries(is_columnstore_files ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${SERVER_BUILD_INCLUDE_DIR}/../libservices/libmysqlservices.a threadpool)
|
||||
|
||||
# Don't prepend .so file with 'lib'
|
||||
set_target_properties(is_columnstore_files PROPERTIES PREFIX "")
|
||||
|
@@ -121,7 +121,6 @@ static int calpont_commit(handlerton *hton, THD* thd, bool all);
|
||||
|
||||
static int calpont_rollback(handlerton *hton, THD* thd, bool all);
|
||||
static int calpont_close_connection ( handlerton *hton, THD* thd );
|
||||
static void calpont_set_error( THD*, uint64_t, LEX_STRING*, uint32_t);
|
||||
handlerton *calpont_hton;
|
||||
|
||||
/* Variables for example share methods */
|
||||
@@ -219,7 +218,6 @@ static int columnstore_init_func(void *p)
|
||||
calpont_hton->commit= calpont_commit;
|
||||
calpont_hton->rollback= calpont_rollback;
|
||||
calpont_hton->close_connection = calpont_close_connection;
|
||||
calpont_hton->set_error= calpont_set_error;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
@@ -248,7 +246,6 @@ static int infinidb_init_func(void *p)
|
||||
calpont_hton->commit= calpont_commit;
|
||||
calpont_hton->rollback= calpont_rollback;
|
||||
calpont_hton->close_connection = calpont_close_connection;
|
||||
calpont_hton->set_error= calpont_set_error;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
@@ -372,11 +369,6 @@ static int calpont_close_connection ( handlerton *hton, THD* thd )
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void calpont_set_error(THD* thd, uint64_t errCode, LEX_STRING* args, uint32_t argCount)
|
||||
{
|
||||
return ha_calpont_impl_set_error(thd, errCode, args, argCount);
|
||||
}
|
||||
|
||||
ha_calpont::ha_calpont(handlerton *hton, TABLE_SHARE *table_arg) :
|
||||
handler(hton, table_arg),
|
||||
int_table_flags(HA_BINLOG_STMT_CAPABLE | HA_BINLOG_ROW_CAPABLE |
|
||||
|
@@ -38,7 +38,6 @@
|
||||
#include <cerrno>
|
||||
#include <cstring>
|
||||
#include <time.h>
|
||||
//#define NDEBUG
|
||||
#include <cassert>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
@@ -423,7 +422,7 @@ void debug_walk(const Item *item, void *arg)
|
||||
char* item_name = item->name;
|
||||
if (!item_name)
|
||||
{
|
||||
item_name = "<NULL>";
|
||||
item_name = (char*)"<NULL>";
|
||||
}
|
||||
switch (isp->sum_func())
|
||||
{
|
||||
@@ -497,6 +496,11 @@ void debug_walk(const Item *item, void *arg)
|
||||
'.' << ifp->field_name << endl;
|
||||
break;
|
||||
}
|
||||
else if (field->type() == Item::FUNC_ITEM)
|
||||
{
|
||||
Item_func* ifp = (Item_func*)field;
|
||||
cout << "CACHED REF FUNC_ITEM " << ifp->func_name() << endl;
|
||||
}
|
||||
else if (field->type() == Item::REF_ITEM)
|
||||
{
|
||||
Item_ref* ifr = (Item_ref*)field;
|
||||
@@ -564,7 +568,20 @@ void debug_walk(const Item *item, void *arg)
|
||||
ifp->field_name << endl;
|
||||
break;
|
||||
}
|
||||
cout << "UNKNOWN REF ITEM type " << ref->real_item()->type() << endl;
|
||||
else if (ref->real_item()->type() == Item::FUNC_ITEM)
|
||||
{
|
||||
Item_func* ifp = (Item_func*)ref->real_item();
|
||||
cout << "REF FUNC_ITEM " << ifp->func_name() << endl;
|
||||
}
|
||||
else if (ref->real_item()->type() == Item::WINDOW_FUNC_ITEM)
|
||||
{
|
||||
Item_window_func* ifp = (Item_window_func*)ref->real_item();
|
||||
cout << "REF WINDOW_FUNC_ITEM " << ifp->window_func()->func_name() << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "UNKNOWN REF ITEM type " << ref->real_item()->type() << endl;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Item::ROW_ITEM:
|
||||
@@ -701,7 +718,8 @@ void debug_walk(const Item *item, void *arg)
|
||||
}
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
{
|
||||
cout << "Window Function Item" << endl;
|
||||
Item_window_func* ifp = (Item_window_func*)item;
|
||||
cout << "Window Function Item " << ifp->window_func()->func_name() << endl;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -1109,6 +1127,15 @@ bool buildRowColumnFilter(gp_walk_info* gwip, RowColumn* rhs, RowColumn* lhs, It
|
||||
bool buildPredicateItem(Item_func* ifp, gp_walk_info* gwip)
|
||||
{
|
||||
boost::shared_ptr<Operator> sop(new PredicateOperator(ifp->func_name()));
|
||||
if (ifp->functype() == Item_func::LIKE_FUNC)
|
||||
{
|
||||
// Starting with MariaDB 10.2, LIKE uses a negated flag instead of FUNC_NOT
|
||||
// Further processing is done below as before for LIKE
|
||||
if (((Item_func_like*)ifp)->negated)
|
||||
{
|
||||
sop->reverseOp();
|
||||
}
|
||||
}
|
||||
if (!(gwip->thd->infinidb_vtable.cal_conn_info))
|
||||
gwip->thd->infinidb_vtable.cal_conn_info = (void*)(new cal_connection_info());
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(gwip->thd->infinidb_vtable.cal_conn_info);
|
||||
@@ -2399,18 +2426,19 @@ ReturnedColumn* buildReturnedColumn(Item* item, gp_walk_info& gwi, bool& nonSupp
|
||||
case Item::REF_ITEM:
|
||||
{
|
||||
Item_ref* ref = (Item_ref*)item;
|
||||
if ((*(ref->ref))->type() == Item::SUM_FUNC_ITEM)
|
||||
{
|
||||
switch ((*(ref->ref))->type())
|
||||
{
|
||||
case Item::SUM_FUNC_ITEM:
|
||||
return buildAggregateColumn(*(ref->ref), gwi);
|
||||
}
|
||||
else if ((*(ref->ref))->type() == Item::FIELD_ITEM)
|
||||
case Item::FIELD_ITEM:
|
||||
return buildReturnedColumn(*(ref->ref), gwi, nonSupport);
|
||||
else if ((*(ref->ref))->type() == Item::REF_ITEM)
|
||||
case Item::REF_ITEM:
|
||||
return buildReturnedColumn(*(((Item_ref*)(*(ref->ref)))->ref), gwi, nonSupport);
|
||||
else if ((*(ref->ref))->type() == Item::FUNC_ITEM)
|
||||
case Item::FUNC_ITEM:
|
||||
return buildFunctionColumn((Item_func*)(*(ref->ref)), gwi, nonSupport);
|
||||
else
|
||||
{
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
return buildWindowFunctionColumn(*(ref->ref), gwi, nonSupport);
|
||||
default:
|
||||
gwi.fatalParseError = true;
|
||||
gwi.parseErrorText = "Unknown REF item";
|
||||
break;
|
||||
@@ -2457,6 +2485,7 @@ ReturnedColumn* buildReturnedColumn(Item* item, gp_walk_info& gwi, bool& nonSupp
|
||||
{
|
||||
return buildWindowFunctionColumn(item, gwi, nonSupport);
|
||||
}
|
||||
#if INTERVAL_ITEM
|
||||
case Item::INTERVAL_ITEM:
|
||||
{
|
||||
Item_interval* interval = (Item_interval*)item;
|
||||
@@ -2469,6 +2498,7 @@ ReturnedColumn* buildReturnedColumn(Item* item, gp_walk_info& gwi, bool& nonSupp
|
||||
rc->resultType(srcp->resultType());
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case Item::SUBSELECT_ITEM:
|
||||
{
|
||||
gwi.hasSubSelect = true;
|
||||
@@ -3500,23 +3530,24 @@ ReturnedColumn* buildAggregateColumn(Item* item, gp_walk_info& gwi)
|
||||
end=order_item + gc->order_field();order_item < end;
|
||||
order_item++)
|
||||
{
|
||||
Item *ord_col= *(*order_item)->item;
|
||||
if (ord_col->type() == Item::INT_ITEM)
|
||||
{
|
||||
Item_int* id = (Item_int*)ord_col;
|
||||
if (id->val_int() > (int)selCols.size())
|
||||
{
|
||||
gwi.fatalParseError = true;
|
||||
return NULL;
|
||||
}
|
||||
rc = selCols[id->val_int()-1]->clone();
|
||||
rc->orderPos(id->val_int()-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = buildReturnedColumn(ord_col, gwi, gwi.fatalParseError);
|
||||
}
|
||||
rc->asc((*order_item)->asc);
|
||||
Item *ord_col= *(*order_item)->item;
|
||||
if (ord_col->type() == Item::INT_ITEM)
|
||||
{
|
||||
Item_int* id = (Item_int*)ord_col;
|
||||
if (id->val_int() > (int)selCols.size())
|
||||
{
|
||||
gwi.fatalParseError = true;
|
||||
return NULL;
|
||||
}
|
||||
rc = selCols[id->val_int()-1]->clone();
|
||||
rc->orderPos(id->val_int()-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = buildReturnedColumn(ord_col, gwi, gwi.fatalParseError);
|
||||
}
|
||||
// 10.2 TODO: direction is now a tri-state flag
|
||||
rc->asc((*order_item)->direction == ORDER::ORDER_ASC ? true : false);
|
||||
orderCols.push_back(SRCP(rc));
|
||||
}
|
||||
|
||||
@@ -4379,8 +4410,6 @@ void gp_walk(const Item *item, void *arg)
|
||||
gwip->subQuery = orig;
|
||||
gwip->lastSub = existsSub;
|
||||
}
|
||||
|
||||
#if MYSQL_VERSION_ID >= 50172
|
||||
else if (sub->substype() == Item_subselect::IN_SUBS)
|
||||
{
|
||||
if (!((Item_in_subselect*)sub)->getOptimizer() && gwip->thd->derived_tables_processing)
|
||||
@@ -4392,7 +4421,6 @@ void gp_walk(const Item *item, void *arg)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// store a dummy subselect object. the transform is handled in item_func.
|
||||
SubSelect *subselect = new SubSelect();
|
||||
gwip->rcWorkStack.push(subselect);
|
||||
@@ -4426,7 +4454,7 @@ void gp_walk(const Item *item, void *arg)
|
||||
case Item::WINDOW_FUNC_ITEM:
|
||||
{
|
||||
gwip->hasWindowFunc = true;
|
||||
Item_func_window* ifa = (Item_func_window*)item;
|
||||
Item_window_func* ifa = (Item_window_func*)item;
|
||||
ReturnedColumn* af = buildWindowFunctionColumn(ifa, *gwip, gwip->fatalParseError);
|
||||
if (af)
|
||||
gwip->rcWorkStack.push(af);
|
||||
@@ -4584,6 +4612,11 @@ void parse_item (Item *item, vector<Item_field*>& field_vec, bool& hasNonSupport
|
||||
item = (*(ref->ref));
|
||||
continue;
|
||||
}
|
||||
else if ((*(ref->ref))->type() == Item::WINDOW_FUNC_ITEM)
|
||||
{
|
||||
parseInfo |= AF_BIT;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "UNKNOWN REF Item" << endl;
|
||||
@@ -5687,7 +5720,6 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
return ER_CHECK_NOT_IMPLEMENTED;
|
||||
}
|
||||
gwi.hasWindowFunc = hasWindowFunc;
|
||||
|
||||
groupcol = reinterpret_cast<ORDER*>(select_lex.group_list.first);
|
||||
|
||||
for (; groupcol; groupcol= groupcol->next)
|
||||
@@ -5938,7 +5970,6 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
if ((*(ordercol->item))->type() == Item::WINDOW_FUNC_ITEM)
|
||||
gwi.hasWindowFunc = true;
|
||||
}
|
||||
|
||||
// re-visit the first of ordercol list
|
||||
ordercol = reinterpret_cast<ORDER*>(order_list.first);
|
||||
|
||||
@@ -5989,7 +6020,7 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
return ER_CHECK_NOT_IMPLEMENTED;
|
||||
}
|
||||
}
|
||||
if (ordercol->asc)
|
||||
if (ordercol->direction == ORDER::ORDER_ASC)
|
||||
rc->asc(true);
|
||||
else
|
||||
rc->asc(false);
|
||||
@@ -6022,7 +6053,7 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
ostringstream oss;
|
||||
oss << ordercol->counter;
|
||||
ord_cols += oss.str();
|
||||
if (!ordercol->asc)
|
||||
if (ordercol->direction != ORDER::ORDER_ASC)
|
||||
ord_cols += " desc";
|
||||
continue;
|
||||
}
|
||||
@@ -6147,7 +6178,7 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
gwi.returnedCols.push_back(srcp);
|
||||
ord_cols += " `" + escapeBackTick(str.c_ptr()) + "`";
|
||||
}
|
||||
if (!ordercol->asc)
|
||||
if (ordercol->direction != ORDER::ORDER_ASC)
|
||||
ord_cols += " desc";
|
||||
continue;
|
||||
}
|
||||
@@ -6211,7 +6242,7 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
ord_item->print(&str, QT_INFINIDB);
|
||||
ord_cols += str.c_ptr();
|
||||
}
|
||||
if (!ordercol->asc)
|
||||
if (ordercol->direction != ORDER::ORDER_ASC)
|
||||
ord_cols += " desc";
|
||||
}
|
||||
}
|
||||
@@ -6551,7 +6582,7 @@ int getSelectPlan(gp_walk_info& gwi, SELECT_LEX& select_lex, SCSEP& csep, bool i
|
||||
ord_item->print(&str, QT_INFINIDB_NO_QUOTE);
|
||||
ord_cols += string(str.c_ptr());
|
||||
}
|
||||
if (!ordercol->asc)
|
||||
if (ordercol->direction != ORDER::ORDER_ASC)
|
||||
ord_cols += " desc";
|
||||
}
|
||||
}
|
||||
|
@@ -1171,7 +1171,7 @@ uint32_t doUpdateDelete(THD *thd)
|
||||
{
|
||||
multi_delete* deleteTable = (multi_delete*)((thd->lex->select_lex.join)->result);
|
||||
first_table= (TABLE_LIST*) deleteTable->get_tables();
|
||||
if (deleteTable->num_of_tables == 1)
|
||||
if (deleteTable->get_num_of_tables() == 1)
|
||||
{
|
||||
schemaName = first_table->db;
|
||||
tableName = first_table->table_name;
|
||||
@@ -3018,7 +3018,7 @@ int ha_calpont_impl_rnd_next(uchar *buf, TABLE* table)
|
||||
rc = fetchNextRow(buf, ti, ci);
|
||||
} catch (std::exception& e)
|
||||
{
|
||||
string emsg = string("Lost connection to ExeMgr while fetching: ") + e.what();
|
||||
string emsg = string("Error while fetching from ExeMgr: ") + e.what();
|
||||
setError(thd, ER_INTERNAL_ERROR, emsg);
|
||||
CalpontSystemCatalog::removeCalpontSystemCatalog(tid2sid(thd->thread_id));
|
||||
return ER_INTERNAL_ERROR;
|
||||
@@ -4391,10 +4391,11 @@ int ha_calpont_impl_external_lock(THD *thd, TABLE* table, int lock_type)
|
||||
// table mode
|
||||
if (thd->infinidb_vtable.vtable_state == THD::INFINIDB_DISABLE_VTABLE)
|
||||
{
|
||||
if (ci->traceFlags & 1)
|
||||
push_warning(thd, Sql_condition::WARN_LEVEL_NOTE, 9999, mapiter->second.conn_hndl->queryStats.c_str());
|
||||
if (mapiter->second.conn_hndl)
|
||||
{
|
||||
if (ci->traceFlags & 1)
|
||||
push_warning(thd, Sql_condition::WARN_LEVEL_NOTE, 9999, mapiter->second.conn_hndl->queryStats.c_str());
|
||||
|
||||
ci->queryStats = mapiter->second.conn_hndl->queryStats;
|
||||
ci->extendedStats = mapiter->second.conn_hndl->extendedStats;
|
||||
ci->miniStats = mapiter->second.conn_hndl->miniStats;
|
||||
@@ -4418,11 +4419,12 @@ int ha_calpont_impl_external_lock(THD *thd, TABLE* table, int lock_type)
|
||||
{
|
||||
if (thd->infinidb_vtable.vtable_state == THD::INFINIDB_SELECT_VTABLE)
|
||||
{
|
||||
if (!ci->cal_conn_hndl)
|
||||
return 0;
|
||||
|
||||
if (ci->traceFlags & 1)
|
||||
push_warning(thd, Sql_condition::WARN_LEVEL_NOTE, 9999, ci->cal_conn_hndl->queryStats.c_str());
|
||||
|
||||
if (!ci->cal_conn_hndl)
|
||||
return 0;
|
||||
ci->queryStats = ci->cal_conn_hndl->queryStats;
|
||||
ci->extendedStats = ci->cal_conn_hndl->extendedStats;
|
||||
ci->miniStats = ci->cal_conn_hndl->miniStats;
|
||||
@@ -4445,15 +4447,5 @@ int ha_calpont_impl_rnd_pos(uchar *buf, uchar *pos)
|
||||
return ER_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
// Called from mysql parser to set IDB error for window functions
|
||||
void ha_calpont_impl_set_error(THD* thd, uint64_t errCode, LEX_STRING* args, uint32_t argCount)
|
||||
{
|
||||
IDEBUG( cout << "ha_calpont_impl_ser_error" << endl);
|
||||
Message::Args arguments;
|
||||
for (uint32_t i = 0; i < argCount; i++)
|
||||
arguments.add(args[i].str);
|
||||
string emsg = logging::IDBErrorInfo::instance()->errorMsg(errCode, arguments);
|
||||
setError(thd, ER_INTERNAL_ERROR, emsg);
|
||||
}
|
||||
// vim:sw=4 ts=4:
|
||||
|
||||
|
@@ -48,7 +48,6 @@ extern int ha_calpont_impl_external_lock(THD *thd, TABLE* table, int lock_type);
|
||||
extern int ha_calpont_impl_update_row();
|
||||
extern int ha_calpont_impl_delete_row();
|
||||
extern int ha_calpont_impl_rnd_pos(uchar *buf, uchar *pos);
|
||||
extern void ha_calpont_impl_set_error(THD* thd, uint64_t errCode, LEX_STRING* args, uint32_t argCount);
|
||||
#endif
|
||||
|
||||
#ifdef NEED_CALPONT_INTERFACE
|
||||
|
@@ -63,25 +63,26 @@ ReturnedColumn* nullOnError(gp_walk_info& gwi)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
WF_FRAME frame(BOUND& bound)
|
||||
WF_FRAME frame(Window_frame_bound::Bound_precedence_type bound, Item* offset)
|
||||
{
|
||||
switch (bound)
|
||||
{
|
||||
case PRECEDING:
|
||||
return WF_PRECEDING;
|
||||
case FOLLOWING:
|
||||
return WF_FOLLOWING;
|
||||
case UNBOUNDED_PRECEDING:
|
||||
return WF_UNBOUNDED_PRECEDING;
|
||||
case UNBOUNDED_FOLLOWING:
|
||||
return WF_UNBOUNDED_FOLLOWING;
|
||||
case CURRENT_ROW:
|
||||
case Window_frame_bound::PRECEDING:
|
||||
if (offset)
|
||||
return WF_PRECEDING;
|
||||
else
|
||||
return WF_UNBOUNDED_PRECEDING;
|
||||
case Window_frame_bound::FOLLOWING:
|
||||
if (offset)
|
||||
return WF_FOLLOWING;
|
||||
else
|
||||
return WF_UNBOUNDED_FOLLOWING;
|
||||
case Window_frame_bound::CURRENT: // Offset is meaningless
|
||||
return WF_CURRENT_ROW;
|
||||
default:
|
||||
return WF_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
ReturnedColumn* buildBoundExp(WF_Boundary& bound, SRCP& order, gp_walk_info& gwi)
|
||||
{
|
||||
if (!(gwi.thd->infinidb_vtable.cal_conn_info))
|
||||
@@ -177,6 +178,102 @@ ReturnedColumn* buildBoundExp(WF_Boundary& bound, SRCP& order, gp_walk_info& gwi
|
||||
return rc;
|
||||
}
|
||||
|
||||
// Since columnstore implemented Windows Functions before MariaDB, we need
|
||||
// map from the enum MariaDB uses to the string that columnstore uses to
|
||||
// identify the function type.
|
||||
string ConvertFuncName(Item_sum* item)
|
||||
{
|
||||
switch (item->sum_func())
|
||||
{
|
||||
case Item_sum::COUNT_FUNC:
|
||||
if (!item->arguments()[0]->name)
|
||||
return "COUNT(*)";
|
||||
return "COUNT";
|
||||
break;
|
||||
case Item_sum::COUNT_DISTINCT_FUNC:
|
||||
return "COUNT_DISTINCT";
|
||||
break;
|
||||
case Item_sum::SUM_FUNC:
|
||||
return "SUM";
|
||||
break;
|
||||
case Item_sum::SUM_DISTINCT_FUNC:
|
||||
return "SUM_DISTINCT";
|
||||
break;
|
||||
case Item_sum::AVG_FUNC:
|
||||
return "AVG";
|
||||
break;
|
||||
case Item_sum::AVG_DISTINCT_FUNC:
|
||||
return "AVG_DISTINCT";
|
||||
break;
|
||||
case Item_sum::MIN_FUNC:
|
||||
return "MIN";
|
||||
break;
|
||||
case Item_sum::MAX_FUNC:
|
||||
return "MAX";
|
||||
break;
|
||||
case Item_sum::STD_FUNC:
|
||||
if (((Item_sum_variance*)item)->sample)
|
||||
return "STDDEV_SAMP";
|
||||
else
|
||||
return "STDDEV_POP";
|
||||
break;
|
||||
case Item_sum::VARIANCE_FUNC:
|
||||
if (((Item_sum_variance*)item)->sample)
|
||||
return "VAR_SAMP";
|
||||
else
|
||||
return "VAR_POP";
|
||||
break;
|
||||
case Item_sum::SUM_BIT_FUNC:
|
||||
if (strcmp(item->func_name(), "bit_or(") == 0)
|
||||
return "BIT_OR";
|
||||
if (strcmp(item->func_name(), "bit_and(") == 0)
|
||||
return "BIT_AND";
|
||||
if (strcmp(item->func_name(), "bit_xor(") == 0)
|
||||
return "BIT_XOR";
|
||||
break;
|
||||
case Item_sum::UDF_SUM_FUNC:
|
||||
return "UDF_SUM_FUNC"; // Not supported
|
||||
break;
|
||||
case Item_sum::GROUP_CONCAT_FUNC:
|
||||
return "GROUP_CONCAT"; // Not supported
|
||||
break;
|
||||
case Item_sum::ROW_NUMBER_FUNC:
|
||||
return "ROW_NUMBER";
|
||||
break;
|
||||
case Item_sum::RANK_FUNC:
|
||||
return "RANK";
|
||||
break;
|
||||
case Item_sum::DENSE_RANK_FUNC:
|
||||
return "DENSE_RANK";
|
||||
break;
|
||||
case Item_sum::PERCENT_RANK_FUNC:
|
||||
return "PERCENT_RANK";
|
||||
break;
|
||||
case Item_sum::CUME_DIST_FUNC:
|
||||
return "CUME_DIST";
|
||||
break;
|
||||
case Item_sum::NTILE_FUNC:
|
||||
return "NTILE";
|
||||
break;
|
||||
case Item_sum::FIRST_VALUE_FUNC:
|
||||
return "FIRST_VALUE";
|
||||
break;
|
||||
case Item_sum::LAST_VALUE_FUNC:
|
||||
return "LAST_VALUE";
|
||||
break;
|
||||
case Item_sum::NTH_VALUE_FUNC:
|
||||
return "NTH_VALUE";
|
||||
break;
|
||||
case Item_sum::LEAD_FUNC:
|
||||
return "LEAD";
|
||||
break;
|
||||
case Item_sum::LAG_FUNC:
|
||||
return "LAG";
|
||||
break;
|
||||
};
|
||||
return "";
|
||||
}
|
||||
|
||||
ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& nonSupport)
|
||||
{
|
||||
//@todo fix print for create view
|
||||
@@ -188,33 +285,79 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
cal_connection_info* ci = reinterpret_cast<cal_connection_info*>(gwi.thd->infinidb_vtable.cal_conn_info);
|
||||
|
||||
gwi.hasWindowFunc = true;
|
||||
Item_func_window* wf = (Item_func_window*)item;
|
||||
string funcName = wf->func_name();
|
||||
Item_window_func* wf = (Item_window_func*)item;
|
||||
string funcName = ConvertFuncName(wf->window_func());
|
||||
WindowFunctionColumn* ac = new WindowFunctionColumn(funcName);
|
||||
ac->distinct(wf->isDistinct());
|
||||
Window_context *wf_ctx = wf->window_ctx();
|
||||
ac->distinct(wf->window_func()->has_with_distinct());
|
||||
Window_spec *win_spec = wf->window_spec;
|
||||
SRCP srcp;
|
||||
// arguments
|
||||
vector<SRCP> funcParms;
|
||||
Item_sum* item_sum = (Item_sum*)wf->arguments()[0];
|
||||
for (uint32_t i = 0; i < item_sum->argument_count(); i++)
|
||||
{
|
||||
srcp.reset(buildReturnedColumn((item_sum->arguments()[i]), gwi, nonSupport));
|
||||
if (!srcp)
|
||||
return nullOnError(gwi);
|
||||
funcParms.push_back(srcp);
|
||||
if (gwi.clauseType == WHERE && !gwi.rcWorkStack.empty())
|
||||
gwi.rcWorkStack.pop();
|
||||
}
|
||||
// Some functions, such as LEAD/LAG don't have all parameters implemented in the
|
||||
// front end. Add dummies here to make the backend use defaults.
|
||||
// Some of these will be temporary until they are implemented in the front end.
|
||||
// Others need to stay because the back end expects them, but the front end
|
||||
// no longer sends them.
|
||||
// This case is kept in enum order in hopes the compiler can optimize
|
||||
switch (wf->window_func()->sum_func())
|
||||
{
|
||||
case Item_sum::COUNT_FUNC:
|
||||
case Item_sum::COUNT_DISTINCT_FUNC:
|
||||
break;
|
||||
case Item_sum::FIRST_VALUE_FUNC:
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // OFFSET (always one)
|
||||
funcParms.push_back(srcp);
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // FROM_FIRST
|
||||
funcParms.push_back(srcp);
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // IGNORE/RESPECT NULLS. 1 => RESPECT
|
||||
funcParms.push_back(srcp);
|
||||
break;
|
||||
case Item_sum::LAST_VALUE_FUNC:
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // OFFSET (always one)
|
||||
funcParms.push_back(srcp);
|
||||
srcp.reset(new ConstantColumn("0", (uint64_t)0, ConstantColumn::NUM)); // FROM_LAST
|
||||
funcParms.push_back(srcp);
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // IGNORE/RESPECT NULLS. 1 => RESPECT
|
||||
funcParms.push_back(srcp);
|
||||
break;
|
||||
case Item_sum::NTH_VALUE_FUNC:
|
||||
// When the front end supports these paramters, this needs modification
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // FROM FIRST/LAST 1 => FIRST
|
||||
funcParms.push_back(srcp);
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // IGNORE/RESPECT NULLS. 1 => RESPECT
|
||||
funcParms.push_back(srcp);
|
||||
break;
|
||||
case Item_sum::LEAD_FUNC:
|
||||
case Item_sum::LAG_FUNC:
|
||||
// When the front end supports these paramters, this needs modification
|
||||
srcp.reset(new ConstantColumn("", ConstantColumn::NULLDATA)); // Default to fill in for NULL values
|
||||
funcParms.push_back(srcp);
|
||||
srcp.reset(new ConstantColumn("1", (uint64_t)1, ConstantColumn::NUM)); // IGNORE/RESPECT NULLS. 1 => RESPECT
|
||||
funcParms.push_back(srcp);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
||||
// arguments
|
||||
vector<SRCP> funcParms;
|
||||
for (uint32_t i = 0; i < wf->argument_count(); i++)
|
||||
{
|
||||
srcp.reset(buildReturnedColumn(wf->arguments()[i], gwi, nonSupport));
|
||||
if (!srcp)
|
||||
return nullOnError(gwi);
|
||||
funcParms.push_back(srcp);
|
||||
if (gwi.clauseType == WHERE && !gwi.rcWorkStack.empty())
|
||||
gwi.rcWorkStack.pop();
|
||||
}
|
||||
ac->functionParms(funcParms);
|
||||
ac->functionParms(funcParms);
|
||||
|
||||
// Partition by
|
||||
if (wf_ctx)
|
||||
if (win_spec)
|
||||
{
|
||||
vector<SRCP> partitions;
|
||||
for (uint32_t i = 0; i < wf_ctx->partition_count; i++)
|
||||
for (ORDER *ord= win_spec->partition_list->first; ord; ord=ord->next)
|
||||
{
|
||||
srcp.reset(buildReturnedColumn(wf_ctx->partitions[i], gwi, nonSupport));
|
||||
srcp.reset(buildReturnedColumn(*ord->item, gwi, nonSupport));
|
||||
if (!srcp)
|
||||
return nullOnError(gwi);
|
||||
partitions.push_back(srcp);
|
||||
@@ -222,40 +365,42 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
ac->partitions(partitions);
|
||||
|
||||
// Order by
|
||||
if (wf_ctx->ordering)
|
||||
if (win_spec->order_list)
|
||||
{
|
||||
WF_OrderBy orderBy;
|
||||
// order columns
|
||||
if (wf_ctx->ordering->orders)
|
||||
if (win_spec->order_list)
|
||||
{
|
||||
vector<SRCP> orders;
|
||||
ORDER* orderCol = reinterpret_cast<ORDER*>(wf_ctx->ordering->orders->first);
|
||||
ORDER* orderCol = reinterpret_cast<ORDER*>(win_spec->order_list->first);
|
||||
for (; orderCol; orderCol= orderCol->next)
|
||||
{
|
||||
Item* orderItem = *(orderCol->item);
|
||||
srcp.reset(buildReturnedColumn(orderItem, gwi, nonSupport));
|
||||
if (!srcp)
|
||||
return nullOnError(gwi);
|
||||
srcp->asc(orderCol->asc);
|
||||
srcp->nullsFirst(orderCol->nulls); // nulls 1-nulls first 0-nulls last
|
||||
orders.push_back(srcp);
|
||||
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->direction == ORDER::ORDER_ASC ? 1 : 0); // WINDOWS TODO: implement NULLS FIRST/LAST in 10.2 front end
|
||||
orders.push_back(srcp);
|
||||
}
|
||||
orderBy.fOrders = orders;
|
||||
}
|
||||
|
||||
// window frame
|
||||
WF_Frame frm;
|
||||
if (wf_ctx->ordering->frame)
|
||||
if (win_spec->window_frame)
|
||||
{
|
||||
frm.fIsRange = wf_ctx->ordering->frame->isRange;
|
||||
frm.fIsRange = win_spec->window_frame->units == Window_frame::UNITS_RANGE;
|
||||
// start
|
||||
if (wf_ctx->ordering->frame->start)
|
||||
if (win_spec->window_frame->top_bound)
|
||||
{
|
||||
frm.fStart.fFrame = frame(wf_ctx->ordering->frame->start->bound);
|
||||
frm.fStart.fFrame = frame(win_spec->window_frame->top_bound->precedence_type,
|
||||
win_spec->window_frame->top_bound->offset); // offset NULL means UNBOUNDED
|
||||
|
||||
if (wf_ctx->ordering->frame->start->item)
|
||||
if (win_spec->window_frame->top_bound->offset)
|
||||
{
|
||||
frm.fStart.fVal.reset(buildReturnedColumn(wf_ctx->ordering->frame->start->item, gwi, nonSupport));
|
||||
frm.fStart.fVal.reset(buildReturnedColumn(win_spec->window_frame->top_bound->offset, gwi, nonSupport));
|
||||
if (!frm.fStart.fVal)
|
||||
return nullOnError(gwi);
|
||||
|
||||
@@ -293,12 +438,13 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
}
|
||||
|
||||
// end
|
||||
if (wf_ctx->ordering->frame->end)
|
||||
if (win_spec->window_frame->bottom_bound)
|
||||
{
|
||||
frm.fEnd.fFrame = frame(wf_ctx->ordering->frame->end->bound);
|
||||
if (wf_ctx->ordering->frame->end->item)
|
||||
frm.fEnd.fFrame = frame(win_spec->window_frame->bottom_bound->precedence_type,
|
||||
win_spec->window_frame->bottom_bound->offset);
|
||||
if (win_spec->window_frame->bottom_bound->offset)
|
||||
{
|
||||
frm.fEnd.fVal.reset(buildReturnedColumn(wf_ctx->ordering->frame->end->item, gwi, nonSupport));
|
||||
frm.fEnd.fVal.reset(buildReturnedColumn(win_spec->window_frame->bottom_bound->offset, gwi, nonSupport));
|
||||
if (!frm.fEnd.fVal)
|
||||
return nullOnError(gwi);
|
||||
|
||||
@@ -407,8 +553,58 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
}
|
||||
else
|
||||
{
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
// Certain function types have different default boundaries
|
||||
// This case is kept in enum order in hopes the compiler can optimize
|
||||
switch (wf->window_func()->sum_func())
|
||||
{
|
||||
case Item_sum::COUNT_FUNC:
|
||||
case Item_sum::COUNT_DISTINCT_FUNC:
|
||||
case Item_sum::SUM_FUNC:
|
||||
case Item_sum::SUM_DISTINCT_FUNC:
|
||||
case Item_sum::AVG_FUNC:
|
||||
case Item_sum::AVG_DISTINCT_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
break;
|
||||
case Item_sum::MIN_FUNC:
|
||||
case Item_sum::MAX_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
// frm.fEnd.fFrame = WF_UNBOUNDED_FOLLOWING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
break;
|
||||
case Item_sum::STD_FUNC:
|
||||
case Item_sum::VARIANCE_FUNC:
|
||||
case Item_sum::SUM_BIT_FUNC:
|
||||
case Item_sum::UDF_SUM_FUNC:
|
||||
case Item_sum::GROUP_CONCAT_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
break;
|
||||
case Item_sum::ROW_NUMBER_FUNC:
|
||||
case Item_sum::RANK_FUNC:
|
||||
case Item_sum::DENSE_RANK_FUNC:
|
||||
case Item_sum::PERCENT_RANK_FUNC:
|
||||
case Item_sum::CUME_DIST_FUNC:
|
||||
case Item_sum::NTILE_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_UNBOUNDED_FOLLOWING;
|
||||
break;
|
||||
case Item_sum::FIRST_VALUE_FUNC:
|
||||
case Item_sum::LAST_VALUE_FUNC:
|
||||
case Item_sum::NTH_VALUE_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
break;
|
||||
case Item_sum::LEAD_FUNC:
|
||||
case Item_sum::LAG_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_UNBOUNDED_FOLLOWING;
|
||||
break;
|
||||
default:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
orderBy.fFrame = frm;
|
||||
@@ -424,8 +620,7 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ac->resultType(colType_MysqlToIDB(wf));
|
||||
|
||||
ac->resultType(colType_MysqlToIDB(wf->arguments()[0]));
|
||||
// bug5736. Make the result type double for some window functions when
|
||||
// infinidb_double_for_decimal_math is set.
|
||||
ac->adjustResultType();
|
||||
|
@@ -65,6 +65,8 @@ template <class T> bool isnan(T);
|
||||
|
||||
#include "sql_table.h"
|
||||
#include "sql_select.h"
|
||||
#include "mysqld_error.h"
|
||||
#include "item_windowfunc.h"
|
||||
|
||||
// Now clean up the pollution as best we can...
|
||||
#undef min
|
||||
|
@@ -99,7 +99,7 @@ CREATE TABLE IF NOT EXISTS infinidb_querystats.querystats
|
||||
query varchar(8000),
|
||||
startTime timestamp NOT NULL,
|
||||
endTime timestamp NOT NULL,
|
||||
rows bigint,
|
||||
`rows` bigint,
|
||||
errno int,
|
||||
phyIO bigint,
|
||||
cacheIO bigint,
|
||||
|
@@ -44,6 +44,7 @@ query_cache_size = 0
|
||||
thread_stack = 512K
|
||||
lower_case_table_names=1
|
||||
group_concat_max_len=512
|
||||
sql_mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
|
||||
|
||||
# Enable compression by default on create, set to 0 to turn off
|
||||
infinidb_compression_type=2
|
||||
|
@@ -197,6 +197,198 @@
|
||||
<Folder
|
||||
Name="Source Files"
|
||||
Filters="*.c;*.C;*.cc;*.cpp;*.cp;*.cxx;*.c++;*.prg;*.pas;*.dpr;*.asm;*.s;*.bas;*.java;*.cs;*.sc;*.e;*.cob;*.html;*.rc;*.tcl;*.py;*.pl;*.d">
|
||||
<Folder
|
||||
Name="mysql.sql source"
|
||||
Filters="">
|
||||
<F N="../../../sql/compat56.cc"/>
|
||||
<F N="../../../sql/create_options.cc"/>
|
||||
<F N="../../../sql/datadict.cc"/>
|
||||
<F N="../../../sql/debug_sync.cc"/>
|
||||
<F N="../../../sql/derror.cc"/>
|
||||
<F N="../../../sql/des_key_file.cc"/>
|
||||
<F N="../../../sql/discover.cc"/>
|
||||
<F N="../../../sql/encryption.cc"/>
|
||||
<F N="../../../sql/event_data_objects.cc"/>
|
||||
<F N="../../../sql/event_db_repository.cc"/>
|
||||
<F N="../../../sql/event_parse_data.cc"/>
|
||||
<F N="../../../sql/event_queue.cc"/>
|
||||
<F N="../../../sql/event_scheduler.cc"/>
|
||||
<F N="../../../sql/events.cc"/>
|
||||
<F N="../../../sql/field.cc"/>
|
||||
<F N="../../../sql/field_conv.cc"/>
|
||||
<F N="../../../sql/filesort.cc"/>
|
||||
<F N="../../../sql/filesort_utils.cc"/>
|
||||
<F N="../../../sql/gcalc_slicescan.cc"/>
|
||||
<F N="../../../sql/gcalc_tools.cc"/>
|
||||
<F N="../../../sql/gen_lex_hash.cc"/>
|
||||
<F N="../../../sql/gen_lex_token.cc"/>
|
||||
<F N="../../../sql/group_by_handler.cc"/>
|
||||
<F N="../../../sql/gstream.cc"/>
|
||||
<F N="../../../sql/ha_partition.cc"/>
|
||||
<F N="../../../sql/handler.cc"/>
|
||||
<F N="../../../sql/hash_filo.cc"/>
|
||||
<F N="../../../sql/hostname.cc"/>
|
||||
<F N="../../../sql/init.cc"/>
|
||||
<F N="../../../sql/item.cc"/>
|
||||
<F N="../../../sql/item_buff.cc"/>
|
||||
<F N="../../../sql/item_cmpfunc.cc"/>
|
||||
<F N="../../../sql/item_create.cc"/>
|
||||
<F N="../../../sql/item_func.cc"/>
|
||||
<F N="../../../sql/item_geofunc.cc"/>
|
||||
<F N="../../../sql/item_inetfunc.cc"/>
|
||||
<F N="../../../sql/item_jsonfunc.cc"/>
|
||||
<F N="../../../sql/item_row.cc"/>
|
||||
<F N="../../../sql/item_strfunc.cc"/>
|
||||
<F N="../../../sql/item_subselect.cc"/>
|
||||
<F N="../../../sql/item_sum.cc"/>
|
||||
<F N="../../../sql/item_timefunc.cc"/>
|
||||
<F N="../../../sql/item_windowfunc.cc"/>
|
||||
<F N="../../../sql/item_xmlfunc.cc"/>
|
||||
<F N="../../../sql/key.cc"/>
|
||||
<F N="../../../sql/keycaches.cc"/>
|
||||
<F N="../../../sql/lock.cc"/>
|
||||
<F N="../../../sql/log.cc"/>
|
||||
<F N="../../../sql/log_event.cc"/>
|
||||
<F N="../../../sql/log_event_old.cc"/>
|
||||
<F N="../../../sql/main.cc"/>
|
||||
<F N="../../../sql/mdl.cc"/>
|
||||
<F N="../../../sql/mf_iocache.cc"/>
|
||||
<F N="../../../sql/mf_iocache_encr.cc"/>
|
||||
<F N="../../../sql/multi_range_read.cc"/>
|
||||
<F N="../../../sql/my_apc.cc"/>
|
||||
<F N="../../../sql/my_decimal.cc"/>
|
||||
<F N="../../../sql/my_json_writer.cc"/>
|
||||
<F N="../../../sql/mysql_install_db.cc"/>
|
||||
<F N="../../../sql/mysql_upgrade_service.cc"/>
|
||||
<F N="../../../sql/mysqld.cc"/>
|
||||
<F N="../../../sql/net_serv.cc"/>
|
||||
<F N="../../../sql/nt_servc.cc"/>
|
||||
<F N="../../../sql/opt_index_cond_pushdown.cc"/>
|
||||
<F N="../../../sql/opt_range.cc"/>
|
||||
<F N="../../../sql/opt_range_mrr.cc"/>
|
||||
<F N="../../../sql/opt_subselect.cc"/>
|
||||
<F N="../../../sql/opt_sum.cc"/>
|
||||
<F N="../../../sql/opt_table_elimination.cc"/>
|
||||
<F N="../../../sql/parse_file.cc"/>
|
||||
<F N="../../../sql/partition_info.cc"/>
|
||||
<F N="../../../sql/procedure.cc"/>
|
||||
<F N="../../../sql/protocol.cc"/>
|
||||
<F N="../../../sql/records.cc"/>
|
||||
<F N="../../../sql/repl_failsafe.cc"/>
|
||||
<F N="../../../sql/rpl_filter.cc"/>
|
||||
<F N="../../../sql/rpl_gtid.cc"/>
|
||||
<F N="../../../sql/rpl_handler.cc"/>
|
||||
<F N="../../../sql/rpl_injector.cc"/>
|
||||
<F N="../../../sql/rpl_mi.cc"/>
|
||||
<F N="../../../sql/rpl_parallel.cc"/>
|
||||
<F N="../../../sql/rpl_record.cc"/>
|
||||
<F N="../../../sql/rpl_record_old.cc"/>
|
||||
<F N="../../../sql/rpl_reporting.cc"/>
|
||||
<F N="../../../sql/rpl_rli.cc"/>
|
||||
<F N="../../../sql/rpl_tblmap.cc"/>
|
||||
<F N="../../../sql/rpl_utility.cc"/>
|
||||
<F N="../../../sql/scheduler.cc"/>
|
||||
<F N="../../../sql/session_tracker.cc"/>
|
||||
<F N="../../../sql/set_var.cc"/>
|
||||
<F N="../../../sql/sha2.cc"/>
|
||||
<F N="../../../sql/signal_handler.cc"/>
|
||||
<F N="../../../sql/slave.cc"/>
|
||||
<F N="../../../sql/sp.cc"/>
|
||||
<F N="../../../sql/sp_cache.cc"/>
|
||||
<F N="../../../sql/sp_head.cc"/>
|
||||
<F N="../../../sql/sp_pcontext.cc"/>
|
||||
<F N="../../../sql/sp_rcontext.cc"/>
|
||||
<F N="../../../sql/spatial.cc"/>
|
||||
<F N="../../../sql/sql_acl.cc"/>
|
||||
<F N="../../../sql/sql_admin.cc"/>
|
||||
<F N="../../../sql/sql_alter.cc"/>
|
||||
<F N="../../../sql/sql_analyse.cc"/>
|
||||
<F N="../../../sql/sql_analyze_stmt.cc"/>
|
||||
<F N="../../../sql/sql_audit.cc"/>
|
||||
<F N="../../../sql/sql_base.cc"/>
|
||||
<F N="../../../sql/sql_binlog.cc"/>
|
||||
<F N="../../../sql/sql_bootstrap.cc"/>
|
||||
<F N="../../../sql/sql_builtin.cc"/>
|
||||
<F N="../../../sql/sql_cache.cc"/>
|
||||
<F N="../../../sql/sql_class.cc"/>
|
||||
<F N="../../../sql/sql_client.cc"/>
|
||||
<F N="../../../sql/sql_connect.cc"/>
|
||||
<F N="../../../sql/sql_crypt.cc"/>
|
||||
<F N="../../../sql/sql_cte.cc"/>
|
||||
<F N="../../../sql/sql_cursor.cc"/>
|
||||
<F N="../../../sql/sql_db.cc"/>
|
||||
<F N="../../../sql/sql_delete.cc"/>
|
||||
<F N="../../../sql/sql_derived.cc"/>
|
||||
<F N="../../../sql/sql_digest.cc"/>
|
||||
<F N="../../../sql/sql_do.cc"/>
|
||||
<F N="../../../sql/sql_error.cc"/>
|
||||
<F N="../../../sql/sql_explain.cc"/>
|
||||
<F N="../../../sql/sql_expression_cache.cc"/>
|
||||
<F N="../../../sql/sql_get_diagnostics.cc"/>
|
||||
<F N="../../../sql/sql_handler.cc"/>
|
||||
<F N="../../../sql/sql_help.cc"/>
|
||||
<F N="../../../sql/sql_insert.cc"/>
|
||||
<F N="../../../sql/sql_join_cache.cc"/>
|
||||
<F N="../../../sql/sql_lex.cc"/>
|
||||
<F N="../../../sql/sql_list.cc"/>
|
||||
<F N="../../../sql/sql_load.cc"/>
|
||||
<F N="../../../sql/sql_locale.cc"/>
|
||||
<F N="../../../sql/sql_manager.cc"/>
|
||||
<F N="../../../sql/sql_parse.cc"/>
|
||||
<F N="../../../sql/sql_partition.cc"/>
|
||||
<F N="../../../sql/sql_partition_admin.cc"/>
|
||||
<F N="../../../sql/sql_plugin.cc"/>
|
||||
<F N="../../../sql/sql_prepare.cc"/>
|
||||
<F N="../../../sql/sql_profile.cc"/>
|
||||
<F N="../../../sql/sql_reload.cc"/>
|
||||
<F N="../../../sql/sql_rename.cc"/>
|
||||
<F N="../../../sql/sql_repl.cc"/>
|
||||
<F N="../../../sql/sql_select.cc"/>
|
||||
<F N="../../../sql/sql_servers.cc"/>
|
||||
<F N="../../../sql/sql_show.cc"/>
|
||||
<F N="../../../sql/sql_signal.cc"/>
|
||||
<F N="../../../sql/sql_statistics.cc"/>
|
||||
<F N="../../../sql/sql_string.cc"/>
|
||||
<F N="../../../sql/sql_table.cc"/>
|
||||
<F N="../../../sql/sql_tablespace.cc"/>
|
||||
<F N="../../../sql/sql_test.cc"/>
|
||||
<F N="../../../sql/sql_time.cc"/>
|
||||
<F N="../../../sql/sql_trigger.cc"/>
|
||||
<F N="../../../sql/sql_truncate.cc"/>
|
||||
<F N="../../../sql/sql_type.cc"/>
|
||||
<F N="../../../sql/sql_udf.cc"/>
|
||||
<F N="../../../sql/sql_union.cc"/>
|
||||
<F N="../../../sql/sql_update.cc"/>
|
||||
<F N="../../../sql/sql_view.cc"/>
|
||||
<F N="../../../sql/sql_window.cc"/>
|
||||
<F N="../../../sql/sql_yacc.cc"/>
|
||||
<F N="../../../sql/sql_yacc.yy"/>
|
||||
<F N="../../../sql/strfunc.cc"/>
|
||||
<F N="../../../sql/sys_vars.cc"/>
|
||||
<F N="../../../sql/table.cc"/>
|
||||
<F N="../../../sql/table_cache.cc"/>
|
||||
<F N="../../../sql/temporary_tables.cc"/>
|
||||
<F N="../../../sql/thr_malloc.cc"/>
|
||||
<F N="../../../sql/threadpool_common.cc"/>
|
||||
<F N="../../../sql/threadpool_generic.cc"/>
|
||||
<F N="../../../sql/threadpool_win.cc"/>
|
||||
<F N="../../../sql/transaction.cc"/>
|
||||
<F N="../../../sql/tztime.cc"/>
|
||||
<F N="../../../sql/uniques.cc"/>
|
||||
<F N="../../../sql/unireg.cc"/>
|
||||
<F N="../../../sql/wsrep_applier.cc"/>
|
||||
<F N="../../../sql/wsrep_binlog.cc"/>
|
||||
<F N="../../../sql/wsrep_check_opts.cc"/>
|
||||
<F N="../../../sql/wsrep_dummy.cc"/>
|
||||
<F N="../../../sql/wsrep_hton.cc"/>
|
||||
<F N="../../../sql/wsrep_mysqld.cc"/>
|
||||
<F N="../../../sql/wsrep_notify.cc"/>
|
||||
<F N="../../../sql/wsrep_sst.cc"/>
|
||||
<F N="../../../sql/wsrep_thd.cc"/>
|
||||
<F N="../../../sql/wsrep_utils.cc"/>
|
||||
<F N="../../../sql/wsrep_var.cc"/>
|
||||
<F N="../../../sql/wsrep_xid.cc"/>
|
||||
</Folder>
|
||||
<F N="ha_autoi.cpp"/>
|
||||
<F N="ha_calpont.cpp"/>
|
||||
<F N="ha_calpont_ddl.cpp"/>
|
||||
@@ -218,204 +410,210 @@
|
||||
<Folder
|
||||
Name="Header Files"
|
||||
Filters="*.h;*.H;*.hh;*.hpp;*.hxx;*.inc;*.sh;*.cpy;*.if">
|
||||
<F N="../../../mariadb/sql/authors.h"/>
|
||||
<F N="../../../mariadb/sql/bounded_queue.h"/>
|
||||
<F N="../../../mariadb/sql/client_settings.h"/>
|
||||
<F N="../../../mariadb/sql/compat56.h"/>
|
||||
<F N="../../../mariadb/sql/contributors.h"/>
|
||||
<F N="../../../mariadb/sql/create_options.h"/>
|
||||
<F N="../../../mariadb/sql/custom_conf.h"/>
|
||||
<F N="../../../mariadb/sql/datadict.h"/>
|
||||
<F N="../../../mariadb/sql/debug_sync.h"/>
|
||||
<F N="../../../mariadb/sql/derror.h"/>
|
||||
<F N="../../../mariadb/sql/des_key_file.h"/>
|
||||
<F N="../../../mariadb/sql/discover.h"/>
|
||||
<F N="../../../mariadb/sql/errorids.h"/>
|
||||
<F N="../../../mariadb/sql/event_data_objects.h"/>
|
||||
<F N="../../../mariadb/sql/event_db_repository.h"/>
|
||||
<F N="../../../mariadb/sql/event_parse_data.h"/>
|
||||
<F N="../../../mariadb/sql/event_queue.h"/>
|
||||
<F N="../../../mariadb/sql/event_scheduler.h"/>
|
||||
<F N="../../../mariadb/sql/events.h"/>
|
||||
<F N="../../../mariadb/sql/field.h"/>
|
||||
<F N="../../../mariadb/sql/filesort.h"/>
|
||||
<F N="../../../mariadb/sql/filesort_utils.h"/>
|
||||
<F N="../../../mariadb/sql/gcalc_slicescan.h"/>
|
||||
<F N="../../../mariadb/sql/gcalc_tools.h"/>
|
||||
<F N="../../../mariadb/sql/group_by_handler.h"/>
|
||||
<F N="../../../mariadb/sql/gstream.h"/>
|
||||
<Folder
|
||||
Name="mysql.sql headers"
|
||||
Filters="">
|
||||
<F N="../../../sql/bounded_queue.h"/>
|
||||
<F N="../../../sql/client_settings.h"/>
|
||||
<F N="../../../sql/compat56.h"/>
|
||||
<F N="../../../sql/contributors.h"/>
|
||||
<F N="../../../sql/create_options.h"/>
|
||||
<F N="../../../sql/custom_conf.h"/>
|
||||
<F N="../../../sql/datadict.h"/>
|
||||
<F N="../../../sql/debug_sync.h"/>
|
||||
<F N="../../../sql/derror.h"/>
|
||||
<F N="../../../sql/des_key_file.h"/>
|
||||
<F N="../../../sql/discover.h"/>
|
||||
<F N="../../../sql/event_data_objects.h"/>
|
||||
<F N="../../../sql/event_db_repository.h"/>
|
||||
<F N="../../../sql/event_parse_data.h"/>
|
||||
<F N="../../../sql/event_queue.h"/>
|
||||
<F N="../../../sql/event_scheduler.h"/>
|
||||
<F N="../../../sql/events.h"/>
|
||||
<F N="../../../sql/field.h"/>
|
||||
<F N="../../../sql/filesort.h"/>
|
||||
<F N="../../../sql/filesort_utils.h"/>
|
||||
<F N="../../../sql/gcalc_slicescan.h"/>
|
||||
<F N="../../../sql/gcalc_tools.h"/>
|
||||
<F N="../../../sql/group_by_handler.h"/>
|
||||
<F N="../../../sql/gstream.h"/>
|
||||
<F N="../../../sql/ha_partition.h"/>
|
||||
<F N="../../../sql/handler.h"/>
|
||||
<F N="../../../sql/hash_filo.h"/>
|
||||
<F N="../../../sql/hostname.h"/>
|
||||
<F N="../../../sql/init.h"/>
|
||||
<F N="../../../sql/innodb_priv.h"/>
|
||||
<F N="../../../sql/item.h"/>
|
||||
<F N="../../../sql/item_cmpfunc.h"/>
|
||||
<F N="../../../sql/item_create.h"/>
|
||||
<F N="../../../sql/item_func.h"/>
|
||||
<F N="../../../sql/item_geofunc.h"/>
|
||||
<F N="../../../sql/item_inetfunc.h"/>
|
||||
<F N="../../../sql/item_jsonfunc.h"/>
|
||||
<F N="../../../sql/item_row.h"/>
|
||||
<F N="../../../sql/item_strfunc.h"/>
|
||||
<F N="../../../sql/item_subselect.h"/>
|
||||
<F N="../../../sql/item_sum.h"/>
|
||||
<F N="../../../sql/item_timefunc.h"/>
|
||||
<F N="../../../sql/item_windowfunc.h"/>
|
||||
<F N="../../../sql/item_xmlfunc.h"/>
|
||||
<F N="../../../sql/key.h"/>
|
||||
<F N="../../../sql/keycaches.h"/>
|
||||
<F N="../../../sql/lex.h"/>
|
||||
<F N="../../../sql/lex_hash.h"/>
|
||||
<F N="../../../sql/lex_symbol.h"/>
|
||||
<F N="../../../sql/lex_token.h"/>
|
||||
<F N="../../../sql/lock.h"/>
|
||||
<F N="../../../sql/log.h"/>
|
||||
<F N="../../../sql/log_event.h"/>
|
||||
<F N="../../../sql/log_event_old.h"/>
|
||||
<F N="../../../sql/log_slow.h"/>
|
||||
<F N="../../../sql/mdl.h"/>
|
||||
<F N="../../../sql/mem_root_array.h"/>
|
||||
<F N="../../../sql/message.h"/>
|
||||
<F N="../../../sql/multi_range_read.h"/>
|
||||
<F N="../../../sql/my_apc.h"/>
|
||||
<F N="../../../sql/my_decimal.h"/>
|
||||
<F N="../../../sql/my_json_writer.h"/>
|
||||
<F N="../../../sql/mysqld.h"/>
|
||||
<F N="../../../sql/mysqld_suffix.h"/>
|
||||
<F N="../../../sql/nt_servc.h"/>
|
||||
<F N="../../../sql/opt_range.h"/>
|
||||
<F N="../../../sql/opt_subselect.h"/>
|
||||
<F N="../../../sql/parse_file.h"/>
|
||||
<F N="../../../sql/partition_element.h"/>
|
||||
<F N="../../../sql/partition_info.h"/>
|
||||
<F N="../../../sql/procedure.h"/>
|
||||
<F N="../../../sql/protocol.h"/>
|
||||
<F N="../../../sql/records.h"/>
|
||||
<F N="../../../sql/repl_failsafe.h"/>
|
||||
<F N="../../../sql/replication.h"/>
|
||||
<F N="../../../sql/rpl_constants.h"/>
|
||||
<F N="../../../sql/rpl_filter.h"/>
|
||||
<F N="../../../sql/rpl_gtid.h"/>
|
||||
<F N="../../../sql/rpl_handler.h"/>
|
||||
<F N="../../../sql/rpl_injector.h"/>
|
||||
<F N="../../../sql/rpl_mi.h"/>
|
||||
<F N="../../../sql/rpl_parallel.h"/>
|
||||
<F N="../../../sql/rpl_record.h"/>
|
||||
<F N="../../../sql/rpl_record_old.h"/>
|
||||
<F N="../../../sql/rpl_reporting.h"/>
|
||||
<F N="../../../sql/rpl_rli.h"/>
|
||||
<F N="../../../sql/rpl_tblmap.h"/>
|
||||
<F N="../../../sql/rpl_utility.h"/>
|
||||
<F N="../../../sql/scheduler.h"/>
|
||||
<F N="../../../sql/session_tracker.h"/>
|
||||
<F N="../../../sql/set_var.h"/>
|
||||
<F N="../../../sql/slave.h"/>
|
||||
<F N="../../../sql/sp.h"/>
|
||||
<F N="../../../sql/sp_cache.h"/>
|
||||
<F N="../../../sql/sp_head.h"/>
|
||||
<F N="../../../sql/sp_pcontext.h"/>
|
||||
<F N="../../../sql/sp_rcontext.h"/>
|
||||
<F N="../../../sql/spatial.h"/>
|
||||
<F N="../../../sql/sql_acl.h"/>
|
||||
<F N="../../../sql/sql_admin.h"/>
|
||||
<F N="../../../sql/sql_alter.h"/>
|
||||
<F N="../../../sql/sql_analyse.h"/>
|
||||
<F N="../../../sql/sql_analyze_stmt.h"/>
|
||||
<F N="../../../sql/sql_array.h"/>
|
||||
<F N="../../../sql/sql_audit.h"/>
|
||||
<F N="../../../sql/sql_base.h"/>
|
||||
<F N="../../../sql/sql_basic_types.h"/>
|
||||
<F N="../../../sql/sql_binlog.h"/>
|
||||
<F N="../../../sql/sql_bitmap.h"/>
|
||||
<F N="../../../sql/sql_bootstrap.h"/>
|
||||
<F N="../../../sql/sql_cache.h"/>
|
||||
<F N="../../../sql/sql_callback.h"/>
|
||||
<F N="../../../sql/sql_class.h"/>
|
||||
<F N="../../../sql/sql_cmd.h"/>
|
||||
<F N="../../../sql/sql_connect.h"/>
|
||||
<F N="../../../sql/sql_const.h"/>
|
||||
<F N="../../../sql/sql_crypt.h"/>
|
||||
<F N="../../../sql/sql_cte.h"/>
|
||||
<F N="../../../sql/sql_cursor.h"/>
|
||||
<F N="../../../sql/sql_db.h"/>
|
||||
<F N="../../../sql/sql_delete.h"/>
|
||||
<F N="../../../sql/sql_derived.h"/>
|
||||
<F N="../../../sql/sql_digest.h"/>
|
||||
<F N="../../../sql/sql_digest_stream.h"/>
|
||||
<F N="../../../sql/sql_do.h"/>
|
||||
<F N="../../../sql/sql_error.h"/>
|
||||
<F N="../../../sql/sql_explain.h"/>
|
||||
<F N="../../../sql/sql_expression_cache.h"/>
|
||||
<F N="../../../sql/sql_get_diagnostics.h"/>
|
||||
<F N="../../../sql/sql_handler.h"/>
|
||||
<F N="../../../sql/sql_help.h"/>
|
||||
<F N="../../../sql/sql_hset.h"/>
|
||||
<F N="../../../sql/sql_insert.h"/>
|
||||
<F N="../../../sql/sql_join_cache.h"/>
|
||||
<F N="../../../sql/sql_lex.h"/>
|
||||
<F N="../../../sql/sql_lifo_buffer.h"/>
|
||||
<F N="../../../sql/sql_list.h"/>
|
||||
<F N="../../../sql/sql_load.h"/>
|
||||
<F N="../../../sql/sql_locale.h"/>
|
||||
<F N="../../../sql/sql_manager.h"/>
|
||||
<F N="../../../sql/sql_parse.h"/>
|
||||
<F N="../../../sql/sql_partition.h"/>
|
||||
<F N="../../../sql/sql_partition_admin.h"/>
|
||||
<F N="../../../sql/sql_plist.h"/>
|
||||
<F N="../../../sql/sql_plugin.h"/>
|
||||
<F N="../../../sql/sql_plugin_compat.h"/>
|
||||
<F N="../../../sql/sql_prepare.h"/>
|
||||
<F N="../../../sql/sql_priv.h"/>
|
||||
<F N="../../../sql/sql_profile.h"/>
|
||||
<F N="../../../sql/sql_reload.h"/>
|
||||
<F N="../../../sql/sql_rename.h"/>
|
||||
<F N="../../../sql/sql_repl.h"/>
|
||||
<F N="../../../sql/sql_select.h"/>
|
||||
<F N="../../../sql/sql_servers.h"/>
|
||||
<F N="../../../sql/sql_show.h"/>
|
||||
<F N="../../../sql/sql_signal.h"/>
|
||||
<F N="../../../sql/sql_sort.h"/>
|
||||
<F N="../../../sql/sql_statistics.h"/>
|
||||
<F N="../../../sql/sql_string.h"/>
|
||||
<F N="../../../sql/sql_table.h"/>
|
||||
<F N="../../../sql/sql_tablespace.h"/>
|
||||
<F N="../../../sql/sql_test.h"/>
|
||||
<F N="../../../sql/sql_time.h"/>
|
||||
<F N="../../../sql/sql_trigger.h"/>
|
||||
<F N="../../../sql/sql_truncate.h"/>
|
||||
<F N="../../../sql/sql_type.h"/>
|
||||
<F N="../../../sql/sql_udf.h"/>
|
||||
<F N="../../../sql/sql_union.h"/>
|
||||
<F N="../../../sql/sql_update.h"/>
|
||||
<F N="../../../sql/sql_view.h"/>
|
||||
<F N="../../../sql/sql_window.h"/>
|
||||
<F N="../../../sql/sql_yacc.h"/>
|
||||
<F N="../../../sql/strfunc.h"/>
|
||||
<F N="../../../sql/structs.h"/>
|
||||
<F N="../../../sql/sys_vars_shared.h"/>
|
||||
<F N="../../../sql/table.h"/>
|
||||
<F N="../../../sql/table_cache.h"/>
|
||||
<F N="../../../sql/thr_malloc.h"/>
|
||||
<F N="../../../sql/threadpool.h"/>
|
||||
<F N="../../../sql/transaction.h"/>
|
||||
<F N="../../../sql/tzfile.h"/>
|
||||
<F N="../../../sql/tztime.h"/>
|
||||
<F N="../../../sql/uniques.h"/>
|
||||
<F N="../../../sql/unireg.h"/>
|
||||
<F N="../../../sql/winservice.h"/>
|
||||
<F N="../../../sql/wsrep_applier.h"/>
|
||||
<F N="../../../sql/wsrep_binlog.h"/>
|
||||
<F N="../../../sql/wsrep_mysqld.h"/>
|
||||
<F N="../../../sql/wsrep_priv.h"/>
|
||||
<F N="../../../sql/wsrep_sst.h"/>
|
||||
<F N="../../../sql/wsrep_thd.h"/>
|
||||
<F N="../../../sql/wsrep_utils.h"/>
|
||||
<F N="../../../sql/wsrep_var.h"/>
|
||||
<F N="../../../sql/wsrep_xid.h"/>
|
||||
</Folder>
|
||||
<F N="ha_calpont.h"/>
|
||||
<F N="ha_calpont_impl.h"/>
|
||||
<F N="ha_calpont_impl_if.h"/>
|
||||
<F N="../../../mariadb/sql/ha_partition.h"/>
|
||||
<F N="ha_subquery.h"/>
|
||||
<F N="ha_view.h"/>
|
||||
<F N="../../../mariadb/sql/handler.h"/>
|
||||
<F N="../../../mariadb/sql/hash_filo.h"/>
|
||||
<F N="../../../mariadb/sql/hostname.h"/>
|
||||
<F N="idb_mysql.h"/>
|
||||
<F N="../../../mariadb/sql/init.h"/>
|
||||
<F N="../../../mariadb/sql/innodb_priv.h"/>
|
||||
<F N="../../../mariadb/sql/item.h"/>
|
||||
<F N="../../../mariadb/sql/item_cmpfunc.h"/>
|
||||
<F N="../../../mariadb/sql/item_create.h"/>
|
||||
<F N="../../../mariadb/sql/item_create_window_function.h"/>
|
||||
<F N="../../../mariadb/sql/item_func.h"/>
|
||||
<F N="../../../mariadb/sql/item_geofunc.h"/>
|
||||
<F N="../../../mariadb/sql/item_inetfunc.h"/>
|
||||
<F N="../../../mariadb/sql/item_row.h"/>
|
||||
<F N="../../../mariadb/sql/item_strfunc.h"/>
|
||||
<F N="../../../mariadb/sql/item_subselect.h"/>
|
||||
<F N="../../../mariadb/sql/item_sum.h"/>
|
||||
<F N="../../../mariadb/sql/item_timefunc.h"/>
|
||||
<F N="../../../mariadb/sql/item_window_function.h"/>
|
||||
<F N="../../../mariadb/sql/item_xmlfunc.h"/>
|
||||
<F N="../../../mariadb/sql/key.h"/>
|
||||
<F N="../../../mariadb/sql/keycaches.h"/>
|
||||
<F N="../../../mariadb/sql/lex.h"/>
|
||||
<F N="../../../mariadb/sql/lex_hash.h"/>
|
||||
<F N="../../../mariadb/sql/lex_symbol.h"/>
|
||||
<F N="../../../mariadb/sql/lex_token.h"/>
|
||||
<F N="../../../mariadb/sql/lock.h"/>
|
||||
<F N="../../../mariadb/sql/log.h"/>
|
||||
<F N="../../../mariadb/sql/log_event.h"/>
|
||||
<F N="../../../mariadb/sql/log_event_old.h"/>
|
||||
<F N="../../../mariadb/sql/log_slow.h"/>
|
||||
<F N="../../../mariadb/sql/mdl.h"/>
|
||||
<F N="../../../mariadb/sql/mem_root_array.h"/>
|
||||
<F N="../../../mariadb/sql/message.h"/>
|
||||
<F N="../../../mariadb/sql/multi_range_read.h"/>
|
||||
<F N="../../../mariadb/sql/my_apc.h"/>
|
||||
<F N="../../../mariadb/sql/my_decimal.h"/>
|
||||
<F N="../../../mariadb/sql/my_json_writer.h"/>
|
||||
<F N="../../../mariadb/sql/mysqld.h"/>
|
||||
<F N="../../../mariadb/sql/mysqld_suffix.h"/>
|
||||
<F N="../../../mariadb/sql/nt_servc.h"/>
|
||||
<F N="../../../mariadb/sql/opt_range.h"/>
|
||||
<F N="../../../mariadb/sql/opt_subselect.h"/>
|
||||
<F N="../../../mariadb/sql/parse_file.h"/>
|
||||
<F N="../../../mariadb/sql/partition_element.h"/>
|
||||
<F N="../../../mariadb/sql/partition_info.h"/>
|
||||
<F N="../../../mariadb/sql/procedure.h"/>
|
||||
<F N="../../../mariadb/sql/protocol.h"/>
|
||||
<F N="../../../mariadb/sql/records.h"/>
|
||||
<F N="../../../mariadb/sql/repl_failsafe.h"/>
|
||||
<F N="../../../mariadb/sql/replication.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_constants.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_filter.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_gtid.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_handler.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_injector.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_mi.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_parallel.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_record.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_record_old.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_reporting.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_rli.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_tblmap.h"/>
|
||||
<F N="../../../mariadb/sql/rpl_utility.h"/>
|
||||
<F N="../../../mariadb/sql/scheduler.h"/>
|
||||
<F N="../../../mariadb/sql/set_var.h"/>
|
||||
<F N="../../../mariadb/sql/slave.h"/>
|
||||
<F N="sm.h"/>
|
||||
<F N="../../../mariadb/sql/sp.h"/>
|
||||
<F N="../../../mariadb/sql/sp_cache.h"/>
|
||||
<F N="../../../mariadb/sql/sp_head.h"/>
|
||||
<F N="../../../mariadb/sql/sp_pcontext.h"/>
|
||||
<F N="../../../mariadb/sql/sp_rcontext.h"/>
|
||||
<F N="../../../mariadb/sql/spatial.h"/>
|
||||
<F N="../../../mariadb/sql/sql_acl.h"/>
|
||||
<F N="../../../mariadb/sql/sql_admin.h"/>
|
||||
<F N="../../../mariadb/sql/sql_alter.h"/>
|
||||
<F N="../../../mariadb/sql/sql_analyse.h"/>
|
||||
<F N="../../../mariadb/sql/sql_analyze_stmt.h"/>
|
||||
<F N="../../../mariadb/sql/sql_array.h"/>
|
||||
<F N="../../../mariadb/sql/sql_audit.h"/>
|
||||
<F N="../../../mariadb/sql/sql_base.h"/>
|
||||
<F N="../../../mariadb/sql/sql_binlog.h"/>
|
||||
<F N="../../../mariadb/sql/sql_bitmap.h"/>
|
||||
<F N="../../../mariadb/sql/sql_bootstrap.h"/>
|
||||
<F N="../../../mariadb/sql/sql_cache.h"/>
|
||||
<F N="../../../mariadb/sql/sql_callback.h"/>
|
||||
<F N="../../../mariadb/sql/sql_class.h"/>
|
||||
<F N="../../../mariadb/sql/sql_cmd.h"/>
|
||||
<F N="../../../mariadb/sql/sql_connect.h"/>
|
||||
<F N="../../../mariadb/sql/sql_const.h"/>
|
||||
<F N="../../../mariadb/sql/sql_crypt.h"/>
|
||||
<F N="../../../mariadb/sql/sql_cursor.h"/>
|
||||
<F N="../../../mariadb/sql/sql_db.h"/>
|
||||
<F N="../../../mariadb/sql/sql_delete.h"/>
|
||||
<F N="../../../mariadb/sql/sql_derived.h"/>
|
||||
<F N="../../../mariadb/sql/sql_digest.h"/>
|
||||
<F N="../../../mariadb/sql/sql_digest_stream.h"/>
|
||||
<F N="../../../mariadb/sql/sql_do.h"/>
|
||||
<F N="../../../mariadb/sql/sql_error.h"/>
|
||||
<F N="../../../mariadb/sql/sql_explain.h"/>
|
||||
<F N="../../../mariadb/sql/sql_expression_cache.h"/>
|
||||
<F N="../../../mariadb/sql/sql_get_diagnostics.h"/>
|
||||
<F N="../../../mariadb/sql/sql_handler.h"/>
|
||||
<F N="../../../mariadb/sql/sql_help.h"/>
|
||||
<F N="../../../mariadb/sql/sql_hset.h"/>
|
||||
<F N="../../../mariadb/sql/sql_insert.h"/>
|
||||
<F N="../../../mariadb/sql/sql_join_cache.h"/>
|
||||
<F N="../../../mariadb/sql/sql_lex.h"/>
|
||||
<F N="../../../mariadb/sql/sql_lifo_buffer.h"/>
|
||||
<F N="../../../mariadb/sql/sql_list.h"/>
|
||||
<F N="../../../mariadb/sql/sql_load.h"/>
|
||||
<F N="../../../mariadb/sql/sql_locale.h"/>
|
||||
<F N="../../../mariadb/sql/sql_manager.h"/>
|
||||
<F N="../../../mariadb/sql/sql_parse.h"/>
|
||||
<F N="../../../mariadb/sql/sql_partition.h"/>
|
||||
<F N="../../../mariadb/sql/sql_partition_admin.h"/>
|
||||
<F N="../../../mariadb/sql/sql_plist.h"/>
|
||||
<F N="../../../mariadb/sql/sql_plugin.h"/>
|
||||
<F N="../../../mariadb/sql/sql_plugin_compat.h"/>
|
||||
<F N="../../../mariadb/sql/sql_prepare.h"/>
|
||||
<F N="../../../mariadb/sql/sql_priv.h"/>
|
||||
<F N="../../../mariadb/sql/sql_profile.h"/>
|
||||
<F N="../../../mariadb/sql/sql_reload.h"/>
|
||||
<F N="../../../mariadb/sql/sql_rename.h"/>
|
||||
<F N="../../../mariadb/sql/sql_repl.h"/>
|
||||
<F N="../../../mariadb/sql/sql_select.h"/>
|
||||
<F N="../../../mariadb/sql/sql_servers.h"/>
|
||||
<F N="../../../mariadb/sql/sql_show.h"/>
|
||||
<F N="../../../mariadb/sql/sql_signal.h"/>
|
||||
<F N="../../../mariadb/sql/sql_sort.h"/>
|
||||
<F N="../../../mariadb/sql/sql_statistics.h"/>
|
||||
<F N="../../../mariadb/sql/sql_string.h"/>
|
||||
<F N="../../../mariadb/sql/sql_table.h"/>
|
||||
<F N="../../../mariadb/sql/sql_tablespace.h"/>
|
||||
<F N="../../../mariadb/sql/sql_test.h"/>
|
||||
<F N="../../../mariadb/sql/sql_time.h"/>
|
||||
<F N="../../../mariadb/sql/sql_trigger.h"/>
|
||||
<F N="../../../mariadb/sql/sql_truncate.h"/>
|
||||
<F N="../../../mariadb/sql/sql_type.h"/>
|
||||
<F N="../../../mariadb/sql/sql_udf.h"/>
|
||||
<F N="../../../mariadb/sql/sql_union.h"/>
|
||||
<F N="../../../mariadb/sql/sql_update.h"/>
|
||||
<F N="../../../mariadb/sql/sql_view.h"/>
|
||||
<F N="../../../mariadb/sql/sql_yacc.h"/>
|
||||
<F N="../../../mariadb/sql/strfunc.h"/>
|
||||
<F N="../../../mariadb/sql/structs.h"/>
|
||||
<F N="../../../mariadb/sql/sys_vars_shared.h"/>
|
||||
<F N="../../../mariadb/sql/table.h"/>
|
||||
<F N="../../../mariadb/sql/table_cache.h"/>
|
||||
<F N="../../../mariadb/sql/thr_malloc.h"/>
|
||||
<F N="../../../mariadb/sql/threadpool.h"/>
|
||||
<F N="../../../mariadb/sql/transaction.h"/>
|
||||
<F N="../../../mariadb/sql/tzfile.h"/>
|
||||
<F N="../../../mariadb/sql/tztime.h"/>
|
||||
<F N="../../../mariadb/sql/unireg.h"/>
|
||||
<F N="../../../mariadb/sql/winservice.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_applier.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_binlog.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_mysqld.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_priv.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_sst.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_thd.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_utils.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_var.h"/>
|
||||
<F N="../../../mariadb/sql/wsrep_xid.h"/>
|
||||
</Folder>
|
||||
<Folder
|
||||
Name="Resource Files"
|
||||
|
Reference in New Issue
Block a user