Установка search_path чрезвычайно распространена, когда у вас есть база данных с достаточным количеством таблиц, чтобы они были разбиты на несколько схем. Путь к пониманию того, что он делает и для чего используется, - начать с документации schema , которая также охватывает роль публичной схемы в вещах.
Способ замены $ user, когда он появляется по этому пути, описан в документации для search_path :
"Если одним из пунктов списка является
специальное значение $ user, тогда схема
возвращая имя
SESSION_USER заменяется, если есть
такая схема ".
Очевидно, ваш следующий вопрос - тогда что такое SESSION_USER? Это начинается с имени пользователя, с которым вы подключаетесь к базе данных, но может изменяться с помощью таких команд, как SET SESSION AUTHORIZATION . Идея состоит в том, что он может помочь вам настроить схему для каждого пользователя, что может быть полезным способом блокировки безопасности для каждого пользователя. Я только слышал о том, чтобы его использовали в простой среде размещения баз данных, где каждый пользователь получает свою собственную роль и схему, но не свою собственную базу данных. Вы, вероятно, можете оставить часть «$ user» и не влиять ни на что, она просто отображается по умолчанию, и большинство не знает, что вы можете удалить ее, если не полагаетесь на нее.
$ user указан в кавычках, поскольку это зарезервированное слово в стандарте SQL. Вы можете называть вещи, используя зарезервированные слова, если это необходимо в PostgreSQL, даже если это плохая идея, но вы должны постоянно помещать их в кавычки, чтобы синтаксический анализатор SQL не интерпретировал их неправильно. Это может привести к странным ошибкам, если вы попытаетесь использовать зарезервированное слово в качестве имени столбца или таблицы. Некоторые из них вы можете случайно попытаться использовать в качестве имен столбцов в дополнение к «пользователю», потому что они сопоставляются с общими фактическими вещами, такими как case, default, end, full, left, new, offset, order и ссылки.