org.hibernate.hql.ast

Class HqlSqlWalker

Implemented Interfaces:
ErrorReporter, HqlSqlTokenTypes, ParameterBinder.NamedParameterSource

public class HqlSqlWalker
extends HqlSqlBaseWalker
implements ErrorReporter, ParameterBinder.NamedParameterSource

Implements methods used by the HQL->SQL tree transform grammar (a.k.a. the second phase).
See Also:
SqlASTFactory

Field Summary

Fields inherited from class org.hibernate.hql.antlr.HqlSqlBaseWalker

_tokenNames, _tokenSet_0

Fields inherited from interface org.hibernate.hql.antlr.HqlSqlTokenTypes

AGGREGATE, ALIAS, ALIAS_REF, ALL, AND, ANY, AS, ASCENDING, AVG, BETWEEN, BOGUS, BOTH, CASE, CASE2, CLASS, CLOSE, CLOSE_BRACKET, COLON, COMMA, CONCAT, CONSTANT, CONSTRUCTOR, COUNT, DELETE, DESCENDING, DISTINCT, DIV, DOT, ELEMENTS, ELSE, EMPTY, END, EOF, EQ, ESCAPE, ESCqs, EXISTS, EXPONENT, EXPR_LIST, FALSE, FETCH, FILTERS, FILTER_ENTITY, FLOAT_SUFFIX, FROM, FROM_FRAGMENT, FULL, GE, GROUP, GT, HAVING, HEX_DIGIT, IDENT, ID_LETTER, ID_START_LETTER, IMPLIED_FROM, IN, INDEX_OP, INDICES, INNER, INSERT, INTO, IN_LIST, IS, IS_NOT_NULL, IS_NULL, JAVA_CONSTANT, JOIN, JOIN_FRAGMENT, LE, LEADING, LEFT, LEFT_OUTER, LIKE, LITERAL_ascending, LITERAL_by, LITERAL_descending, LT, MAX, MEMBER, METHOD_CALL, METHOD_NAME, MIN, MINUS, NAMED_PARAM, NE, NEW, NOT, NOT_BETWEEN, NOT_IN, NOT_LIKE, NULL, NULL_TREE_LOOKAHEAD, NUM_DOUBLE, NUM_FLOAT, NUM_INT, NUM_LONG, OBJECT, OF, ON, OPEN, OPEN_BRACKET, OR, ORDER, ORDER_ELEMENT, OUTER, PARAM, PLUS, PROPERTIES, PROPERTY_REF, QUERY, QUOTED_STRING, RANGE, RIGHT, RIGHT_OUTER, ROW_STAR, SELECT, SELECT_CLAUSE, SELECT_COLUMNS, SELECT_EXPR, SELECT_FROM, SET, SOME, SQL_NE, SQL_TOKEN, STAR, SUM, THEN, THETA_JOINS, TRAILING, TRUE, UNARY_MINUS, UNARY_PLUS, UNION, UPDATE, VECTOR_EXPR, VERSIONED, WEIRD_IDENT, WHEN, WHERE, WITH, WS

Constructor Summary

HqlSqlWalker(QueryTranslatorImpl qti, SessionFactoryImplementor sfi, HqlParser parser, Map tokenReplacements, String collectionRole)
Create a new tree transformer.

Method Summary

void
addQuerySpaces(Serializable[] spaces)
protected void
beforeSelectClause()
protected AST
createFromElement(String path, AST alias, AST propertyFetch)
protected AST
createFromFilterElement(AST filterEntity, AST alias)
protected void
createFromJoinElement(AST path, AST alias, int joinType, AST fetchNode, AST propertyFetch, AST with)
protected AST
createIntoClause(String path, AST propertySpec)
protected void
evaluateAssignment(AST eq)
protected AST
generateNamedParameter(AST delimiterNode, AST nameNode)
protected AST
generatePositionalParameter(AST inputNode)
ASTPrinter
getASTPrinter()
AliasGenerator
getAliasGenerator()
ArrayList
getAssignmentSpecifications()
FromClause
getCurrentFromClause()
Map
getEnabledFilters()
FromClause
getFinalFromClause()
int
getImpliedJoinType()
LiteralProcessor
getLiteralProcessor()
int[]
getNamedParameterLocations(String name)
Returns the locations of all occurrences of the named parameter.
int
getNumberOfParametersInSetClause()
ArrayList
getParameters()
ParseErrorHandler
getParseErrorHandler()
Set
getQuerySpaces()
Returns the set of unique query spaces (a.k.a.
String[]
getReturnAliases()
Type[]
getReturnTypes()
SelectClause
getSelectClause()
SessionFactoryHelper
getSessionFactoryHelper()
Map
getTokenReplacements()
boolean
isFilter()
protected boolean
isNonQualifiedPropertyRef(AST ident)
boolean
isShallowQuery()
protected void
lookupAlias(AST aliasRef)
protected AST
lookupNonQualifiedProperty(AST property)
protected AST
lookupProperty(AST dot, boolean root, boolean inSelect)
static void
panic()
protected void
postProcessDML(RestrictableStatement statement)
protected void
postProcessDelete(AST delete)
protected void
postProcessInsert(AST insert)
protected void
postProcessUpdate(AST update)
protected void
prepareArithmeticOperator(AST operator)
protected void
prepareFromClauseInputTree(AST fromClauseInput)
Pre-process the from clause input tree.
protected void
prepareLogicOperator(AST operator)
protected void
prepareVersioned(AST updateNode, AST versioned)
protected void
processBoolean(AST constant)
protected void
processConstant(AST constant)
protected void
processConstructor(AST constructor)
protected void
processFunction(AST functionCall, boolean inSelect)
protected void
processIndex(AST indexOp)
protected void
processNumericLiteral(AST literal)
protected void
processQuery(AST select, AST query)
protected void
pushFromClause(AST fromNode, AST inputFromNode)
Sets the current 'FROM' context.
void
reportError(RecognitionException e)
void
reportError(String s)
void
reportWarning(String s)
protected void
resolve(AST node)
protected void
resolveSelectExpression(AST node)
protected void
setAlias(AST selectExpr, AST ident)
protected void
setImpliedJoinType(int joinType)
static boolean
supportsIdGenWithBulkInsertion(IdentifierGenerator generator)

Methods inherited from class org.hibernate.hql.antlr.HqlSqlBaseWalker

addrExpr, addrExprLhs, aggregateExpr, aliasRef, aliasedSelectExpr, arithmeticExpr, assignment, beforeSelectClause, caseExpr, collectionFunction, collectionFunctionOrSubselect, comparisonExpr, constant, constructor, count, createFromElement, createFromFilterElement, createFromJoinElement, createIntoClause, deleteStatement, evaluateAssignment, expr, exprOrSubquery, fromClause, fromElement, fromElementList, functionCall, generateNamedParameter, generatePositionalParameter, getCurrentClauseType, getCurrentStatementType, getCurrentTopLevelClauseType, getStatementType, groupClause, identifier, inRhs, insertStatement, insertablePropertySpec, intoClause, isComparativeExpressionClause, isInCase, isInFrom, isInFunctionCall, isInSelect, isNonQualifiedPropertyRef, isSelectStatement, isSubQuery, joinElement, joinType, literal, logicalExpr, lookupAlias, lookupNonQualifiedProperty, lookupProperty, newValue, numericInteger, orderClause, orderExprs, parameter, path, pathAsIdent, postProcessDelete, postProcessInsert, postProcessUpdate, prepareArithmeticOperator, prepareFromClauseInputTree, prepareLogicOperator, prepareVersioned, processBoolean, processConstant, processConstructor, processFunction, processIndex, processNumericLiteral, processQuery, propertyName, propertyRef, propertyRefLhs, pushFromClause, query, resolve, resolveSelectExpression, selectClause, selectExpr, selectExprList, selectStatement, setAlias, setClause, setImpliedJoinType, statement, updateStatement, whereClause, withClause

Constructor Details

HqlSqlWalker

public HqlSqlWalker(QueryTranslatorImpl qti,
                    SessionFactoryImplementor sfi,
                    HqlParser parser,
                    Map tokenReplacements,
                    String collectionRole)
Create a new tree transformer.
Parameters:
qti - Back pointer to the query translator implementation that is using this tree transform.
sfi - The session factory implementor where the Hibernate mappings can be found.
parser - A reference to the phase-1 parser
tokenReplacements - Registers the token replacement map with the walker. This map will be used to substitute function names and constants.
collectionRole - The collection role name of the collection used as the basis for the filter, NULL if this is not a collection filter compilation.

Method Details

addQuerySpaces

public void addQuerySpaces(Serializable[] spaces)

beforeSelectClause

protected void beforeSelectClause()
            throws SemanticException
Overrides:
beforeSelectClause in interface HqlSqlBaseWalker

createFromElement

protected AST createFromElement(String path,
                                AST alias,
                                AST propertyFetch)
            throws SemanticException
Overrides:
createFromElement in interface HqlSqlBaseWalker

createFromFilterElement

protected AST createFromFilterElement(AST filterEntity,
                                      AST alias)
            throws SemanticException
Overrides:
createFromFilterElement in interface HqlSqlBaseWalker

createFromJoinElement

protected void createFromJoinElement(AST path,
                                     AST alias,
                                     int joinType,
                                     AST fetchNode,
                                     AST propertyFetch,
                                     AST with)
            throws SemanticException
Overrides:
createFromJoinElement in interface HqlSqlBaseWalker

createIntoClause

protected AST createIntoClause(String path,
                               AST propertySpec)
            throws SemanticException
Overrides:
createIntoClause in interface HqlSqlBaseWalker

evaluateAssignment

protected void evaluateAssignment(AST eq)
            throws SemanticException
Overrides:
evaluateAssignment in interface HqlSqlBaseWalker

generateNamedParameter

protected AST generateNamedParameter(AST delimiterNode,
                                     AST nameNode)
            throws SemanticException
Overrides:
generateNamedParameter in interface HqlSqlBaseWalker

generatePositionalParameter

protected AST generatePositionalParameter(AST inputNode)
            throws SemanticException
Overrides:
generatePositionalParameter in interface HqlSqlBaseWalker

getASTPrinter

public ASTPrinter getASTPrinter()

getAliasGenerator

public AliasGenerator getAliasGenerator()

getAssignmentSpecifications

public ArrayList getAssignmentSpecifications()

getCurrentFromClause

public FromClause getCurrentFromClause()

getEnabledFilters

public Map getEnabledFilters()

getFinalFromClause

public FromClause getFinalFromClause()

getImpliedJoinType

public int getImpliedJoinType()

getLiteralProcessor

public LiteralProcessor getLiteralProcessor()

getNamedParameterLocations

public int[] getNamedParameterLocations(String name)
            throws QueryException
Returns the locations of all occurrences of the named parameter.
Specified by:
getNamedParameterLocations in interface ParameterBinder.NamedParameterSource

getNumberOfParametersInSetClause

public int getNumberOfParametersInSetClause()

getParameters

public ArrayList getParameters()

getParseErrorHandler

public ParseErrorHandler getParseErrorHandler()

getQuerySpaces

public Set getQuerySpaces()
Returns the set of unique query spaces (a.k.a. table names) that occurred in the query.
Returns:
A set of table names (Strings).

getReturnAliases

public String[] getReturnAliases()

getReturnTypes

public Type[] getReturnTypes()

getSelectClause

public SelectClause getSelectClause()

getSessionFactoryHelper

public SessionFactoryHelper getSessionFactoryHelper()

getTokenReplacements

public Map getTokenReplacements()

isFilter

public boolean isFilter()

isNonQualifiedPropertyRef

protected boolean isNonQualifiedPropertyRef(AST ident)
Overrides:
isNonQualifiedPropertyRef in interface HqlSqlBaseWalker

isShallowQuery

public boolean isShallowQuery()

lookupAlias

protected void lookupAlias(AST aliasRef)
            throws SemanticException
Overrides:
lookupAlias in interface HqlSqlBaseWalker

lookupNonQualifiedProperty

protected AST lookupNonQualifiedProperty(AST property)
            throws SemanticException
Overrides:
lookupNonQualifiedProperty in interface HqlSqlBaseWalker

lookupProperty

protected AST lookupProperty(AST dot,
                             boolean root,
                             boolean inSelect)
            throws SemanticException
Overrides:
lookupProperty in interface HqlSqlBaseWalker

panic

public static void panic()

postProcessDML

protected void postProcessDML(RestrictableStatement statement)
            throws SemanticException

postProcessDelete

protected void postProcessDelete(AST delete)
            throws SemanticException
Overrides:
postProcessDelete in interface HqlSqlBaseWalker

postProcessInsert

protected void postProcessInsert(AST insert)
            throws SemanticException,
                   QueryException
Overrides:
postProcessInsert in interface HqlSqlBaseWalker

postProcessUpdate

protected void postProcessUpdate(AST update)
            throws SemanticException
Overrides:
postProcessUpdate in interface HqlSqlBaseWalker

prepareArithmeticOperator

protected void prepareArithmeticOperator(AST operator)
            throws SemanticException
Overrides:
prepareArithmeticOperator in interface HqlSqlBaseWalker

prepareFromClauseInputTree

protected void prepareFromClauseInputTree(AST fromClauseInput)
Pre-process the from clause input tree. *
Overrides:
prepareFromClauseInputTree in interface HqlSqlBaseWalker

prepareLogicOperator

protected void prepareLogicOperator(AST operator)
            throws SemanticException
Overrides:
prepareLogicOperator in interface HqlSqlBaseWalker

prepareVersioned

protected void prepareVersioned(AST updateNode,
                                AST versioned)
            throws SemanticException
Overrides:
prepareVersioned in interface HqlSqlBaseWalker

processBoolean

protected void processBoolean(AST constant)
            throws SemanticException
Overrides:
processBoolean in interface HqlSqlBaseWalker

processConstant

protected void processConstant(AST constant)
            throws SemanticException
Overrides:
processConstant in interface HqlSqlBaseWalker

processConstructor

protected void processConstructor(AST constructor)
            throws SemanticException
Overrides:
processConstructor in interface HqlSqlBaseWalker

processFunction

protected void processFunction(AST functionCall,
                               boolean inSelect)
            throws SemanticException
Overrides:
processFunction in interface HqlSqlBaseWalker

processIndex

protected void processIndex(AST indexOp)
            throws SemanticException
Overrides:
processIndex in interface HqlSqlBaseWalker

processNumericLiteral

protected void processNumericLiteral(AST literal)
Overrides:
processNumericLiteral in interface HqlSqlBaseWalker

processQuery

protected void processQuery(AST select,
                            AST query)
            throws SemanticException
Overrides:
processQuery in interface HqlSqlBaseWalker

pushFromClause

protected void pushFromClause(AST fromNode,
                              AST inputFromNode)
Sets the current 'FROM' context.
Overrides:
pushFromClause in interface HqlSqlBaseWalker
Parameters:
fromNode - The new 'FROM' context.
inputFromNode - The from node from the input AST.

reportError

public void reportError(RecognitionException e)
Specified by:
reportError in interface ErrorReporter

reportError

public void reportError(String s)
Specified by:
reportError in interface ErrorReporter

reportWarning

public void reportWarning(String s)
Specified by:
reportWarning in interface ErrorReporter

resolve

protected void resolve(AST node)
            throws SemanticException
Overrides:
resolve in interface HqlSqlBaseWalker

resolveSelectExpression

protected void resolveSelectExpression(AST node)
            throws SemanticException
Overrides:
resolveSelectExpression in interface HqlSqlBaseWalker

setAlias

protected void setAlias(AST selectExpr,
                        AST ident)
Overrides:
setAlias in interface HqlSqlBaseWalker

setImpliedJoinType

protected void setImpliedJoinType(int joinType)
Overrides:
setImpliedJoinType in interface HqlSqlBaseWalker

supportsIdGenWithBulkInsertion

public static boolean supportsIdGenWithBulkInsertion(IdentifierGenerator generator)