CREATE PROTOCOL

注册一个自定义数据访问协议,该协议可在定义数据库外部表时指定。

概要

CREATE [TRUSTED] PROTOCOL <name> (
   [readfunc='<read_call_handler>'] [, writefunc='<write_call_handler>']
   [, validatorfunc='<validate_handler>' ])

描述

CREATE PROTOCOL 用于将数据访问协议名称与负责从外部数据源读取和写入数据的调用处理程序关联。创建协议必须具备超级用户权限。

CREATE PROTOCOL 命令必须指定读调用处理程序或写调用处理程序。在 CREATE PROTOCOL 命令中指定的调用处理程序必须已在数据库中定义。

协议名称可在CREATE EXTERNAL TABLE命令中指定。

参数

  • TRUSTED
    • 若未指定,仅超级用户和协议所有者可使用该协议创建外部表。若指定,超级用户和协议所有者可向其他数据库角色授予该协议的权限。
  • name
    • 数据访问协议的名称。协议名称区分大小写。该名称在数据库中的所有协议中必须唯一。
  • readfunc= 'read_call_handler'
    • 数据库调用先前注册的函数名称,用于从外部数据源读取数据。该命令必须指定读调用处理程序或写调用处理程序。
  • writefunc= 'write_call_handler'
    • 数据库调用先前注册的函数名称,用于将数据写入外部数据源。该命令必须指定读调用处理程序或写调用处理程序。
  • validatorfunc='validate_handler'
    • 一个可选的验证函数,用于验证在CREATE EXTERNAL TABLE命令中指定的URL。

注意

数据库在内部处理文件、gpfdist 和 gpfdist 类型的外部表。有关启用 S3 协议的信息,请参阅 s3:// 协议。有关使用 pxf 协议的信息,请参阅 pxf:// 协议。

任何实现数据访问协议的共享库都必须位于所有数据库段主机上的相同位置。例如,该共享库可在所有主机上通过操作系统环境变量 LD_LIBRARY_PATH 指定的位置存放。您也可在定义处理程序函数时指定位置。例如,在CREATE PROTOCOL命令中定义s3协议时,可将共享对象位置设为$libdir/gps3ext.so,其中$libdir位于$GPHOME/lib目录下。

兼容性

CREATE PROTOCOL 是一个数据库扩展。

另见

ALTER PROTOCOL, CREATE EXTERNAL TABLE, DROP PROTOCOL, GRANT