public interface Query
Modifier and Type | Method and Description |
---|---|
void |
compile()
Deprecated.
as of 6.5
|
Object |
execute()
Executes this query and returns an object that represent its result.
|
Object |
execute(Object... params)
Executes this query with the given parameters and returns an object that represent its result.
|
Object |
execute(RegionFunctionContext context)
Executes this query on the partitioned data-store associated with the given
RegionFunctionContext and returns an object that represents its result.
|
Object |
execute(RegionFunctionContext context,
Object[] params)
Executes this query on the partitioned data-store associated with the given
RegionFunctionContext and parameters and returns an object that represents its result.
|
String |
getQueryString()
Return the original query string that was specified in the constructor.
|
QueryStatistics |
getStatistics()
Get statistics information for this query.
|
boolean |
isCompiled()
Deprecated.
as of 6.5
|
String getQueryString()
Object execute() throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException
Integer
, etc.)
is returned. If the query resolves to more than one object, a SelectResults
is
returned.
Query execution can potentially take a long time depending on data size and query complexity.
The system property "gemfire.Cache.MAX_QUERY_EXECUTION_TIME" can be set to define the maximum
time allowed for a query to complete its execution. If query execution time exceeds
"gemfire.Cache.MAX_QUERY_EXECUTION_TIME", then the query is canceled and
QueryExecutionTimeoutException is thrown back to the caller, if the execution is local to the
VM. If the canceled query was initiated by a GemFire client, then a QueryException is thrown on
the client with its cause set to QueryExecutionTimeoutException. This timeout does not account
for the time taken to construct the results after execution completes and the results returned
to the caller.SelectResults
. However, since a query is not necessarily just a select
statement, the return type of this method is Object
. For example, the
query (select distinct * from /rgn).size
returns an instance of
java.lang.Integer
.FunctionDomainException
- A function was applied to a parameter that is improper for that
function. For example, the ELEMENT function was applied to a collection of more than
one elementTypeMismatchException
- If a bound parameter is not of the expected type.NameResolutionException
- If a name in the query cannot be resolved.IllegalArgumentException
- The number of bound parameters does not match the number of
placeholdersIllegalStateException
- If the query is not permitted on this type of regionQueryExecutionTimeoutException
- If the query gets canceled due to setting system
variable "gemfire.Cache.MAX_QUERY_EXECUTION_TIME". This is a thrown when query is
executed on the local regions (embedded mode).QueryInvocationTargetException
- If the data referenced in from clause is not available
for querying.QueryExecutionLowMemoryException
- If the query gets canceled due to low memory
conditions and the resource manager critical heap percentage has been setPartitionOfflineException
- If persistent data recovery is not complete for a partitioned
region referred to in the query.Object execute(Object... params) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException
Integer
, etc.) is returned. If the query resolves to more than one object, a
SelectResults
is returned.
Query execution can potentially take a long time depending on data size and query complexity.
The system property "gemfire.Cache.MAX_QUERY_EXECUTION_TIME" can be set to define the maximum
time allowed for a query to complete its execution. If query execution time exceeds
"gemfire.Cache.MAX_QUERY_EXECUTION_TIME", then the query is canceled and
QueryExecutionTimeoutException is thrown back to the caller, if the execution is local to the
VM. If the canceled query was initiated by a GemFire client, then a QueryException is thrown on
the client with its cause set to QueryExecutionTimeoutException. This timeout does not account
for the time taken to construct the results after execution completes and the results returned
to the caller.params
- Values that are bound to parameters (such as $1
) in this query.SelectResults
. However, since a query is not necessarily just a select
statement, the return type of this method is Object
. For example, the
query (select distinct * from /rgn).size
returns an instance of
java.lang.Integer
.FunctionDomainException
- A function was applied to a parameter that is improper for that
function. For example, the ELEMENT function was applied to a collection of more than
one elementTypeMismatchException
- If a bound parameter is not of the expected type.NameResolutionException
- If a name in the query cannot be resolved.IllegalArgumentException
- The number of bound parameters does not match the number of
placeholdersIllegalStateException
- If the query is not permitted on this type of regionQueryExecutionTimeoutException
- If the query gets canceled due to setting system
variable "gemfire.Cache.MAX_QUERY_EXECUTION_TIME". This is a thrown when query is
executed on the local regions (embedded mode).QueryInvocationTargetException
- If the data referenced in from clause is not available
for querying.QueryExecutionLowMemoryException
- If the query gets canceled due to low memory
conditions and the resource manager critical heap percentage has been setPartitionOfflineException
- If persistent data recovery is not complete for a partitioned
region referred to in the query.Object execute(RegionFunctionContext context) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException
RegionFunctionContext
gets moved or destroyed from
the local node.
The RegionFunctionContext defines the execution context of a data dependent Function
.
And is obtained when the function is executed using FunctionService.onRegion(Region)
,
the FunctionContext
E.g.: // Function service execute() method:
public void execute(FunctionContext context) { RegionFunctionContext regionContext =
(RegionFunctionContext)context; Query query = cache.getQueryService().newQuery("Select * from
/MyRegion"); SelectResults results = (SelectResults)query.execute(regionContext); }
Using this method a join query query can be executed between two co-located PartitionRegion
data-set referenced through RegionFunctionContext
.
This method should NOT be used for multiple partitioned regions based join queries. We support
equi-join queries only on co-located PartitionedRegions if the the co-located columns ACTUALLY
EXIST IN WHERE CLAUSE and in case of multi-column partitioning , should have "AND" clause.
E.g.: // Equi-join query:
Select * from /partitionRegion1 p1, /PartitionRegion2 p2 where p1.field = p2.field [AND .....]context
- RegionFunctionContext which will target the query on subset of data if executed
on PartitionedRegion.SelectResults
. However, since a query is not necessarily just a select
statement, the return type of this method is Object
. For example, the
query (select distinct * from /rgn).size
returns an instance of
java.lang.Integer
.FunctionDomainException
- A function was applied to a parameter that is improper for that
function. For example, the ELEMENT function was applied to a collection of more than
one elementTypeMismatchException
- If a bound parameter is not of the expected type.NameResolutionException
- If a name in the query cannot be resolved.IllegalArgumentException
- The number of bound parameters does not match the number of
place holdersIllegalStateException
- If the query is not permitted on this type of regionQueryExecutionTimeoutException
- If the query gets canceled due to setting system
variable "gemfire.Cache.MAX_QUERY_EXECUTION_TIME". This is a thrown when query is
executed on the local regions (embedded mode).QueryInvocationTargetException
- If the data referenced in from clause is not available
for querying.QueryExecutionLowMemoryException
- If the query gets canceled due to low memory
conditions and the resource manager critical heap percentage has been setPartitionOfflineException
- If persistent data recovery is not complete for a partitioned
region referred to in the query.Object execute(RegionFunctionContext context, Object[] params) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException
Function
.
And is obtained when the function is executed using FunctionService.onRegion(Region)
,
the FunctionContext
E.g.: // Function service execute() method:
public void execute(FunctionContext context) { RegionFunctionContext regionContext =
(RegionFunctionContext)context; Query query = cache.getQueryService().newQuery("Select * from
/MyRegion"); SelectResults results = (SelectResults)query.execute(regionContext); }
Using this method a join query query can be executed between two co-located PartitionRegion
data-set referenced through RegionFunctionContext
.
This method should NOT be used for multiple partitioned regions based join queries. We support
equi-join queries only on co-located PartitionedRegions if the the co-located columns ACTUALLY
EXIST IN WHERE CLAUSE and in case of multi-column partitioning , should have "AND" clause.
E.g.: // Equi-join query:
Select * from /partitionRegion1 p1, /PartitionRegion2 p2 where p1.field = p2.field [AND .....]context
- RegionFunctionContext which will target the query on subset of data if executed
on PartitionedRegion.params
- Values that are bound to parameters (such as $1
) in this query.SelectResults
. However, since a query is not necessarily just a select
statement, the return type of this method is Object
. For example, the
query (select distinct * from /rgn).size
returns an instance of
java.lang.Integer
.FunctionDomainException
- A function was applied to a parameter that is improper for that
function. For example, the ELEMENT function was applied to a collection of more than
one elementTypeMismatchException
- If a bound parameter is not of the expected type.NameResolutionException
- If a name in the query cannot be resolved.IllegalArgumentException
- The number of bound parameters does not match the number of
place holdersIllegalStateException
- If the query is not permitted on this type of regionQueryExecutionTimeoutException
- If the query gets canceled due to setting system
variable "gemfire.Cache.MAX_QUERY_EXECUTION_TIME". This is a thrown when query is
executed on the local regions (embedded mode).QueryInvocationTargetException
- If the data referenced in from clause is not available
for querying.QueryExecutionLowMemoryException
- If the query gets canceled due to low memory
conditions and the resource manager critical heap percentage has been setPartitionOfflineException
- If persistent data recovery is not complete for a partitioned
region referred to in the query.@Deprecated void compile() throws TypeMismatchException, NameResolutionException
Query
to achieve higher performance execution.TypeMismatchException
- If the compile-time type of a name, parameter, or expression is
not the expected typeNameResolutionException
- If a name in the query cannot be resolved.@Deprecated boolean isCompiled()
true
if this query has been compiled into bytecodesQueryStatistics getStatistics()