1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-09 14:21:03 +03:00

Make sure expression spans are set correctly for "x.*" expressions in

the result set of a SELECT.  Ticket #3229. (CVS 5438)

FossilOrigin-Name: 17a9984e7668be388c4042c070718a02b284a336
This commit is contained in:
drh
2008-07-18 17:03:52 +00:00
parent 8c666b1666
commit e54a62ad85
5 changed files with 22 additions and 16 deletions

View File

@@ -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

View File

@@ -1 +1 @@
d807fb271340901bbf3e06de23d91132422d1408
17a9984e7668be388c4042c070718a02b284a336

View 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);
}

View 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);

View 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