Interface Statement

All Superinterfaces:
Visitable
All Known Subinterfaces:
ProcedureCall, ResultStatement, Statement.RegularQuery, Statement.SingleQuery, Statement.UnionQuery, Statement.UseStatement

@API(status=STABLE, since="1.0") public interface Statement extends Visitable
Shall be the common interfaces for queries that we support.

For reference see: Cypher. We have skipped the intermediate "Query" structure so a statement in the context of this generator is either a Statement.RegularQuery or a StandaloneCall.

Since:
1.0
Author:
Michael J. Simons
  • Method Details

    • builder

      @NotNull @Contract(pure=true) static @NotNull StatementBuilder builder()
      Returns:
      A new statement builder.
    • of

      @NotNull static @NotNull Statement of(@NotNull @NotNull List<Clause> clauses)
      Creates a statement based on a list of clauses. It is your task to provide a sanity check of the clauses. The builder will use the clauses "as is", neither change their order nor their type.
      Parameters:
      clauses - A list of clauses, must not be null
      Returns:
      A statement
      Since:
      2021.3.0
    • usingPeriodic

      @API(status=STABLE, since="2021.3.0") @NotNull static @NotNull Statement usingPeriodic(Integer batchSize, @NotNull @NotNull List<Clause> clauses)
      Creates a statement based on a list of clauses and prepends it with USING PERIODIC COMMIT. It is your task to provide a sanity check of the clauses. The builder will use the clauses "as is", neither change their order nor their type.

      The USING PERIODIC HINT is only valid right before the LOAD CSV clause.

      Parameters:
      batchSize - The batch size to pass to PERIODIC COMMIT.
      clauses - A list of clauses, must not be null
      Returns:
      A statement
      Since:
      2021.3.0
    • call

      @NotNull @Contract(pure=true) static @NotNull StatementBuilder.OngoingStandaloneCallWithoutArguments call(String... namespaceAndProcedure)
      Parameters:
      namespaceAndProcedure - The fully qualified name of a stored procedure. Each part can be given as a separate String, but a fully qualified String is ok as well.
      Returns:
      An entry point into a statement that starts with a call to stored procedure.
    • getCatalog

      @NotNull @Contract(pure=true) @NotNull StatementCatalog getCatalog()
      Analyzes the statement and provides access to the resolved properties, their (potential) owners and the context in which they have been resolved. Identifiable expressions may be retrieved via StatementCatalog.getIdentifiableExpressions().
      Returns:
      An immutable object representing properties resolved in a statement together with their context and owner
      Since:
      2023.1.0
    • getCypher

      @NotNull @Contract(pure=true) @NotNull String getCypher()
      This method uses the default renderer to create a String representation of this statement. The generated Cypher will use escaped literals and correct placeholders like $param for parameters. The placeholders for parameters can be retrieved via StatementCatalog.getParameterNames(). Bounded values for parameters can be retrieved via StatementCatalog.getParameters().

      This method is thread safe.

      Returns:
      A valid Cypher statement
      Since:
      2021.0.0
    • getContext

      @API(status=INTERNAL, since="2021.0.0") @NotNull @Contract(pure=true) @NotNull StatementContext getContext()
      Returns:
      The context of this statement, allowing access to parameter names etc.
    • isRenderConstantsAsParameters

      @Contract(pure=true) boolean isRenderConstantsAsParameters()
      Some constants may be rendered as parameters.
      Returns:
      True if literal parameters hav
    • setRenderConstantsAsParameters

      void setRenderConstantsAsParameters(boolean renderConstantsAsParameters)
      Use this method to configure whether some constant values should be rendered as parameters or as literals before the first call to StatementCatalog.getParameters() or getCypher().

      Renderers are free to chose to ignore this.

      Parameters:
      renderConstantsAsParameters - Set to true to render constants as parameters (when using getCypher().
    • doesReturnOrYield

      default boolean doesReturnOrYield()
      Returns:
      True if this statement can be assured to return something.