CREATE PROTOCOL

Регистрирует пользовательский протокол доступа к данным, который можно указать при определении внешней таблицы базы данных.

Синтаксис

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

Описание

Команда CREATE PROTOCOL связывает имя протокола доступа к данным с обработчиками вызовов, отвечающими за чтение и запись данных во внешний источник данных. Для создания протокола необходимо быть суперпользователем.

Команда CREATE PROTOCOL должна указывать либо обработчик чтения, либо обработчик записи. Указанные в команде обработчики вызовов должны быть предварительно определены в базе данных.

Имя протокола может использоваться в команде CREATE EXTERNAL TABLE.

Дополнительную информацию о создании и настройке пользовательского протокола доступа к данным см. в документации по примеру пользовательского протокола доступа к данным.

Параметры

  • TRUSTED
    • Если параметр не указан, только суперпользователи и владелец протокола могут создавать внешние таблицы с использованием этого протокола. Если указан, суперпользователи и владелец протокола могут с помощью команды GRANT предоставлять другим ролям базы данных права на использование протокола.
  • name
    • Имя протокола доступа к данным. Имя протокола учитывает регистр символов и должно быть уникальным среди всех протоколов в базе данных.
  • readfunc= 'read_call_handler'
    • Имя ранее зарегистрированной функции, которую база данных вызывает для чтения данных из внешнего источника. Команда должна содержать либо обработчик чтения, либо обработчик записи.
  • writefunc= 'write_call_handler'
    • Имя ранее зарегистрированной функции, которую база данных вызывает для записи данных во внешний источник. Команда должна содержать либо обработчик чтения, либо обработчик записи.
  • validatorfunc='validate_handler'
    • Необязательная функция-валидатор, проверяющая URL, указанный в команде CREATE EXTERNAL TABLE.

Замечания

База данных внутренне обрабатывает внешние таблицы типов file, gpfdist и gpfdists. См. раздел Протокол s3:// для получения информации о включении протокола S3. См. раздел Протокол pxf:// для получения информации об использовании протокола pxf.

Любая разделяемая библиотека, реализующая протокол доступа к данным, должна находиться в одинаковых путях на всех хостах сегментов базы данных. Например, библиотека может находиться в каталоге, указанном переменной окружения операционной системы LD_LIBRARY_PATH на всех хостах. Также можно указать путь при определении функции-обработчика. Например, при определении протокола s3 в команде CREATE PROTOCOL вы можете указать $libdir/gps3ext.so как путь к объектному файлу, где $libdir находится по адресу $GPHOME/lib.

Совместимость

CREATE PROTOCOL является расширением Database.

См. также

ALTER PROTOCOL, CREATE EXTERNAL TABLE, DROP PROTOCOL, GRANT