Firebird Project - ( Open Source)
Firebird is the perfect database for developing a small program or a large enterprise information system.
Firebird is a relational database that can better manage your database and to track the behavior of your SQL programs. By implementing this tool you can refresh your data and make the correction scripts. The software runs on Windows 95/98/Millenium/2000 / XP platforms. SQL Monitor Interbase / Firebird is a freeware software.
Firebird offers good performance regardless of the size of databases, ranging from a few kilobytes to several gigabytes, without slowdowns. Among the features there can be mentioned multi-generational architecture, support for external functions (UDFs), the ACID transaction model, full support of Stored Procedures and Triggers, full internal language for Stored Procedures and Triggers (PSQL), support for External Functions (UDFs), full implementation of cursors in PSQL, incremental Backups, referential Integrity, many third-party tools, including graphical tools aministration, replication, etc, many drivers database access : Napi , dbExpress driver , ODBC, OLEDB , pilot Net native JDBC type 4 driver module, Python , PHP , Perl, etc and more.
- IMPROVEMENT: The statement CREATE OR ALTER USER SYSDBA PASSWORD <password> can now be used to initialize an empty securityN.fdb security
- IMPROVEMENT: Nesting of keys in a plug-in configuration was enabled.
- IMPROVEMENT: For URL-like connection strings on Windows, restriction of lookup to IPv4 only was enabled.
- IMPROVEMENT: Line and column numbers (location context) are now provided for runtime errors raised inside EXECUTE BLOCK.
- IMPROVEMENT: A switch was added to build POSIX binaries with a built-in libtommath library.
- IMPROVEMENT: gbak now returns a non-zero result code when restore fails on creating and activating a deferred user index.
- IMPROVEMENT: Implicit conversion between Boolean and string is now done automatically when a string for 'true' or 'false' is used as a value in an expression. Case-insensitive. Not valid when used with a Boolean operatorIS, NOT, AND or OR; not available for UNKNOWN.
* Bug Fixex:
# Core Engine:
- XpbBuilder was failing to create a new TPB.
- LEFT JOIN would incorrectly push a UDF into the inner stream, causing wrong results.
- A user-defined collation failed to work with BLOBs.
- An assertion could occur in createDatabase() when doing the overwrite check.
- A subquery in the insert list expression was ignoring changes made earlier in the same executable block.
- A database could suffer partial corruption in the use all space (no-reserve) mode.
- BUGCHECK 165 (cannot find tip page)
- Cascade deletion in a self-referencing table could raise the error no current record for fetch operation.
- A Data type unknown error was occurring with the LIST operation.
- Random invalid transaction handle errors were being returned from the engine.
- ON UPDATE CASCADE was failing for a self-referencing Foreign Key.
- REGRESSION: Performance was degraded when bulk inserting into a table with indices.
- Trying to encrypt a database in the absence of the the appropriate key could corrupt it.
- A small memory leak could occur when an empty result set was returned.
- Granting of privileges to views was broken.
- Parameters with multi-byte character sets were being allowed to exceed the length limit for VARCHAR fields.
- Expression index could become inconsistent if CREATE INDEX was interrupted after b-tree creation but before committing.
- Nested OR conditions could lead to incorrest results.
- Consistency between roles and privileges in GRANT syntax needed improving in accordance with the SQL standard.
- An attempt to execute a SELECT statement using isc_dsql_execute_immediate() would produce the wrong error message.
- Affected rows were not being counted for some update operations with views.
- IN/ANY/ALL predicates could cause sub-optimal execution (late filtering) of joins.
- Unaligned memory access in MET_format() would cause segfault on big-endian machines.
- 32-bit locks on big-endian systems would lead to deadlock.
- EXECUTE STATEMENT would throw a BLR error if the number of output parameters exceeded 256.
- An incorrect result set (missing records) could be returned by an ORDER plan query navigating on a descending index.
- Authentication was ending with first plug-in that had the user but would fail there, instead of continuing with the next plug-in.
- SELECT WITH LOCK could raise unexpected update conflict errors under concurrent load.
- A database could get decrypted after changing a couple of bytes in the database header without 'agreement' from the crypt plug-in.
- POST_EVENT was not working with the Fb 3.0 server and client.
- The operator IS exhibited a precedence problem.
- REGRESSION: line/column numbering in error messages were being garbled if alias.name syntax was used in the offending statement.
- The error no current record to fetch was thrown if some record was to be deleted both by the statement itself and by some trigger fired during statement execution.
- An expression index could be created while inserts into the table were in progress.
# Server Crashes:
- Access violation from certain UDFs would cause the server to crash.
# API/Remote Interface:
- Race conditions could arise when initializing wire compression.
- A network protocol error was exhibited when performing a callback to a client for the database crypt key.
- Some SPB parameters were failing in FB 3.0.
- Transaction id tags for the Services API did not support new 48-bit transaction ids.
- The Services API would not work with non-ASCII database names.
# Utilities
- fbsvcmgr was not producing any error when it attempted to shut down a database without a specified timeout (prp_force_shutdown N).
- Restore could hang if the database contained more than 4 billion records.
- Validation could read after the end-of-file when operating on a multi-file database.
* isql:
- The BLOBVIEW command was causing isql to hang.
- isql would leak memory when SHOW GRANTS was used on a new, empty database.
- isql -[e]X[tract_metadata] output was omitting double quotes for the COLLATE <collation> clause of a CREATE DOMAIN statement when <collation> was for any non-ascii character set.
- isql -[e]X[tract_metadata] was not exporting explicitly defined names for NOT NULL constraints for Dialect 3 databases.
- isql -[e]X[tract_metadata] could crash while exporting an exception with message text length longer than 127 bytes.
- isql -[e]X[tract_metadata] could generate invalid GRANT USAGE statements for domains.
* Monitoring and Trace:
- A string truncation error would occur while selecting from the MON$ tables if some user-defined context variable was longer than 255 bytes.
- A trace session could fully utilize a single CPU core.
* nBackup:
- A database located on a raw device could not be unlocked from an nBackup-locked state.
* Builds
- Databases created during the process of the Windows builds were owned by a Windows administrator, not SYSDBA.
- Firebird failed to build with USE_VALGRIND
* POSIX-Specific
- A segfault could occur when op_que_events was used on a port that was not prepared for events processing.
- A segfault could occur if an attachment was closed while requests were still open.
- Incorrect use of the system call readlink().