Interface for AST rewrites.
This makes it easier to sit down and write an optimizer that operates on a group.
ASK queries have a LIMIT of ONE imposed unless they are aggregations.
Optimizer attempts to resolve any
Examines the source
Rewrites aspects of queries where bottom-up evaluation would produce different results.
Calculate the estimated cardinality of a join group.
Rewrite a join group using two or more complex OPTIONAL groups using a hash join pattern.
This optimizer rewrites the projection node of a DESCRIBE query into, generating a CONSTRUCT clause and extending the WHERE clause to capture the semantics of the DESCRIBE query.
Eliminate semantically empty join group nodes which are the sole child of another join groups.
Optimizer identifies value expressions using EXISTS or NOT EXISTS and rewrites them in a form suitable for evaluation by the query engine.
Flatten nested (non-optional,non-minus) JoinGroupNodes whenever possible.
Flatten nested UNIONs whenever possible.
Handles a variety of special constructions related to graph graph groups.
Rewrites join groups having one or more joins which would involve a full cross product as hash joins of sub-groups where there is a constraint imposed indirectly via a FILTER operating across the variables bound by the joins.
Lift FILTERs which can be evaluated based solely on the bindings in the parent group out of a child group.
Class identifies the join variables for each instance in which a named subquery solution set is incorporated into the query plan.
An executable list of query optimizers.
Query hints are identified applied to AST nodes based on the specified scope and the location within the AST in which they are found.
AST optimizer recognizes datatype and/or value range constraints and applies them to as range constraints to
Attach range counts to all statement patterns in the query.
Attach range bops.
Rewrites the WHERE clause of each query by lifting out
Visit all the value expression nodes and convert them into value expressions using
A "simple optional" is an optional sub-group that contains only one statement pattern, no sub-groups of its own, and no filters that require materialized variables based on the optional statement pattern.
This is an AST optimizer port of the old "static" optimizer -
Optimizer assigns join variables to sub-groups.
Pruning rules for unknown IVs in statement patterns: If an optional join is known to fail, then remove the optional group in which it appears from the group (which could be an optional group, a join group, or a union).
Pre-populated list of the default optimizers.
This is the old static optimizer code, taken directly from
An instance of this exception is thrown when a graph context is not well formed.
Copyright © 2006-2014 SYSTAP, LLC. All Rights Reserved.