MSI: simplify parsing of select query
Mike McCormack
mike at codeweavers.com
Sun May 22 20:35:22 CDT 2005
ChangeLog:
* simplify parsing of select query
-------------- next part --------------
Binary files dlls/msi.old/msi.dll.so and dlls/msi/msi.dll.so differ
diff -urp dlls/msi.old/sql.y dlls/msi/sql.y
--- dlls/msi.old/sql.y 2005-05-23 10:28:31.000000000 +0900
+++ dlls/msi/sql.y 2005-05-23 10:28:54.000000000 +0900
@@ -52,9 +52,6 @@ static LPWSTR SQL_getstring( struct sql_
static INT SQL_getint( SQL_input *sql );
static int SQL_lex( void *SQL_lval, SQL_input *info);
-static MSIVIEW *do_one_select( MSIDATABASE *db, MSIVIEW *in,
- string_list *columns );
-
static BOOL SQL_MarkPrimaryKeys( create_col_info *cols,
string_list *keys);
@@ -127,7 +124,7 @@ static struct expr * EXPR_wildcard();
%type <string> column table id
%type <column_list> selcollist
-%type <query> query from unorderedsel
+%type <query> query from 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
@@ -340,34 +337,34 @@ oneselect:
;
unorderedsel:
- TK_SELECT selcollist from
+ TK_SELECT selectfrom
+ {
+ $$ = $2;
+ }
+ | TK_SELECT TK_DISTINCT selectfrom
{
SQL_input* sql = (SQL_input*) info;
- if( !$3 )
+
+ $$ = NULL;
+ DISTINCT_CreateView( sql->db, &$$, $3 );
+ if( !$$ )
YYABORT;
- if( $2 )
- {
- $$ = do_one_select( sql->db, $3, $2 );
- if( !$$ )
- YYABORT;
- }
- else
- $$ = $3;
}
- | TK_SELECT TK_DISTINCT selcollist from
+ ;
+
+selectfrom:
+ selcollist from
{
SQL_input* sql = (SQL_input*) info;
- MSIVIEW *view = $4;
- if( !view )
+ $$ = NULL;
+ if( $1 )
+ SELECT_CreateView( sql->db, &$$, $2, $1 );
+ else
+ $$ = $2;
+
+ if( !$$ )
YYABORT;
- if( $3 )
- {
- view = do_one_select( sql->db, view, $3 );
- if( !view )
- YYABORT;
- }
- DISTINCT_CreateView( sql->db, & $$, view );
}
;
@@ -677,18 +674,6 @@ int SQL_error(const char *str)
return 0;
}
-static MSIVIEW *do_one_select( MSIDATABASE *db, MSIVIEW *in,
- string_list *columns )
-{
- MSIVIEW *view = NULL;
-
- SELECT_CreateView( db, &view, in, columns );
- delete_string_list( columns );
- if( !view )
- ERR("Error creating select query\n");
- return view;
-}
-
static struct expr * EXPR_wildcard()
{
struct expr *e = HeapAlloc( GetProcessHeap(), 0, sizeof *e );
More information about the wine-patches
mailing list