]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure expression spans are set correctly for "x.*" expressions in
authordrh <drh@noemail.net>
Fri, 18 Jul 2008 17:03:52 +0000 (17:03 +0000)
committerdrh <drh@noemail.net>
Fri, 18 Jul 2008 17:03:52 +0000 (17:03 +0000)
the result set of a SELECT.  Ticket #3229. (CVS 5438)

FossilOrigin-Name: 17a9984e7668be388c4042c070718a02b284a336

manifest
manifest.uuid
src/expr.c
src/parse.y
test/colname.test

index f2aaa5394ecfe43252428e1d0bc58a9866f5b5fc..275b062796d9f245d897437e104b95d3dd9bb7e3 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Performance\simprovement:\sreduce\sthe\snumber\sof\scalls\sto\sptrmapPageno()\smade\sby\sptrmapPut()\sand\sptrmapGet().\s(CVS\s5437)
-D 2008-07-18T09:34:57
+C Make\ssure\sexpression\sspans\sare\sset\scorrectly\sfor\s"x.*"\sexpressions\sin\r\nthe\sresult\sset\sof\sa\sSELECT.\s\sTicket\s#3229.\s(CVS\s5438)
+D 2008-07-18T17:03:53
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in a03f7cb4f7ad50bc53a788c6c544430e81f95de4
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -104,7 +104,7 @@ F src/callback.c aa492a0ad8c2d454edff9fb8a57fae13743cf71d
 F src/complete.c cb14e06dbe79dee031031f0d9e686ff306afe07c
 F src/date.c e841168e5520bbbb2a1cbcdce7531d8b23017b4d
 F src/delete.c 4a1f98fb2ffead69c8c685dcac33253ac6f9d56d
-F src/expr.c 17f7deae5c7a7813a86295813e757219d1a25cf9
+F src/expr.c 18d04f1c15e760d4329b5e0383a0c8a8320f0005
 F src/fault.c 3638519d1e0b82bccfafcb9f5ff491918b28f8e1
 F src/func.c 08422a7bd06c25c5e6823d525f7c63563e3fcf61
 F src/global.c f12dc84d23f52d2ed42d1bdb5460fa3caf63e890
@@ -136,7 +136,7 @@ F src/os_unix.c 1df6108efdb7957a9f28b9700600e58647c9c12d
 F src/os_win.c 2bf2f8cd700299564cc236262c2668e1e02c626a
 F src/pager.c e65d78bdbd316c3ca0135d2a98ecc607873145aa
 F src/pager.h 588c1ac195228b2da45c4e5f7ab6c2fd253d1751
-F src/parse.y 097bff733e89fbf554a07d9327046718ce364011
+F src/parse.y d1316f1b8b251412bdf4926c4c34803977958b65
 F src/pragma.c 6fad83fbcc7ec6e76d91fe2805fe972ff3af6a0c
 F src/prepare.c c9bb0aacb7a571d049805699ed18f2bb136ea091
 F src/printf.c 2174222bc346a11b1eac2a654ccc4f635355ae7e
@@ -241,7 +241,7 @@ F test/collate8.test 7ed2461305ac959886a064dc1e3cf15e155a183f
 F test/collate9.test 3adcc799229545940df2f25308dd1ad65869145a
 F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6
 F test/colmeta.test 087c42997754b8c648819832241daf724f813322
-F test/colname.test fa138771a03d1851e6ec2d10f2a9592c3ea4d5dd
+F test/colname.test d717fcf45ad33ed0cc6ad6e1e7f5749afdcc4c77
 F test/conflict.test bb29b052c60a1f7eb6382be77902061d1f305318
 F test/corrupt.test af069d971853dbe12af936910bfa49d92f7b16e9
 F test/corrupt2.test e56f45006e7eb3ee680ad3b61c92cc14ae09986e
@@ -608,7 +608,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P c94318b982e9bb5b4c743cf8d5659f9eec697366
-R 1c9e4fce9b074d6791cf7915301ae383
-U danielk1977
-Z a5d1990c3bbe25fa6befea839cd03776
+P d807fb271340901bbf3e06de23d91132422d1408
+R 5afb3355c9e7275b2ae02909f2aaa9f9
+U drh
+Z 628f79923a0f0af78e8025613e48d7b3
index 7e78ab34ca44355105f466ae2ca94eaebbf03d08..27e97641990311d330837b7d0164141f3bc3d158 100644 (file)
@@ -1 +1 @@
-d807fb271340901bbf3e06de23d91132422d1408
\ No newline at end of file
+17a9984e7668be388c4042c070718a02b284a336
\ No newline at end of file
index b6f55a19b9122bb76f531616fa6995c3e2b0f68e..87be4a91574ebcb90278cfcc511969a3883f0ef1 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains routines used for analyzing expressions and
 ** for generating VDBE code that evaluates expressions in SQLite.
 **
-** $Id: expr.c,v 1.385 2008/07/09 01:39:44 drh Exp $
+** $Id: expr.c,v 1.386 2008/07/18 17:03:53 drh Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -465,7 +465,7 @@ Expr *sqlite3ExprAnd(sqlite3 *db, Expr *pLeft, Expr *pRight){
 void sqlite3ExprSpan(Expr *pExpr, Token *pLeft, Token *pRight){
   assert( pRight!=0 );
   assert( pLeft!=0 );
-  if( pExpr && pRight->z && pLeft->z ){
+  if( pExpr ){
     pExpr->span.z = pLeft->z;
     pExpr->span.n = pRight->n + (pRight->z - pLeft->z);
   }
index 65c174719588aed09ea1cea1fa11b000c7a5d07d..7642fe93f3eb6257511e207a9ae82fdb25d61aaa 100644 (file)
@@ -14,7 +14,7 @@
 ** the parser.  Lemon will also generate a header file containing
 ** numeric codes for all of the tokens.
 **
-** @(#) $Id: parse.y,v 1.245 2008/07/08 23:40:20 drh Exp $
+** @(#) $Id: parse.y,v 1.246 2008/07/18 17:03:53 drh Exp $
 */
 
 // All token codes are small integers with #defines that begin with "TK_"
@@ -417,8 +417,8 @@ selcollist(A) ::= sclp(P) STAR. {
   Expr *p = sqlite3PExpr(pParse, TK_ALL, 0, 0, 0);
   A = sqlite3ExprListAppend(pParse, P, p, 0);
 }
-selcollist(A) ::= sclp(P) nm(X) DOT STAR. {
-  Expr *pRight = sqlite3PExpr(pParse, TK_ALL, 0, 0, 0);
+selcollist(A) ::= sclp(P) nm(X) DOT STAR(Y). {
+  Expr *pRight = sqlite3PExpr(pParse, TK_ALL, 0, 0, &Y);
   Expr *pLeft = sqlite3PExpr(pParse, TK_ID, 0, 0, &X);
   Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0);
   A = sqlite3ExprListAppend(pParse,P, pDot, 0);
index 781ffb4393962e60b63d5b3f312975a51b6819da..e5ebfc0bb9f751c24ebb7dcf718188ba791d65b6 100644 (file)
@@ -13,7 +13,7 @@
 # The focus of this file is testing how SQLite generates the names
 # of columns in a result set.
 #
-# $Id: colname.test,v 1.1 2008/07/15 20:56:17 drh Exp $
+# $Id: colname.test,v 1.2 2008/07/18 17:03:53 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -250,5 +250,11 @@ do_test colname-4.13 {
   }
 } {v6.a 1 v6.x 4 v6.a:1 11 v6.x:1 14 v6.a:2 1 v6.b 2 v6.c 3 v6.x:2 4 v6.y 5 v6.z 6 v6.a:3 11 v6.b:1 12 v6.c:1 13 v6.x:3 14 v6.y:1 15 v6.z:1 16}
 
+# ticket #3229
+do_test colname-5.1 {
+  db eval {
+    SELECT x.* FROM sqlite_master X LIMIT 1;
+  }
+} {table tabc tabc 2 {CREATE TABLE tabc(a,b,c)}}
 
 finish_test