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.
From: "Jason Green" jave27@gmail.com To: "EA Durbin" ead1234@hotmail.com CC: mike@codeweavers.com, dank@kegel.com, wine-devel@winehq.org Subject: Re: FW: RE: My 1.0 wish list Date: Sat, 3 Jun 2006 12:02:15 -0400
On 6/3/06, EA Durbin ead1234@hotmail.com wrote:
This problem in MSI spans a multitude of bugs.
ATI demo(Rendering With Natural Light ) - bug # 4712?
I noticed yesterday that just about every ATI Demo had similar installer problems. Just try a few from here if you need some quick test cases:
http://www.ati.com/developer/demos.html
Thanks, and good luck!
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
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@it.vu.nl To: wine-devel@winehq.org CC: "EA Durbin" ead1234@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:
- create a table
- insert a few rows
- select a row from the table
If you do, I'll have a go at writing a test case for it.
-Hans
On Sunday 04 June 2006 09:08, EA Durbin wrote:
I wrote a quick test in wine/dlls/msi/tests/db.c to add a 2nd row to the
Could you share it?
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
Is the table in db.c comparable? Does it have the same fields and types? Also, you're using > in your select but the failing select statement has >= which may make a difference.
-Hans