Firebird Documentation IndexFirebird 3.0.2 Release Notes → New In Firebird 3.0
Firebird Home Firebird Home Prev: DocumentationFirebird Documentation IndexUp: Firebird 3.0.2 Release NotesNext: Compatibility with Older Versions

New In Firebird 3.0

Table of Contents

Summary of Features
Compatibility with Older Versions

The primary goals for Firebird 3 were to unify the server architecture and to improve support for SMP and multiple-core hardware platforms. Parallel objectives were to improve threading of engine processes and the options for sharing page cache across thread and connection boundaries.

Alongside these aims came new strategies to improve performance, query optimization, monitoring and scalability and to address the demand for more security options. A number of popular features were introduced into the SQL language, including the long-awaited support for the Boolean data type and the associated logical predications.

Summary of Features

The following list summarises the features and changes, with links to the chapters and topics where more detailed information can be found.

Unification of the Firebird executable is complete

With the completion of true SMP support for Superserver, the Firebird core is now a unified library that supports a single ODS, loadable either as an embedded engine or by the “network listener” executable. Choice of server model is determined by settings for a new configuration parameter ServerMode, defining the locking and cache modes. It is specified at global level in firebird.conf.

By default, ServerMode = Super (alias ThreadedDedicated), i.e., SuperServer.

Note

The previous aliases.conf is replaced by databases.conf, now including not just aliases for databases but also (optionally) configuration parameters to enable configuration of databases and/or alternative security databases individually.

The changes are described in more detail in the chapter Changes in the Firebird Engine.

True SMP support for SuperServer

In Superserver mode, the engine now makes use of multiple CPUs and cores when spawning connections.

Tracker: CORE-775

Implemented by V. Khorsun

New, object-oriented C++ APIs

Object-oriented C++ APIs enable external code routines to plug in and run safely inside Firebird engine space, including (but not limited to):

  • Encryption schemes for data

  • User authentication schemes, including secure key exchange

  • Eventually, plug-in support for stored procedures, triggers and functions written in Java, C++, ObjectPascal, etc.

Per-Database” Configuration

Custom configuration at database level can now be achieved with formal entries in databases.conf (formerly aliases.conf).

Increased Limits in Several Areas
Transaction IDs, attachment IDs, statement IDs all have increased maximum values.Maximum number of page buffers in cache is increased for 64-bit servers.Maximum database size is increased.For details, see Chapter 4, Changes to the API and ODS.
Multiple Security Databases

Firebird now supports user access control via more than one security database on the server. Each database can be configured, using the parameter SecurityDatabase in databases.conf, to use a specific database other than the default security3.fdb. The user structures may even be defined within the user database itself.

Note

The flag MON$SEC_DATABASE was added to the monitoring table MON$DATABASE to assist in determining what type of security database is used—Default, Self or Other.

Several New SQL Commands to Manage Users and Access

Changes in architecture, stiffening of rules for security and data integrity, along with feature requests, have given rise to a raft of new SQL commands for managing users and their access to objects.

International Characters in User Credentials
Provided the new authentication provisions are used, the system can accept user names and passwords containing non-ASCII characters. See International Character Sets for User Accounts in the Security chapter.
New Data Type Support

A true BOOLEAN type (True/False/Unknown), complete with support for logical predicates, e.g.,

  UPDATE ATABLE
    SET MYBOOL = (COLUMN1 IS DISTINCT FROM COLUMN2)
          

For details, see BOOLEAN Type.

 

IDENTITY type, spawning unique identifiers for the defined column from an internal generator. For details, see IDENTITY-Style Column.

Manage NULL/NOT NULL Column/Domain Attribute

The NOT NULL attribute on a column or domain can now be managed using the ALTER TABLE or ALTER DOMAIN syntax, respectively. For details, see Manage Nullability in Domains and Columns.

Support for SQL Packages

For details, refer to Packages.

DDL Triggers

Now, triggers can be written to execute when database objects are modified or deleted. A typical use is to block unauthorised users from performing these tasks.

For details, refer to DDL Triggers.

'Window' functions in DML
A whole new series of analytical functions to work with multiple subsets in DML. See Window (Analytical) Functions.
Statistical functions
A suite of statistical functions returning values for a variety of variance, standard deviation and linear regression formulae. See Statistical Functions.
Scrollable Cursors
The query engine now supports bi-directional (“scrollable”) cursors, enabling both forward and backward navigation in PSQL and in DSQL with support from the API. See Scrollable (Bi-directional) Cursor Support.
SQL:2008-Compliant OFFSET and FETCH Clauses
Support implemented for SQL-2008-compliant OFFSET and FETCH clauses as an alternative for {FIRST and SKIP} or {ROWS and TO} clauses. See SQL:2008-Compliant OFFSET and FETCH Clauses.
IPv6 Support
Firebird 3 can use IPv6 connections on both client and server sides. See the notes for the new configuration parameter IPv6V6Only.
Validation Whilst Database is On-line
On-line validation, first implemented in Firebird 2.5.4, has been ported forward to Firebird 3.0. See Perform Some Validation Services On-line.
Run-time Statistics in gbak Verbose Output
Verbose output from gbak can now include run-time statistics, reporting times elapsed, page reads and page writes. Also supported in the Services API.
Prev: DocumentationFirebird Documentation IndexUp: Firebird 3.0.2 Release NotesNext: Compatibility with Older Versions
Firebird Documentation IndexFirebird 3.0.2 Release Notes → New In Firebird 3.0