Class StatementDetector

java.lang.Object
org.firebirdsql.jdbc.parser.StatementDetector
All Implemented Interfaces:
TokenVisitor

@InternalApi public final class StatementDetector extends Object implements TokenVisitor
Detects the type of statement, and - optionally - whether a DML statement has a RETURNING clause.

If the detected statement type is UPDATE, DELETE, INSERT, UPDATE OR INSERT and MERGE, it identifies the affected table and - optionally - whether or not a RETURNING clause is present (delegated to a ReturningClauseDetector).

The types of statements detected are informed by the needs of Jaybird, and may change between point releases.

Since:
4.0.8
Author:
Mark Rotteveel
  • Constructor Details

    • StatementDetector

      public StatementDetector()
      Detect statement type and returning clause.
      See Also:
    • StatementDetector

      public StatementDetector(boolean detectReturning)
      Detect statement type and - optionally - returning clause.
      Parameters:
      detectReturning - true detect returning clause, false do not detect returning clause
  • Method Details

    • visitToken

      public void visitToken(Token token, VisitorRegistrar visitorRegistrar)
      Description copied from interface: TokenVisitor
      Notifies the visitor of a token.
      Specified by:
      visitToken in interface TokenVisitor
      Parameters:
      token - Token
      visitorRegistrar - Visitor registrar (can be used to remove itself, or add other visitors)
    • complete

      public void complete(VisitorRegistrar visitorRegistrar)
      Description copied from interface: TokenVisitor
      Signals that the last token was produced and the statement text was fully parsed.
      Specified by:
      complete in interface TokenVisitor
      Parameters:
      visitorRegistrar - Visitor registrar (can be used to remove itself, or add other visitors)
    • toStatementIdentification

      public StatementIdentification toStatementIdentification()
    • getStatementType

      public LocalStatementType getStatementType()
      Returns:
      detected statement type, UNKNOWN when no tokens have been received (nothing was parsed)