Rob Shearman : msi: Don'
t add info to the _Columns table for non-persistent tables.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Apr 24 07:24:05 CDT 2007
Module: wine
Branch: master
Commit: a33cc3d859992aa783dcfca92e3fb31b054df1f5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a33cc3d859992aa783dcfca92e3fb31b054df1f5
Author: Rob Shearman <rob at codeweavers.com>
Date: Mon Apr 23 08:25:17 2007 +0100
msi: Don't add info to the _Columns table for non-persistent tables.
---
dlls/msi/table.c | 71 ++++++++++++++++++++++++++------------------------
dlls/msi/tests/db.c | 2 -
2 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/dlls/msi/table.c b/dlls/msi/table.c
index ddf0ee4..09abe1a 100644
--- a/dlls/msi/table.c
+++ b/dlls/msi/table.c
@@ -670,7 +670,7 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info,
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, LPCWSTR name, column_info *col_info,
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 53599ed..422bba3 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-cvs
mailing list