Changelog

Version 1.10.1

  • Call iProvider.shutdown() on program exit.

  • Fix: #33 - SIGABRT on interface detach.

Version 1.10.0

  • Build system changed from setuptools to hatch

  • Fix: #27 - Failed to establish a connection to the server on the specified port.

  • Fix: #15 - Documentation issue.

Version 1.9.0

Version 1.8.0

Version 1.7.0

  • New: Cursor.to_dict method.

  • Move away from setup.cfg to pyproject.toml, changed source tree layout.

Version 1.6.0

  • Further code optimizations.

  • Addressing issues reported by pylint.

  • Updated Firebird OO API (interface extensions between 3.0.7->3.0.10, 4.0.0->4.0.2)

  • Improved documentation.

Version 1.5.2

  • Code optionizations.

  • New: Documentation is now also provided as Dash / Zeal docset, downloadable from releases at github.

Version 1.5.1

  • Fix: ServerDbServices.set_replica_mode() now works correctly.

Version 1.5.0

Potentially breaking changes

Version 1.4.3

  • Fix: Load driver configuration only when it’s successfully read from file(s)

  • Fix: Reading service output will fail if line is greater than 64K

  • Fix: Avoid division by zero if fetches stats is zero in DatabaseInfoProvider.cache_hit_ratio

  • Fix: Rewind buffer with version string after using in EngineVersionProvider

  • Fix: Add low-level access to fb_shutdown_callback API function

Version 1.4.2

  • New ServerConfig options: encoding and encoding_errors.

  • New connect_server parameters: encoding and encoding_errors.

  • Requires firebird-base 1.3.1

Version 1.4.1

  • Fixed important bug when iAttachment was not properly released.

Version 1.4.0

Improvements:

  • Added role parameter to connect_server and SPB_ATTACH.

  • Added encoding parameter to SPB_ATTACH with default value ascii - used to encode config, user, password and expected_db values.

  • Added encoding parameter to TPB with default value ascii - used to encode table names.

  • DPB parameter charset is now used to determine encoding for config, user, password and role values.

  • connect_server has new encoding parameter with default value ascii that is passed to new Server.encoding attribute. Server.encoding is used to encode/decode various string values passed between client and server in parameter buffers (see below), and text output from services.

  • ServerInfoProvider now uses Server.encoding for returned SERVER_VERSION, IMPLEMENTATION, GET_ENV, GET_ENV_MSG, GET_ENV_LOCK, USER_DBPATH and DBNAME values.

  • ServerDbServices now uses Server.encoding for DBNAME, SQL_ROLE_NAME, FILE, SKIP_DATA, INCLUDE_DATA, INCLUDE_TABLE, EXCLUDE_TABLE, INCLUDE_INDEX, EXCLUDE_INDEX, LINE and isc_spb_sts_table SPB values.

  • ServerUserServices now uses Server.encoding for DBNAME, SQL_ROLE_NAME, USER_NAME, GROUP_NAME, FIRST_NAME, MIDDLE_NAME, LAST_NAME and PASSWORD (on storage only) SPB values.

  • ServerTraceServices now uses Server.encoding for CONFIG SPB value.

  • Failed Connection.close should not cause problems on object destruction anymore.

  • Failed Server.close should not cause problems on object destruction anymore.

Backward incompatible changes:

Version 1.3.4

  • FirebirdWarning is not raised as exception, but reported via warnings.warn mechanism.

  • User-defined encoding for string parameter and response values exchanged between driver and Firebird engine. This includes TPB, DPB, SPB and various service values:

    • TPB: New encoding constructor parameter & attribute. Used for table names in table reservation.

    • DPB: Encoding based on connection charset for config, user name, password and role.

    • SPB: New encoding constructor parameter & attribute. Used for config, user name, password and expected database.

    • Connection-related providers: Encoding based on connection charset.

    • Server and Service providers: New Server.encoding attribute.

  • Fixed bug in ServerDbServices3.get_statistics when tables are specified.

Version 1.3.3

  • Fix unregistered bug: Newly extended interface breaks the driver (affects usability of the driver with Firebird development versions).

  • New exception type FirebirdWarning. From now on, warnings from engine are raised as FirebirdWarning instead Warning. In some future release, warnings will not be raised, but reported via warnings.warn mechanism.

Version 1.3.2

  • Fix unregistered bug: iUtil methods removed after FB 4 Beta 2 broke the Int128/TZ handling.

  • New context manager temp_database.

Version 1.3.1

  • Fix unregistered bug: wrong handling of Firebird 4 string info parameters.

Version 1.3.0

  • Fix (#4): exeption returns non ascii-127 symbols. The error message decode uses fbapi.err_encoding value that is initialized to locale.getpreferredencoding. Also, the decode is now done with errors="replace".

  • Fix unregistered bug: wrong handling of milliseconds in TIME and TEMEPSTAMP datatype.

  • Sync _VERSION_ value with package version

  • Fix unregistered bug: Do not raise exception if accessed Statement.plan is None.

  • Fix unregistered bug: get_statistics() does not send tables correctly.

  • Fix annotations.

  • ServerTraceServices methods now have return values.

  • User name added to TraceSession.

  • Fix unregistered bug: auth_plugin_list configuration option is ignored

  • All methods of ServerDbServices3 except 3 related to limbo transactions have new optional keyword-only parameter role that is passed to called utility.

  • Function connect_server() has new optional keyword-only parameter expected_db, to access services with non-default security database.

  • Improved Firebird 4 support.

Version 1.2.1

  • Fixed dependency to firebird-base (v1.3.0)

Version 1.2.0

  • Fix unregistered bug: sql_dialect is used instead db_sql_dialect in create_database.

  • Fix (#2): error when handling input parameters with value None

  • Added Server.mode attribute to allow fetching service output using LINE or TO_EOF method. Default mode is TO_EOF.

Version 1.1.0

  • Important: Support for Firebird 4 TIMEZONE is broken (for FB4 RC1). It will be fixed in next driver version.

  • Build scheme changed to PEP 517.

  • Various changes to documentation and type hint adjustments.

  • Changed: DriverConfig.db_defaults and DriverConfig.server_defaults are now created as optional (introduced by firebird-base 1.2.0), so configuration file does not require firebird.db.defaults and firebird.server.defaults sections (even empty).

  • Fix: unregistered bug in InfoProvider.

  • Fix: unregistered bug in FirebirdAPI initialization.

Version 1.0.0

  • Added support for schema and monitor modules from firebird-lib package.

  • Documentation: adjustments to css.

Version 0.8.0

The driver is no longer beta, and is now considered as stable for Firebird 3.0 (support for Firebird 4 is still evolving till final release).

  • Documentation, both in code and separate (especially Usage Guide).

  • Added support for new FB4 data types in ARRAY fields.

  • Refactoring in driver hooks.

  • New Cursor.call_procedure() method.

  • Refactoring and fixes in Server and its services.

Version 0.7.0

  • Added support for new FB4 data types (TIME/TIMESTAMP WITH TIMEZONE, DECFLOAT[16|34] and extended DECIMAL/NUMERIC via INT128 storage).

Version 0.6.0

  • More documentation.

  • Initial support for Firebird 4+ (interfaces and other definitions). Includes support for interface versions.

  • Service renamed to Server. Selected functionality moved to inner objects (relates to FB4+ support).

  • New module: config - Driver configuration

  • New module: interfaces - Interface wrappers for Firebird new API

  • Changed module: types

    • Interface wrapper moved to separate module

    • Buffer managers moved to core module

  • Changed module: core

    • connect(), create_database() and connect_server() now use driver configuration.

    • Simplified/unified transaction isolation specification.

    • Emit warnings when objects with allocated Firebird resources are disposed (by Python GC) without prior call to close().

    • Trace instrumentation removed. Use dynamic trace configuration from firebird-base 0.6.0.

    • Connection and Transaction information moved to inner objects accessible via info properties (relates to FB4+ support).

Version 0.5.0

Initial release.