Articles

Differences between Firebird and InterBase

(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017

Historical overview 

InterBase was created in 1985: it was the first commercial multi-versioning database. In the end of 1999, Borland decided to close InterBase development and published its source codes under InterBase Public License. This code was copied (it is permitted by the license), and Firebird was born – from the version 1.0 Firebird is a production-ready database, based on previous decades of InterBase development.

At the end of 2000, Borland turned back to the closed source and commercial licenses (exactly as it was earlier) with InterBase and started development of 6.5.

FirebirdSQLFirebird 1.0 was released in 2002, with many bugfixes and extensions of DDL and DML. The active Firebird development continued after 1.0, and in 2004 the second major version of Firebird (v.1.5) was released. Borland at that time also has introduced new versions (7.0 and 7.1). Firebird 1.5 and InterBase 7.0 was incompatible both by database format (ODS) and core functionality. The migration from InterBase to Firebird and back with backup/restore is impossible since Firebird 2.0 and InterBase 7.0.

Since then, the difference between Firebird and InterBase became bigger. 

Current situation (2017)

The only way for migration between current versions of InterBase and Firebird is through SQL script (with the manual fixing of differences) and then pumping of data from the old database to the new one. However, the migration from InterBase to Firebird is still easier than to another DBMS, since the transaction management principles are the same.
We did several such migrations for various versions of InterBase and Firebird – see more details about our migration service here - and they went fine.

Below you can find the table with the list of differences between the latest versions: Firebird 3.0 and InterBase 2017.

Differences between Firebird and InterBase
Features Firebird InterBase
SQL (DML and DDL)
Cursor stability (correct INSERT FROM SELECT) Yes No
Scrollable (bi-directional) cursors Yes No
Execute Statement Yes Yes
Execute Statement On External (queries to external Firebird databases) Yes No
Autonomous transactions Yes No
Derived tables (SELECT from SELECT) Yes Yes (with limitations)
Recursive Common Table Expressions (CTE)  Yes No
Windows and Statistical functions Yes No
MERGE Yes No
RETURNING clause for insert/update/delete Yes No
Triggers on connect/disconnect Yes No
Triggers on transactions start/commit/rollback Yes No
Triggers for DDL Yes No
Regexp support for SUBSTRING Yes No
Boolean datatype Yes Yes
BIGINT datatype Yes No (only internal int64 for NUMERIC(18,0))
PSQL functions Yes No
External procedures, functions, triggers (Java) Yes No
Nested procedures and functions Yes No
Deterministic functions Yes No
Context variables in namespaces SYSTEM, USER_SESSION and USER_TRANSACTION Yes No
Packages (procedures and functions) Yes No
Exceptions with parameters Yes No
IDENTITY column Yes No
RECREATE (combination of CREATE or ALTER) Yes No
UTF8 support Yes, id4 Yes, id59
Unicode case-insensitive search support Yes (corresponding COLLATE) No
Identifier length 31 67
COMPUTED BY indices (on expression) Yes No
Architecture/Administration
SMP SuperServer (multi-core support) Yes (since 3.0) Yes (since 7.0)
Classic (instance per connect) Yes No (closed in 6.0)
SuperClassic Yes No
Multiple instances (at different ports) Yes Yes
Databases aliases Yes (aliases.conf since 1.5, databases.conf since 3.0) Yes (gsec alias_add)
Re-routing between server instances No Yes (since IB2007)
Write-ahead log (WAL) No Yes (since IB2007)
Point-in-time-recovery No Yes
Parallel index creation during restore No (planned for 4.0) Yes
Incremental backup Yes (nbackup) Yes (online dump)
System monitoring tables Yes (MON$) Yes (tmp$)
64-bit client and server Yes Yes
Embedded version Yes Yes
Embedded for Android (mobile) Yes (beta-version of Firebird for Android) Yes
Embedded for iOS (mobile) No Yes
ChangeViews (what is it?) No Yes
Wire compression Yes No
Network protocol improvements for high-latency networks (for SQL queries through internet) Yes No
Server-level replication (native) Available in HQbird for Firebird 2.5 and 3.0, synchronous and asynchronous No
Trace and audit Yes No
Online database validation Yes No
Security
Security database security3.fdb admin.ib
Users in the database Yes (since 3.0) Yes (since 7.5)
Database encryption Yes (plugin, see FEPF) Yes
Column encryption No Yes
Multiple encryption keys No Yes
Wire encryption Yes Yes
DDL user rights Yes No
Manage users via SQL Yes Yes
UDF and built-in functions
User Defined Functions Yes Yes
SDF aka Server Defined Functions (faster than UDF) Yes No
Drivers and client libraries support
Java Yes (Jaybird) Yes (InterClient)
.NET Yes (Firebird.NET, third-party drivers) Yes (DBX ADO.NET, third-party drivers)
PHP Yes Yes
Python Yes (FDB driver) Yes (partially compatible with FDB driver)
ODBC Yes (download Firebird ODBC) Yes (InterBase ODBC)
Node.JS/TypeScript Yes (pure  JS driver, C++ driver, another native driver No
Golang Yes (download) No
Yii2 Yes (download) No
Ruby Yes (download) No
Perl Yes (download DBD:Firebird) Yes
Erlang Yes (download) No
QT Yes (details) Yes (details)
Licensing/Prices
Price per server (unlimited connections) free USD $7030
Community support free (mailing lists) free (there was a forum?)
Professional support, per server USD $990/year (with volume discounts) USD $2109/year
Recovery, monitoring, trace/audit, optimization, native replication tools from USD $399/server Partially available: recovery, optimization tools

 

Contact us

Do you have any questions? Don't hesitate to contact us by email!
 

Subscribe to IBSurgeon news

Subscribe