From jdb@VNET.IBM.COM Mon Dec 19 16:22:19 1994
Received: from cs.wisc.edu by edam.cs.wisc.edu; Mon, 19 Dec 94 16:22:18 -0600
Message-Id: <9412192222.AA23795@cs.wisc.edu>
Received: from vnet.ibm.com by cs.wisc.edu; Mon, 19 Dec 94 16:22:15 -0600
Received: from STLVM7 by VNET.IBM.COM (IBM VM SMTP V2R2) with BSMTP id 6032;
   Mon, 19 Dec 94 17:22:11 EST
Date: Mon, 19 Dec 94 13:56:25 PST
From: "Joe Brownsmith" <jdb@VNET.IBM.COM>
To: carey
Subject: Corrections needed in ODI OO7 from uwisc
Reply-To: jdb@VNET.IBM.COM
Status: RO

Mike, Some time ago I obtained the ODI version of the OO7 benchmark
via anonymous FTP from ftp.cs.wisc.edu. In working with this benchmark
I noticed some errors that should be fixed.  In Bench.C, repeatCount=2
gave a runtime error (divide by zero), and in the other cases there is
a memory leak.

I am sending you these corrections in the hopes that you can get get
these fixes into the benchmark.

The following code correction was made to Bench.C so that
repeatCount=2 would work correctly:

Bench.C  // now print result string
Bench.C  ...
Bench.C  /*jdb0 b*/ //if ((repeatCount > 1) && (iter == repeatCount-2))
Bench.C  /*jdb0 a*/   if ((repeatCount > 2) && (iter == repeatCount-2))

The following code was added just before the "return count;":

Query2.C     /*jdb0 a*/ // clean up the transient collection
Query2.C     /*jdb0 a*/ delete (os_Set<AtomicPart*>*)& rslt;

Query3.C:    /*jdb0 a*/ // clean up the transient collection
Query3.C:    /*jdb0 a*/ delete (os_Set<AtomicPart*>*)& rslt;


The following code was added after the end of the foreach loop and
before the end of the for loop:

Query8.C:      /*jdb0 a*/ // clean up the transient collection
Query8.C:      /*jdb0 a*/ delete (os_Set<Document*>*)& docSet;

From carey Tue Dec 20 09:45:20 1994
Date: Tue, 20 Dec 94 09:45:19 -0600
From: carey (Michael Carey)
Message-Id: <9412201545.AA18067@edam.cs.wisc.edu>
Received: by edam.cs.wisc.edu; Tue, 20 Dec 94 09:45:19 -0600
To: jdb@VNET.IBM.COM
Subject: Re:  Corrections needed in ODI OO7 from uwisc
Cc: carey, dewitt, naughton
Status: R

Joe,

Okay - thanks - I'll see what I can do!  We basically mothballed their
implementation when we reached a philosophical/legal impasse with them,
but made it available as a service to others, like yourself, who wanted
to make use of it.  I know that there are some other things that we should
also do, but never did, since we can't do anything more with their system
w.r.t. OO7 numbers.  For example:

(1)  Some of the queries use an iteration order (os_cursor::sorted_iteration)
     that ODI added (for OO7 performance purposes) to our pre-release.  When
     this showed up in the next incremental product release, I believe that
     it was named something else.  This needs to be changed so that the code
     will work with the officially released product.

(2)  Those same queries need their lower-level implementations converted into
     foreach (...) loops now that the product supports the concept of physical
     iteration order.

(3)  In the database generation code, a DML bug which is presumably long-since
     fixed prevented us from using "pathof" to create the path index for taking
     a document title and looking up the components that use (privately) that
     documents's associated composite part.  This can probably be fixed now.

(4)  We always meant to explore the use of clusters to hold composite objects,
     but at the time, the cluster implementation wasn't robust enough to handle
     it.  Now I assume it would be, and this might improve cold performance in
     some cases (e.g., T1/T2).

These are things you might consider changing in your version as well.

Cheers,
Mike

PS:  Since we don't have ObjectStore up and running here at the moment, we
     will probably just put your bug report message in the ftp directory.


