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.
* Core Engine/API -
- (CORE-3046) - After an ALTER TABLE was executed in one connection, an assertion would occur if another connection tried to select from the table.
- (CORE-3038) - An insert would fail with a spurious validation error on a specified column definition.
- (CORE-3034) - If a request was cancelled for some reason, such as database shutdown or by a user request, while inserting key into an expression index, it could lead to bugcheck 300 (can't find shared latch).
- (CORE-3017) - Files were being left behind in Firebird's lock directory.
- (CORE-3016) - On disconnect a â€œFatal lock manager error: invalid lock id (0), errno: 0â€ could show up in firebird.log.
- (CORE-3015) - Various â€œCannot initialize the shared memory regionâ€ errors were reported.
- (CORE-3010) - On the first connect to any database, the monitor would report MON$MEMORY_USED = 4Gb.
- (CORE-3003) - New checks for the existence of a SUSPEND statement in a procedure being called via SELECT statement were working properly: if the procedure was called via a SELECT statement and SUSPEND was not present, an error would be thrown, e.g., â€œProcedure ... is not selectable (it does not contain a SUSPEND statement)â€. However, if the same error condition occurred during a RESTORE, it could cause the restore to fail.
- (CORE-2995) - A single error in the status vector was being reported twice.
- (CORE-2993) - On a highly loaded system, the fatal lock manager error â€œInvalid lock id (NNN)â€ could occur while working with monitoring tables.
- (CORE-2920) - Volatile SQL statements inside an EXECUTE STATEMENT construct could be executed incorrectly.
- (CORE-2900) - Using a request containing an aggregated DISTINCT could cause regular but random memory access violations.
- (CORE-2985) - Altering COMPUTED columns was not dealing properly with dependencies.
- (CORE-2981) - An error would occur in the trace plugin when localized characters were used in a query.
- (CORE-2977) - The server was working incorrectly with indexed fields of type DATE in databases with ODS lower than 10.
- (CORE-2971) - Invalid usage of the UPDATE OR INSERT statement syntax could give rise to a â€œrequest depth exceededâ€ exception.
- (CORE-2966) - On 32-bit builds, wrong results or unexpected errors could arise while sorting a large data set.
- (CORE-2965) - The ROW_COUNT value returned after a subquery involving a SINGULAR predicate was inconsistent with the rules, viz., ROW_COUNT is meant to count rows affected by an update or delete and should not return non-zero value from subqueries.
- (CORE-2956) - Problems with requests processing procedure parameters.
- (CORE-2943) - An error would occur during parsing of a recursive query with two recursive parts.
- (CORE-2942) - Huge (>10Gb) memory was being consumed by some fb_inet_server processes.
- (CORE-2940) - Trace output could contain garbage data left behind from filtered out statements.
- (CORE-2936) - If two consecutive leaf index pages were removed (garbage collected) from an index simultaneously by two different connections, the linked list of sibling pages could be broken, with the sibling pointer at another index page left pointing to the freed index page. When the freed page was allocated again, index corruption would be reported as â€œWrong page type (expected 7 found N)â€.
- (CORE-2934) - Memory leak in the trace plugin (fbtrace).
- (CORE-2933) - An optimization issue with the system tables would cause very slow execution of a script that was creating a lot of metadata.
- (CORE-2930) - DROP VIEW would drop the output parameters of used stored procedures.
- (CORE-2929) - The error â€œinvalid ESCAPE sequenceâ€ could be thrown when connecting to a database.
- (CORE-2923) - Problem with dependencies between a procedure and a view using that procedure.
- (CORE-2917) - The server could hang with an I/O error during the â€œopenâ€ operation for the file /tmp/firebird/fb_trace_ksVDoc
- (CORE-2916) - Error handling was broken in the case of a conversion error occurring during index creation.
- (CORE-2910) - The primary key index was being ignored for optimizing derived tables.
- (CORE-2907) - Exceptions thrown inside a dynamically-built EXECUTE STATEMENT could not be returned to clients in a recognisable fashion. Exception handling in EXECUTE STATEMENT has been enhanced to provide a solution.
- (CORE-2898) - CHAR_TO_UUID and UUID_TO_CHAR behaviours differed according to whether platform architecture was big endian or little endian.
- (CORE-2893) - An expression within a subquery could be treated as invariant and produce incorrect results.
- (CORE-2886) - Query with NOT IN <subselect from view> would fail.
- (CORE-2879) - Sweep could raise the error page 0 is of wrong type (expected 6, found 1).
- (CORE-2876) - Unintelligent error handling when using ALTER DATABASE ADD DIFFERENCE FILE could cause the engine to get confused about the backup mode of a database.
- (CORE-2875) - Comparing a CHAR column longer than 4096 bytes with a string constant would cause a string right truncation error.
- (CORE-2871) - If a derived table or a view contained both a left/right join and an ORDER BY clause and the outer query also contained an ORDER BY clause, the outer ORDER BY clause would have no effect.
- (CORE-2867) - SuperClassic was leaking semaphores on disconnect.
- (CORE-2864) - The listener process of Classic Server was leaking handles.
- (CORE-2858) - Memory trashing was possible when raising some exceptions to signal failed security checks.
- (CORE-2856) - A non-NULL key in a unique index could not be found when the key was removed
- (CORE-2851) - The fb_cancel_operation() API call was exhibiting a problem.
- (CORE-2833) - Changing data that affected an expression index would fail if that data contained references to null date fields.
- (CORE-2826) - Join condition would fail for UTF-8 databases.
- (CORE-2756) - An expression deriving a string from taking a substring from a timestamp value would return an unexpected result.
- (CORE-2628) - FreeAdhocUDF library functions were denied on 32-bit Windows platform.
- (CORE-1089) - Selecting from a view that used DISTINCT and LEFT JOIN returned records in the wrong order if the ORDER BY clause did not include columns from the right-side (non-mandatory) table.
- (CORE-195) - Regression of an old bug, previously fixed in v.1.5.1, whereby a bugcheck 291 (cannnot find back record version) would occur when updating the same record that had already fired an action in a BEFORE UPDATE trigger. The regression that was reintroduced in v.2.0 was less destructive, insofar as it affected only the record that was physically first in the table.
* Server Crashes -
- (CORE-3011) - The server could hang or crash while monitoring connections that were repeatedly attaching and detaching.
- (CORE-2908) - The engine could crash or raise unexpected errors when working with an ODS 8.x database.
- (CORE-2888) - A source of memory corruption could cause incorrect query evaluation and could even crash the server.
- (CORE-2852) - The server could crash when executing a syntactically wrong SQL statement during an active trace session.
* Command-line Utilities -
- (CORE-3000) - An error would be thrown while deleting a user with the user name ADMIN. The issue was due to gsec ignoring the double quotes around the reserved word ADMIN when it submitted the SQL command internally. The solution, provided the database and client are dialect 3, was to force gsec to retain the quotes.
- (CORE-2928) - Buffer overflow in gsec. For reasons unknown, the gsec code copies the value of the password hash to an internal user data structure during a display operation. Since V.2.0, when the newer hash algorithm made the hash longer than previously, the buffer used for storing it could be too short. This does not create a vulnerability because the hash value does not travel anywhere. It is harmless, anyway: the buffer overflow cannot be exploited because the first, middle and last names are filled immediately after the password. It is fixed now, thus avoiding having newer versions of glibc detecting this overflow.
- (CORE-2984) - gbak -b -v srv:db stdout was causing a broken backup to be created.
- (CORE-2914) - Restoring a database having an expression index referencing a non-existent UDF would cause the server to crash.
- (CORE-2859) - The security database was remaining locked after replacing the database.
- (CORE-2846) - If gfix -shut <mode> -attach <timeout> failed after the specified timeout due to connections being still active, connection to the database would become impossible.
- (CORE-2844) -There were some unresolved symbol references when linking fbsvcmgr and fbtracemgr.
- (CORE-2750) - Physical backup could not restart operations after the explicit difference file had been dropped.
* POSIX-Only Issues -
- (CORE-3067) - On 64-bit POSIX, except HP-UX, objects were not being unmapped when shared memory was closed. The 64-bit pointer had been masked with a 32-bit mask, which turned out to be a really bad idea: with Object == 0x7FAB12345678 and page size == 4K, the upper bits were lost and the starting address would be at 0x12345000 instead of the intended 0x7FAB12345000.
- (CORE-3021) - Fixed a condition that was causing a segfault in DEV_BUILD.
- (CORE-3019) - On a recent version of Gentoo Linux, an attempt to source the function library /etc/init.d/functions.sh would fail with the message â€œ* ERROR: firebird does not have a start functionâ€ and neither SuperServer nor SuperClassic would start.
- (CORE-3006) - Group privileges for the /tmp/firebird directory and files within it were being assigned as root (i.e. GID == 0) instead of firebird in some circumstances.
- (CORE-3001) - Install was failing to create the firebird user and group.
- (CORE-2948) - In rare cases, when Ctrl-C was pressed to stop the Superclassic server, it would cause a segmentation fault during exit.
- (CORE-2926) - â€œmake installâ€ was failing on Linux.
- (CORE-2919) - The Linux installation script was ignoring non-standard ports.
- (CORE-2862) - configure --with-fbudf was breaking the build on CentOS.
- (CORE-2845) - The build process on Solaris would stop with the message: â€œneed to use SFIOâ€. On the whole, Solaris 10 no longer requires SFIO - the 64-bit builds do not suffer the issue with the maximum 255 file descriptors and there are simple work-arounds for 32-bit builds. See this article for details. However, the issue still affects Solaris 10 3/05 through Solaris 10 11/06. Some patches are needed to correct the problem. For the time being, the easiest solution is to leave the define in the code, but comment it with the relevant information for Solaris 10. The define can be removed if the patches have been applied or the user is running an unaffected version of Solaris 10. Updated information concerning this issue has been inserted into common.h. Anyone building 32-bit Firebird on Solaris 10 will have to make an informed decision according to the version and build/patch level of Solaris before uncommenting the SFIO define.
- (CORE-2825) - Some patches were applied to facilitate building on Debian/kFreeBSD and FreeBSD.