|
|
IBPhoenix Development |
|
Gbak BugsBrief DescriptionList of bugs fixed in this release of GBAK GBAK is slow Field with scale would not allow restore Since changing the field definition can be done only using qli or gdef which are unsupported tools, we can just fix the restore procedure to continue restoring a database even if we failed to build an index. If an index restoration fails (either due to out of disk space or unique violation) we will deactivate the index that failed and try to commit again. If any index was deactivated, we will NOT bring the database on line after the restore, and issue a message to that effect. gbak will return a status code to the shell in this event: 0==no errors Regression in several tests using "gbak -verbose" GBAK would write extra information at the end of a GBAK file. This was
noticed when the size of the GBAK IO buffer was increased as a performance
improvement - GBAK previously would always write only full buffers - even for
the last buffer of the file. This MAY change behavior when gbak'ing to tape - previously, only tape records of size 1K were ever written to the tape. In the new IO buffer setup, tape records of size 16K are written to tape, and the last record is written in a size from 1 - 16K bytes, depending on data in the last IO buffer Cannot transliterate between character sets error Gbak could not restore a V3.3 if database had an index definition with comment field. This was an acceptable GDEF/GDML operation The attribute which indicates that an index contains a comment field and is equal 8 under IB3.3 was accidently getting a new value of 9 under InterBase 4.0. At the same time, a new attribute, att_index_foreign_key, had been added with value 8. Thus, when gbak V4.0 faces index attribute with value 8 during restore procedure of a v3.3 database, it will recognize this attribute as att_index_foreign_key instead of att_index_description2. As part of the fix to this bug , 5.0 GBAK now writes backup files in new format 5. GBAK will read backup files in format 4 & 5. Format 4 was used for InterBase 3.3 through InterBase 4.2. It is believed that GBAK will continue to read format 1,2,3 backup files (much older than InterBase 3.0), but this will not be tested or supported. Format 5 is functionally equivalent to format 4. However, the root of bug 8183 was a difference in how version 3.3 GBAK interrupted the backup file format vs. how 4.0 would read it. The 4.0 format is now distinguished as backup format 5. Once customers backup in Format 5, their backup files cannot be read by a
GBAK version prior to 5.0. Which means a customer trying InterBase 5.0 cannot
migrate back to an older version using GBAK. GBAK doesn't ABORT if Stored Procs. w/PLAN clause depend on INACTIVE index The problem is that we restore the procedures before we restore the indices referenced in the plan. This order is somewhat determined by the order things are written to the backup file. The fix was to restore the procedures in their regular order, but restore them under a different transaction that was not committed until after the indices were activated. An affect of this change was that we are now unable to restore views on stored procedures. This is tricky since views are backed-up just like regular relations, except they have 2 extra properties. The solution here was to restore the regular relation properties in the regular transaction and restore the view properties in the same transaction as the stored procedures Similar changes were applied to allow the restore of objects when dependent objects were not located. Examples: Missing UDF library, missing external file, Missing blob filter library, inactive or missing index. In these events, GBAK will issue a warning message, but will continue with
the restore. |