17.10. 客户端连接缺省

17.10.1. 语句行为

search_path (string)

这个变量声明模式的搜索顺序,在一个被引用对象(表,数据类型,函数等)只是一个简单名字, 没有附加模式部分时需要这样的搜索。 如果在另外一个模式里有一个相同的对象名,那么使用在这个搜索路径中找到的第一个。 一个没有在搜索路径中任何一个模式里出现的对象只能通过其所在模式的全称(打点的)名字来声明。

search_path 的值必需是一个逗号分隔的模式名的列表。 如果列表项之一是特殊值 $user, 那么该模式和 SESSION_USER 所代换的名字一样 — 如果存在这个模式的话。 (如果没有,那么忽略 $user。)

系统表模式,pg_catalog,总是被搜索,不管我们有没有在路径里提到它。 如果我们在路径中提到它,那么将按照指定的顺序搜索。 如果 pg_catalog 没有在路径中,那么它将在任何路径项之前得到搜索。 我们还要注意的是,临时表模式,pg_temp_nnn,也隐含在任何这些项之前得到搜索。

如果创建对象时没有声明特定的目标模式,那么它将被放到搜索路径中的第一个模式。如果搜索路径是空的,那么会报告一个错误。

这个参数的缺省值是 '$user, public' (如果没有叫 public 的模式,那么第二部分将被忽略)。 这样就支持共享使用一个数据库(这个时候没有用户拥有私有模式, 并且所有人都共享使用 public),私有的每用户的模式, 以及这些的组合。其它效果可以通过(全局或者每用户地)修改搜索路径设置获取。

搜索路径当前的有效值可以用 SQL 函数 current_schemas() 检查。 它和检查 search_path 的值并不太一样, 因为 current_schemas() 显示的是在 search_path 里出现的请求如何被分析。

有关模式处理的更多信息,参阅 Section 5.7

default_tablespace (string)

这个变量声明当 CREATE 命令没有明确声明表空间时, 所创建之对象(表和索引等)的缺省表空间。

数值要么是一个表空间的名字,要么是一个空串,表明使用当前数据库的缺省表空间。 如果这个数值和任意现存表空间的名字不匹配,那么 PostgreSQL 将自动使用当前数据库的缺省表空间。

有关表空间的更多的信息,参阅 Section 19.6

check_function_bodies (boolean)

这个参数通常是开。如果设置为 off,那么就关闭在 CREATE FUNCTION 时候的函数体字串的合法性检查。 关闭合法性检查有时候会有用,比如可以避免在从转储中恢复函数定义的时候类似前向引用的问题。

default_transaction_isolation (string)

每个 SQL 事务都有一个隔离级别,可以是"读未提交""读已提交""可重复读"或者是"可串性化"。 这个参数控制每个新的事务的隔离级别。缺省是读已提交。

参考 Chapter 12SET TRANSACTION 获取更多信息。

default_transaction_read_only (boolean)

只读的 SQL 事务不能修改非临时表。这个参数控制每个新事务的只读状态。 缺省是 off(读/写)。

参考 SET TRANSACTION 获取更多信息。

statement_timeout (integer)

退出任何使用了超过此参数指定时间(毫秒)的语句。 如果 log_min_error_statement 设置为 ERROR 或者更低, 那么也会记录超时的日志。 零值(缺省)关闭这个计时器。

17.10.2. 区域和格式化

DateStyle (string)

设置日期和时间值的显示格式,以及有歧义的输入值的解析规则。 由于历史原因,这个变量包含两个独立的部分:输出格式声明(ISOPostgresSQL,或者 German)以及日志字段顺序声明(DMYMDY,或者 YMD)。 这两个可以独立设置或者一起设置。关键字 EuroEuropeanDMY 的同义词; 关键字 USNonEuro,和 NonEuropeanMDY 的同义词。 参阅 Section 8.5 获取更多信息。缺省是 ISO, US

timezone (string)

设置用于显示和解析时间戳的时区。缺省是 'unknown',意味着使用系统环境声明的时区。 参阅 Section 8.5 获取更多信息。

australian_timezones (boolean)

如果设置为开,那么ACSTCSTCSTEST,和 SAT 都解释成澳大利亚时区,而不是南/北美时区和周六。 缺省是 off

extra_float_digits (integer)

这个参数为浮点数值调整显示的数据位数,浮点类型包括 float4float8,和几何数据类型。 参数值加在标准的数据位数上(FLT_DIG 或者 DBL_DIG 中合适的)。 数值可以设置为最高 2,以包括部分关键的数据位;这个功能对转储那些需要精确恢复的浮点数据特别有用。 或者你也可以把它设置位负数以消除不需要的数据位。

client_encoding (string)

设置客户端编码(字符集)。缺省使用数据库编码。

lc_messages (string)

设置信息显示的语言。可接受的值是系统相关的;参阅 Section 21.1 获取更多信息。 如果这个变量设置为空字串(缺省值),那么其值以一种系统相关的方式从服务器的执行环境中继承过来。

在一些系统上,这个区域范畴并不存在。设置这个变量仍然是允许的, 但是将不会有任何效果。同样,也有可能是所期望的语言的翻译信息不存在。在这种情况下,你仍然能看到英文信息。

lc_monetary (string)

为格式化金额数量设置区域。比如为 to_char 族函数设置。 可接受的值是系统相关的;参阅 Section 21.1 获取更多信息。 如果这个变量设置为空字串(缺省值),那么其值是以一种系统相关的方式从服务器的执行环境中继承过来的。

lc_numeric (string)

设置用于格式化数字的区域,比如那些用于 to_char 族函数的。可接受的值是系统相关的;参阅 Section 21.1 获取更多信息。如果这个变量设置为空字串(缺省值),那么其值以一种系统相关的方法从服务器的执行环境中继承过来。

lc_time (string)

设置用于格式化日期和时间值的区域。(目前,这个设置什么事也没干,但将来可能会有用。) to_char 族函数的。 可接受的值是系统相关的;参阅 Section 21.1 获取更多信息。 如果这个变量设置为空字串(缺省值),那么其值是以一种系统相关的方式从服务器的执行环境中继承过来的。

17.10.3. 其它缺省

explain_pretty_print (boolean)

决定 EXPLAIN VERBOSE 是使用缩进格式还是使用非缩进格式显示详细的查询树转储。 缺省是 on

dynamic_library_path (string)

如果需要打开一个可以动态装载的模块并且在 CREATE FUNCTION 或者 LOAD 命令里面声明的名字没有目录部分(也就是说名字里不包含斜杠), 那么系统将搜索这个目录以查找声明的文件。

用于 dynamic_library_path 的数值必须是一个冒号分隔(或者是在 Windows 上分号分隔)的绝对路径名字列表。 如果一个路径名字以特殊变量 $libdirPostgreSQL编译好的库目录)开头, 那么就替换为PostgreSQL发布提供的模块安装路径。 这是标准 PostgreSQL 发布提供的模块安装的目录。 (使用 pg_config --pkglibdir 打印这个目录的名字。) 比如:

dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'

或者是在 windows 环境里:

dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'

这个参数的缺省值是 '$libdir'。 如果把这个值设置为一个空字串,则关闭自动路径搜索。

这个参数可以在运行时由超级用户修改,但是这么修改的设置只能保持到这个客户端连接的结束, 因此这个方法应该保留给开发用途使用。 我们建议的设置这个参数的方法是在 postgresql.conf 配置文件里设置。