######### Changelog ######### Version 1.10.4 ============== - Support for values fetched from environment variables in configuration files via `~firebird.base.config.EnvExtendedInterpolation` provided 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_version` always 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 `.DbInfoCode` itsens `CRYPT_PLUGIN`, `WIRE_CRYPT`, `DB_GUID` and `DB_FILE_ID` * Fix: #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`, `.SrvBackupFlag` and new `.ResultSetInfoCode`. - API: `.iResultSet.get_info` method available for FB5 attachments. - Parallel workers: Added `.DatabaseConfig.parallel_workers` configuration option, added `parallel_workers` parameter to `.ServerDbServices3.backup`, `.ServerDbServices3.restore` and `.ServerDbServices3.sweep`, added `parallel_workers` to `.DPB` - New `.ServerDbServices.upgrade` method (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 `.ServerDbServices` services 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_timed` method. 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 ============= * Fix: `~firebird.driver.core.create_database()` now use server configuration user/password if either is not specified in database configuration (like `.connect()`) * Fix: Problem in `.Server` processing incomplete LINE responses. * New: `verbint` parameter for `.ServerDbServices3.backup()` and `.ServerDbServices3.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()`: The `verbose` parameter default value was changed to `False` to be consistent with `.ServerDbServices3.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 `.ServerConfig` options: `~ServerConfig.encoding` and `~ServerConfig.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 `~firebird.driver.core.SPB_ATTACH`. * Added `encoding` parameter to `~firebird.driver.core.SPB_ATTACH` with default value `ascii` - used to encode `config`, `user`, `password` and `expected_db` values. * Added `encoding` parameter to `~firebird.driver.core.TPB` with default value `ascii` - used to encode table names. * `~firebird.driver.core..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: ------------------------------ * `.tpb` parameter `access` renamed to `access_mode`. * `.FirebirdWarning` now descends from `UserWarning` instead `Warning`, and is reported to application via `.warnings.warn` instead raised as exception. * `.iAttachment_v3` attribute `charset` was renamed to `encoding`. * `.iXpbBuilder.insert_string` optional parameter `encoding` is now keyword-only. Parameter also added to `.iXpbBuilder.get_string` method. 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: - `~firebird.driver.core.TPB`: New `encoding` constructor parameter & attribute. Used for `table names` in table reservation. - `~firebird.driver.core.DPB`: Encoding based on connection charset for `config`, `user name`, `password` and `role`. - `~firebird.driver.core..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-specific classes introduced. Internal classes `.DatabaseInfoProvider`, `.TransactionInfoProvider` and `.ServerDbServices` now implement only Firebird 4 features and descend from Firebird 3 versions. The proper variant is returned according to connected server. - New `.DatabaseConfig` options `session_time_zone`, `set_bind`, `decfloat_round` and `decfloat_traps`. - New `~firebird.driver.core.DPB` parameters `session_time_zone`, `set_db_replica`, `set_bind`, `decfloat_round` and `decfloat_traps`. - New `session_time_zone` keyword parameter for `.connect()`. - 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. The `~firebird.driver.core.TPB` has new `at_snapshot_number` parameter. - `.backup()` and `.local_backup()` have new optional keyword-only arguments `include_data`, `keyhoder`, `keyname` and `crypt`, and `ZIP` value was added to `SrvBackupFlag`. - `.restore()` and `.local_restore()` have new optional keyword-only arguments `include_data`, `keyhoder`, `keyname`, `crypt` and `replica_mode`. - `.nbackup()` has new optional keyword-only parameter `guid`. - Support for new services. New methods `.ServerDbServices.nfix_database()` and `.set_replica_mode()`. - Support for `.Statement.timeout`, and `idle_timeout` and `statement_timeout` in `.Connection.info`. - New types: `.Features`, `.ReplicaMode`, `.CancelType`, `.DecfloatRound`, `.DecfloatTraps`, `.ConnectionFlag` and `.EncryptionFlag`. 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_dialect` is used instead `db_sql_dialect` in `~firebird.driver.core.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: `~firebird.driver.config` - Driver configuration * New module: `~firebird.driver.interfaces` - Interface wrappers for Firebird new API * Changed module: `~firebird.driver.types` - Interface wrapper moved to separate module - Buffer managers moved to `~firebird.driver.core` module * Changed module: `~firebird.driver.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. .. _firebird-lib: https://pypi.org/project/firebird-lib/ .. _releases: https://github.com/FirebirdSQL/python3-driver/releases .. _Dash: https://kapeli.com/dash .. _Zeal: https://zealdocs.org/