Bugs Fixed

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

GitHub Issue: 8726 Affected versions: 4.0.6, 5.0.3, 6.0 Initial Fixed for: 4.0.7, 5.0.4, 6.0 Alpha 1

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.

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

On Windows 7 isql exits silently right after the start

GitHub Issue: 8690 Affected versions: 4.0.6, 5.0.3, 6.0 Initial Fixed for: 4.0.7, 5.0.4, 6.0 Alpha 1

he problem is that on Windows 7 ReadConsole() doesn't accept input buffer of 64K wide characters. This is never documented limitation and it looks like it was fixed in Windows 10 only. The fix is to handle ERROR_NOT_ENOUGH_MEMORY error and reduce input buffer size.

Deadlock update conflict on replica server

GitHub Issue: 8541 Affected versions: 4.0.6, 5.0.3, 6.0 Initial Fixed for: 4.0.7, 5.0.4, 6.0 Alpha 1

missingdots-4 (replica) Fri Apr 25 13:44:49 2025
      Database: /home/db/dm_depolink_hr.fdb
      ERROR: deadlock
      update conflicts with concurrent update
      concurrent transaction number is 1228174
      At segment 2257, offset 48

The replica dbs are read only so there is only one process accessing them how can this happen.

Wrong SQLSTATE in case of table alias conflict

GitHub Issue: 8739 Affected versions: 4.0.6, 5.0.3, 6.0 Initial Fixed for: 3.0.14, 4.0.7, 5.0.4, 6.0 Alpha 1

SELECT *
FROM rdb$database a
JOIN rdb$database b ON a.rdb$relation_id = b.rdb$relation_id
JOIN rdb$database b ON a.rdb$relation_id = b.rdb$relation_id

Undefined name.
Dynamic SQL Error.
SQL error code = -204.
alias B conflicts with an alias in the same statement.

SQLCODE: -204
SQLSTATE: 08001
GDSCODE: 335544569

Because of this org.firebirdsql.jaybird.xca.FatalErrorHelper.isFatal() returns true for this error and closes the Connection.

(FATAL_SQL_STATE_CLASSES / SQLSTATE_CLASS_CONNECTION_ERROR)

Like this post? Share on: TwitterFacebookEmail


Related Articles


Author

IBPhoenix

Published

Category

News

Tags