A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pdb::MethodCallLambda< Out, ClassType > Class Template Reference

#include <MethodCallLambda.h>

+ Inheritance diagram for pdb::MethodCallLambda< Out, ClassType >:
+ Collaboration diagram for pdb::MethodCallLambda< Out, ClassType >:

Public Member Functions

 MethodCallLambda (std::string inputTypeName, std::string methodName, std::string returnTypeName, Handle< ClassType > &input, std::function< bool(std::string &, TupleSetPtr, int)> columnBuilder, std::function< ComputeExecutorPtr(TupleSpec &, TupleSpec &, TupleSpec &)> getExecutorFunc)
 
std::string getTypeOfLambda () override
 
std::string whichMethodWeCall ()
 
unsigned int getNumInputs () override
 
std::string getInputType ()
 
std::string getOutputType () override
 
std::string toTCAPString (std::vector< std::string > &inputTupleSetNames, std::vector< std::string > &inputColumnNames, std::vector< std::string > &inputColumnsToApply, std::vector< std::string > &childrenLambdaNames, int lambdaLabel, std::string computationName, int computationLabel, std::string &outputTupleSetName, std::vector< std::string > &outputColumns, std::string &outputColumnName, std::string &lambdaName, MultiInputsBase *multiInputsComp=nullptr, bool amIPartOfJoinPredicate=false, bool amILeftChildOfEqualLambda=false, bool amIRightChildOfEqualLambda=false, std::string parentLambdaName="", bool isSelfJoin=false) override
 
std::map< std::string,
std::string > 
getInfo () override
 
int getNumChildren () override
 
GenericLambdaObjectPtr getChild (int which) override
 
ComputeExecutorPtr getExecutor (TupleSpec &inputSchema, TupleSpec &attsToOperateOn, TupleSpec &attsToIncludeInOutput) override
 
- Public Member Functions inherited from pdb::TypedLambdaObject< Out >
virtual ~TypedLambdaObject ()=default
 
- Public Member Functions inherited from pdb::GenericLambdaObject
virtual ~GenericLambdaObject ()=default
 
void setInputIndex (int i, unsigned int index)
 
virtual unsigned int getInputIndex (int i)
 
virtual ComputeExecutorPtr getExecutor (TupleSpec &inputSchema, TupleSpec &attsToOperateOn, TupleSpec &attsToIncludeInOutput, ComputeInfoPtr)
 
virtual ComputeExecutorPtr getLeftHasher (TupleSpec &inputSchema, TupleSpec &attsToOperateOn, TupleSpec &attsToIncludeInOutput)
 
virtual ComputeExecutorPtr getLeftHasher (TupleSpec &inputSchema, TupleSpec &attsToOperateOn, TupleSpec &attsToIncludeInOutput, ComputeInfoPtr)
 
virtual ComputeExecutorPtr getRightHasher (TupleSpec &inputSchema, TupleSpec &attsToOperateOn, TupleSpec &attsToIncludeInOutput)
 
virtual ComputeExecutorPtr getRightHasher (TupleSpec &inputSchema, TupleSpec &attsToOperateOn, TupleSpec &attsToIncludeInOutput, ComputeInfoPtr)
 
std::string getTCAPString (const std::string &inputTupleSetName, const std::vector< std::string > &inputColumnNames, const std::vector< std::string > &inputColumnsToApply, const std::string &outputTupleSetName, const std::vector< std::string > &outputColumns, const std::string &outputColumnName, const std::string &tcapOperation, const std::string &computationNameAndLabel, const std::string &lambdaNameAndLabel, const std::map< std::string, std::string > &info)
 
virtual std::string toTCAPStringForCartesianJoin (int lambdaLabel, std::string computationName, int computationLabel, std::string &outputTupleSetName, std::vector< std::string > &outputColumns, std::string &outputColumnName, std::string &myLambdaName, MultiInputsBase *multiInputsComp)
 

Public Attributes

std::function
< ComputeExecutorPtr(TupleSpec
&, TupleSpec &, TupleSpec &)> 
getExecutorFunc
 
std::function< bool(std::string
&, TupleSetPtr, int)> 
columnBuilder
 
std::string inputTypeName
 
std::string methodName
 
std::string returnTypeName
 

Detailed Description

template<class Out, class ClassType>
class pdb::MethodCallLambda< Out, ClassType >

Definition at line 30 of file MethodCallLambda.h.

Constructor & Destructor Documentation

template<class Out , class ClassType >
pdb::MethodCallLambda< Out, ClassType >::MethodCallLambda ( std::string  inputTypeName,
std::string  methodName,
std::string  returnTypeName,
Handle< ClassType > &  input,
std::function< bool(std::string &, TupleSetPtr, int)>  columnBuilder,
std::function< ComputeExecutorPtr(TupleSpec &, TupleSpec &, TupleSpec &)>  getExecutorFunc 
)
inline

Definition at line 42 of file MethodCallLambda.h.

+ Here is the call graph for this function:

Member Function Documentation

template<class Out , class ClassType >
GenericLambdaObjectPtr pdb::MethodCallLambda< Out, ClassType >::getChild ( int  which)
inlineoverridevirtual

gets a particular child of this Lambda

Parameters
which- // TODO missing description
Returns
- // TODO missing description

Implements pdb::GenericLambdaObject.

Definition at line 260 of file MethodCallLambda.h.

template<class Out , class ClassType >
ComputeExecutorPtr pdb::MethodCallLambda< Out, ClassType >::getExecutor ( TupleSpec inputSchema,
TupleSpec attsToOperateOn,
TupleSpec attsToIncludeInOutput 
)
inlineoverridevirtual

Used this gets an executor that appends the result of running this lambda to the end of each tuple

Parameters
inputSchema- // TODO missing description
attsToOperateOn- // TODO missing description
attsToIncludeInOutput- // TODO missing description
Returns
- // TODO missing description

Implements pdb::GenericLambdaObject.

Definition at line 264 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::map<std::string, std::string> pdb::MethodCallLambda< Out, ClassType >::getInfo ( )
inlineoverridevirtual

Returns the additional information about this lambda currently lambda type, inputTypeName, methodName and returnTypeName

Returns
the map

Implements pdb::GenericLambdaObject.

Definition at line 245 of file MethodCallLambda.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::getInputType ( )
inline

Definition at line 77 of file MethodCallLambda.h.

template<class Out , class ClassType >
int pdb::MethodCallLambda< Out, ClassType >::getNumChildren ( )
inlineoverridevirtual

one big technical problem is that when tuples are added to a hash table to be recovered at a later time, we we break a pipeline. The difficulty with this is that when we want to probe a hash table to find a set of hash values, we can't use the input TupleSet as a way to create the columns to store the result of the probe. The hash table needs to be able to create (from scratch) the columns that store the output. This is a problem, because the hash table has no information about the types of the objects that it contains. The way around this is that we have a function attached to each GenericLambdaObject that allows us to ask the GenericLambdaObject to try to add a column to a tuple set, of a specific type, where the type name is specified as a string. When the hash table needs to create an output TupleSet, it can ask all of the GenericLambdaObjects associated with a query to create the necessary columns, as a way to build up the output TupleSet. This method is how the hash table can ask for this. It takes tree args: the type of the column that the hash table wants the tuple set to build, the tuple set to add the column to, and the position where the column will be added. If the GenericLambdaObject cannot build the column (it has no knowledge of that type) a false is returned. Otherwise, a true is returned. virtual bool addColumnToTupleSet (std :: string &typeToMatch, TupleSetPtr addToMe, int posToAddTo) = 0; returns the number of children of this Lambda type

Returns
- // TODO missing description

Implements pdb::GenericLambdaObject.

Definition at line 256 of file MethodCallLambda.h.

template<class Out , class ClassType >
unsigned int pdb::MethodCallLambda< Out, ClassType >::getNumInputs ( )
inlineoverridevirtual

Used to get number of inputs to this Lambda

Returns
- the number of inputs

Implements pdb::GenericLambdaObject.

Definition at line 73 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::getOutputType ( )
inlineoverridevirtual

returns a string containing the type that is returned when this lambda is executed

Returns
the string containing the output type

Reimplemented from pdb::TypedLambdaObject< Out >.

Definition at line 81 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::getTypeOfLambda ( )
inlineoverridevirtual

returns the name of this LambdaBase type, as a string

Returns
- // TODO missing description

Implements pdb::GenericLambdaObject.

Definition at line 65 of file MethodCallLambda.h.

+ Here is the caller graph for this function:

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::toTCAPString ( std::vector< std::string > &  inputTupleSetNames,
std::vector< std::string > &  inputColumnNames,
std::vector< std::string > &  inputColumnsToApply,
std::vector< std::string > &  childrenLambdaNames,
int  lambdaLabel,
std::string  computationName,
int  computationLabel,
std::string &  outputTupleSetName,
std::vector< std::string > &  outputColumns,
std::string &  outputColumnName,
std::string &  myLambdaName,
MultiInputsBase multiInputsComp = nullptr,
bool  amIPartOfJoinPredicate = false,
bool  amILeftChildOfEqualLambda = false,
bool  amIRightChildOfEqualLambda = false,
std::string  parentLambdaName = "",
bool  isSelfJoin = false 
)
inlineoverridevirtual

This gets TCAP string corresponding to this Lambda JiaNote: below is just a default implementation for Lambdas to "Apply" you can override this implementation in your subclasses

// TODO this method has been glued and tied together multiple times and should be completely rewritten and refactored

Parameters
inputTupleSetNames- // TODO add proper descriptions of the parameter
inputColumnNames- // TODO add proper descriptions of the parameter
inputColumnsToApply- // TODO add proper descriptions of the parameter
childrenLambdaNames- // TODO add proper descriptions of the parameter
lambdaLabel- // TODO add proper descriptions of the parameter
computationName- // TODO add proper descriptions of the parameter
computationLabel- // TODO add proper descriptions of the parameter
outputTupleSetName- // TODO add proper descriptions of the parameter
outputColumns- // TODO add proper descriptions of the parameter
outputColumnName- // TODO add proper descriptions of the parameter
myLambdaName- // TODO add proper descriptions of the parameter
multiInputsComp- // TODO add proper descriptions of the parameter
amIPartOfJoinPredicate- // TODO add proper descriptions of the parameter
amILeftChildOfEqualLambda- // TODO add proper descriptions of the parameter
amIRightChildOfEqualLambda- // TODO add proper descriptions of the parameter
parentLambdaName- // TODO add proper descriptions of the parameter
isSelfJoin- // TODO add proper descriptions of the parameter
Returns
- // TODO add proper descriptions of the return value

Reimplemented from pdb::GenericLambdaObject.

Definition at line 85 of file MethodCallLambda.h.

+ Here is the call graph for this function:

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::whichMethodWeCall ( )
inline

Definition at line 69 of file MethodCallLambda.h.

Member Data Documentation

template<class Out , class ClassType >
std::function<bool(std::string &, TupleSetPtr, int)> pdb::MethodCallLambda< Out, ClassType >::columnBuilder

Definition at line 34 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::function<ComputeExecutorPtr(TupleSpec &, TupleSpec &, TupleSpec &)> pdb::MethodCallLambda< Out, ClassType >::getExecutorFunc

Definition at line 33 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::inputTypeName

Definition at line 35 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::methodName

Definition at line 36 of file MethodCallLambda.h.

template<class Out , class ClassType >
std::string pdb::MethodCallLambda< Out, ClassType >::returnTypeName

Definition at line 37 of file MethodCallLambda.h.


The documentation for this class was generated from the following file: