Mike McCormack : msi: Fix the TEMPORARY keyword for columns.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Sep 8 10:24:34 CDT 2006
Module: wine
Branch: master
Commit: 77d3c59843c58aa6017a52217b7934fd71bd6301
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=77d3c59843c58aa6017a52217b7934fd71bd6301
Author: Mike McCormack <mike at 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 },
More information about the wine-cvs
mailing list