MSI: simplify parsing of the FROM keyword

Mike McCormack mike at codeweavers.com
Mon May 23 00:25:56 CDT 2005


ChangeLog:
* simplify parsing of the FROM keyword
-------------- next part --------------
diff -urp dlls/msi.old/sql.y dlls/msi/sql.y
--- dlls/msi.old/sql.y	2005-05-23 14:07:05.000000000 +0900
+++ dlls/msi/sql.y	2005-05-23 14:18:37.000000000 +0900
@@ -127,7 +127,7 @@ static struct expr * EXPR_wildcard( void
 
 %type <string> column table id
 %type <column_list> selcollist
-%type <query> query from unorderedsel selectfrom
+%type <query> query from fromtable unorderedsel selectfrom
 %type <query> oneupdate onedelete oneselect onequery onecreate oneinsert
 %type <expr> expr val column_val const_val
 %type <column_type> column_type data_type data_type_l data_count
@@ -405,32 +405,29 @@ selcollist:
     ;
 
 from:
-    TK_FROM table
+    fromtable
+  | fromtable TK_WHERE expr
         { 
             SQL_input* sql = (SQL_input*) info;
             UINT r;
 
             $$ = NULL;
-            TRACE("From table: %s\n",debugstr_w($2));
-            r = TABLE_CreateView( sql->db, $2, & $$ );
-            if( r != ERROR_SUCCESS )
+            r = WHERE_CreateView( sql->db, &$$, $1, $3 );
+            if( r != ERROR_SUCCESS || !$$ )
                 YYABORT;
         }
-  | TK_FROM table TK_WHERE expr
-        { 
+    ;
+
+fromtable:
+    TK_FROM table
+        {
             SQL_input* sql = (SQL_input*) info;
-            MSIVIEW *view = NULL;
             UINT r;
 
             $$ = NULL;
-            TRACE("From table: %s\n",debugstr_w($2));
-            r = TABLE_CreateView( sql->db, $2, &view );
-            if( r != ERROR_SUCCESS )
-                YYABORT;
-            r = WHERE_CreateView( sql->db, &view, view, $4 );
-            if( r != ERROR_SUCCESS )
+            r = TABLE_CreateView( sql->db, $2, &$$ );
+            if( r != ERROR_SUCCESS || !$$ )
                 YYABORT;
-            $$ = view;
         }
     ;
 


More information about the wine-patches mailing list