Class 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.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

        org.teiid.language.visitor.SQLStringVisitor.Substitutor
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String TEIID_NON_PREPARED  
      • Fields inherited from class org.teiid.language.visitor.SQLStringVisitor

        buffer, shortNameOnly, TEIID_NATIVE_QUERY, UNDEFINED, UNDEFINED_PARAM
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addBinding​(org.teiid.language.LanguageObject value)
      Add a bind ? value to the sql string and to the binding value list
      void append​(org.teiid.language.LanguageObject obj)  
      protected void appendBaseName​(org.teiid.language.NamedTable obj)  
      protected void appendLateralKeyword()  
      protected void appendSetOperation​(org.teiid.language.SetQuery.Operation operation)  
      protected void generateSqlForStoredProcedure​(org.teiid.language.Call exec)
      This is a generic implementation.
      protected org.teiid.translator.ExecutionContext getExecutionContext()
      Retrieve the per-command execution context for this visitor (intended for subclasses to use).
      protected String getLikeRegexString()  
      protected String getSourceComment​(org.teiid.language.Command command)  
      protected boolean isNonAscii​(String val)  
      boolean isPrepared()  
      boolean isUsingBinding()  
      protected String removeCharacters​(String value)  
      protected String replaceElementName​(String group, String element)  
      void setExecutionContext​(org.teiid.translator.ExecutionContext context)
      Set the per-command execution context on this visitor.
      void setPrepared​(boolean prepared)  
      void substitute​(org.teiid.language.Argument arg, StringBuilder builder, int index)  
      protected void translateSQLType​(Class<?> type, Object obj, StringBuilder valuesbuffer)
      For the given type, append a literal SQL value
      protected boolean useAsInGroupAlias()  
      protected boolean useParensForJoins()  
      protected boolean useParensForSetQueries()  
      protected boolean useSelectLimit()  
      protected boolean useUnicodePrefix()  
      void visit​(org.teiid.language.Call obj)  
      void visit​(org.teiid.language.Comparison obj)  
      void visit​(org.teiid.language.DerivedColumn obj)  
      void visit​(org.teiid.language.ExpressionValueSource obj)  
      void visit​(org.teiid.language.Function obj)  
      void visit​(org.teiid.language.GroupBy obj)  
      void visit​(org.teiid.language.In obj)  
      void visit​(org.teiid.language.Like obj)  
      void visit​(org.teiid.language.Literal obj)  
      void visit​(org.teiid.language.Parameter obj)  
      void visit​(org.teiid.language.SearchedCase obj)  
      void visit​(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
      • Methods inherited from class org.teiid.language.visitor.AbstractLanguageVisitor

        visit, visitNode, visitNodes, visitNodes
    • Method Detail

      • append

        public void append​(org.teiid.language.LanguageObject obj)
        Overrides:
        append in class org.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)
      • removeCharacters

        protected String removeCharacters​(String value)
      • useUnicodePrefix

        protected boolean useUnicodePrefix()
      • visit

        public void visit​(org.teiid.language.Call obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
        See Also:
        SQLStringVisitor.visit(org.teiid.language.Call)
      • visit

        public void visit​(org.teiid.language.Function obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.Parameter obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.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 an Literal, Parameter, or Argument
      • visit

        public void visit​(org.teiid.language.Literal obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
        See Also:
        SQLStringVisitor.visit(org.teiid.language.Literal)
      • visit

        public void visit​(org.teiid.language.In obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.Like obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.Comparison obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.ExpressionValueSource obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.SetClause obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.DerivedColumn obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • visit

        public void visit​(org.teiid.language.SearchedCase obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.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:
        getSourceComment in class org.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:
        useAsInGroupAlias in class org.teiid.language.visitor.SQLStringVisitor
      • useParensForSetQueries

        protected boolean useParensForSetQueries()
        Overrides:
        useParensForSetQueries in class org.teiid.language.visitor.SQLStringVisitor
      • replaceElementName

        protected String replaceElementName​(String group,
                                            String element)
        Overrides:
        replaceElementName in class org.teiid.language.visitor.SQLStringVisitor
      • appendSetOperation

        protected void appendSetOperation​(org.teiid.language.SetQuery.Operation operation)
        Overrides:
        appendSetOperation in class org.teiid.language.visitor.SQLStringVisitor
      • useParensForJoins

        protected boolean useParensForJoins()
        Overrides:
        useParensForJoins in class org.teiid.language.visitor.SQLStringVisitor
      • useSelectLimit

        protected boolean useSelectLimit()
        Overrides:
        useSelectLimit in class org.teiid.language.visitor.SQLStringVisitor
      • getLikeRegexString

        protected String getLikeRegexString()
        Overrides:
        getLikeRegexString in class org.teiid.language.visitor.SQLStringVisitor
      • appendBaseName

        protected void appendBaseName​(org.teiid.language.NamedTable obj)
        Overrides:
        appendBaseName in class org.teiid.language.visitor.SQLStringVisitor
      • substitute

        public void substitute​(org.teiid.language.Argument arg,
                               StringBuilder builder,
                               int index)
        Specified by:
        substitute in interface org.teiid.language.visitor.SQLStringVisitor.Substitutor
      • visit

        public void visit​(org.teiid.language.GroupBy obj)
        Specified by:
        visit in interface org.teiid.language.visitor.LanguageObjectVisitor
        Overrides:
        visit in class org.teiid.language.visitor.SQLStringVisitor
      • appendLateralKeyword

        protected void appendLateralKeyword()
        Overrides:
        appendLateralKeyword in class org.teiid.language.visitor.SQLStringVisitor