Commit a33cc3d8 authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

msi: Don't add info to the _Columns table for non-persistent tables.

parent 23379b3b
...@@ -670,7 +670,7 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info, ...@@ -670,7 +670,7 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info,
if( r ) if( r )
goto err; 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); TRACE("insert_row returned %x\n", r);
if( r ) if( r )
goto err; goto err;
...@@ -680,51 +680,54 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info, ...@@ -680,51 +680,54 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info,
msiobj_release( &rec->hdr ); msiobj_release( &rec->hdr );
/* add each column to the _Columns table */ if( persistent )
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 )
{ {
r = MSI_RecordSetInteger( rec, 2, nField ); /* add each column to the _Columns table */
r = TABLE_CreateView( db, szColumns, &tv );
if( r ) 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 ) if( r )
goto err; goto err;
r = MSI_RecordSetInteger( rec, 4, col->type ); rec = MSI_CreateRecord( 4 );
if( r ) if( !rec )
goto err; goto err;
r = tv->ops->insert_row( tv, rec, !persistent ); r = MSI_RecordSetStringW( rec, 1, name );
if( r ) if( r )
goto err; 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: err:
if (rec) if (rec)
......
...@@ -2730,7 +2730,6 @@ static void test_temporary_table(void) ...@@ -2730,7 +2730,6 @@ static void test_temporary_table(void)
ok( r == ERROR_SUCCESS, "temporary table exists in _Tables\n"); ok( r == ERROR_SUCCESS, "temporary table exists in _Tables\n");
MsiCloseHandle( rec ); MsiCloseHandle( rec );
todo_wine {
/* query the column data */ /* query the column data */
rec = 0; rec = 0;
r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'B'", &rec); r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'B'", &rec);
...@@ -2740,7 +2739,6 @@ static void test_temporary_table(void) ...@@ -2740,7 +2739,6 @@ static void test_temporary_table(void)
r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'C'", &rec); 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"); ok( r == ERROR_NO_MORE_ITEMS, "temporary table exists in _Columns\n");
if (rec) MsiCloseHandle( rec ); if (rec) MsiCloseHandle( rec );
}
MsiCloseHandle( hdb ); MsiCloseHandle( hdb );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment