CREATE FOREIGN DATA WRAPPER — 定义一个新的外部数据包装器
CREATE FOREIGN DATA WRAPPERname
[ HANDLERhandler_function
| NO HANDLER ] [ VALIDATORvalidator_function
| NO VALIDATOR ] [ OPTIONS (option
'value
' [, ... ] ) ]
CREATE FOREIGN DATA WRAPPER
创建一个新的外部数据包装器。定义外部数据包装器的用户将成为其所有者。
外部数据包装器的名称在数据库中必须是唯一的。
只有超级用户才能创建外部数据包装器。
name
要创建的外部数据包装器的名称。
HANDLER handler_function
handler_function
是一个先前注册的函数的名称,该函数将被调用以检索外部表的执行函数。处理函数必须不接受任何参数,并且其返回类型必须为 fdw_handler
。
可以创建没有处理函数的外部数据包装器,但使用此类包装器的外部表只能声明,不能访问。
VALIDATOR validator_function
validator_function
是一个先前注册的函数的名称,该函数将被调用以检查提供给外部数据包装器的通用选项,以及使用该外部数据包装器的外部服务器、用户映射和外部表的选项。如果未指定验证器函数或 NO VALIDATOR
,则不会在创建时检查选项。(外部数据包装器可能会在运行时忽略或拒绝无效的选项规范,具体取决于实现。)验证器函数必须接受两个参数:一个类型为 text[]
,它将包含存储在系统目录中的选项数组,另一个类型为 oid
,它将是包含选项的系统目录的 OID。返回值将被忽略;函数应使用 ereport(ERROR)
函数报告无效的选项。
OPTIONS ( option
'value
' [, ... ] )
此子句指定新外部数据包装器的选项。允许的选项名称和值特定于每个外部数据包装器,并使用外部数据包装器的验证器函数进行验证。选项名称必须是唯一的。
PostgreSQL 的外部数据功能仍在积极开发中。查询的优化是原始的(并且大多也留给包装器)。因此,未来在性能方面有很大的改进空间。
创建一个无用的外部数据包装器 dummy
CREATE FOREIGN DATA WRAPPER dummy;
创建一个带有处理函数 file_fdw_handler
的外部数据包装器 file
CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler;
创建一个带有某些选项的外部数据包装器 mywrapper
CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true');
CREATE FOREIGN DATA WRAPPER
符合 ISO/IEC 9075-9 (SQL/MED),但 HANDLER
和 VALIDATOR
子句是扩展,并且 PostgreSQL 中未实现标准子句 LIBRARY
和 LANGUAGE
。
但是,请注意,整个 SQL/MED 功能尚未符合标准。
如果您在文档中发现任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。