Политика безопасности строк и разделов в PostgreSQL - PullRequest
1 голос
/ 06 мая 2019

В таблице PostgreSQL 10.6 включена политика безопасности строк, скажем, id.Таблица имеет несколько разделов на основе id.

Перед выполнением запроса выбора значение для поля было установлено с помощью оператора SET.

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

Принимая во внимание, что если id было передано в предложении WHERE, он выбрал правильный раздел безпросматривая их все.

Есть ли способ заставить политику безопасности строк выбрать правильный раздел, аналогичный предложению where?

1 Ответ

2 голосов
/ 07 мая 2019

Если ваша политика зависит от устанавливаемого параметра, вы, вероятно, используете current_setting() для его получения.

Поскольку при синтаксическом анализе запроса это значение неизвестно, PostgreSQL v10 не может применить сокращение раздела .

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

...