TDS Foreign data wrapper

Creating a Foreign Table

Options

Foreign table parameters accepted:

  • query

Required: Yes (mutually exclusive with table)

The query string to use to query the foreign table.

  • schema_name

Required: No

The schema that the table is in. The schema name can also be included in table_name, so this is not required.

  • table_name

Aliases: table

Required: Yes (mutually exclusive with query)

The table on the foreign server to query.

  • match_column_names

Required: No

Whether to match local columns with remote columns by comparing their table names or whether to use the order that they appear in the result set.

  • use_remote_estimate

Required: No

Whether we estimate the size of the table by performing some operation on the remote server (as defined by row_estimate_method), or whether we just use a local estimate, as defined by local_tuple_estimate.

  • local_tuple_estimate

Required: No

A locally set estimate of the number of tuples that is used when use_remote_estimate is disabled.

  • row_estimate_method

Required: No

Default: execute

This can be one of the following values:

  • execute: Execute the query on the remote server, and get the actual number of rows in the query.
  • showplan_all: This gets the estimated number of rows using MS SQL Server’s SET SHOWPLAN_ALL.

Foreign table column parameters accepted:

  • column_name

Required: No

The name of the column on the remote server. If this is not set, the column’s remote name is assumed to be the same as the column’s local name. If match_column_names is set to 0 for the table, then column names are not used at all, so this is ignored.

Example

Using a table_name definition:

CREATE FOREIGN TABLE mssql_table (
	id integer,
	data varchar)
	SERVER mssql_svr
	OPTIONS (table_name 'dbo.mytable', row_estimate_method 'showplan_all');

Or using a schema_name and table_name definition:

CREATE FOREIGN TABLE mssql_table (
	id integer,
	data varchar)
	SERVER mssql_svr
	OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');

Or using a query definition:

CREATE FOREIGN TABLE mssql_table (
	id integer,
	data varchar)
	SERVER mssql_svr
	OPTIONS (query 'SELECT * FROM dbo.mytable', row_estimate_method 'showplan_all');

Or setting a remote column name:

CREATE FOREIGN TABLE mssql_table (
	id integer,
	col2 varchar OPTIONS (column_name 'data'))
	SERVER mssql_svr
	OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');