From: Markus Kemper 13.10.1999 20:54 Subject: Re: Beyond "Brief Description" for fixes in 5.6 To: INTERBASE@linux.mers.com I have taken the time to apply a more technical focus to the existing release notes to help our developers determine the nature of the bugs we have fixed. I hope that you all find them satisfactory. Enjoy.... Markus ------------------------------------------------------------------- The following are some details about the InterBase v5.6 release for Windows NT/9x. The product was released to manufacturing on 09.17.99. This release, (v5.6) was certified on NT 4.0 with Service Pack 4 (the "full download", not the broken early release of SP4). InterBase 5.6 is a maintenance release. What does this mean? This means that customers who are current on maintenance subscriptions get it for free, including our VAR partners. Customers who did not pay for maintenance subscriptions but who do use InterBase are eligible for the upgrade discount. If upgrading one must upgrade all licenses (including all simultaneous user licenses). Below is a listing of the bugs fixed for InterBase 5.6 for Window NT/9x. -------------------------------------------------------------- Fix No. Bug No. Brief Description ------- ------- ----------------- 01 57367 Memory leak in jrd/sort.c. During the process of sorting records memory was leaking merge blocks. This problem did not affect the success of a sort, it simply leaked resources. 02 57376 The parent relation lock used for refresh was getting released, but was later assumed to still be valid. Resulting in error: Error: I/O Error during "send" operation for file "xxxxx" Unknown error 10054. 03 58193 Creating and dropping a stored procedure repetitively causes a server crash on the third execution of the drop command. 04 58385 Queries using MIN in DELETE statements causes data loss. Possible Example: delete from foo where ( select min(bar) from foo); 05 58494 Long query causes other users’ work to hang until the query is finished or terminated. 06 58639 Referencing a computed field whose definition includes a stored procedure requiring an input argument crashes the server. Possible Example: create procedure test returns (out_val integer) as begin out_val = 3; suspend; end create table t2 ( f1 integer, f2 computed by ( (select out_val from test) ) ); select * from t2; 07 58712 A poorly written stored procedure or trigger that exhibits run away recursion can overflow the internal stack and crash the server. 08 58756 Query plan generated for for outer joins was broken from v4.2.1 to v5.5. 09 58847 Database validation reports bogus page pointer corruption error for external tables. 10 58936 RTRIM() udf function could crash the server. There were problems with string manipulation in LTRIM() and LOWER() as well. All are now fixed. 11 58958 DISTINCT does not return a correct row count when a non-unique index is referenced. Possible Example: select distinct customer from sales s, customer c where s.cust_no = c.cust_no and total_value > 10000; Generates the PLAN: PLAN JOIN ( C ORDER CUSTNAMEX, S INDEX (RDB$FOREIGN25) ) * The 'CUSTNAMEX' index is non-unique * 12 59014 The optimizer was improperly handling equivalency pairs found in non-unique indexes. This caused the server process to grow unnecessarily and sometimes crash. 13 59023 Attempting to drop and recreate a trigger that is in use would sometimes crash the server. 14 59080 Using aggregates in a query on a view with aggregates could crash the server. Possible Example: create view vw_shipping ( orderid, lag, shipvia, summation) as select o.orderid, o.shipdate - o.saledate, shipvia, (select sum(total) from lineitem li where li.orderid = li.orderid) from orders o; select lag, avg(summation) from vw_shipping group by lag order by lag; 15 60013 select count (*) in repetition from a view performing a join could crash the server on the third execution. 16 60064 Restore or build of a database with a very large and complex schema database using gbak or isql could causes the server to crash. 17 60085 The bulk committing of large numbers of stored procedures could crash the server when virtual memory is low. 18 60101 An automated or manual sweep can crash the server upon encountering a table with metadata containing indexes with null values that are not currently loaded into the servers memory space. 19 60105 Unable to create a temp directory in any volume other than SYS in NetWare caused the error: I/O error for file sys:\tmp\ib-xxx.tmp 20 60109 Repeatedly executing a stored procedure referencing a udf without commits between execute statements could crash the server. 21 60116 Left outer joins produce incorrect results with default values. 22 60124 Cast produces the wrong result in type conversions. Possible Example: create table t1 (f1 integer); create table t2 (f1 numeric(15,1)); insert into t2 values(1.0); insert into t2 values(10.0); insert into t2 values(100.0); insert into t2 values(1000.0); commit; insert into t1 select cast(f1 as integer) from t2; commit; select * from t1; F1 ========== 0 1 10 100 23 60135 Update fails inappropriately with ri constraint and throws the error: Statement failed, SQLCODE = -530 violation of FOREIGN KEY constraint "FK_B_A" on table "B" Possible Example: create table a ( a1 integer not null constraint pk_a primary key, a2 integer not null constraint u_a unique ); create table b ( b1 integer constraint fk_b_a references a (a1) ); insert into a values (1,1); insert into a values (2,2); insert into b values (2); commit; update a set a2 = 999 where a1 = 2; 24 60137 Non-unique indexes appeared to be corrupt but, there was an issue with the walking of the index nodes. 25 60164 Altering a stored procedure could crash the server and then cause a restore to fail after backing up the database. 26 60166 Restore fails on a database with very large and complex schema even though the database successfully backed-up. This bug is related to bug #60064. 27 60206 Updating a table with VARCHARs with a total length greater than 32K could corrupt the a database because internal variables pertaining to length calculations were wrapping around. 28 60302 Declaring a procedure which calls a UDF with an incorrect number of parameters could crash the server and cause problems when trying to alter or drop the procedure. Possible Example: declare external function lower cstring(20) returns cstring(20) free_it entry point 'ib_udf_lower' module name 'ib_udf'; commit; create procedure foo ( arg_one char(10), arg_two char(10)) returns ( out_val char(10)) as begin out_val = lower(:arg_one, arg_two); end 29 60313 Queries continue to run to their finish after a client abnormally disconnects. The change will now be able to detect that the client is gone and the server will terminate the request. It is important to know that this behavior is specific to a remote TCP connection. 30 60348 A select query in which the where clause contained search criteria larger than the target field it could crash the server. Possible Example: create table t1 ( f1 integer, f2 varchar(10) ); create index idx_f2 on t1(f2); select * from t1 where f2 = 'xxxxxxxxxxxxxxxxxxxx'; 31 60362 Certain instances of procedures that call the internal node_match() function could crash the server. 32 60389 gfix -shut -force does not always shut the database down to exclusive access mode. Marked fixed and not verified. 33 60420 Using the IBX Events component over NetBEUI consumes 100% of the CPU upon disconnect. 34 60435 Dynamically unloading gds32.dll leaks resources. 35 60453 Database validation reports bogus index corruption error. MyServer (Server) Wed Mar 24 15:02:42 1999 Database: c:\test\test.gdb Index 1 is corrupt (missing entries) in table foo (153) This problem is most commonly seen after a server crash or by shutting down the InterBase service while there are active connections writing to the database. 36 60469 Scripts which access NON-existent external files could crash the server. 37 60520 gds32.lib cannot be used by C++ Builder because it no longer supports alias'. 38 60537 Update failure with unique key constraint could corrupt a database. Similar behavior to bug #60135 with different error: Statement failed, SQLCODE = -902 internal gds software consistency check (wrong record length (183)) ************************************************************************ * This message came from the list servers at http://www.mers.com * * To remove yourself from the list: send an email to listproc@mers.com * * in the body of the message put: unsubscribe INTERBASE * * InterBase Search Engine http://www.mers.com/searchsite.html * * InterBase FAQ http://www.mers.com/faqinterbase.html * ************************************************************************