8
Путь поиска
Определение схемы объекта
квалифицированное имя (схем а. имя) явно определяет схему
имя без квалификатора проверяется в схемах, указанных в пути поиска
Путь поиска
определяется параметром search_path,
реальное значение — функция current_schemas
не включаются несуществующие схемы и схемы, к которым нет доступа
схемы pg_temp и pg_catalog неявно включены первыми,
если не указаны в search_path
первая явно указанная в пути схема используется для создания объектов
При указании объекта надо определить, о какой схеме идет речь,
поскольку в разных схемах могут храниться объекты с одинаковыми
именами.
Если имя объекта квалифицировано именем схемы, то все просто —
используется явно указанная схема. Если имя использовано без
квалификатора, PostgreSQL пытается найти имя в одной из схем,
перечисленных в пути поиска, который определяется
конфигурационным параметром search_path.
Путь поиска может отличаться от значения параметра search_path.
В путь поиска не включаются несуществующие схемы из search_path,
а также схемы, к которым у пользователя нет доступа (разграничению
доступа посвящена одна из последующих тем курса). Кроме того,
в начало пути поиска неявно добавляются:
●
схема pg_catalog, чтобы всегда иметь доступ к системному каталогу
●
схема pg_temp, если пользователь создавал временные объекты
Реальный путь поиска, включая неявные схемы, возвращает вызов
функции: current_schemas(true). Схемы перебираются в указанном
в пути поиска порядке, слева направо. Если в схеме нет объекта
с нужным именем, поиск продолжается в следующей схеме. Можно
провести аналогию между путем поиска search_path и путем PATH в
операционных системах.
При создании нового объекта с именем без квалификатора он попадает
в первую явно указанную в пути схему (не считая несуществующих и
тех, на которые недостаточно прав).