in src/main/java/com/google/cloud/spanner/pgadapter/wireprotocol/BootstrapMessage.java [106:175]
public static void sendStartupMessage(
DataOutputStream output,
int connectionId,
int secret,
SessionState sessionState,
Iterable<NoticeResponse> startupNotices)
throws Exception {
new AuthenticationOkResponse(output).send(false);
new KeyDataResponse(output, connectionId, secret).send(false);
new ParameterStatusResponse(
output,
"server_version".getBytes(StandardCharsets.UTF_8),
sessionState.get(null, "server_version").getSetting().getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"application_name".getBytes(StandardCharsets.UTF_8),
"PGAdapter".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"is_superuser".getBytes(StandardCharsets.UTF_8),
"false".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"session_authorization".getBytes(StandardCharsets.UTF_8),
"PGAdapter".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"integer_datetimes".getBytes(StandardCharsets.UTF_8),
"on".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"server_encoding".getBytes(StandardCharsets.UTF_8),
"UTF8".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"client_encoding".getBytes(StandardCharsets.UTF_8),
"UTF8".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"DateStyle".getBytes(StandardCharsets.UTF_8),
"ISO,YMD".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"IntervalStyle".getBytes(StandardCharsets.UTF_8),
"iso_8601".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"standard_conforming_strings".getBytes(StandardCharsets.UTF_8),
"on".getBytes(StandardCharsets.UTF_8))
.send(false);
new ParameterStatusResponse(
output,
"TimeZone".getBytes(StandardCharsets.UTF_8),
ZoneId.systemDefault().getId().getBytes(StandardCharsets.UTF_8))
.send(false);
for (NoticeResponse noticeResponse : startupNotices) {
noticeResponse.send(false);
}
ReadyResponse.sendIdleResponse(output);
output.flush();
}