5 #ifndef PDB_WRITEUSERSETBASE_H
6 #define PDB_WRITEUSERSETBASE_H
16 template <
class OutputClass>
82 return std::make_shared<VectorSink<OutputClass>>(consumeMe, projection);
132 return std::string(
"WriteUserSet");
184 std::string
toTCAPString(std::vector<InputTupleSetSpecifier>& inputTupleSets,
185 int computationLabel,
187 std::vector<std::string>& outputColumnNames,
188 std::string& addedOutputColumnName)
override {
190 if (inputTupleSets.empty()) {
201 addedOutputColumnName);
216 std::vector<std::string>& inputColumnNames,
217 std::vector<std::string>& inputColumnsToApply,
218 int computationLabel,
220 std::vector<std::string>& outputColumnNames,
221 std::string& addedOutputColumnName) {
224 outputTupleSetName = inputTupleSetName +
"_out";
225 outputColumnNames.emplace_back(
"");
226 addedOutputColumnName =
"";
229 mustache::mustache writeSetTemplate{
"{{outputTupleSetName}}( {{outputColumnNames}}) <= "
230 "OUTPUT ( {{inputTupleSetName}} ( {{inputColumnsToApply}} ), "
231 "'{{setName}}', '{{dbName}}', '{{computationType}}_{{computationLabel}}')\n"};
235 mustache::data writeSetData;
236 writeSetData.set(
"outputTupleSetName", outputTupleSetName);
237 writeSetData.set(
"outputColumnNames", outputColumnNames[0]);
238 writeSetData.set(
"inputTupleSetName", inputTupleSetName);
239 writeSetData.set(
"inputColumnsToApply", inputColumnsToApply[0]);
241 writeSetData.set(
"computationLabel", std::to_string(computationLabel));
242 writeSetData.set(
"setName", std::string(
setName));
243 writeSetData.set(
"dbName", std::string(
dbName));
252 return writeSetTemplate.render(writeSetData);
274 #endif //PDB_WRITEUSERSETBASE_H
bool needsMaterializeOutput() override
void setOutput(std::string dbName, std::string setName) override
std::string toTCAPString(std::string inputTupleSetName, std::vector< std::string > &inputColumnNames, std::vector< std::string > &inputColumnsToApply, int computationLabel, std::string &outputTupleSetName, std::vector< std::string > &outputColumnNames, std::string &addedOutputColumnName)
std::string getComputationType() override
std::string getSetName() override
void deleter(void *deleteMe, ObjType *dummy)
WriteUserSetBase()=default
void setUpAndCopyFrom(void *target, void *source) const override
std::string toTCAPString(std::vector< InputTupleSetSpecifier > &inputTupleSets, int computationLabel, std::string &outputTupleSetName, std::vector< std::string > &outputColumnNames, std::string &addedOutputColumnName) override
ComputeSinkPtr getComputeSink(TupleSpec &consumeMe, TupleSpec &projection, ComputePlan &plan) override
void setSetName(std::string setName)
WriteUserSetBase(std::string dbName, std::string setName)
std::shared_ptr< ComputeSink > ComputeSinkPtr
std::string getIthInputType(int i) override
void setOutputColumnToApply(std::string outputColumnToApply)
void deleteObject(void *deleteMe) override
size_t getSize(void *forMe) override
ComputationTypeID getComputationTypeID() override
std::string getDatabaseName() override
void setTraversed(bool traversed)
std::string getOutputType() override
void setOutputTupleSetName(std::string outputTupleSetName)
int getNumInputs() override
void setDatabaseName(std::string dbName)
String outputTupleSetName