Hans Leidekker : msi: Disable an optimization in the execution of WHERE clauses.

Alexandre Julliard julliard at winehq.org
Fri Jun 11 09:58:33 CDT 2010


Module: wine
Branch: master
Commit: 73774b3ef8b4f5af226b1c7dd929aeec85688894
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=73774b3ef8b4f5af226b1c7dd929aeec85688894

Author: Hans Leidekker <hans at 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++ )
     {




More information about the wine-cvs mailing list