Приложение Г. Внутренние переменные psql.
Клиент psql использует несколько специальных системных переменных, управляющих различными аспектами работы программы. Особого внимания заслуживают переменные PROMPT1, PROMPT2 и PROMPT3, в которых хранится информация о конфигурации приглашений программы. Во время работы программы значения этих переменных задаются и уничтожаются командами \set и \unset. Ниже перечислены все специальные переменные psql.
- DBNAME. Имя базы данных, к которой в настоящий момент подключен клиент psql. Значение переменной задается при подключении к базе данных при запуске клиента или при подключении в процессе текущей работы.
- ECHO. Переменная управляет выводом на экран при выполнении команд, содержащихся в файле. Чтобы все команды выводились на экран по мере чтения из файла, присвойте этой переменной значение all. Чтобы на экран выводились все запросы, передаваемые серверному процессу, присвойте переменной значение queries.
- ECHO_HIDDEN. Если эта переменная равна true, клиент psql выводит на экран все запросы, используемые управляющими командами. Вывод происходит перед отправкой запросов серверу. Чтобы запросы управляющих команд только выводились на экран без выполнения, присвойте переменной ECHO_HIDDEN значение поехес.
- ENCODING. В переменной хранится информация о расширенной кодировке, используемой базой данных. Для использования расширенных кодировок необходимо указать соответствующий ключ при компиляции PostgreSQL. Если это не сделано, переменная содержит константу SQL_ASCII.
- HISTCONTROL. Переменная определяет режим управления буфером истории psql. Если присвоить ей значение ignorespace, в истории игнорируются все строки, начинающиеся с пробелов. Если переменная равна ignoredups, в истории игнорируются все записи, совпадающие с предыдущими записями. При значении ignoreboth игнорируются как строки с пробелами, так и дубликаты.
- HISTSIZE. Переменная задает длину буфера истории. По умолчанию длина буфера равна 500 строкам.
- HOST. Хостовое имя сервера базы данных, к которому клиент подключен в настоящий момент. Значение переменной задается при подключении к базе данных при запуске клиента или при подключении в процессе текущей работы.
- IGNOREEOF. Переменная управляет обработкой символов EOF в psql. В обычной ситуации при получении символа EOF приложение завершается. Чаще всего этот символ генерируется нажатием клавиш CTRL + D. Присваивая этому ключу любое нечисловое значение, вы сообщаете psql, что символ EOF следует игнорировать до 10 повторений. Также можно присвоить этой переменной числовое значение; в этом случае psql игнорирует указанное количество символов EOF.
- LASTOID. Последний идентификатор объекта (OID), заданный командой INSERT или функцией lo_import(}.
- LO_TRANSACTION. Операция, выполняемая psql при работе с большими объектами. Допустимые значения перечислены ниже.
- rollback. При попытке выполнения операции с большим объектом (или при импортировании больших объектов) транзакция автоматически откатывается. По соображениям эффективности операции с большими объектами обычно выполняются в отдельных транзакциях, поэтому переменная LO_TRANSACTION по умолчанию равна rolIback.
- commit. Клиент psql автоматически фиксирует транзакцию, начатую перед операцией с большим объектом.
- nothing. Клиент psql выполняет операцию с большим объектом в текущей транзакции.
- ON_ERROR_STOP. Если этой переменной присвоено значение (любое), то при возникновении ошибок (например, ошибок синтаксиса SQL или неправильного использования управляющих команд) сценарий автоматически завершается. По умолчанию после возникновения ошибки psql продолжает выполнение сценария.
- PORT. Номер порта, к которому подключен клиент. Значение переменной задается при подключении к базе данных при запуске клиента или при подключении в процессе текущей работы.
- PROMPT1, PROMPT2, PROMPT3. Переменные содержат символьные строки, описывающие структуру приглашений psql. Присваивая им новые значения, можно изменить вид приглашений в программе. За дополнительной информацией о па-стройке приглашений обращайтесь к главе 6.
- SINGLELINE. Если этой переменной присвоено значение (любое), psql выполняет введенные команды SQL при переходе на следующую строку, не требуя специальных завершителей – точки с запятой (;) или \g. Режим также устанавливается ключом командной строки – S.
- SINGLESTEP. Если этой переменной присвоено значение (любое), перед выполнением каждой команды psql запрашивает подтверждение.
- USER. В переменной хранится имя пользователя PostgreSQL, указанное при подключении к базе данных.