FW: RE: My 1.0 wish list
EA Durbin
ead1234 at hotmail.com
Sun Jun 4 02:08:41 CDT 2006
The bug is in file.c under ready_media_for_file() at the query statement.
I hacked the actual wine code and ran some queries aganist actual msi
installer databases. I tested a couple different queries in the actual wine
installer against actual msi databases on a couple different tables to
diagnose the problem, then I iterated through the results returned by the
queries. Here are my findings:
SELECT * FROM `MEDIA` - works fine
SELECT * FROM `MEDIA` ORDER BY `LastSequence` - works fine
SELECT * FROM `FILES` - works fine
SELECT * FROM `FILES` ORDER BY `Sequence` - works fine
SELECT * FROM `FILES` WHERE `Sequence` >= 10 - upon viewing results it
returns Sequences 1 through 10 - failed
SELECT * FROM `Media` WHERE `LastSequence` >= any number you wish - fails
and returns LastSequence numbers from the table, less than the number in
your comparison.
This means that the bug is either in the WHERE clause, or the conditional
statement immediately after the WHERE clause. I'm not sure, and I don't feel
like spending another 10 hours learning how the underlying SQL code in wine
works or learning how Bison parses things as the underlying code is even
more confusing than what I've looked at so far, but I've narrowed down where
the bug is, and what part of the query fails at in particular.
I wrote a quick test in wine/dlls/msi/tests/db.c to add a 2nd row to the
database that was being created, then I inserted the `id` of 8 into it and
then I ran the query SELECT * FROM phone where `id` > 6, and it returned the
correct results with `id` of 8. But in the actual wine installer code a
similar query doesn't return the correct results. I don't know if its
because the wine installer is taking the query as a character array and it
isn't in db.c, or if files.c is doing other things than in db.c, but I
couldn't replicate it in db.c and I give up, the query is broken in the
actual installer code, and when Iterating through the results it returns the
wrong results from tables.
>From: Hans Leidekker <hans at it.vu.nl>
>To: wine-devel at winehq.org
>CC: "EA Durbin" <ead1234 at hotmail.com>
>Subject: Re: FW: RE: My 1.0 wish list
>Date: Sat, 3 Jun 2006 20:30:16 +0200
>
>On Saturday 03 June 2006 18:45, EA Durbin wrote:
>
> > That can't be used for a test case, for a test case I, or most likely
> > someone elsewho has the ability and the time has to write code under
> > dlls/msi/tests/db.c and make a program in windows to re-illustrate this
> > bug.
>
>Do you know SQL? Could you write a few SQL statements that reproduce
>the exact conditions of the bug? I'm thinking of something like this:
>
> 1) create a table
> 2) insert a few rows
> 3) select a row from the table
>
>If you do, I'll have a go at writing a test case for it.
>
> -Hans
More information about the wine-devel
mailing list