firebird_fdw

Firebird外部数据源包装器

概览

扩展包名版本分类许可证语言
firebird_fdw1.4.2FDWPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
8750firebird_fdw-
相关扩展mysql_fdw oracle_fdw tds_fdw db2_fdw wrappers odbc_fdw jdbc_fdw postgres_fdw

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.4.21817161514firebird_fdw-
RPMPIGSTY1.4.21817161514firebird_fdw_$vlibfq
DEBPIGSTY1.4.21817161514postgresql-$v-firebird-fdwlibfq
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
d13.x86_64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
d13.aarch64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
u22.x86_64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
u22.aarch64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
u24.x86_64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
u24.aarch64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
u26.x86_64
u26.aarch64
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2
PIGSTY 1.4.2

构建

您可以使用 pig build 命令构建 firebird_fdw 扩展的 RPM / DEB 包:

pig build pkg firebird_fdw         # 构建 RPM / DEB 包

安装

您可以直接安装 firebird_fdw 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install firebird_fdw;          # 当前活跃 PG 版本安装
pig ext install -y firebird_fdw -v 18  # PG 18
pig ext install -y firebird_fdw -v 17  # PG 17
pig ext install -y firebird_fdw -v 16  # PG 16
pig ext install -y firebird_fdw -v 15  # PG 15
pig ext install -y firebird_fdw -v 14  # PG 14
dnf install -y firebird_fdw_18       # PG 18
dnf install -y firebird_fdw_17       # PG 17
dnf install -y firebird_fdw_16       # PG 16
dnf install -y firebird_fdw_15       # PG 15
dnf install -y firebird_fdw_14       # PG 14
apt install -y postgresql-18-firebird-fdw   # PG 18
apt install -y postgresql-17-firebird-fdw   # PG 17
apt install -y postgresql-16-firebird-fdw   # PG 16
apt install -y postgresql-15-firebird-fdw   # PG 15
apt install -y postgresql-14-firebird-fdw   # PG 14

创建扩展

CREATE EXTENSION firebird_fdw;

用法

来源:upstream README1.4.2 README1.4.2 tag

firebird_fdw 通过外部数据包装器 API 将 PostgreSQL 连接到 Firebird 数据库。它支持读取、写入、IMPORT FOREIGN SCHEMA、受支持表达式的谓词下推、连接缓存,以及 PostgreSQL 14+ 上的外部表 TRUNCATE

创建服务器

CREATE EXTENSION firebird_fdw;

CREATE SERVER firebird_server FOREIGN DATA WRAPPER firebird_fdw
  OPTIONS (address 'localhost', database '/path/to/database.fdb');

服务器选项包括:

  • address,默认 localhost
  • port,默认 3050
  • database,Firebird 数据库名称或路径。
  • updatable,默认 true;表级设置可以覆盖它。
  • disable_pushdowns,用于调试或基准测试。
  • quote_identifiers,默认引用表名和列名标识符。
  • implicit_bool_type,用于由整数承载的 Firebird 布尔列。
  • batch_size,用于 PostgreSQL 14+ 上的多行插入。

创建用户映射

CREATE USER MAPPING FOR CURRENT_USER SERVER firebird_server
  OPTIONS (username 'sysdba', password 'masterke');

创建外部表

CREATE FOREIGN TABLE fb_test (
  id smallint,
  val varchar(2048)
)
SERVER firebird_server
OPTIONS (table_name 'fdw_test');

使用列名映射:

CREATE FOREIGN TABLE fb_mapped (
  id smallint OPTIONS (column_name 'test_id'),
  val varchar(2048) OPTIONS (column_name 'test_val')
)
SERVER firebird_server
OPTIONS (table_name 'fdw_test');

使用自定义查询时,外部表是只读的:

CREATE FOREIGN TABLE fb_query (
  id smallint,
  val varchar(2048)
)
SERVER firebird_server
OPTIONS (query $$ SELECT id, val FROM fdw_test WHERE id > 10 $$);

表选项包括 table_namequeryupdatableestimated_row_countquote_identifierbatch_size。列选项包括 column_namequote_identifierimplicit_bool_type

导入外部模式

IMPORT FOREIGN SCHEMA someschema
  FROM SERVER firebird_server
  INTO public
  OPTIONS (import_views 'true', verbose 'true');

导入选项包括 import_not_nullimport_viewsupdatableverbose。模式名在 Firebird 中没有特殊含义,可以是 PostgreSQL IMPORT FOREIGN SCHEMA 语法接受的任意值。

CRUD 操作

SELECT * FROM fb_test WHERE id > 5;
INSERT INTO fb_test VALUES (10, 'new record');
UPDATE fb_test SET val = 'updated' WHERE id = 10;
DELETE FROM fb_test WHERE id = 10;
TRUNCATE fb_test;

UPDATEDELETE 使用 Firebird 的 RDB$DB_KEY。由于 Firebird 没有原生 TRUNCATE 语句,TRUNCATE 会实现为不带条件的 Firebird DELETE

工具函数

  • firebird_fdw_version() 返回 FDW 版本整数。
  • firebird_fdw_close_connections() 关闭当前 PostgreSQL 会话中缓存的 Firebird 连接。
  • firebird_fdw_server_options(servername text) 显示有效服务器选项值,以及每个选项是否由用户显式提供。
  • firebird_fdw_diag() 返回诊断键值数据,包括 FDW 和 libfq 版本。
  • firebird_version() 报告已配置外部服务器的 Firebird 服务端版本;为此它可能会打开连接。

注意事项

  • Pigsty 为 PostgreSQL 14-18 打包 firebird_fdw 1.4.2。上游文档声明兼容 PostgreSQL 10-19,其中较新的 FDW API 功能只在较新的 PostgreSQL 版本中可用。
  • 上游支持 Firebird 2.5 及更高版本;更旧的 Firebird 版本不是已测试目标。
  • firebird_fdwlibfq 共同开发,因此包兼容性取决于这些库是否匹配。
  • 基于自定义查询的外部表不能更新。
  • implicit_bool_type 功能仍属实验性质,面向使用整数列表示布尔值的场景。

最后修改 2026-06-18: extension data update (63e2bd9)