PSFirebird: PowerShell Automation for Firebird on Windows and Linux

PSFirebird is a PowerShell module focused on automating Firebird environments, databases, and common administrative workflows. The main goal is to make Firebird easier to script end-to-end without depending on a manual installer flow or a machine-specific setup.

The problem is trying to solve was simple: working with Firebird in automation often means mixing shell scripts, ad hoc local installs, version-specific quirks, and CI setup glue. That gets especially painful when you need to test multiple Firebird versions, rehearse upgrades, or spin up disposable databases for integration tests. PSFirebird is designed to reduce that friction.

What PSFirebird Does

Today the module can:

  • Download official Firebird release assets and prepare portable environments
  • Run multiple Firebird versions side by side
  • Create, inspect, read, test, and remove databases
  • Execute SQL through isql from PowerShell
  • Read and update firebird.conf
  • Start ad hoc Firebird instances
  • Register Firebird as a Windows service or Linux systemd service
  • Backup and restore databases
  • Convert databases across Firebird versions with streaming backup/restore
  • Lock and unlock databases for filesystem-level copy using nbackup
  • Parse gstat output into structured PowerShell objects for tables and indices

The current codebase targets PowerShell 7.4+ on Windows and Linux. On Linux, the environment bootstrap currently targets Debian-based systems.

Why I Think This is Useful

PSFirebird is not meant to be another GUI admin tool. It is aimed at repeatable automation.

Some scenarios where it should be useful:

  • CI/CD pipelines that need a Firebird server on demand
  • Test matrices that need Firebird 3.x, 4.x, and 5.x side by side
  • Upgrade rehearsals from older databases to newer engine versions
  • Disposable local environments for development and debugging
  • Scripting routine admin tasks instead of doing everything manually

One of the most useful parts for me is the ability to create isolated Firebird environments directly from PowerShell, then run the rest of the workflow against that environment in a predictable way.

This project builds on earlier work I’ve done across several Firebird community initiatives such as SqlAlchemy-Firebird, the Firebird .NET Provider, the Firebird ODBC Driver, and the Python driver. Across all of these efforts, maintaining a robust and consistently repeatable testing foundation has been essential.

Example

Here is a small example that prepares two Firebird versions and converts a database from one environment to another:

$tempPath = [System.IO.Path]::GetTempPath()
$fb3 = New-FirebirdEnvironment -Version '3.0.12' -Path (Join-Path $tempPath 'fb3')
$fb5 = New-FirebirdEnvironment -Version '5.0.3' -Path (Join-Path $tempPath 'fb5')
$sourcePath = Join-Path $tempPath 'legacy.fdb'
$targetPath = Join-Path $tempPath 'legacy.fb50.fdb'

$db = New-FirebirdDatabase -Database $sourcePath -Environment $fb3 -Force

$env:ISC_USER = 'SYSDBA'
$env:ISC_PASSWORD = 'masterkey'
Convert-FirebirdDatabase -SourceDatabase $db -SourceEnvironment $fb3 -TargetDatabase $targetPath -TargetEnvironment $fb5 -Force

The module also includes helpers for scoped environment usage, configuration editing, SQL execution, service management, and database statistics collection.

Project Status

This is a real automation-oriented codebase, not just a thin proof of concept. The repository already includes:

  • Unit tests
  • Integration tests
  • Cross-version conversion tests
  • Windows and Linux CI coverage
  • A GitHub Actions example showing end-to-end module usage in a workflow

Feedback Wanted

If you work with Firebird, I would especially like feedback on:

  • Missing administrative workflows
  • Cross-platform behavior and Linux packaging assumptions
  • Upgrade and migration scenarios
  • Command naming and module ergonomics
  • CI and testing use cases

GitHub repository: https://github.com/fdcastel/PSFirebird

If this looks useful for your environment, take a look and let us know what would make it more practical for real-world Firebird automation.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

Modernizing the Firebird ODBC Driver: Moving to CMake

As part of an ongoing effort to improve the project’s infrastructure, we have just merged Pull Request #281, which introduces a modern CMake build system and drastically cleans up our repository by removing over 62,000 lines of obsolete configurations, old headers, and broken test projects.

This is the second phase of a three-part plan to streamline how the Firebird ODBC Driver is built and maintained.

What’s New: A Modern CMake Build System

Building the Firebird ODBC driver is now easier and more standardized. We’ve introduced a CMake build system that handles building the FirebirdODBC.dll driver, the IscDbc static library, and running our test suite via CTest.

One of the major improvements is that the build system now automatically downloads the Firebird 5.0.2 public headers from GitHub at build time, meaning we no longer have to manually vendor them in our repository.

For developers who prefer the existing Visual Studio 2022 solution, don’t worry—it still works! You simply need to run a one-time CMake configuration step to fetch the headers before opening the solution as usual.

Spring Cleaning: Removing the Old

Over the years, the repository accumulated a lot of build configurations for platforms and compilers that have long been discontinued. In this update, we did some massive spring cleaning:

  • Removed 14 Obsolete Build Configurations: We stripped out outdated build environments, including Borland C++ 5.5, Solaris, old macOS/Linux/FreeBSD makefiles, MinGW, and Visual Studio versions ranging from 6.0 (1998) up to 2008.
  • Deleted Vendored Headers: We removed roughly 25,000 lines of vendored Firebird headers (FBClient.Headers) and system Windows SDK headers, relying instead on CMake to fetch them or the system SDK.
  • Cleaned Up Tests: Old, non-functional test projects (like the JDBC-style test and legacy standalone apps) have been cleared out. They have been fully replaced by the Google Test suite introduced in our previous PR.

What Hasn’t Changed?

While the infrastructure has seen a massive overhaul, the driver source code itself remains completely untouched. There are no changes to the source files, no new features, and no performance alterations.

We heavily validated the new CMake build against the old build system, confirming that the output FirebirdODBC.dll is perfectly binary-compatible and exposes the exact same 120 exported symbols as before.


Thanks to @fdcastel for authoring this massive infrastructure improvement!

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

The first EmberWings issue of 2026 is now available

With Firebird’s 25th anniversary behind us, this edition looks forward, focusing on the challenges of understanding and operating long-lived database systems. It explores how performance and behavior often emerge from interactions across the system, rather than from isolated components, and examines how database vulnerabilities are assessed and interpreted in practice.

As always, the issue is presented in a clean, print-friendly layout designed for enjoyable reading, whether on screen or on paper.

The latest issue is available only to all Firebird Associates and Firebird Partners. It will be available to the general public in June 2026.

Also, the December 2025 issue is now available to all readers.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

Jaybird 6.0.5 and Jaybird 5.0.12 released

We are happy to announce the release of Jaybird 6.0.5 and Jaybird 5.0.12, providing bug fixes. Jaybird is the Firebird JDBC driver.

Changes

The following was fixed or changed in Jaybird 6.0.5:

  • JDBC 4.5 support: JaybirdTypeCodes.DECFLOAT and JaybirdType.DECFLOAT now use type code 2015 instead of -6001 (#906)
  • JDBC 4.5 support: implemented methods enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, and isSimpleIdentifier on FBConnection, and added them to interface FirebirdConnection for access in older Java versions (#908)
  • JDBC 4.5 support: implemented “disable escape processing” JDBC escape ({\…\}) (#909)
  • JDBC 4.5 support: FBDatabaseMetaData.getJDBCMinorVersion() should report 5 (for JDBC 4.5) on Java 26 and higher (#915)
  • Fixed: JDBC escapes should not be parsed inside dialect 3 delimited identifiers or dialect 1 string literals (#921)
  • Fixed: IndexOutOfBoundsException in FBCachedBlob.getBytes(long, int) for position or length beyond end of data (#923)
  • Fixed: Using native client, password is limited to 255 bytes (#925)
  • Fixed: Infinite loop in FBPooledConnection#fireConnectionError(SQLException) if the exception has a chained exception and neither is fatal (#927)

The following was fixed or changed in Jaybird 5.0.12:

  • JDBC 4.5 support: JaybirdTypeCodes.DECFLOAT and JaybirdType.DECFLOAT now use type code 2015 instead of -6001 (#917)
  • JDBC 4.5 support: implemented methods enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, and isSimpleIdentifier on FBConnection, and added them to interface FirebirdConnection for access in older Java versions (#918)
  • JDBC 4.5 support: implemented “disable escape processing” JDBC escape ({\…\}) (#920)
  • Fixed: JDBC escapes should not be parsed inside dialect 3 delimited identifiers or dialect 1 string literals (#922)
  • Fixed: IndexOutOfBoundsException in FBCachedBlob.getBytes(long, int) for position or length beyond end of data (#924)
  • Fixed: Using native client, password is limited to 255 bytes (#926)
  • Fixed: Infinite loop in FBPooledConnection#fireConnectionError(SQLException) if the exception has a chained exception and neither is fatal (#928)
  • JDBC 4.5 support: FBDatabaseMetaData.getJDBCMinorVersion() should report 5 (for JDBC 4.5) on Java 26 and higher (#929)

Bug reports about undocumented changes in behavior are appreciated. Feedback can be sent to Firebird-java or reported on the issue tracker https://github.com/FirebirdSQL/jaybird/issues.

Jaybird 6.0.5

Jaybird 6 supports Firebird 3.0, Firebird 4.0, and Firebird 5.0, on Java 17, Java 21, Java 25, and Java 26.

See also:

Jaybird 5.0.12

Jaybird 5 supports Firebird 2.5, Firebird 3.0, Firebird 4.0, and Firebird 5.0, on Java 8, Java 11, Java 17, Java 21, Java 25, and Java 26 (support for Java 11 and higher using the Java 11 version of the driver). 

See also:

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

New Google Test Suite Added to Firebird ODBC Driver

A major update has been merged into the FirebirdSQL/firebird-odbc-driver repository (PR #276), introducing a comprehensive Google Test suite to establish a strong regression testing baseline for the project. Authored by fdcastel, this addition is a crucial stepping stone before making future bug fixes or CI/CD improvements.

Key Highlights:

  • Extensive Coverage: The PR adds a massive suite of 375 tests across 38 test suites, designed to exercise the Firebird ODBC driver directly through the standard ODBC API via the Driver Manager.
  • Baseline Establishment: No driver source code was modified in this update. The goal is strictly to document what the current driver can do and precisely identify where improvements are needed.
  • Pass vs. Skip Strategy: Out of the box, 230 tests pass, confirming that core features like data types, parameter binding, and catalog functions work correctly. The remaining 145 tests are skipped gracefully, each serving as a documented placeholder for known gaps or missing features (like ODBC 3.8 compliance and specific crash fixes).
  • Future-Proofing: This sets up a perfect “regression gate.” As future patches and bug fixes are submitted, developers can simply remove the SKIP markers to activate the corresponding tests, proving that the fix works and preventing regressions.
  • Standalone CMake Integration: The tests are housed in a self-contained CMake project that fetches Google Test, paving the way for easier integration into a future root CMake build.

This foundational work makes contributing to the Firebird ODBC Driver significantly safer and more measurable going forward!

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

RDB Expert 2026.02 has been released

You can join to the Telegram chat for discussion.

We are pleased to present the release, which has improved the tool for automatic formatting of SQL code and added an interface for analyzing trace messages. We also fixed a number of errors related to freezes when creating backups, incorrect display on HiDPI monitors, and editing database objects.

Added:

1. New SQL code formatting library

2. Interface for viewing RDB$TRACE_MSG messages

3. Customizable hint application key in the query editor

Fixed:

1. Changing the tablespace and SQL SECURITY when editing a table

2. Interface freezes when creating a backup copy/restoring a database

3. Opening trace files generated by the Trace Manager for analysis

View the full list of updates and download

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)
Loading...

Database Workbench 6.10.0 released

Upscene Productions is proud to announce the availability of the next release of the popular multi-DBMS development tool:

“Database Workbench 6.10.0”

This release introduces the Data Type Assistant for quicker table creation, and gives you a new and much faster Report Designer.

Database Workbench supports the following database systems:
Firebird
MySQL, MariaDB
✅ PostgreSQL
SQLite
✅ Oracle
✅ SQL Server
✅ NexusDB
InterBase

It includes tools for database design, database maintenance, testing, data transfer, data import & export, database migration, database compare and numerous other tools.

Read more
1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)
Loading...

RDB Expert 2026.01 has been released

You can join to the Telegram chat for discussion.

What’s new?

Added:

— A new tab system with an updated design and the tabs reordering ability.

— Restarting the database generator from an initial value.

— Changing the current value of the database generator.

Fixed:

— Determining the process identifier (pid) and executable file when connecting to a database.

— Creating multiple processes when running a single application instance.

— Error committing / rolling back a transaction in a newly opened Query Editor.

View the full list of updates and download

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

Flashback: 25 years of Firebird

In 2025, Firebird celebrated 25 years of development. We want to share 25 years of stories, memories, trivia, the ups and downs and major achievements in a livestream (in Portuguese) on February 5th at 7:30 PM (GMT -3). The event will feature Carlos Cantu, Alexandre Benson Smith and Artur Anjos.

Did you know that Ann Harrison, married to Jim Starkey (creator of InterBase/Firebird) and known as the “Mother of Firebird,” once received death threats because of FB? This is just one of the many curious stories we’ll share during our flashback.

Grab your beer, wine, coffee, juice, or whatever you prefer to drink, and join us for a fun flashback filled with behind-the-scenes info that most of you probably don’t know!

Join us on YouTube on February 5 at 7:30 PM (GMT -3)!

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)
Loading...

1 2 3 492