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.
- #49: database host configuration not work with version 2
- #48: AttributeError object has no attribute 'logging_id' in "del" methods
- #22: Allow use of Firebird embedded engine for tests
- #41: Some
firebird.confparameters are missing infbapi.config_items - Fix: Added validation-related info codes that were ommited in
DatabaseInfoProvider3. - Fix: Properly handle situation when parameter
databaseforconnectandcreate_databaseis a DSN. - 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.
- Minimal Python version raised to 3.11
- Test changed from
unittesttopytest - Parameter
databaseforconnectandcreate_databasenow acceptspathlib.Pathobjects. - Removed all usage of
LoggingIdMixinas it's no longer available infirebird-basev2.0. - Type hints adjusted to Python 3.11 standards
- More tests for greater coverage
- Dependency to
firebird-baseadjusted to~=1.8
- Extend response buffer size in
iBlob.get_info2. - Don't use
_bpb_streamwhen opening blob. - Fixed typo in
iResultSetdefinition.
- Fix #44 - Invalid affected_row count on multiple statements
- Fix page number size in
DatabaseInfoProvider3.get_info.
- Rename
DbClassitems to become more descriptive - Cleanup of Useless StmtInfoCode codes
- Use new info codes in Statement
DatabaseInfoProvider3.supportsandTransactionInfoProvider3.supportsfunctions.StatementInfoProviderand use it inCursor.affected_rowsimplementation.- Dataclasses
IpDataandImpDataOld - Missing
ReqInfoCodecodes. - missing
encodinganderrorsSPB config parameters.
DatabaseInfoProvider3.implementationproperty.- 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_ROLEcodes
- 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
DbInfoCodeitsensCRYPT_PLUGIN,WIRE_CRYPT,DB_GUIDandDB_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,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_workerstoDPB - New
ServerDbServices.upgrademethod (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
ServerDbServicesservices 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_timedmethod.
Cursor.to_dictmethod.
- 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.
-
verbintparameter 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
Serverprocessing incomplete LINE responses.
** 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.
- 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
ServerConfigoptions:ServerConfig.encodingandServerConfig.encoding_errors. - New
connect_serverparameters:encodingandencoding_errors.
- Requires
firebird-base 1.3.1
- Fixed important bug when
iAttachmentwas not properly released.
- Added
roleparameter toconnect_serverandfirebird.driver.core.SPB_ATTACH. - Added
encodingparameter tofirebird.driver.core.SPB_ATTACHwith default valueascii- used to encodeconfig,user,passwordandexpected_dbvalues. - Added
encodingparameter tofirebird.driver.core.TPBwith default valueascii(used to encode table names). firebird.driver.core.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.close()should not cause problems on object destruction anymore. - Failed
Server.close()should not cause problems on object destruction anymore.
** Backward incompatible changes **
tpbparameteraccessrenamed toaccess_mode.FirebirdWarningnow descends fromUserWarninginsteadWarning, and is reported to application via.warnings.warninstead raised as exception.iAttachment_v3attributecharsetwas renamed toencoding.iXpbBuilder.insert_stringoptional parameterencodingis now keyword-only. Parameter also added toiXpbBuilder.get_stringmethod.
-
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: Newencodingconstructor parameter & attribute. Used fortable namesin table reservation.firebird.driver.core.DPB: Encoding based on connection charset forconfig,user name,passwordandrole.firebird.driver.core..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.
- Bug in
ServerDbServices3.get_statisticswhentablesare specified.
FirebirdWarningis not raised as exception, but reported viawarnings.warnmechanism.
- 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.
- 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
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
firebird.driver.core.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. Thefirebird.driver.core.TPBhas 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-specific classes introduced. Internal classes
- Bug #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". - 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.planisNone. - Unregistered bug:
get_statistics()does not sendtablescorrectly. - Fix annotations.
ServerTraceServicesmethods now have return values.- User name added to
TraceSession. - Unregistered bug:
auth_plugin_listconfiguration option is ignored
- Fixed dependency to
firebird-base(v1.3.0)
- Added
Server.modeattribute to allow fetching service output using LINE or TO_EOF method. Default mode is TO_EOF.
- Unregistered bug:
sql_dialectis used insteaddb_sql_dialectinfirebird.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
FirebirdAPIinitialization.
- Build scheme changed to
PEP 517. - Various changes to documentation and type hint adjustments.
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).
- Support for schema and monitor modules from
firebird-libpackage.
- 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
-
Servicerenamed 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.coremodule
-
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.
ConnectionandTransactioninformation moved to inner objects accessible viainfoproperties (relates to FB4+ support).
Initial release.