From d31f12964b0e1ec9cb27ffaf109b0e3c4f8cabf1 Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Thu, 19 May 2005 11:15:37 +0000 Subject: [PATCH] Only tables can be backquoted, strings must be single quoted. --- dlls/msi/package.c | 2 +- dlls/msi/sql.y | 14 +++++--------- dlls/msi/tests/db.c | 4 ---- dlls/msi/tokenize.c | 5 ++++- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/dlls/msi/package.c b/dlls/msi/package.c index 30e15ba921d..2c43a314d22 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -749,7 +749,7 @@ static UINT MSI_GetPropertyRow(MSIPACKAGE *package, LPCWSTR szName, MSIRECORD ** static const WCHAR select[]= {'s','e','l','e','c','t',' ','V','a','l','u','e',' ','f','r','o','m',' ' ,'_','P','r','o','p','e','r','t','y',' ','w','h','e','r','e',' ' - ,'_','P','r','o','p','e','r','t','y','=','`','%','s','`',0}; + ,'_','P','r','o','p','e','r','t','y','=','\'','%','s','\'',0}; LPWSTR query; if (!szName) diff --git a/dlls/msi/sql.y b/dlls/msi/sql.y index 86466b88731..41764281bdc 100644 --- a/dlls/msi/sql.y +++ b/dlls/msi/sql.y @@ -127,7 +127,7 @@ static struct expr * EXPR_wildcard(); %nonassoc END_OF_FILE ILLEGAL SPACE UNCLOSED_STRING COMMENT FUNCTION COLUMN AGG_FUNCTION. -%type column table string_or_id +%type column table id %type selcollist %type from unorderedsel oneselect onequery onecreate oneinsert %type oneupdate onedelete @@ -583,32 +583,28 @@ column_val: ; column: - table TK_DOT string_or_id + table TK_DOT id { $$ = $3; /* FIXME */ } - | string_or_id + | id { $$ = $1; } ; table: - string_or_id + id { $$ = $1; } ; -string_or_id: +id: TK_ID { $$ = SQL_getstring( &$1 ); } - | TK_STRING - { - $$ = SQL_getstring( &$1 ); - } ; %% diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index f8fa8c56ce6..a932214f354 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -359,10 +359,8 @@ void test_msibadqueries() r = try_query( hdb, "CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY)"); ok(r == ERROR_BAD_QUERY_SYNTAX , "invalid query 2i return code\n"); - todo_wine { r = try_query( hdb, "CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY 'b')"); ok(r == ERROR_BAD_QUERY_SYNTAX , "invalid query 2j return code\n"); - } r = try_query( hdb, "CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b')"); ok(r == ERROR_BAD_QUERY_SYNTAX , "invalid query 2k return code\n"); @@ -385,10 +383,8 @@ void test_msibadqueries() r = try_query( hdb, "CREATE TABLE `a` (`` CHAR(72) NOT NULL PRIMARY KEY `b`)"); ok(r == ERROR_BAD_QUERY_SYNTAX , "invalid query 2p return code\n"); - todo_wine { r = try_query( hdb, "CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b`)"); ok(r == ERROR_SUCCESS , "valid query 2z failed\n"); - } r = try_query( hdb, "CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b`)"); ok(r == ERROR_BAD_QUERY_SYNTAX , "created same table again\n"); diff --git a/dlls/msi/tokenize.c b/dlls/msi/tokenize.c index 31040ed218c..315bac9a670 100644 --- a/dlls/msi/tokenize.c +++ b/dlls/msi/tokenize.c @@ -346,7 +346,10 @@ int sqliteGetToken(const WCHAR *z, int *tokenType){ } } if( z[i] ) i++; - *tokenType = TK_STRING; + if( delim == '`' ) + *tokenType = TK_ID; + else + *tokenType = TK_STRING; return i; } case '.': { -- 2.11.4.GIT