Module: wine Branch: master Commit: 73774b3ef8b4f5af226b1c7dd929aeec85688894 URL: http://source.winehq.org/git/wine.git/?a=commit;h=73774b3ef8b4f5af226b1c7dd9...
Author: Hans Leidekker hans@codeweavers.com Date: Fri Jun 11 15:19:46 2010 +0200
msi: Disable an optimization in the execution of WHERE clauses.
There's no guarantee that the condition strings are in the string table.
---
dlls/msi/tests/db.c | 2 +- dlls/msi/where.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index 56fa0f0..5e8505a 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -1933,7 +1933,7 @@ static void test_where(void) rec = 0; query = "SELECT * FROM `Media` WHERE `DiskPrompt` <> 'Cabinet'"; r = do_query(hdb, query, &rec); - todo_wine ok( r == ERROR_SUCCESS, "query failed: %d\n", r ); + ok( r == ERROR_SUCCESS, "query failed: %d\n", r ); MsiCloseHandle( rec );
rec = 0; diff --git a/dlls/msi/where.c b/dlls/msi/where.c index 545d6a8..4c4db49 100644 --- a/dlls/msi/where.c +++ b/dlls/msi/where.c @@ -397,6 +397,9 @@ static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) return ERROR_OUTOFMEMORY;
wv->row_count = 0; + +if (0) /* disable optimization, there's no guarantee that strings are in the string table */ +{ if (wv->cond->type == EXPR_STRCMP) { MSIITERHANDLE handle = NULL; @@ -441,6 +444,7 @@ static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) } /* else fallback to slow case */ } +}
for( i=0; i<count; i++ ) {