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);
}