Module: wine Branch: master Commit: 77d3c59843c58aa6017a52217b7934fd71bd6301 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=77d3c59843c58aa6017a5221...
Author: Mike McCormack mike@codeweavers.com Date: Fri Sep 8 18:25:40 2006 +0900
msi: Fix the TEMPORARY keyword for columns.
---
dlls/msi/sql.y | 8 ++++++-- dlls/msi/tests/db.c | 9 +++++++-- dlls/msi/tokenize.c | 3 +-- 3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/dlls/msi/sql.y b/dlls/msi/sql.y index a4e0f7e..8fa0fb3 100644 --- a/dlls/msi/sql.y +++ b/dlls/msi/sql.y @@ -108,7 +108,7 @@ static struct expr * EXPR_wildcard( void %token TK_ROW TK_RP TK_RSHIFT %token TK_SELECT TK_SEMI TK_SET TK_SHORT TK_SLASH TK_SPACE TK_STAR TK_STATEMENT %token <str> TK_STRING -%token TK_TABLE TK_TEMP TK_THEN TK_TRANSACTION TK_TRIGGER +%token TK_TABLE TK_TEMPORARY TK_THEN TK_TRANSACTION TK_TRIGGER %token TK_UMINUS TK_UNCLOSED_STRING TK_UNION TK_UNIQUE %token TK_UPDATE TK_UPLUS TK_USING %token TK_VACUUM TK_VALUES TK_VIEW @@ -171,7 +171,7 @@ oneinsert: YYABORT; $$ = insert; } - | TK_INSERT TK_INTO table TK_LP selcollist TK_RP TK_VALUES TK_LP constlist TK_RP TK_TEMP + | TK_INSERT TK_INTO table TK_LP selcollist TK_RP TK_VALUES TK_LP constlist TK_RP TK_TEMPORARY { SQL_input *sql = (SQL_input*) info; MSIVIEW *insert = NULL; @@ -304,6 +304,10 @@ column_type: { $$ = $1 | MSITYPE_LOCALIZABLE; } + | data_type_l TK_TEMPORARY + { + FIXME("temporary column\n"); + } ;
data_type_l: diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index fbe9909..aea08a3 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -1955,27 +1955,29 @@ static void test_temporary_table(void) todo_wine { cond = MsiDatabaseIsTablePersistent(hdb, "P"); ok( cond == MSICONDITION_TRUE, "wrong return condition\n"); + }
query = "CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`) HOLD"; r = run_query(hdb, 0, query); ok(r == ERROR_SUCCESS, "failed to add table\n"); - }
cond = MsiDatabaseIsTablePersistent(hdb, "T"); ok( cond == MSICONDITION_FALSE, "wrong return condition\n");
- todo_wine { query = "CREATE TABLE `T2` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)"; r = run_query(hdb, 0, query); ok(r == ERROR_SUCCESS, "failed to add table\n");
+ todo_wine { cond = MsiDatabaseIsTablePersistent(hdb, "T2"); ok( cond == MSICONDITION_NONE, "wrong return condition\n"); + }
query = "CREATE TABLE `T3` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) PRIMARY KEY `C`)"; r = run_query(hdb, 0, query); ok(r == ERROR_SUCCESS, "failed to add table\n");
+ todo_wine { cond = MsiDatabaseIsTablePersistent(hdb, "T3"); ok( cond == MSICONDITION_TRUE, "wrong return condition\n");
@@ -1987,6 +1989,9 @@ static void test_temporary_table(void) ok( cond == MSICONDITION_NONE, "wrong return condition\n"); }
+ query = "CREATE TABLE `T5` ( `B` SHORT NOT NULL TEMP, `C` CHAR(255) TEMP PRIMARY KEY `C`) HOLD"; + r = run_query(hdb, 0, query); + ok(r == ERROR_BAD_QUERY_SYNTAX, "failed to add table\n"); MsiCloseHandle( hdb );
DeleteFile(msifile); diff --git a/dlls/msi/tokenize.c b/dlls/msi/tokenize.c index 37c6b4a..cf0fd63 100644 --- a/dlls/msi/tokenize.c +++ b/dlls/msi/tokenize.c @@ -247,8 +247,7 @@ static const Keyword aKeywordTable[] = { { SHORT_W, TK_SHORT }, { STATEMENT_W, TK_STATEMENT }, { TABLE_W, TK_TABLE }, - { TEMP_W, TK_TEMP }, - { TEMPORARY_W, TK_TEMP }, + { TEMPORARY_W, TK_TEMPORARY }, { THEN_W, TK_THEN }, { TRANSACTION_W, TK_TRANSACTION }, { TRIGGER_W, TK_TRIGGER },