diff options
author | dan <dan@noemail.net> | 2019-05-20 17:14:25 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2019-05-20 17:14:25 +0000 |
commit | 0d92571d65393ae87f01f533eee2a6075b122efc (patch) | |
tree | 88ae798a8847dbf46b4d58d341de8c6e329c96e3 /src/resolve.c | |
parent | 8ac02a94ab5ee7496c053c417a77bc620bb548fb (diff) | |
download | sqlite-0d92571d65393ae87f01f533eee2a6075b122efc.tar.gz sqlite-0d92571d65393ae87f01f533eee2a6075b122efc.zip |
Disallow string constants enclosed in double-quotes within new CREATE TABLE and CREATE INDEX statements. It is still possible to enclose column names in double-quotes, and existing database schemas that use double-quotes for strings can still be loaded. This addresses ticket [9b78184b].
FossilOrigin-Name: 1685610ef8e0dc9218b02461ceab14dc6114f4f5ef7fcda0da395094aff443e1
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/resolve.c b/src/resolve.c index f6b6af1df..c8cce5868 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -476,7 +476,9 @@ static int lookupName( */ if( cnt==0 && zTab==0 ){ assert( pExpr->op==TK_ID ); - if( ExprHasProperty(pExpr,EP_DblQuoted) ){ + if( ExprHasProperty(pExpr,EP_DblQuoted) + && 0==(pTopNC->ncFlags&NC_NewSchema) + ){ /* If a double-quoted identifier does not match any known column name, ** then treat it as a string. ** @@ -1654,7 +1656,7 @@ int sqlite3ResolveExprNames( NameContext *pNC, /* Namespace to resolve expressions in. */ Expr *pExpr /* The expression to be analyzed. */ ){ - u16 savedHasAgg; + int savedHasAgg; Walker w; if( pExpr==0 ) return SQLITE_OK; @@ -1769,6 +1771,9 @@ int sqlite3ResolveSelfReference( sNC.pParse = pParse; sNC.pSrcList = &sSrc; sNC.ncFlags = type; + if( pTab && !pParse->db->init.busy && !sqlite3WritableSchema(pParse->db) ){ + sNC.ncFlags |= NC_NewSchema; + } if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc; if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList); return rc; |