static IntermediatePreparedStatement createStatement()

in src/main/java/com/google/cloud/spanner/pgadapter/wireprotocol/ParseMessage.java [120:274]


  static IntermediatePreparedStatement createStatement(
      ConnectionHandler connectionHandler,
      String name,
      ParsedStatement parsedStatement,
      Statement originalStatement,
      int[] parameterDataTypes) {
    try {
      if (isCommand(COPY, originalStatement.getSql())) {
        return CopyStatement.create(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(PREPARE, originalStatement.getSql())) {
        return new PrepareStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(EXECUTE, originalStatement.getSql())) {
        return new ExecuteStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(DEALLOCATE, originalStatement.getSql())) {
        return new DeallocateStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(DISCARD, originalStatement.getSql())) {
        return new DiscardStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(DECLARE, originalStatement.getSql())) {
        return new DeclareStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(FETCH, originalStatement.getSql())) {
        return new FetchStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(MOVE, originalStatement.getSql())) {
        return new MoveStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(CLOSE, originalStatement.getSql())) {
        return new CloseStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(VACUUM, originalStatement.getSql())) {
        return new VacuumStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(TRUNCATE, originalStatement.getSql())) {
        return new TruncateStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(SAVEPOINT, originalStatement.getSql())) {
        return new SavepointStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(RELEASE, originalStatement.getSql())) {
        return new ReleaseStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(ROLLBACK, originalStatement.getSql())
          && parsedStatement.getType() == StatementType.UNKNOWN) {
        // ROLLBACK [WORK | TRANSACTION] TO [SAVEPOINT] savepoint_name is not recognized by the
        // Connection API as any known statement.
        return new RollbackToStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(SHOW_DATABASE_DDL, originalStatement.getSql())) {
        return new ShowDatabaseDdlStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(SELECT_CURRENT_SETTING, originalStatement.getSql())) {
        return new SelectCurrentSettingStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(SELECT_SET_CONFIG, originalStatement.getSql())) {
        return new SelectSetConfigStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else if (isCommand(SHUTDOWN, originalStatement.getSql())) {
        return new ShutdownStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parsedStatement,
            originalStatement);
      } else {
        return new IntermediatePreparedStatement(
            connectionHandler,
            connectionHandler.getServer().getOptions(),
            name,
            parameterDataTypes,
            parsedStatement,
            originalStatement);
      }
    } catch (Exception exception) {
      return new InvalidStatement(
          connectionHandler,
          connectionHandler.getServer().getOptions(),
          name,
          parsedStatement,
          originalStatement,
          exception);
    }
  }