Как установить параметр transform_null_equals postgres для соединения? - PullRequest
0 голосов
/ 14 июля 2020

Сначала немного контекста на случай, если он поможет вам понять причину, а иногда приводит к другим хорошим ответам. Мне нравятся эти настройки transform_null_equals, потому что вместо

  • sql значение столбца = NULL, где мне сказали, что null означает неизвестное
  • sql значение предложения WHERE = null, где null означает null

Параметр в заголовке в основном изменяется на postgres, так что null в предложении WHERE И значении столбца ОБА означает «неизвестно». Затем я могу сказать WHERE c .col = null (что означает найти любые столбцы WHERE c .col неизвестно), и я также могу сделать WHERE c .col = "value"

В этом Таким образом, на нулевых языках я могу сделать c .col = variable, а переменная может быть нулевой для неизвестного и значением для чего-то известного. идеально!

Я понимаю, что это нарушение SPE c, но это делает нашу команду очень быстрой (что намного важнее в нашем бизнесе) .... у нас было меньше ошибок, и ПУТЬ более простые запросы .... OMG, способ проще.

Теперь мы устанавливаем это для пользователя, но я хочу установить это через соединение вместо этого, поэтому, когда кто-то устанавливает postgres, он просто волшебным образом работает без них не забудьте установить настройку.

  1. Как сделать в jdb c?
  2. Еще лучше, как сделать в Hikari Pool

1 Ответ

1 голос
/ 14 июля 2020

У вас может быть меньше проблем с написанием запросов с помощью transform_null_equals, но я сомневаюсь, что они будут работать лучше, поскольку это просто заменит = NULL на IS NULL до того, как запрос будет оптимизирован.

В любом случае , вы можете использовать параметр options в строке подключения JDB C для передачи параметра серверному процессу:

jdbc:postgresql:dbname?user=myuser&password=mypwd&options=-ctransform_null_equals%3Don
...