<indexterm>
<primary>foreign table</primary>
</indexterm>
+ <indexterm>
+ <primary>user mapping</primary>
+ </indexterm>
<para>
<productname>PostgreSQL</productname> implements portions of the SQL/MED
tables</firstterm>, which define the structure of the remote data. A
foreign table can be used in queries just like a normal table, but a
foreign table has no storage in the PostgreSQL server. Whenever it is
- used, PostgreSQL asks the foreign data wrapper to fetch the data from the
- external source.
+ used, <productname>PostgreSQL</productname> asks the foreign data wrapper
+ to fetch the data from the external source.
+ </para>
+
+ <para>
+ Accessing remote data may require authentication at the external
+ data source. This information can be provided by a
+ <firstterm>user mapping</>, which can provide additional options based
+ on the current <productname>PostgreSQL</productname> role.
</para>
<para>
</programlisting>
Begin executing a foreign scan. This is called during executor startup.
- It should perform any initialization needed before the scan can start.
+ It should perform any initialization needed before the scan can start,
+ but not start executing the actual scan (that should be done upon the
+ first call to <function>IterateForeignScan</>).
The <structname>ForeignScanState</> node has already been created, but
its <structfield>fdw_state</> field is still NULL. Information about
the table to scan is accessible through the