All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fix #44 - Invalid affected_row count on multiple statements
- Fix page number size in
DatabaseInfoProvider3.get_info
.
- Rename
DbClass
items to become more descriptive - Cleanup of Useless StmtInfoCode codes
- Use new info codes in Statement
DatabaseInfoProvider3.supports
andTransactionInfoProvider3.supports
functions.StatementInfoProvider
and use it inCursor.affected_rows
implementation.- Dataclasses
IpData
andImpDataOld
- Missing
ReqInfoCode
codes. - missing
encoding
anderrors
SPB config parameters.
DatabaseInfoProvider3.implementation
property.- Issue when wrong close is selected in class hierarchy.
- Handling of
DbInfoCode.BASE_LEVEL
,DbInfoCode.DB_FILE_SIZE
,DbInfoCode.IMPLEMENTATION
,DbInfoCode.IMPLEMENTATION_OLD
,DbInfoCode.ACTIVE_TRANSACTIONS
,DbInfoCode.LIMBO
,DbInfoCode.PAGE_CONTENTS
,DbInfoCode.USER_NAME
,DbInfoCode.SQL_ROLE
codes
- Unregistered bug: Big NUMERIC/DECIMAL (i.e. INT128) ARRAYs do not work.
- Unregistered bug: ARRAYs of TIME WITH TIMEZONE do not work.
- Unregistered bug: DECFLOAT ARRAYs do not work.
- Support for values fetched from environment variables in configuration files via EnvExtendedInterpolation provided by firebird-base package v1.8.0.
- Unregistered bug: db info call for CRYPT_KEY, CRYPT_PLUGIN, WIRE_CRYPT, DB_GUID and DB_FILE_ID returned mangled values.
- Unregistered bug: db info call for FIREBIRD_VERSION or Connection.info.firebird_version always returned only one string. Now it returns all values returned by server, separated by newline.
- #30 - It is not possible to start a transaction without specifying an isolation level
The fix allows use of empty tpb in
TransactionManager.begin()
- Mangled output for
DbInfoCode
itsensCRYPT_PLUGIN
,WIRE_CRYPT
,DB_GUID
andDB_FILE_ID
- #34 - Pre-1970 dates causes OverflowError
- #38 - 'datetime.date' object has no attribute 'date'
- Call iProvider.shutdown() on program exit.
- #33 - SIGABRT on interface detach.
- #27 - Failed to establish a connection to the server on the specified port.
- #15 - Documentation issue.
- Fixed issue on MacOS (see #7827 in Firebird)
- Build system changed from setuptools to hatch
-
Initial (as for Beta 1) support for Firebird 5.0 API and features.
- New and extended types: Extended
DbInfoCode
,StmtInfoCode
,DPBItem
,SrvRepairOption
,SrvBackupOption
,SrvNBackupOption
,Implementation
,SrvRepairFlag
,SrvBackupFlag
and newResultSetInfoCode
. - API:
iResultSet.get_info
method available for FB5 attachments. - Parallel workers: Added
DatabaseConfig.parallel_workers
configuration option, addedparallel_workers
parameter toServerDbServices3.backup
,ServerDbServices3.restore
andServerDbServices3.sweep
, addedparallel_workers
toDPB
- New
ServerDbServices.upgrade
method (in-place minor ODS upgrades)
- New and extended types: Extended
-
Classic API functions for BLR and BLOB manipulation to
FirebirdAPI
.
- Test: Fix name for
to_dict()
test. - Wait for completion of
ServerDbServices
services that do not return data. Otherwise subsequent service calls may end with "Service is currently busy" error. - Documentation link for the driver, provided by @mariuz
- #20: Cursor.description returning () instead of None when the cursor has no rows, which is violation of PEP 249. Fix provided by @fdcastel
- Improvement: Internal handling of attachment and trasansaction handles.
Server.readline_timed
method.
Cursor.to_dict
method.
- Move away from setup.cfg to pyproject.toml, changed source tree layout.
- 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.
- Documentation is now also provided as Dash / Zeal docset, downloadable from releases at github.
- Code optionizations.
ServerDbServices.set_replica_mode()
now works correctly.
-
verbint
parameter forServerDbServices3.backup()
andServerDbServices3.restore()
This is undocumented Firebird v3 gbak feature. See this for details. It's mutually exclusive with
verbose
, and minimal value is 100.
firebird.driver.core.create_database()
now use server configuration user/password if either is not specified in database configuration (like.connect()
)- Problem in
Server
processing incomplete LINE responses.
** Potentially breaking changes **
- Change in
ServerDbServices3.restore()
: Theverbose
parameter default value was changed toFalse
to be consistent withServerDbServices3.backup()
- Change in
ShutdownMethod
: DENNY_ATTACHMENTS/DENNY_TRANSACTIONS renamed to DENY_ATTACHMENTS/DENY_TRANSACTIONS.
- Load driver configuration only when it's successfully read from file(s)
- Reading service output will fail if line is greater than 64K
- Avoid division by zero if fetches stats is zero in DatabaseInfoProvider.cache_hit_ratio
- Rewind buffer with version string after using in EngineVersionProvider
- Add low-level access to fb_shutdown_callback API function
- New
ServerConfig
options:ServerConfig.encoding
andServerConfig.encoding_errors
. - New
connect_server
parameters:encoding
andencoding_errors
.
- Requires
firebird-base 1.3.1
- Fixed important bug when
iAttachment
was not properly released.
- Added
role
parameter toconnect_server
andfirebird.driver.core.SPB_ATTACH
. - Added
encoding
parameter tofirebird.driver.core.SPB_ATTACH
with default valueascii
- used to encodeconfig
,user
,password
andexpected_db
values. - Added
encoding
parameter tofirebird.driver.core.TPB
with default valueascii
(used to encode table names). firebird.driver.core.DPB
parametercharset
is now used to determine encoding forconfig
,user
,password
androle
values.connect_server
has newencoding
parameter with default valueascii
that is passed to newServer.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 usesServer.encoding
for returned SERVER_VERSION, IMPLEMENTATION, GET_ENV, GET_ENV_MSG, GET_ENV_LOCK, USER_DBPATH and DBNAME values.ServerDbServices
now usesServer.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 usesServer.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 usesServer.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 **
tpb
parameteraccess
renamed toaccess_mode
.FirebirdWarning
now descends fromUserWarning
insteadWarning
, and is reported to application via.warnings.warn
instead raised as exception.iAttachment_v3
attributecharset
was renamed toencoding
.iXpbBuilder.insert_string
optional parameterencoding
is now keyword-only. Parameter also added toiXpbBuilder.get_string
method.
-
User-defined encoding for string parameter and response values exchanged between driver and Firebird engine. This includes TPB, DPB, SPB and various service values:
firebird.driver.core.TPB
: Newencoding
constructor parameter & attribute. Used fortable names
in table reservation.firebird.driver.core.DPB
: Encoding based on connection charset forconfig
,user name
,password
androle
.firebird.driver.core..SPB
: Newencoding
constructor parameter & attribute. Used forconfig
,user name
,password
andexpected database
.- Connection-related providers: Encoding based on connection charset.
- Server and Service providers: New
Server.encoding
attribute.
- Bug in
ServerDbServices3.get_statistics
whentables
are specified.
FirebirdWarning
is not raised as exception, but reported viawarnings.warn
mechanism.
- New exception type
FirebirdWarning
. From now on, warnings from engine are raised asFirebirdWarning
insteadWarning
. In some future release, warnings will not be raised, but reported viawarnings.warn
mechanism.
- Unregistered bug: Newly extended interface breaks the driver (affects usability of the driver with Firebird development versions).
- New context manager
temp_database
.
- Unregistered bug: iUtil methods removed after FB 4 Beta 2 broke the Int128/TZ handling.
- Unregistered bug: wrong handling of Firebird 4 string info parameters.
-
All methods of
ServerDbServices3
except 3 related to limbo transactions have new optional keyword-only parameterrole
that is passed to called utility. -
Function
connect_server()
has new optional keyword-only parameterexpected_db
, to access services with non-default security database. -
Improved Firebird 4 support.
- Version-specific classes introduced. Internal classes
DatabaseInfoProvider
,TransactionInfoProvider
andServerDbServices
now implement only Firebird 4 features and descend from Firebird 3 versions. The proper variant is returned according to connected server. - New
DatabaseConfig
optionssession_time_zone
,set_bind
,decfloat_round
anddecfloat_traps
. - New
firebird.driver.core.DPB
parameterssession_time_zone
,set_db_replica
,set_bind
,decfloat_round
anddecfloat_traps
. - New
session_time_zone
keyword parameter forconnect()
. - Added explicit support for READ COMMITTED READ CONSISTENCY isolation (when disabled in Firebird configuration).
- Support for transactions started at specified snapshot number.
New
TransactionInfoProvider.snapshot_number
property. Thefirebird.driver.core.TPB
has newat_snapshot_number
parameter. backup()
andlocal_backup()
have new optional keyword-only argumentsinclude_data
,keyhoder
,keyname
andcrypt
, andZIP
value was added toSrvBackupFlag
.restore()
andlocal_restore()
have new optional keyword-only argumentsinclude_data
,keyhoder
,keyname
,crypt
andreplica_mode
.nbackup()
has new optional keyword-only parameterguid
.- Support for new services.
New methods
ServerDbServices.nfix_database()
andset_replica_mode()
. - Support for
Statement.timeout
, andidle_timeout
andstatement_timeout
inConnection.info
. - New types:
Features
,ReplicaMode
,CancelType
,DecfloatRound
,DecfloatTraps
,ConnectionFlag
andEncryptionFlag
. Firebird 4-related values added to some other enum types.
- Version-specific classes introduced. Internal classes
- Bug #4: exeption returns non ascii-127 symbols.
The error message decode uses
.fbapi.err_encoding
value that is initialized tolocale.getpreferredencoding
. Also, the decode is now done witherrors="replace"
. - Unregistered bug: wrong handling of milliseconds in TIME and TEMEPSTAMP datatype.
- Sync
_VERSION_
value with package version - Unregistered bug: Do not raise exception if accessed
Statement.plan
isNone
. - Unregistered bug:
get_statistics()
does not sendtables
correctly. - Fix annotations.
ServerTraceServices
methods now have return values.- User name added to
TraceSession
. - Unregistered bug:
auth_plugin_list
configuration option is ignored
- Fixed dependency to
firebird-base
(v1.3.0)
- Added
Server.mode
attribute to allow fetching service output using LINE or TO_EOF method. Default mode is TO_EOF.
- Unregistered bug:
sql_dialect
is used insteaddb_sql_dialect
infirebird.driver.core.create_database
. - Bug #2: error when handling input parameters with value None
Support for Firebird 4 TIMEZONE is broken (for FB4 RC1). It will be fixed in next driver version.
- Unregistered bug in
InfoProvider
. - Unregistered bug in
FirebirdAPI
initialization.
- Build scheme changed to
PEP 517
. - Various changes to documentation and type hint adjustments.
DriverConfig.db_defaults
andDriverConfig.server_defaults
are now created asoptional
(introduced by firebird-base 1.2.0), so configuration file does not requirefirebird.db.defaults
andfirebird.server.defaults
sections (even empty).
- Support for schema and monitor modules from
firebird-lib
package.
- Documentation: adjustments to css.
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).
- Support for new FB4 data types in ARRAY fields.
- New
Cursor.call_procedure()
method.
- Documentation, both in code and separate (especially Usage Guide).
- Refactoring in driver hooks.
- Refactoring and fixes in Server and its services.
- Support for new FB4 data types (TIME/TIMESTAMP WITH TIMEZONE, DECFLOAT[16|34] and extended DECIMAL/NUMERIC via INT128 storage).
- More documentation.
- Initial support for Firebird 4+ (interfaces and other definitions). Includes support for interface versions.
- New module:
firebird.driver.config
- Driver configuration - New module:
firebird.driver.interfaces
- Interface wrappers for Firebird new API
-
Service
renamed toServer
. Selected functionality moved to inner objects (relates to FB4+ support). -
Module:
firebird.driver.types
:- Interface wrapper moved to separate module
- Buffer managers moved to
firebird.driver.core
module
-
Module
~firebird.driver.core
:connect()
,create_database()
andconnect_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
andTransaction
information moved to inner objects accessible viainfo
properties (relates to FB4+ support).
Initial release.