MSI_RecordSetStringW(row,2,szValue);
}
-
rc = MSI_DatabaseOpenViewW(package->db,Query,&view);
- if (rc!= ERROR_SUCCESS)
+ if (rc == ERROR_SUCCESS)
{
- msiobj_release(&row->hdr);
- return rc;
- }
-
- rc = MSI_ViewExecute(view,row);
+ rc = MSI_ViewExecute(view,row);
+ MSI_ViewClose(view);
+ msiobj_release(&view->hdr);
+ }
msiobj_release(&row->hdr);
- MSI_ViewClose(view);
- msiobj_release(&view->hdr);
return rc;
}
| TK_SELECT TK_DISTINCT selectfrom
{
SQL_input* sql = (SQL_input*) info;
+ UINT r;
$$ = NULL;
- DISTINCT_CreateView( sql->db, &$$, $3 );
- if( !$$ )
+ r = DISTINCT_CreateView( sql->db, &$$, $3 );
+ if (r != ERROR_SUCCESS)
+ {
+ $3->ops->delete($3);
YYABORT;
+ }
}
;
selcollist from
{
SQL_input* sql = (SQL_input*) info;
+ UINT r;
$$ = NULL;
if( $1 )
- SELECT_CreateView( sql->db, &$$, $2, $1 );
+ {
+ r = SELECT_CreateView( sql->db, &$$, $2, $1 );
+ if (r != ERROR_SUCCESS)
+ {
+ $2->ops->delete($2);
+ YYABORT;
+ }
+ }
else
$$ = $2;
-
- if( !$$ )
- YYABORT;
}
;
$$ = NULL;
r = WHERE_CreateView( sql->db, &$$, $1, $3 );
- if( r != ERROR_SUCCESS || !$$ )
+ if( r != ERROR_SUCCESS )
+ {
+ $1->ops->delete( $1 );
YYABORT;
+ }
}
;
if( ! sql->command[sql->n] )
return 0; /* end of input */
- TRACE("string : %s\n", debugstr_w(&sql->command[sql->n]));
+ /* TRACE("string : %s\n", debugstr_w(&sql->command[sql->n])); */
sql->len = sqliteGetToken( &sql->command[sql->n], &token );
if( sql->len==0 )
break;
}
while( token == TK_SPACE );
- TRACE("token : %d (%s)\n", token, debugstr_wn(&sql->command[sql->n], sql->len));
+ /* TRACE("token : %d (%s)\n", token, debugstr_wn(&sql->command[sql->n], sql->len)); */
return token;
}
TRACE("Parse returned %d\n", r);
if( r )
{
- if( *sql.view )
- (*sql.view)->ops->delete( *sql.view );
*sql.view = NULL;
return ERROR_BAD_QUERY_SYNTAX;
}
if( r != ERROR_SUCCESS )
return r;
+ msi_free( wv->reorder );
wv->reorder = msi_alloc( count*sizeof(UINT) );
if( !wv->reorder )
return ERROR_FUNCTION_FAILED;
if( wv->table )
wv->table->ops->delete( wv->table );
+ wv->table = 0;
msi_free( wv->reorder );
wv->reorder = NULL;
MSIWHEREVIEW *wv = NULL;
UINT count = 0, r, valid = 0;
- TRACE("%p\n", wv );
+ TRACE("%p\n", table );
r = table->ops->get_dimensions( table, NULL, &count );
if( r != ERROR_SUCCESS )