Package org.teiid.translator.jdbc
Class SQLConversionVisitor
- java.lang.Object
-
- org.teiid.language.visitor.AbstractLanguageVisitor
-
- org.teiid.language.visitor.SQLStringVisitor
-
- org.teiid.translator.jdbc.SQLConversionVisitor
-
- All Implemented Interfaces:
LanguageObjectVisitor,SQLStringVisitor.Substitutor
- Direct Known Subclasses:
PISQLConversionVisitor,PostgreSQLConversionVisitor,TeradataSQLConversionVisitor
public class SQLConversionVisitor extends SQLStringVisitor implements SQLStringVisitor.Substitutor
This visitor takes an ICommand and does DBMS-specific conversion on it to produce a SQL String. This class is expected to be subclassed.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.teiid.language.visitor.SQLStringVisitor
SQLStringVisitor.Substitutor
-
-
Field Summary
Fields Modifier and Type Field Description static StringTEIID_NON_PREPARED-
Fields inherited from class org.teiid.language.visitor.SQLStringVisitor
buffer, shortNameOnly, TEIID_NATIVE_QUERY, UNDEFINED, UNDEFINED_PARAM
-
-
Constructor Summary
Constructors Constructor Description SQLConversionVisitor(JDBCExecutionFactory ef)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddBinding(LanguageObject value)Add a bind ? value to the sql string and to the binding value listvoidappend(LanguageObject obj)protected voidappendBaseName(NamedTable obj)protected voidappendLateralKeyword()protected voidappendSetOperation(SetQuery.Operation operation)protected voidgenerateSqlForStoredProcedure(Call exec)This is a generic implementation.protected ExecutionContextgetExecutionContext()Retrieve the per-command execution context for this visitor (intended for subclasses to use).protected StringgetLikeRegexString()protected StringgetSourceComment(Command command)protected booleanisNonAscii(String val)booleanisPrepared()booleanisUsingBinding()protected booleanpreserveNullTyping()protected StringremoveCharacters(String value)protected StringreplaceElementName(String group, String element)voidsetExecutionContext(ExecutionContext context)Set the per-command execution context on this visitor.voidsetPrepared(boolean prepared)voidsubstitute(Argument arg, StringBuilder builder, int index)protected voidtranslateSQLType(Class<?> type, Object obj, StringBuilder valuesbuffer)For the given type, append a literal SQL valueprotected booleanuseAsInGroupAlias()protected booleanuseParensForJoins()protected booleanuseParensForSetQueries()protected booleanuseSelectLimit()protected booleanuseUnicodePrefix()voidvisit(AggregateFunction obj)voidvisit(Call obj)voidvisit(Comparison obj)voidvisit(DerivedColumn obj)voidvisit(ExpressionValueSource obj)voidvisit(Function obj)voidvisit(GroupBy obj)voidvisit(In obj)voidvisit(Like obj)voidvisit(Literal obj)voidvisit(Parameter obj)voidvisit(SearchedCase obj)voidvisit(SetClause obj)-
Methods inherited from class org.teiid.language.visitor.SQLStringVisitor
append, append, appendCallStart, appendLiteral, appendNestedCondition, appendQuantifier, appendRightComparison, appendSetQuery, appendWithKeyword, escapeString, getInsertKeyword, getName, getRecordName, getShortName, getSQLString, getUpsertKeyword, isInfixFunction, parseNativeQueryParts, shouldNestSetChild, toString, useParensForLHSJoins, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
Methods inherited from class org.teiid.language.visitor.AbstractLanguageVisitor
visit, visitNode, visitNodes, visitNodes
-
-
-
-
Field Detail
-
TEIID_NON_PREPARED
public static final String TEIID_NON_PREPARED
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SQLConversionVisitor
public SQLConversionVisitor(JDBCExecutionFactory ef)
-
-
Method Detail
-
append
public void append(LanguageObject obj)
- Overrides:
appendin classSQLStringVisitor
-
preserveNullTyping
protected boolean preserveNullTyping()
-
translateSQLType
protected void translateSQLType(Class<?> type, Object obj, StringBuilder valuesbuffer)
For the given type, append a literal SQL value- Parameters:
type-obj-valuesbuffer-
-
isNonAscii
protected boolean isNonAscii(String val)
-
useUnicodePrefix
protected boolean useUnicodePrefix()
-
visit
public void visit(Call obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor- See Also:
SQLStringVisitor.visit(org.teiid.language.Call)
-
visit
public void visit(Function obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(AggregateFunction obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(Parameter obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
addBinding
protected void addBinding(LanguageObject value)
Add a bind ? value to the sql string and to the binding value list
-
visit
public void visit(Literal obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor- See Also:
SQLStringVisitor.visit(org.teiid.language.Literal)
-
visit
public void visit(In obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(Like obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(Comparison obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(ExpressionValueSource obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(SetClause obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(DerivedColumn obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
visit
public void visit(SearchedCase obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
setExecutionContext
public void setExecutionContext(ExecutionContext context)
Set the per-command execution context on this visitor.- Parameters:
context- ExecutionContext- Since:
- 4.3
-
getExecutionContext
protected ExecutionContext getExecutionContext()
Retrieve the per-command execution context for this visitor (intended for subclasses to use).- Returns:
- Since:
- 4.3
-
getSourceComment
protected String getSourceComment(Command command)
- Overrides:
getSourceCommentin classSQLStringVisitor
-
generateSqlForStoredProcedure
protected void generateSqlForStoredProcedure(Call exec)
This is a generic implementation. Subclass should override this method if necessary.- Parameters:
exec- The command for the stored procedure.
-
isPrepared
public boolean isPrepared()
-
setPrepared
public void setPrepared(boolean prepared)
-
isUsingBinding
public boolean isUsingBinding()
-
useAsInGroupAlias
protected boolean useAsInGroupAlias()
- Overrides:
useAsInGroupAliasin classSQLStringVisitor
-
useParensForSetQueries
protected boolean useParensForSetQueries()
- Overrides:
useParensForSetQueriesin classSQLStringVisitor
-
replaceElementName
protected String replaceElementName(String group, String element)
- Overrides:
replaceElementNamein classSQLStringVisitor
-
appendSetOperation
protected void appendSetOperation(SetQuery.Operation operation)
- Overrides:
appendSetOperationin classSQLStringVisitor
-
useParensForJoins
protected boolean useParensForJoins()
- Overrides:
useParensForJoinsin classSQLStringVisitor
-
useSelectLimit
protected boolean useSelectLimit()
- Overrides:
useSelectLimitin classSQLStringVisitor
-
getLikeRegexString
protected String getLikeRegexString()
- Overrides:
getLikeRegexStringin classSQLStringVisitor
-
appendBaseName
protected void appendBaseName(NamedTable obj)
- Overrides:
appendBaseNamein classSQLStringVisitor
-
substitute
public void substitute(Argument arg, StringBuilder builder, int index)
- Specified by:
substitutein interfaceSQLStringVisitor.Substitutor
-
visit
public void visit(GroupBy obj)
- Specified by:
visitin interfaceLanguageObjectVisitor- Overrides:
visitin classSQLStringVisitor
-
appendLateralKeyword
protected void appendLateralKeyword()
- Overrides:
appendLateralKeywordin classSQLStringVisitor
-
-