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.
set exclude_filter in replication.conf to:
exclude_filter = TMP_%
which doesn't work either for CREATE TABLE nor DROP TABLE-statements.
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)