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
子句是扩展,标准子句 LIBRARY
和 LANGUAGE
未在 PostgreSQL 中实现。
但请注意,SQL/MED 功能作为一个整体尚未符合要求。