[PATCH 10/13] msi: Don't add info to the _Columns table for
non-persistent tables.
Robert Shearman
rob at codeweavers.com
Mon Apr 23 02:25:17 CDT 2007
---
dlls/msi/table.c | 71
+++++++++++++++++++++++++++------------------------
dlls/msi/tests/db.c | 2 -
2 files changed, 37 insertions(+), 36 deletions(-)
-------------- next part --------------
diff --git a/dlls/msi/table.c b/dlls/msi/table.c
index 75b4c34..5a42f5f 100644
--- a/dlls/msi/table.c
+++ b/dlls/msi/table.c
@@ -670,7 +670,7 @@ UINT msi_create_table( MSIDATABASE *db,
if( r )
goto err;
- r = tv->ops->insert_row( tv, rec, FALSE );
+ r = tv->ops->insert_row( tv, rec, !persistent );
TRACE("insert_row returned %x\n", r);
if( r )
goto err;
@@ -680,51 +680,54 @@ UINT msi_create_table( MSIDATABASE *db,
msiobj_release( &rec->hdr );
- /* add each column to the _Columns table */
- r = TABLE_CreateView( db, szColumns, &tv );
- if( r )
- return r;
-
- r = tv->ops->execute( tv, 0 );
- TRACE("tv execute returned %x\n", r);
- if( r )
- goto err;
-
- rec = MSI_CreateRecord( 4 );
- if( !rec )
- goto err;
-
- r = MSI_RecordSetStringW( rec, 1, name );
- if( r )
- goto err;
-
- /*
- * need to set the table, column number, col name and type
- * for each column we enter in the table
- */
- nField = 1;
- for( col = col_info; col; col = col->next )
+ if( persistent )
{
- r = MSI_RecordSetInteger( rec, 2, nField );
+ /* add each column to the _Columns table */
+ r = TABLE_CreateView( db, szColumns, &tv );
if( r )
- goto err;
+ return r;
- r = MSI_RecordSetStringW( rec, 3, col->column );
+ r = tv->ops->execute( tv, 0 );
+ TRACE("tv execute returned %x\n", r);
if( r )
goto err;
- r = MSI_RecordSetInteger( rec, 4, col->type );
- if( r )
+ rec = MSI_CreateRecord( 4 );
+ if( !rec )
goto err;
- r = tv->ops->insert_row( tv, rec, !persistent );
+ r = MSI_RecordSetStringW( rec, 1, name );
if( r )
goto err;
- nField++;
+ /*
+ * need to set the table, column number, col name and type
+ * for each column we enter in the table
+ */
+ nField = 1;
+ for( col = col_info; col; col = col->next )
+ {
+ r = MSI_RecordSetInteger( rec, 2, nField );
+ if( r )
+ goto err;
+
+ r = MSI_RecordSetStringW( rec, 3, col->column );
+ if( r )
+ goto err;
+
+ r = MSI_RecordSetInteger( rec, 4, col->type );
+ if( r )
+ goto err;
+
+ r = tv->ops->insert_row( tv, rec, FALSE );
+ if( r )
+ goto err;
+
+ nField++;
+ }
+ if( !col )
+ r = ERROR_SUCCESS;
}
- if( !col )
- r = ERROR_SUCCESS;
err:
if (rec)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index dc5e42d..927ef56 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -2730,7 +2730,6 @@ static void test_temporary_table(void)
ok( r == ERROR_SUCCESS, "temporary table exists in _Tables\n");
MsiCloseHandle( rec );
- todo_wine {
/* query the column data */
rec = 0;
r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'B'", &rec);
@@ -2740,7 +2739,6 @@ static void test_temporary_table(void)
r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'C'", &rec);
ok( r == ERROR_NO_MORE_ITEMS, "temporary table exists in _Columns\n");
if (rec) MsiCloseHandle( rec );
- }
MsiCloseHandle( hdb );
More information about the wine-patches
mailing list