Skip to content

Replication error is raised for CREATE TABLE ... EXTERNAL if the specified disk does not exist on the replica host #8726

@vario-ck

Description

@vario-ck

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.

  1. 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.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions