You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-4530: toCppCode() method for ParseTree and TreeNode (#2777)
* toCppCode for ParseTree and TreeNode * generated tree is compiling * Put tree constructors into tests * Minor fixes * Fixed parse + some constructors * Fixed includes, removed debug and old data * Hopefully fix clang errors * Forgot an override * More overrides
This commit is contained in:
@ -22,6 +22,7 @@
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
#include <cstddef>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
@ -52,7 +53,6 @@ using namespace rowgroup;
|
||||
#include "joblisttypes.h"
|
||||
using namespace joblist;
|
||||
|
||||
|
||||
namespace execplan
|
||||
{
|
||||
void getWindowFunctionCols(execplan::ParseTree* n, void* obj)
|
||||
@ -233,7 +233,17 @@ WindowFunctionColumn::WindowFunctionColumn(const WindowFunctionColumn& rhs, cons
|
||||
, fTimeZone(rhs.timeZone())
|
||||
{
|
||||
}
|
||||
|
||||
WindowFunctionColumn::WindowFunctionColumn(const std::string& functionName,
|
||||
const std::vector<SRCP>& functionParms,
|
||||
const std::vector<SRCP>& partitions, WF_OrderBy& orderby,
|
||||
const uint32_t sessionID)
|
||||
: ReturnedColumn(sessionID)
|
||||
, fFunctionName(functionName)
|
||||
, fFunctionParms(functionParms)
|
||||
, fPartitions(partitions)
|
||||
, fOrderBy(orderby)
|
||||
{
|
||||
}
|
||||
const string WindowFunctionColumn::toString() const
|
||||
{
|
||||
ostringstream output;
|
||||
@ -267,6 +277,35 @@ const string WindowFunctionColumn::toString() const
|
||||
return output.str();
|
||||
}
|
||||
|
||||
string WindowFunctionColumn::toCppCode(IncludeSet& includes) const
|
||||
{
|
||||
includes.insert("windowfunctioncolumn.h");
|
||||
stringstream ss;
|
||||
ss << "WindowFunctionColumn(" << std::quoted(fFunctionName) << ", std::vector<SRCP>{";
|
||||
if (!fFunctionParms.empty())
|
||||
{
|
||||
for (size_t i = 0; i < fFunctionParms.size() - 1; i++)
|
||||
ss << "boost::shared_ptr<ReturnedColumn>(new " << fFunctionParms.at(i)->toCppCode(includes) << "), ";
|
||||
ss << "boost::shared_ptr<ReturnedColumn>(new " << fFunctionParms.back()->toCppCode(includes) << ")";
|
||||
}
|
||||
ss << "}, std::vector<SRCP>{";
|
||||
if (!fPartitions.empty())
|
||||
{
|
||||
for (size_t i = 0; i < fPartitions.size() - 1; i++)
|
||||
ss << "boost::shared_ptr<ReturnedColumn>(new " << fPartitions.at(i)->toCppCode(includes) << "), ";
|
||||
ss << "boost::shared_ptr<ReturnedColumn>(new " << fPartitions.back()->toCppCode(includes) << ")";
|
||||
}
|
||||
ss << "}, WF_OrderBy(std::vector<SRCP>{";
|
||||
if (!fOrderBy.fOrders.empty())
|
||||
{
|
||||
for (size_t i = 0; i < fOrderBy.fOrders.size() - 1; i++)
|
||||
ss << "boost::shared_ptr<ReturnedColumn>(new " << fOrderBy.fOrders.at(i)->toCppCode(includes) << "), ";
|
||||
ss << "boost::shared_ptr<ReturnedColumn>(new " << fOrderBy.fOrders.back()->toCppCode(includes) << ")}))";
|
||||
}
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
void WindowFunctionColumn::serialize(messageqcpp::ByteStream& b) const
|
||||
{
|
||||
b << (ObjectReader::id_t)ObjectReader::WINDOWFUNCTIONCOLUMN;
|
||||
|
Reference in New Issue
Block a user