community.borland.com

Article #25845: What is fixed in InterBase v5.6 for Windows NT/9x

Problem:
I need to know what bugs were fixed in version 5.6

Solution:
 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 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 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:tmpib-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:testtest.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))

Last Modified: 19-OCT-00