-
-
Notifications
You must be signed in to change notification settings - Fork 257
Description
When publication is used, DDL CREATE TABLE-statements for external tables are replicated to replica. According to documentation, external tables should never be replicated.
These statements raise the following error on replica-side, regardless of whether the path of the external file exists on replica or not.
REPLSERVER (replica) Wed Sep 3 00:07:03 2025
Database: E:\DATA\V8_PROD.FDB
ERROR: unsuccessful metadata update
CREATE TABLE TMP_EXTDB_TEST1122 failed
A node name is not permitted in a table with external file definition
At segment 111167, offset 48
To avoid this problem I tried several ways to not replicate DDL-statements. These issues affect all CREATE TABLE statements, not just those for external tables.
- set exclude_filter in replication.conf to
exclude_filter = TMP_%
which doesn't work either for CREATE TABLE nor DROP TABLE-statements.
2. use DISABLE PUBLICATION in CREATE TABLE-statement:
CREATE TABLE TMP_EXTDB_TEST123
EXTERNAL 'd:\temp\test123.bin'
(
FIELD01 CHAR(100) CHARACTER SET WIN1252 COLLATE WIN1252,
FIELD02 CHAR(100) CHARACTER SET WIN1252 COLLATE WIN1252,
CRLF CHAR(2) CHARACTER SET WIN1252 COLLATE WIN1252
)
DISABLE PUBLICATION
which also doesn't work for DDL-statements.
As a workaround for using external tables without replicating them I now disable publication for the whole database before CREATE/DROP TABLE and enable it again after creating/dropping the table. When committing this as a whole this doesn't seem to affect other connections.
Checked in FB 4.0.6.3221 and FB 5.0.3.1683 on Win64.