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,
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)
......
......@@ -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 );
......
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