Class NewInvocationNode

All Implemented Interfaces:
Visitable

class NewInvocationNode extends MethodCallNode
A NewInvocationNode represents a new object() invocation.
  • Field Details

    • singleInstantiation

      private boolean singleInstantiation
    • delimitedIdentifier

      private boolean delimitedIdentifier
    • isBuiltinVTI

      private boolean isBuiltinVTI
  • Constructor Details

  • Method Details

    • isBuiltinVTI

      boolean isBuiltinVTI()
      Report whether this node represents a builtin VTI.
    • setSingleInstantiation

      void setSingleInstantiation()
      Mark this node as only needing to to a single instantiation. (We can reuse the object after newing it.)
    • bindExpression

      JavaValueNode bindExpression(FromList fromList, SubqueryList subqueryList, List<AggregateNode> aggregates) throws StandardException
      Bind this expression. This means binding the sub-expressions, as well as figuring out what the return type is for this expression.
      Specified by:
      bindExpression in class JavaValueNode
      Parameters:
      fromList - The FROM list for the query this expression is in, for binding columns.
      subqueryList - The subquery list being built as we find SubqueryNodes
      aggregates - The aggregate list being built as we find AggregateNodes
      Returns:
      Nothing
      Throws:
      StandardException - Thrown on error
      See Also:
    • categorize

      boolean categorize(JBitSet referencedTabs, boolean simplePredsOnly) throws StandardException
      Categorize this predicate. Initially, this means building a bit map of the referenced tables for each predicate. If the source of this ColumnReference (at the next underlying level) is not a ColumnReference or a VirtualColumnNode then this predicate will not be pushed down. For example, in: select * from (select 1 from s) a (x) where x = 1 we will not push down x = 1. NOTE: It would be easy to handle the case of a constant, but if the inner SELECT returns an arbitrary expression, then we would have to copy that tree into the pushed predicate, and that tree could contain subqueries and method calls. RESOLVE - revisit this issue once we have views.
      Overrides:
      categorize in class MethodCallNode
      Parameters:
      referencedTabs - JBitSet with bit map of referenced FromTables
      simplePredsOnly - Whether or not to consider method calls, field references and conditional nodes when building bit map
      Returns:
      boolean Whether or not source.expression is a ColumnReference or a VirtualColumnNode.
      Throws:
      StandardException - Thrown on error
      See Also:
    • assignableTo

      protected boolean assignableTo(String toClassName) throws StandardException
      Is this class assignable to the specified class? This is useful for the VTI interface where we want to see if the class implements java.sql.ResultSet.
      Parameters:
      toClassName - The java class name we want to assign to
      Returns:
      boolean Whether or not this class is assignable to the specified class
      Throws:
      StandardException - Thrown on error
    • findPublicMethod

      protected Member findPublicMethod(String methodName, boolean staticMethod) throws StandardException
      Is this class have a public method with the specified signiture This is useful for the VTI interface where we want to see if the class has the option static method for returning the ResultSetMetaData.
      Parameters:
      methodName - The method name we are looking for
      staticMethod - Whether or not the method we are looking for is static
      Returns:
      Member The Member representing the method (or null if the method doesn't exist).
      Throws:
      StandardException - Thrown on error
    • generateExpression

      void generateExpression(ExpressionClassBuilder acb, MethodBuilder mb) throws StandardException
      Do code generation for this method call
      Specified by:
      generateExpression in class JavaValueNode
      Parameters:
      acb - The ExpressionClassBuilder for the class we're generating
      mb - The method the expression will go into
      Throws:
      StandardException - Thrown on error