Modifying Query Scope
The query engine resolves names and path expressions according to the name space that is currently in scope in the query. This is not the region scope attribute, but the scope of the query statement.
The initial name space for any query is composed of the region paths of the cache on the cache server and the attributes of those paths. New name spaces are brought into scope based on the
FROM clause in the
SELECT statement. For example, in this query the
FROM expression evaluates to the collection of entry values in
/portfolios. This is added to the initial scope of the query and status is resolved within the new scope.
SELECT DISTINCT * FROM /portfolios WHERE status = 'active'
FROM clause expression must resolve to a collection of objects available for iteration in the query expressions that follow. In the example above,
/portfolios resolves to the Collection of entry values in the region. The entry value collection is iterated by the
WHERE clause, comparing the status field to the string active. When a match is found, the value object is added to the return set.
In the following query, the collection specified in the first FROM clause expression is used by the second FROM clause expression and by the projections of the SELECT statement.
IMPORT cacheRunner.Position; SELECT DISTINCT "type" FROM /portfolios, positions.values posnVal TYPE Position WHERE posnVal.qty > 1000.00
Note: You cannot change the order of the expressions in this FROM clause. The second expression depends on the scope created by the first expression.