Changelog¶
Version 2.0.3¶
#65: Segmentation fault when close connection or cursor
#63: Exception ignored in: function Connection.__del__
#58: readline_timed() method appending n to data received
#56: Variable ‘dsn’ needs to be initialized in create_database()
#53: Loss of scale when reading numeric with zero value
#51: Exception ignored in: function Connection.__del__ … connection shutdown
Version 2.0.2¶
#49: database host configuration not work with version 2
Version 2.0.1¶
#48: AttributeError object has no attribute ‘logging_id’ in “__del__” methods
Version 2.0.0¶
Test changed from
unittesttopytest, more tests for greater coverage.#22: Allow use of Firebird embedded engine for tests
Minimal Python version raised to 3.11
Parameter
databaseforconnectandcreate_databasenow acceptsPathobjects.Fix: Properly handle situation when parameter
databaseforconnectandcreate_databaseis a DSN.Removed all usage of
LoggingIdMixinas it’s no longer available infirebird-basev2.0.#41: Some
firebird.confparameters are missing infbapi.config_itemsFix: Added validation-related info codes that were ommited in
DatabaseInfoProvider3.Type hints adjusted to Python 3.11 standards
Fix:
TPB.parse_bufferhandling of new READ COMMITTED READ CONSISTENCY.Fix:
DPB.parse_bufferandSPB_ATTACH.parse_buffer.Fix: Introduce
StatementInfoProvider4for proper handling of FB v5 additions.Fix:
ServerInfoProviderhandling ofSrvInfoCode.LIMBO_TRANSinfo code.
Version 1.10.11¶
Dependency to
firebird-baseadjusted to “~=1.8”
Version 1.10.10¶
Fix: Extend response buffer size in
iBlob.get_info2.Fix: Don’t use
_bpb_streamwhen opening blob.Fix: typo in
iResultSetdefinition.
Version 1.10.9¶
Fix #44 - Invalid affected_row count on multiple statements
Version 1.10.8¶
Fix page number size in
DatabaseInfoProvider3.get_info.
Version 1.10.7¶
Change: Rename
DbClassitems to become more descriptiveChange: Cleanup of Useless StmtInfoCode codes
Add:
DatabaseInfoProvider3.supportsandTransactionInfoProvider3.supportsfunctions.Add:
StatementInfoProviderand use it inCursor.affected_rowsimplementation.Add: Dataclasses
ImpDataandImpDataOldAdd: Missing
ReqInfoCodecodesAdd: missing
encodinganderrorsSPB config parameters.Use new info codes in Statement
Fix:
DatabaseInfoProvider3.implementationpropertyFix: issue when wrong close is selected in class hierarchy.
Fix: 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_ROLEcodes
Version 1.10.6¶
Fix: Big NUMERIC/DECIMAL (i.e. INT128) ARRAYs do not work.
Fix: ARRAYs of TIME WITH TIMEZONE do not work.
Version 1.10.5¶
Fix: DECFLOAT ARRAYs do not work.
Version 1.10.4¶
Support for values fetched from environment variables in configuration files via
EnvExtendedInterpolationprovided by firebird-base package v1.8.0.Fix: db info call for CRYPT_KEY, CRYPT_PLUGIN, WIRE_CRYPT, DB_GUID and DB_FILE_ID returned mangled values.
Fix: db info call for FIREBIRD_VERSION or
Connection.info.firebird_versionalways returned only one string. Now it returns all values returned by server, separated by newline.
Version 1.10.3¶
Fix: #30 - It is not possible to start a transaction without specifying an isolation level The fix allows use of empty tpb in
TransactionManager.begin()
Version 1.10.2¶
Fix: mangled output for
DbInfoCodeitsensCRYPT_PLUGIN,WIRE_CRYPT,DB_GUIDandDB_FILE_IDFix: #34 - Pre-1970 dates causes OverflowError
Fix: #38 - ‘datetime.date’ object has no attribute ‘date’
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¶
New: 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,SrvBackupFlagand newResultSetInfoCode.API:
iResultSet.get_infomethod available for FB5 attachments.Parallel workers: Added
DatabaseConfig.parallel_workersconfiguration option, addedparallel_workersparameter toServerDbServices3.backup,ServerDbServices3.restoreandServerDbServices3.sweep, addedparallel_workerstoDPBNew
ServerDbServices.upgrademethod (in-place minor ODS upgrades)
Test: Fix name for
to_dict()test.Add: Classic API functions for BLR and BLOB manipulation to
FirebirdAPI.Fix: Wait for completion of
ServerDbServicesservices that do not return data. Otherwise subsequent service calls may end with “Service is currently busy” error.Improvement: Internal handling of attachment and trasansaction handles.
Fix: Documentation link for the driver, provided by @mariuz
Fix #20: Cursor.description returning () instead of None when the cursor has no rows, which is violation of PEP 249. Fix provided by @fdcastel
Version 1.8.0¶
New:
Server.readline_timedmethod.
Version 1.7.0¶
New:
Cursor.to_dictmethod.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¶
Version 1.5.1¶
Fix:
ServerDbServices.set_replica_mode()now works correctly.
Version 1.5.0¶
Fix:
create_database()now use server configuration user/password if either is not specified in database configuration (likeconnect())Fix: Problem in
Serverprocessing incomplete LINE responses.New:
verbintparameter forServerDbServices3.backup()andServerDbServices3.restore()This is undocumented Firebird v3 gbak feature. See https://github.com/FirebirdSQL/firebird/issues/808 for details. It’s mutually exclusive with
verbose, and minimal value is 100.
Potentially breaking changes¶
Change in
ServerDbServices3.restore(): Theverboseparameter default value was changed toFalseto be consistent withServerDbServices3.backup()Change in
ShutdownMethod: DENNY_ATTACHMENTS/DENNY_TRANSACTIONS renamed to DENY_ATTACHMENTS/DENY_TRANSACTIONS.
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
ServerConfigoptions:encodingandencoding_errors.New
connect_serverparameters:encodingandencoding_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
roleparameter toconnect_serverandSPB_ATTACH.Added
encodingparameter toSPB_ATTACHwith default valueascii- used to encodeconfig,user,passwordandexpected_dbvalues.Added
encodingparameter toTPBwith default valueascii- used to encode table names.DPBparametercharsetis now used to determine encoding forconfig,user,passwordandrolevalues.connect_serverhas newencodingparameter with default valueasciithat is passed to newServer.encodingattribute.Server.encodingis used to encode/decode various string values passed between client and server in parameter buffers (see below), and text output from services.ServerInfoProvidernow usesServer.encodingfor returned SERVER_VERSION, IMPLEMENTATION, GET_ENV, GET_ENV_MSG, GET_ENV_LOCK, USER_DBPATH and DBNAME values.ServerDbServicesnow usesServer.encodingfor 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.ServerUserServicesnow usesServer.encodingfor DBNAME, SQL_ROLE_NAME, USER_NAME, GROUP_NAME, FIRST_NAME, MIDDLE_NAME, LAST_NAME and PASSWORD (on storage only) SPB values.ServerTraceServicesnow usesServer.encodingfor CONFIG SPB value.Failed
Connection.closeshould not cause problems on object destruction anymore.Failed
Server.closeshould not cause problems on object destruction anymore.
Backward incompatible changes:¶
tpbparameteraccessrenamed toaccess_mode.FirebirdWarningnow descends fromUserWarninginsteadWarning, and is reported to application viawarnings.warninstead raised as exception.iAttachment_v3attributecharsetwas renamed toencoding.iXpbBuilder.insert_stringoptional parameterencodingis now keyword-only. Parameter also added toiXpbBuilder.get_stringmethod.
Version 1.3.4¶
FirebirdWarningis not raised as exception, but reported viawarnings.warnmechanism.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: Newencodingconstructor parameter & attribute. Used fortable namesin table reservation.DPB: Encoding based on connection charset forconfig,user name,passwordandrole.SPB: Newencodingconstructor parameter & attribute. Used forconfig,user name,passwordandexpected database.Connection-related providers: Encoding based on connection charset.
Server and Service providers: New
Server.encodingattribute.
Fixed bug in
ServerDbServices3.get_statisticswhentablesare 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 asFirebirdWarninginsteadWarning. In some future release, warnings will not be raised, but reported viawarnings.warnmechanism.
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_encodingvalue that is initialized tolocale.getpreferredencoding. Also, the decode is now done witherrors="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.planisNone.Fix unregistered bug:
get_statistics()does not sendtablescorrectly.Fix annotations.
ServerTraceServicesmethods now have return values.User name added to
TraceSession.Fix unregistered bug:
auth_plugin_listconfiguration option is ignoredAll methods of
ServerDbServices3except 3 related to limbo transactions have new optional keyword-only parameterrolethat 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,TransactionInfoProviderandServerDbServicesnow implement only Firebird 4 features and descend from Firebird 3 versions. The proper variant is returned according to connected server.New
DatabaseConfigoptionssession_time_zone,set_bind,decfloat_roundanddecfloat_traps.New
DPBparameterssession_time_zone,set_db_replica,set_bind,decfloat_roundanddecfloat_traps.New
session_time_zonekeyword 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_numberproperty. TheTPBhas newat_snapshot_numberparameter.backup()andlocal_backup()have new optional keyword-only argumentsinclude_data,keyhoder,keynameandcrypt, andZIPvalue was added toSrvBackupFlag.restore()andlocal_restore()have new optional keyword-only argumentsinclude_data,keyhoder,keyname,cryptandreplica_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_timeoutandstatement_timeoutinConnection.info.New types:
Features,ReplicaMode,CancelType,DecfloatRound,DecfloatTraps,ConnectionFlagandEncryptionFlag. Firebird 4-related values added to some other enum types.
Version 1.2.1¶
Fixed dependency to
firebird-base(v1.3.0)
Version 1.2.0¶
Fix unregistered bug:
sql_dialectis used insteaddb_sql_dialectincreate_database.Fix (#2): error when handling input parameters with value None
Added
Server.modeattribute 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_defaultsandDriverConfig.server_defaultsare now created asoptional(introduced by firebird-base 1.2.0), so configuration file does not requirefirebird.db.defaultsandfirebird.server.defaultssections (even empty).Fix: unregistered bug in
InfoProvider.Fix: unregistered bug in
FirebirdAPIinitialization.
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.
Servicerenamed toServer. Selected functionality moved to inner objects (relates to FB4+ support).New module:
config- Driver configurationNew module:
interfaces- Interface wrappers for Firebird new APIChanged module:
typesInterface wrapper moved to separate module
Buffer managers moved to
coremodule
Changed module:
coreconnect(),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.
ConnectionandTransactioninformation moved to inner objects accessible viainfoproperties (relates to FB4+ support).
Version 0.5.0¶
Initial release.