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:
org.teiid.language.visitor.LanguageObjectVisitor,org.teiid.language.visitor.SQLStringVisitor.Substitutor
- Direct Known Subclasses:
PISQLConversionVisitor,PostgreSQLConversionVisitor,TeradataSQLConversionVisitor
public class SQLConversionVisitor extends org.teiid.language.visitor.SQLStringVisitor implements org.teiid.language.visitor.SQLStringVisitor.SubstitutorThis visitor takes an ICommand and does DBMS-specific conversion on it to produce a SQL String. This class is expected to be subclassed.
-
-
Field Summary
Fields Modifier and Type Field Description static StringTEIID_NON_PREPARED
-
Constructor Summary
Constructors Constructor Description SQLConversionVisitor(JDBCExecutionFactory ef)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddBinding(org.teiid.language.LanguageObject value)Add a bind ? value to the sql string and to the binding value listvoidappend(org.teiid.language.LanguageObject obj)protected voidappendBaseName(org.teiid.language.NamedTable obj)protected voidappendLateralKeyword()protected voidappendSetOperation(org.teiid.language.SetQuery.Operation operation)protected voidgenerateSqlForStoredProcedure(org.teiid.language.Call exec)This is a generic implementation.protected org.teiid.translator.ExecutionContextgetExecutionContext()Retrieve the per-command execution context for this visitor (intended for subclasses to use).protected StringgetLikeRegexString()protected StringgetSourceComment(org.teiid.language.Command command)protected booleanisNonAscii(String val)booleanisPrepared()booleanisUsingBinding()protected StringremoveCharacters(String value)protected StringreplaceElementName(String group, String element)voidsetExecutionContext(org.teiid.translator.ExecutionContext context)Set the per-command execution context on this visitor.voidsetPrepared(boolean prepared)voidsubstitute(org.teiid.language.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(org.teiid.language.Call obj)voidvisit(org.teiid.language.Comparison obj)voidvisit(org.teiid.language.DerivedColumn obj)voidvisit(org.teiid.language.ExpressionValueSource obj)voidvisit(org.teiid.language.Function obj)voidvisit(org.teiid.language.GroupBy obj)voidvisit(org.teiid.language.In obj)voidvisit(org.teiid.language.Like obj)voidvisit(org.teiid.language.Literal obj)voidvisit(org.teiid.language.Parameter obj)voidvisit(org.teiid.language.SearchedCase obj)voidvisit(org.teiid.language.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, visit
-
-
-
-
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(org.teiid.language.LanguageObject obj)
- Overrides:
appendin classorg.teiid.language.visitor.SQLStringVisitor
-
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(org.teiid.language.Call obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor- See Also:
SQLStringVisitor.visit(org.teiid.language.Call)
-
visit
public void visit(org.teiid.language.Function obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.Parameter obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
addBinding
protected void addBinding(org.teiid.language.LanguageObject value)
Add a bind ? value to the sql string and to the binding value list- Parameters:
value- should be anLiteral,Parameter, orArgument
-
visit
public void visit(org.teiid.language.Literal obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor- See Also:
SQLStringVisitor.visit(org.teiid.language.Literal)
-
visit
public void visit(org.teiid.language.In obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.Like obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.Comparison obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.ExpressionValueSource obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.SetClause obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.DerivedColumn obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
visit
public void visit(org.teiid.language.SearchedCase obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
setExecutionContext
public void setExecutionContext(org.teiid.translator.ExecutionContext context)
Set the per-command execution context on this visitor.- Parameters:
context- ExecutionContext- Since:
- 4.3
-
getExecutionContext
protected org.teiid.translator.ExecutionContext getExecutionContext()
Retrieve the per-command execution context for this visitor (intended for subclasses to use).- Returns:
- Since:
- 4.3
-
getSourceComment
protected String getSourceComment(org.teiid.language.Command command)
- Overrides:
getSourceCommentin classorg.teiid.language.visitor.SQLStringVisitor
-
generateSqlForStoredProcedure
protected void generateSqlForStoredProcedure(org.teiid.language.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 classorg.teiid.language.visitor.SQLStringVisitor
-
useParensForSetQueries
protected boolean useParensForSetQueries()
- Overrides:
useParensForSetQueriesin classorg.teiid.language.visitor.SQLStringVisitor
-
replaceElementName
protected String replaceElementName(String group, String element)
- Overrides:
replaceElementNamein classorg.teiid.language.visitor.SQLStringVisitor
-
appendSetOperation
protected void appendSetOperation(org.teiid.language.SetQuery.Operation operation)
- Overrides:
appendSetOperationin classorg.teiid.language.visitor.SQLStringVisitor
-
useParensForJoins
protected boolean useParensForJoins()
- Overrides:
useParensForJoinsin classorg.teiid.language.visitor.SQLStringVisitor
-
useSelectLimit
protected boolean useSelectLimit()
- Overrides:
useSelectLimitin classorg.teiid.language.visitor.SQLStringVisitor
-
getLikeRegexString
protected String getLikeRegexString()
- Overrides:
getLikeRegexStringin classorg.teiid.language.visitor.SQLStringVisitor
-
appendBaseName
protected void appendBaseName(org.teiid.language.NamedTable obj)
- Overrides:
appendBaseNamein classorg.teiid.language.visitor.SQLStringVisitor
-
substitute
public void substitute(org.teiid.language.Argument arg, StringBuilder builder, int index)- Specified by:
substitutein interfaceorg.teiid.language.visitor.SQLStringVisitor.Substitutor
-
visit
public void visit(org.teiid.language.GroupBy obj)
- Specified by:
visitin interfaceorg.teiid.language.visitor.LanguageObjectVisitor- Overrides:
visitin classorg.teiid.language.visitor.SQLStringVisitor
-
appendLateralKeyword
protected void appendLateralKeyword()
- Overrides:
appendLateralKeywordin classorg.teiid.language.visitor.SQLStringVisitor
-
-