Subject Whats new in IB6.0.1
Author Mark O'Donohue
Hi All

I've just had a look at the 6.0.1 sources and compared them to the 6.0
released sources. Heres what I've found. I understand that the
released binaries still are the 6.0 build not the 6.0.1 build. And that
they are undergoing testing using that there wonderful test suite they
have (Gee - I wish I had one too ;-) ).


According to the CVS trees the 6.0.1 build comes from the sourceforge
interbase project. Unlike the updated interclient release 2.0 which
seems to still be internal at this stage (for notes on interclient
delta's check ib-build). I've posted these a bit more widely than to
firebird-devel/ib-build as there seemed to be a bit more interest in
whats in the 6.0.1 release. Apologies to those who get multiple copies.



Cheers

Mark




Compared to the intial 6.0 release 6.01. there are 1,589 file that have
changed.

After removing the following one line addition :
a17 1
* Copyright (C) Inprise Corporation.

That accounted for 1,538 file changes, the remaining 51 changes are (in
summary):



* Updated build instructions
builds/original/000_readme
builds/original/000_readme_porting
builds/original/build_unix.txt
builds/original/build_windows.txt
readme.txt (in root directory)

* Build reference database tree from gbak files, and metadata now in
unix build directory
builds/original/dbs/restore_build_dbs
builds/original/dbs/utilities/rebuild.gbk
builds/original/dbs/example4/*.gbk
builds/original/dbs/example5/*gbk
builds/original/dbs/example/
builds/original/isc.sql
builds/original/isc.sql
builds/original/metadata.sql

* Various changes to the build process to make it more friendly to use.

* The ada examples have been deleted

* isguard icons updated.

* added edit.c file to pyxis module (needed since compile edit.e is
broken)

* remote/caution.ico and remote/server.ico updated.

* Real bug fix changes:
- Change in dsql/pass1.c - 2 lines added
- Changes in isql/isql.e - two small updates
- Changes to jrd/cch.c - lock protection code changed.
- Changes to jrd/cmp.c - some changes (Hmmm these look familure
;-)
- Change in line jrd/utl.c - seem to straighten out MkTMP call
(not that MPE/Ix again).
- Change in licence.h (the linux version id came out of beta)


From a Firebird perspective, we've already modified our build
procedures, and from the bugs the only one I've got to check up on is
utl.c, since it's where some FreeBSD stuff was worked on. The others
were already in our database (although Im sure we didn't do at least two
of them). All the changes are fairly minimal and are bug fixes. The
real work in 6.0.1 is the more friendly build procedures. Im unsure
exactly how to divy up who did what in the bugs here (Im not too fussed,
and I don't have time), but it looks like both teams have contributed
here, or we've both discovered the same bugs.


How do you do it, well basically you generate a patch file using $diff
-B -b -uNr <origdir> <newDir>

So we should now never have problems syncing again.





Appendix A: A bit more details about the bugs for the really morbid.
+ means a line added.
- means a line removed.


* Change in dsql/pass1.c - 2 lines added

if ((node->nod_type == nod_gen_id) ||
+ (node->nod_type == nod_gen_id2) ||
(node->nod_type == nod_udf) ||
(node->nod_type == nod_cast))
{

if ((node1->nod_type == nod_gen_id) ||
+ (node1->nod_type == nod_gen_id2) ||
(node1->nod_type == nod_udf) ||
(node1->nod_type == nod_cast))
{


* Changes in isql/isql.e - two small updates
- #ifndef GUI_TOOLS
+#ifndef GUI_TOOLS

And:

-status[2] == gds_arg_end;
+status[2] = gds_arg_end;



* Changes to jrd/cch.c

tdbb->tdbb_quantum = QUANTUM;
tdbb->tdbb_attachment = (ATT) ALLOCB (type_att);
tdbb->tdbb_attachment->att_database = dbb;
+tdbb->tdbb_setjmp = (UCHAR*) env;
+
+/* This SETJMP is specifically to protect the LCK_init call: if
+ LCK_init fails we won't be able to accomplish anything anyway, so
+ return, unlike the other SETJMP clause further down the page. */
+if (SETJMP (env))
+ {
+ gds__log_status (dbb->dbb_file->fil_string, status_vector);
+ THREAD_EXIT;
+ return;
+ }

LCK_init (tdbb, LCK_OWNER_attachment);
reader_event = dbb->dbb_reader_event;
@@ -3101,7 +3112,6 @@
bcb->bcb_flags |= BCB_cache_reader;
ISC_event_post (reader_event); /* Notify our creator that we
have started */

-tdbb->tdbb_setjmp = (UCHAR*) env;
if (SETJMP (env))
{
bcb = dbb->dbb_bcb;
@@ -3251,6 +3261,17 @@
tdbb->tdbb_quantum = QUANTUM;
tdbb->tdbb_attachment = (ATT) ALLOCB (type_att);
tdbb->tdbb_attachment->att_database = dbb;
+tdbb->tdbb_setjmp = (UCHAR*) env;
+
+/* This SETJMP is specifically to protect the LCK_init call: if
+ LCK_init fails we won't be able to accomplish anything anyway, so
+ return, unlike the other SETJMP clause further down the page. */
+if (SETJMP (env))
+ {
+ gds__log_status (dbb->dbb_file->fil_string, status_vector);
+ THREAD_EXIT;
+ return;
+ }

LCK_init (tdbb, LCK_OWNER_attachment);
writer_event = dbb->dbb_writer_event;
@@ -3258,7 +3279,6 @@
bcb->bcb_flags |= BCB_cache_writer;
ISC_event_post (writer_event);

-tdbb->tdbb_setjmp = (UCHAR*) env;
if (SETJMP (env))
{
bcb = dbb->dbb_bcb;




* Changes to jrd/cmp.c - some changes (Hmmm these look familure ;-)

if (IS_DTYPE_ANY_TEXT (dtype1))
- dtype == dtype_timestamp;
+ dtype = dtype_timestamp;
else if (IS_DTYPE_ANY_TEXT (dtype2))
- dtype == dtype_timestamp;
+ dtype = dtype_timestamp;
else if (dtype1 == dtype2)
dtype = dtype1;
else if ((dtype1 == dtype_timestamp) &&

And:
if (dtype1 == dtype_null)
- dtype1 == dtype2;
+ dtype1 = dtype2;
else if (dtype2 == dtype_null)
- dtype2 == dtype1;
+ dtype2 = dtype1;
if (dtype1 == dtype2)
dtype = dtype1;
else if ((dtype1 == dtype_timestamp) &&



* Change in line jrd/utl.c


-sprintf (file_name, "%s.XXX", buffer);
#else
for (p = buffer; *q && p < buffer + sizeof (buffer) - 1; q++)
if (*q == '$' || *q == '_')
@@ -2293,9 +2292,9 @@
*p++ = LOWER7 (*q);
*p = 0;

-sprintf (file_name, "%sXXXXXX", buffer);
#endif

+sprintf (file_name, "%sXXXXXX", buffer);
MKTEMP (file_name, "XXXXXXX");




Just a note to all of us:
The following trace stuff results from $Log:$ being in the file. This
in my experience is best to be removed, although initially pleasant to
have the change log in the file, it makes it a mess to sort out CVS
differences. You will find that whenever two people work on the same
file, you will always get a conflict when checking it back in. - Just a
CVS tip here folks.

// $Log: ld.h,v $
// Revision 1.2 2000/08/07 21:14:53 mrdimples
// Delete the excessive slashes in the URL for the license.
//
// Revision 1.1.1.1 2000/08/04 01:11:33 mrdimples
// From private to public tree
//
// Revision 1.4 2000/08/03 23:10:01 chrisj
// License notice wording in all source files at tip of trunk
//
// Revision 1.3 2000/07/06 19:44:09 stsikin
// Changing Copyright from "InterBase Software Corporation" to
// "Inprise Corporation".
//
// Stanislav Tsikin, 06-JULY-2000.

The following two are similar but not as bad:
Also goes for :
// $Header: /cvsroot/Interbase/InterBase/intl/ld.h,v 1.2 2000/08/07
21:14:53 mrdimples Exp $

And:
// $Id: $


--
Your database needs YOU!
http://sourceforge.net/projects/firebird