IBSurgeon library

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
SQL (DML and DDL)
Cursor stability (correct INSERT FROM SELECT)
Scrollable (bi-directional) cursors
Execute Statement
Execute Statement On External (queries to external Firebird databases)
Autonomous transactions
Derived tables (SELECT from SELECT)
Recursive Common Table Expressions (CTE)
Windows and Statistical functions
MERGE
RETURNING clause for insert/update/delete
Triggers on connect/disconnect
Triggers on transactions start/commit/rollback
Triggers for DDL
Regexp support for SUBSTRING
Boolean datatype
BIGINT datatype
PSQL functions
External procedures, functions, triggers ( Java)
Nested procedures and functions
Deterministic functions
Context variables in namespaces SYSTEM, USER_SESSION and USER_TRANSACTION
Packages (procedures and functions)
Exceptions with parameters
IDENTITY column
RECREATE (combination of CREATE or ALTER)
UTF8 support
Unicode case-insensitive search support
Identifier length
COMPUTED BY indices (on expression)
Architecture/Administration
SMP SuperServer (multi-core support)
Classic (instance per connect)
SuperClassic
Multiple instances (at different ports)
Databases aliases
Re-routing between server instances
Write-ahead log (WAL)
Point-in-time-recovery
Parallel index creation during restore
Incremental backup
System monitoring tables
64-bit client and server
Embedded version
Embedded for Android (mobile)
Embedded for iOS (mobile)
ChangeViews ( what is it?)
Wire compression
Network protocol improvements for high-latency networks (for SQL queries through internet)
Server-level replication (native)
Trace and audit
Online database validation
Security
Security database
Users in the database
Database encryption
Column encryption
Multiple encryption keys
Wire encryption
DDL user rights
Manage users via SQL
UDF and built-in functions
User Defined Functions
SDF aka Server Defined Functions (faster than UDF)
Drivers and client libraries support
Java
.NET
PHP
Python
ODBC
Node.JS/TypeScript
Golang
Yii2
Ruby
Perl
Erlang
QT
Licensing/Prices
Price per server (unlimited connections)
Community support
Professional support, per server
Recovery, monitoring, trace/audit, optimization, native replication tools

Contact us

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