CREATE FOREIGN DATA WRAPPER
CREATE FOREIGN DATA WRAPPER¶
定义一个新的外部数据包装器。
- 语法
sql CREATE FOREIGN DATA WRAPPER name [ HANDLER handler_function | NO HANDLER ] [ VALIDATOR validator_function | NO VALIDATOR ] [ OPTIONS ( [ mpp_execute { 'coordinator' | 'any' | 'all executors' } [, ] ] option 'value' [, ... ] ) ]
- 描述
CREATE FOREIGN DATA WRAPPER
在当前数据库中创建一个新的外部数据包装器。 定义外部数据包装器的用户将成为其所有者。
只有超级用户才能创建外部数据包装器。
- 参数
-
该SQL命令参数说明见下
name
- 要创建的外部数据包装器的名称。 该名称在数据库中必须唯一。
HANDLER handler_function
-
SeaboxMPP数据库调用以检索外部表的执行函数的先前注册函数的名称。
hander_function
必须不带任何参数,其返回类型必须是fdw_handler
。可以创建没有处理程序函数的外部数据包装器,但是只能使用此类包装器声明而不访问外部表。
VALIDATOR validator_function
-
SeaboxMPP数据库调用以检查提供给外部数据包装程序的选项的先前注册函数的名称。此函数还检查使用外部数据包装器的外部服务器,用户映射和外部表的选项。如果未指定验证器函数或指定
NO VALIDATOR
,则SeaboxMPP数据库在创建时不会检查选项。(根据实现的不同,外部数据包装程序可能会在运行时忽略或拒绝无效的选项。)validator_function
必须带有两个参数:一个是text[]
类型,它包含存储在系统catalog中的选项数组,另一个是oid
类型,它标识包含选项的系统catalog的OID。返回类型将被忽略;
validator_function
应该使用ereport(ERROR)
函数报告无效的选项。 OPTIONS ( option 'value' \[, ... \] )
- 新的外部数据包装程序的选项。 选项名称必须唯一。选项名称和值是特定于外部数据包装器的,并使用外部数据包装器的
validator_function
进行了验证。 mpp_execute { 'coordinator' | 'any' | 'all executors' }
-
一个选项,用于标识外部数据包装器从其请求数据的主机:
-
coordinator
(默认)— 从coordinator主机请求数据。 -
any
— 向coordinator主机或任一executor请求数据,具体取决于哪条路径的成本更低。 -
all executors
— 从所有executor请求数据。
要支持此选项值,外部数据包装器必须具有将executor与数据匹配的策略。
可以在多个命令中指定
mpp_execute
选项:CREATE FOREIGN TABLE
,CREATE SERVER
和CREATE FOREIGN DATA WRAPPER
。外部表设置优先于外部服务器设置,然后是外部数据包装器设置。 -
- 注解
- 外部数据包装器功能仍在开发中。 查询的优化是原始的(大部分留给包装器)。
- 示例
-
创建一个无用的外部数据包装器,命名为
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),但LIBRARY
和VALIDATOR
子句是扩展是例外,而SeaboxMPP数据库中未实现标准子句LIBRARY
和LANGUAGE
。但是请注意,整个SQL/MED函数尚未符合要求。
- 相关SQL命令
ALTER FOREIGN DATA WRAPPER
,DROP FOREIGN DATA WRAPPER
,CREATE SERVER
,CREATE USER MAPPING