ParsedCopyStatement build()

in src/main/java/com/google/cloud/spanner/pgadapter/statements/CopyStatement.java [498:560]


      ParsedCopyStatement build() {
        if (freeze) {
          throw PGExceptionFactory.newPGException(
              "PGAdapter does not support the freeze COPY option");
        }
        if (direction == Direction.FROM) {
          if (query != null) {
            throw PGExceptionFactory.newPGException(
                "cannot use query with COPY FROM", SQLState.SyntaxError);
          }
          if (forceQuote != null) {
            throw PGExceptionFactory.newPGException(
                "cannot use force quote in COPY FROM mode", SQLState.SyntaxError);
          }
        }
        if (direction == Direction.TO) {
          if (headerMatch) {
            throw PGExceptionFactory.newPGException(
                "cannot specify HEADER MATCH in COPY TO mode", SQLState.SyntaxError);
          }
          if (forceNotNull != null) {
            throw PGExceptionFactory.newPGException(
                "cannot use force not null in COPY TO mode", SQLState.SyntaxError);
          }
          if (forceNull != null) {
            throw PGExceptionFactory.newPGException(
                "cannot use force null in COPY TO mode", SQLState.SyntaxError);
          }
        }
        if (format == Format.BINARY) {
          if (delimiter != null) {
            throw PGExceptionFactory.newPGException(
                "cannot specify DELIMITER in BINARY mode", SQLState.SyntaxError);
          }
          if (nullString != null) {
            throw PGExceptionFactory.newPGException(
                "cannot specify NULL in BINARY mode", SQLState.SyntaxError);
          }
          if (header || headerMatch) {
            throw PGExceptionFactory.newPGException(
                "cannot specify HEADER in BINARY mode", SQLState.SyntaxError);
          }
        }
        if (format != Format.CSV) {
          if (quote != null) {
            throw PGExceptionFactory.newPGException("COPY quote available only in CSV mode");
          }
          if (escape != null) {
            throw PGExceptionFactory.newPGException("COPY escape available only in CSV mode");
          }
          if (forceQuote != null) {
            throw PGExceptionFactory.newPGException("COPY force quote available only in CSV mode");
          }
          if (forceNotNull != null) {
            throw PGExceptionFactory.newPGException(
                "COPY force not null available only in CSV mode");
          }
          if (forceNull != null) {
            throw PGExceptionFactory.newPGException("COPY force null available only in CSV mode");
          }
        }
        return new ParsedCopyStatement(this);
      }