Class OSQLFunctionAbstract
java.lang.Object
com.orientechnologies.orient.core.sql.functions.OSQLFunctionAbstract
- All Implemented Interfaces:
OSQLFunction
- Direct Known Subclasses:
OLuceneCrossClassSearchFunction,OLuceneSearchFunctionTemplate,OLuceneSearchMoreLikeThisFunction,OSpatialFunctionAbstract,OSQLEnterpriseFunction,OSQLFunctionCoalesce,OSQLFunctionConfigurableAbstract,OSQLFunctionDate,OSQLFunctionDecode,OSQLFunctionDistance,OSQLFunctionDistinct,OSQLFunctionEncode,OSQLFunctionFormat,OSQLFunctionFormat,OSQLFunctionIf,OSQLFunctionIfNull,OSQLFunctionIndexKeySize,OSQLFunctionMode,OSQLFunctionPercentile,OSQLFunctionStrcmpci,OSQLFunctionSysdate,OSQLFunctionThrowCME,OSQLFunctionUUID,OSQLFunctionVariance,OSQLStaticReflectiveFunction,OSTAsBinaryFunction,OSTAsGeoJSONFunction,OSTAsTextFunction,OSTBufferFunction,OSTDisjointFunction,OSTEnvelopFunction,OSTEqualsFunction,OSTGeomFromGeoJSONFunction,OSTGeomFromTextFunction,OSTSrid
Abstract class to extend to build Custom SQL Functions. Extend it and register it with:
OSQLParser.getInstance().registerStatelessFunction() or
OSQLParser.getInstance().registerStatefullFunction() to being used by the SQL engine.- Author:
- Luca Garulli (l.garulli--(at)--orientdb.com)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanA function can make calculation on several records before returning a result.voidConfigure the function.booleanA function can act both as transformation or filtering records.protected ODatabaseSessionprotected StringintMaximum number of parameter this function can handle.intMinimum number of parameter this function must have.getName()Function name, the name is used by the sql parser to identify a call this function.getResult(OCommandContext ctx) Only called when function aggregates results after all records have been passed to the function.protected ObjectgetSingleItem(Object source) Attempt to extract a single item from object if it's a multi valueOMultiValueIf source is a multi valueprotected ObjectgetSingleProperty(Object source, boolean requireSingleProperty) Attempts to identify the source as a map-like object with single property and return it.mergeDistributedResult(List<Object> resultsToMerge) This method correspond to distributed query executionprotected booleanvoidCalled by OCommandExecutor, given parameter is the number of results. ???booleanThis method correspond to distributed query executiontoString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.orientechnologies.orient.core.sql.functions.OSQLFunction
execute, getSyntax
-
Field Details
-
name
-
minParams
protected int minParams -
maxParams
protected int maxParams
-
-
Constructor Details
-
OSQLFunctionAbstract
-
-
Method Details
-
getName
Description copied from interface:OSQLFunctionFunction name, the name is used by the sql parser to identify a call this function.- Specified by:
getNamein interfaceOSQLFunction- Returns:
- String , function name, never null or empty.
-
getMinParams
public int getMinParams()Description copied from interface:OSQLFunctionMinimum number of parameter this function must have.- Specified by:
getMinParamsin interfaceOSQLFunction- Returns:
- minimum number of parameters
-
getMaxParams
public int getMaxParams()Description copied from interface:OSQLFunctionMaximum number of parameter this function can handle.- Specified by:
getMaxParamsin interfaceOSQLFunction- Returns:
- maximum number of parameters ??? -1 , negative or Integer.MAX_VALUE for unlimited ???
-
toString
-
config
Description copied from interface:OSQLFunctionConfigure the function.- Specified by:
configin interfaceOSQLFunction
-
aggregateResults
public boolean aggregateResults()Description copied from interface:OSQLFunctionA function can make calculation on several records before returning a result.Example of such function : sum, count, max, min ...
The final result of the aggregation is obtain by calling
OSQLFunction.getResult(OCommandContext)- Specified by:
aggregateResultsin interfaceOSQLFunction- Returns:
- true if function aggregate results
-
filterResult
public boolean filterResult()Description copied from interface:OSQLFunctionA function can act both as transformation or filtering records. If the function may reduce the number final records than it must return true.Function should return null for the execute method if the record must be excluded.
- Specified by:
filterResultin interfaceOSQLFunction- Returns:
- true if the function acts as a record filter.
-
getResult
Description copied from interface:OSQLFunctionOnly called when function aggregates results after all records have been passed to the function.- Specified by:
getResultin interfaceOSQLFunction- Parameters:
ctx- TODO- Returns:
- Aggregation result
-
setResult
Description copied from interface:OSQLFunctionCalled by OCommandExecutor, given parameter is the number of results. ??? strange ???- Specified by:
setResultin interfaceOSQLFunction
-
shouldMergeDistributedResult
public boolean shouldMergeDistributedResult()Description copied from interface:OSQLFunctionThis method correspond to distributed query execution- Specified by:
shouldMergeDistributedResultin interfaceOSQLFunction- Returns:
trueif results that comes from different nodes need to be merged to obtain valid one,falseotherwise
-
mergeDistributedResult
Description copied from interface:OSQLFunctionThis method correspond to distributed query execution- Specified by:
mergeDistributedResultin interfaceOSQLFunction- Parameters:
resultsToMerge- is the results that comes from different nodes- Returns:
- is the valid merged result
-
returnDistributedResult
protected boolean returnDistributedResult() -
getDistributedStorageId
-
getSingleItem
Attempt to extract a single item from object if it's a multi valueOMultiValueIf source is a multi value- Parameters:
source- a value to attempt extract single value from it- Returns:
- If source is not a multi value, it will return source as is. If it is, it will return the single element in it. If source is a multi value with more than 1 element null is returned, indicating an error
-
getSingleProperty
Attempts to identify the source as a map-like object with single property and return it.- Parameters:
source- The object to checkrequireSingleProperty- True if the method should return null when source doesn't have a single property. Otherwise, the object will be returned.- Returns:
- If source is a map-like object with single property, that property will be returned If source is a map-like object with multiple properties and requireSingleProperty is true, null is returned indicating an error If source is not a map-like object, it is returned
-
getDatabase
-