Можно ли с PostgresSQL JDB C принудительно использовать только подготовленные отчеты клиента? - PullRequest
1 голос
/ 22 февраля 2020

Я хотел бы удалить подготовленные операторы на стороне сервера на PG SQL без изменения моего кода. Возможно ли это в JDB C с некоторым параметром?

Чтобы было ясно, я хотел бы использовать подготовленные клиентом операторы, то есть мой код не изменится, и я буду пользоваться преимуществами безопасности подготовленных отчетов, но не компилировать его на сервере.

1 Ответ

3 голосов
/ 22 февраля 2020

Документация гласит:

В некоторых случаях может потребоваться отключить использование подготовленных сервером выражений. Например, если вы маршрутизируете соединения через балансировщик, который несовместим с подготовленными операторами, у вас мало выбора.

Вы можете отключить использование подготовленных операторов на стороне сервера, установив prepareThreshold=0

Пример кода:

java.sql.PreparedStatement pstmt = conn.prepareStatement("SELECT ...");
// get the PostgreSQL-specific class
org.postgresql.PGStatement pgstmt = pstmt.unwrap(org.postgresql.PGStatement.class);
// disable server-side prepared statements
pgstmt.setPrepareThreshold(0);

Если вы unwrap org.postgresql.PGConnection в своем java.sql.Connection, вы также можете установить пороговое значение на уровне соединения для всех подготовленных операторов этого соединения.

Пример добавления его в URL: jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true&prepareThreshold=0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...