You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
MCOL-597 Fix up Windows Functions
This commit is contained in:
@ -61,7 +61,7 @@ set(joblist_LIB_SRCS
|
||||
|
||||
add_library(joblist SHARED ${joblist_LIB_SRCS})
|
||||
|
||||
target_link_libraries(joblist ${NETSNMP_LIBRARIES} -L${SERVER_BUILD_INCLUDE_DIR}/../libmysql/ libmysqlclient_r.so)
|
||||
target_link_libraries(joblist -L${SERVER_BUILD_INCLUDE_DIR}/../libmariadb/libmariadb/ libmariadb.so)
|
||||
|
||||
set_target_properties(joblist PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
||||
|
||||
|
@ -496,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;
|
||||
@ -563,7 +568,20 @@ void debug_walk(const Item *item, void *arg)
|
||||
ifp->field_name << endl;
|
||||
break;
|
||||
}
|
||||
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:
|
||||
@ -700,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:
|
||||
@ -2407,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;
|
||||
@ -4390,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)
|
||||
@ -4403,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);
|
||||
@ -4595,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;
|
||||
|
@ -212,9 +212,15 @@ string ConvertFuncName(Item_sum* item)
|
||||
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:
|
||||
@ -375,7 +381,7 @@ 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(1); // WINDOWS TODO: implement NULLS FIRST/LAST in 10.2 front end
|
||||
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;
|
||||
@ -557,8 +563,15 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
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:
|
||||
@ -569,15 +582,9 @@ ReturnedColumn* buildWindowFunctionColumn(Item* item, gp_walk_info& gwi, bool& n
|
||||
break;
|
||||
case Item_sum::ROW_NUMBER_FUNC:
|
||||
case Item_sum::RANK_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_UNBOUNDED_FOLLOWING;
|
||||
break;
|
||||
case Item_sum::DENSE_RANK_FUNC:
|
||||
case Item_sum::PERCENT_RANK_FUNC:
|
||||
case Item_sum::CUME_DIST_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_CURRENT_ROW;
|
||||
break;
|
||||
case Item_sum::NTILE_FUNC:
|
||||
frm.fStart.fFrame = WF_UNBOUNDED_PRECEDING;
|
||||
frm.fEnd.fFrame = WF_UNBOUNDED_FOLLOWING;
|
||||
|
@ -28,11 +28,11 @@ for arg in "$@"; do
|
||||
fi
|
||||
done
|
||||
|
||||
cd $installdir/mysql/lib
|
||||
for file in libmysqlclient libmysqlclient_r; do
|
||||
ln -sf $file.so.18.0.0 $file.so
|
||||
ln -sf $file.so.18.0.0 $file.so.18
|
||||
done
|
||||
#cd $installdir/mysql/lib
|
||||
#for file in libmysqlclient libmysqlclient_r; do
|
||||
# ln -sf $file.so.18.0.0 $file.so
|
||||
# ln -sf $file.so.18.0.0 $file.so.18
|
||||
#done
|
||||
cd $installdir/mysql/lib/plugin
|
||||
for file in ha_archive ha_blackhole ha_federated ha_innodb; do
|
||||
ln -sf $file.so $file.so.0
|
||||
|
@ -8,8 +8,6 @@ set(querystats_LIB_SRCS querystats.cpp)
|
||||
|
||||
add_library(querystats SHARED ${querystats_LIB_SRCS})
|
||||
|
||||
target_link_libraries(querystats -L${SERVER_BUILD_INCLUDE_DIR}/../libmysql/ libmysqlclient_r.so)
|
||||
|
||||
set_target_properties(querystats PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
||||
|
||||
install(TARGETS querystats DESTINATION ${ENGINE_LIBDIR} COMPONENT libs)
|
||||
|
@ -32,8 +32,6 @@ set(brm_LIB_SRCS
|
||||
|
||||
add_library(brm SHARED ${brm_LIB_SRCS})
|
||||
|
||||
target_link_libraries(brm ${NETSNMP_LIBRARIES})
|
||||
|
||||
set_target_properties(brm PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
||||
|
||||
install(TARGETS brm DESTINATION ${ENGINE_LIBDIR} COMPONENT libs)
|
||||
@ -45,7 +43,7 @@ set(controllernode_SRCS masternode.cpp masterdbrmnode.cpp)
|
||||
|
||||
add_executable(controllernode ${controllernode_SRCS})
|
||||
|
||||
target_link_libraries(controllernode ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS} ${NETSNMP_LIBRARIES})
|
||||
target_link_libraries(controllernode ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS} )
|
||||
|
||||
install(TARGETS controllernode DESTINATION ${ENGINE_BINDIR} COMPONENT platform)
|
||||
|
||||
@ -56,7 +54,7 @@ set(workernode_SRCS slavenode.cpp)
|
||||
|
||||
add_executable(workernode ${workernode_SRCS})
|
||||
|
||||
target_link_libraries(workernode ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS} ${NETSNMP_LIBRARIES})
|
||||
target_link_libraries(workernode ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS})
|
||||
|
||||
install(TARGETS workernode DESTINATION ${ENGINE_BINDIR} COMPONENT platform)
|
||||
|
||||
@ -67,7 +65,7 @@ set(dbrmctl_SRCS dbrmctl.cpp)
|
||||
|
||||
add_executable(dbrmctl ${dbrmctl_SRCS})
|
||||
|
||||
target_link_libraries(dbrmctl ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS} ${NETSNMP_LIBRARIES})
|
||||
target_link_libraries(dbrmctl ${ENGINE_LDFLAGS} ${ENGINE_OAM_LIBS} ${ENGINE_EXEC_LIBS})
|
||||
|
||||
install(TARGETS dbrmctl DESTINATION ${ENGINE_BINDIR} COMPONENT platform)
|
||||
|
||||
|
Reference in New Issue
Block a user