CREATE FOREIGN DATA WRAPPER
Name
CREATE FOREIGN DATA WRAPPER -- 定义一个外部数据封装器
Synopsis
CREATE FOREIGN DATA WRAPPER _name_
[ HANDLER _handler_function_ | NO HANDLER ]
[ VALIDATOR _validator_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功能作为一个整体目前是不符合的。
又见
ALTER FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER, CREATE SERVER, CREATE USER MAPPING, CREATE FOREIGN TABLE