|
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>56.1. Foreign Data Wrapper Functions</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="fdwhandler.html" title="Chapter 56. Writing a Foreign Data Wrapper" /><link rel="next" href="fdw-callbacks.html" title="56.2. Foreign Data Wrapper Callback Routines" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">56.1. Foreign Data Wrapper Functions</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="fdwhandler.html" title="Chapter 56. Writing a Foreign Data Wrapper">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="fdwhandler.html" title="Chapter 56. Writing a Foreign Data Wrapper">Up</a></td><th width="60%" align="center">Chapter 56. Writing a Foreign Data Wrapper</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="fdw-callbacks.html" title="56.2. Foreign Data Wrapper Callback Routines">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="FDW-FUNCTIONS"><div class="titlepage"><div><div><h2 class="title" style="clear: both">56.1. Foreign Data Wrapper Functions</h2></div></div></div><p>
- The FDW author needs to implement a handler function, and optionally
- a validator function. Both functions must be written in a compiled
- language such as C, using the version-1 interface.
- For details on C language calling conventions and dynamic loading,
- see <a class="xref" href="xfunc-c.html" title="37.10. C-Language Functions">Section 37.10</a>.
- </p><p>
- The handler function simply returns a struct of function pointers to
- callback functions that will be called by the planner, executor, and
- various maintenance commands.
- Most of the effort in writing an FDW is in implementing these callback
- functions.
- The handler function must be registered with
- <span class="productname">PostgreSQL</span> as taking no arguments and
- returning the special pseudo-type <code class="type">fdw_handler</code>. The
- callback functions are plain C functions and are not visible or
- callable at the SQL level. The callback functions are described in
- <a class="xref" href="fdw-callbacks.html" title="56.2. Foreign Data Wrapper Callback Routines">Section 56.2</a>.
- </p><p>
- The validator function is responsible for validating options given in
- <code class="command">CREATE</code> and <code class="command">ALTER</code> commands for its
- foreign data wrapper, as well as foreign servers, user mappings, and
- foreign tables using the wrapper.
- The validator function must be registered as taking two arguments, a
- text array containing the options to be validated, and an OID
- representing the type of object the options are associated with (in
- the form of the OID of the system catalog the object would be stored
- in, either
- <code class="literal">ForeignDataWrapperRelationId</code>,
- <code class="literal">ForeignServerRelationId</code>,
- <code class="literal">UserMappingRelationId</code>,
- or <code class="literal">ForeignTableRelationId</code>).
- If no validator function is supplied, options are not checked at object
- creation time or object alteration time.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="fdwhandler.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fdwhandler.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="fdw-callbacks.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 56. Writing a Foreign Data Wrapper </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 56.2. Foreign Data Wrapper Callback Routines</td></tr></table></div></body></html>
|