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