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

Do not release registers used to hold the results of a compound select

after just the first select has run.  Ticket #2927.  For now, we will
never release the registers used to hold the result set, since the same
register set will be used for each select.  This is not an unacceptable
register leak and it is the safest approach. (CVS 4778)

FossilOrigin-Name: e9fcb793998be07eaea01404407087b71c29853d
This commit is contained in:
drh
2008-02-06 23:52:36 +00:00
parent ef10389ec4
commit 1ece7325bb
4 changed files with 650 additions and 17 deletions

View File

@@ -1,5 +1,5 @@
C Version\s3.5.6\s(CVS\s4777)
D 2008-02-06T16:58:28
C Do\snot\srelease\sregisters\sused\sto\shold\sthe\sresults\sof\sa\scompound\sselect\nafter\sjust\sthe\sfirst\sselect\shas\srun.\s\sTicket\s#2927.\s\sFor\snow,\swe\swill\nnever\srelease\sthe\sregisters\sused\sto\shold\sthe\sresult\sset,\ssince\sthe\ssame\nregister\sset\swill\sbe\sused\sfor\seach\sselect.\s\sThis\sis\snot\san\sunacceptable\nregister\sleak\sand\sit\sis\sthe\ssafest\sapproach.\s(CVS\s4778)
D 2008-02-06T23:52:37
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in bc2b5df3e3d0d4b801b824b7ef6dec43812b049b
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -132,7 +132,7 @@ F src/pragma.c 2bb8d6882b9a330e041acd05fb6aff5a01bf0a08
F src/prepare.c 1b0601ca3f97a9d253cc08697484e3045a1678e9
F src/printf.c eb27822ba2eec669161409ca31279a24c26ac910
F src/random.c 02ef38b469237482f1ea14a78b2087cfbaec48bd
F src/select.c 1a5d0aaf8f420b164eb775d3b1ba2bfb79597f65
F src/select.c 394aa3542e8df599dcca77b0e75f7875760a13ad
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
F src/shell.c ca06cb687c40a8bff6307b5fad41a0e86a0f8558
F src/sqlite.h.in 690736613958e0f462e08ae2a9136fa335214edc
@@ -495,6 +495,7 @@ F test/tkt2822.test 8b1526b1e5b0d38a1a993f7828fbb81759093686
F test/tkt2832.test cd56dc66bb31898b7eb2146baa5bde2eb80f96fe
F test/tkt2854.test aebd5a9904d36d1ef7a074fc5e7c7da3ab00c32a
F test/tkt2920.test a8737380e4ae6424e00c0273dc12775704efbebf
F test/tkt2927.test 492c6a9a14b2fc7bdbb17ce8e497d82df627f64d
F test/trace.test 951cd0f5f571e7f36bf7bfe04be70f90fb16fb00
F test/trans.test b73289992b46d38d9479ecc4fdc03d8edb2413dc
F test/trigger1.test 7c13f39ca36f529bf856e05c7d004fc0531d48b4
@@ -615,7 +616,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 3444efabfc3d9a30b7ef22f40ecfa401d033d43f
R 73930ec2f92f5a7b40b836d05a1f5880
P 1d82ab6987e567fff051cf4dd7b1a0bf6d174145
R 27d406015aaf8a169469efe427569dc7
U drh
Z 984cc6ab4f49b36fd57cbb663a11c64f
Z f7375f9f0a761af4d5cb2ddfe36898ea

View File

@@ -1 +1 @@
1d82ab6987e567fff051cf4dd7b1a0bf6d174145
e9fcb793998be07eaea01404407087b71c29853d

View File

@@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
** $Id: select.c,v 1.411 2008/01/25 15:04:50 drh Exp $
** $Id: select.c,v 1.412 2008/02/06 23:52:37 drh Exp $
*/
#include "sqliteInt.h"
@@ -522,7 +522,6 @@ static void selectInnerLoop(
int eDest = pDest->eDest; /* How to dispose of results */
int iParm = pDest->iParm; /* First argument to disposal method */
int nResultCol; /* Number of result columns */
int nToFree; /* Number of result columns to release */
if( v==0 ) return;
assert( pEList!=0 );
@@ -542,13 +541,10 @@ static void selectInnerLoop(
}else{
nResultCol = pEList->nExpr;
}
if( pDest->iMem>0 ){
regResult = pDest->iMem;
nToFree = 0;
}else{
pDest->iMem = regResult = sqlite3GetTempRange(pParse, nResultCol);
nToFree = nResultCol;
if( pDest->iMem==0 ){
pDest->iMem = sqlite3GetTempRange(pParse, nResultCol);
}
regResult = pDest->iMem;
if( nColumn>0 ){
for(i=0; i<nColumn; i++){
sqlite3VdbeAddOp3(v, OP_Column, srcTab, i, regResult+i);
@@ -694,7 +690,6 @@ static void selectInnerLoop(
pushOntoSorter(pParse, pOrderBy, p, r1);
sqlite3ReleaseTempReg(pParse, r1);
}else if( eDest==SRT_Subroutine ){
nToFree = 0; /* Preserve registers. Subroutine will need them. */
sqlite3VdbeAddOp2(v, OP_Gosub, 0, iParm);
}else{
sqlite3VdbeAddOp2(v, OP_ResultRow, regResult, nColumn);
@@ -721,7 +716,6 @@ static void selectInnerLoop(
sqlite3VdbeAddOp2(v, OP_AddImm, p->iLimit, -1);
sqlite3VdbeAddOp2(v, OP_IfZero, p->iLimit, iBreak);
}
sqlite3ReleaseTempRange(pParse, regResult, nToFree);
}
/*

638
test/tkt2927.test Normal file
View File

@@ -0,0 +1,638 @@
# 2008 Feb 6
#
# The author disclaims copyright to this source code. In place of
# a legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
#***********************************************************************
#
# This file is to test that ticket #2927 is fixed.
#
# $Id: tkt2927.test,v 1.1 2008/02/06 23:52:37 drh Exp $
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
# Create a database.
#
do_test tkt2927-1.1 {
db eval {
CREATE TABLE t1(a, b);
INSERT INTO t1 VALUES(1,11);
INSERT INTO t1 VALUES(2,22);
INSERT INTO t1 VALUES(3,33);
INSERT INTO t1 VALUES(4,44);
INSERT INTO t1 VALUES(5,55);
SELECT * FROM t1;
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.1 {
db eval {
SELECT a, b FROM t1
UNION ALL
SELECT a, b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.2 {
breakpoint
#set sqlite_addop_trace 1
db eval {
SELECT a, b FROM t1
UNION ALL
SELECT a, abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.3 {
db eval {
SELECT a, b FROM t1
UNION ALL
SELECT abs(a), b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.4 {
db eval {
SELECT a, b FROM t1
UNION ALL
SELECT abs(a), abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.5 {
db eval {
SELECT a, abs(b) FROM t1
UNION ALL
SELECT a, b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.6 {
db eval {
SELECT a, abs(b) FROM t1
UNION ALL
SELECT a, abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.7 {
db eval {
SELECT a, abs(b) FROM t1
UNION ALL
SELECT abs(a), b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.8 {
db eval {
SELECT a, abs(b) FROM t1
UNION ALL
SELECT abs(a), abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.9 {
db eval {
SELECT abs(a), b FROM t1
UNION ALL
SELECT a, b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.10 {
db eval {
SELECT abs(a), b FROM t1
UNION ALL
SELECT a, abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.11 {
db eval {
SELECT abs(a), b FROM t1
UNION ALL
SELECT abs(a), b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.12 {
db eval {
SELECT abs(a), b FROM t1
UNION ALL
SELECT abs(a), abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.13 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION ALL
SELECT a, b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.14 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION ALL
SELECT a, abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.15 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION ALL
SELECT abs(a), b FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-2.16 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION ALL
SELECT abs(a), abs(b) FROM t1
}
} {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.1 {
db eval {
SELECT a, b FROM t1
UNION
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.2 {
db eval {
SELECT a, b FROM t1
UNION
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.3 {
db eval {
SELECT a, b FROM t1
UNION
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.4 {
db eval {
SELECT a, b FROM t1
UNION
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.5 {
db eval {
SELECT a, abs(b) FROM t1
UNION
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.6 {
db eval {
SELECT a, abs(b) FROM t1
UNION
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.7 {
db eval {
SELECT a, abs(b) FROM t1
UNION
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.8 {
db eval {
SELECT a, abs(b) FROM t1
UNION
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.9 {
db eval {
SELECT abs(a), b FROM t1
UNION
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.10 {
db eval {
SELECT abs(a), b FROM t1
UNION
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.11 {
db eval {
SELECT abs(a), b FROM t1
UNION
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.12 {
db eval {
SELECT abs(a), b FROM t1
UNION
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.13 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.14 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.15 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-3.16 {
db eval {
SELECT abs(a), abs(b) FROM t1
UNION
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-4.1 {
db eval {
SELECT a+b, a-b, a, b FROM t1
UNION ALL
SELECT a+b, a-b, a, b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.2 {
db eval {
SELECT a+b, a-b, a, b FROM t1
UNION ALL
SELECT a+b, a-b, a, abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.3 {
db eval {
SELECT a+b, a-b, a, b FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.4 {
db eval {
SELECT a+b, a-b, a, b FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.5 {
db eval {
SELECT a+b, a-b, a, abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, a, b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.6 {
db eval {
SELECT a+b, a-b, a, abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, a, abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.7 {
db eval {
SELECT a+b, a-b, a, abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.8 {
db eval {
SELECT a+b, a-b, a, abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.9 {
db eval {
SELECT a+b, a-b, abs(a), b FROM t1
UNION ALL
SELECT a+b, a-b, a, b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.10 {
db eval {
SELECT a+b, a-b, abs(a), b FROM t1
UNION ALL
SELECT a+b, a-b, a, abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.11 {
db eval {
SELECT a+b, a-b, abs(a), b FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.12 {
db eval {
SELECT a+b, a-b, abs(a), b FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.13 {
db eval {
SELECT a+b, a-b, abs(a), abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, a, b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.14 {
db eval {
SELECT a+b, a-b, abs(a), abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, a, abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.15 {
db eval {
SELECT a+b, a-b, abs(a), abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), b FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-4.16 {
db eval {
SELECT a+b, a-b, abs(a), abs(b) FROM t1
UNION ALL
SELECT a+b, a-b, abs(a), abs(b) FROM t1
}
} {12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55 12 -10 1 11 24 -20 2 22 36 -30 3 33 48 -40 4 44 60 -50 5 55}
do_test tkt2927-5.1 {
db eval {
SELECT a, b FROM t1
EXCEPT
SELECT a, b FROM t1
}
} {}
do_test tkt2927-5.2 {
db eval {
SELECT a, b FROM t1
EXCEPT
SELECT a, abs(b) FROM t1
}
} {}
do_test tkt2927-5.3 {
db eval {
SELECT a, b FROM t1
EXCEPT
SELECT abs(a), b FROM t1
}
} {}
do_test tkt2927-5.4 {
db eval {
SELECT a, b FROM t1
EXCEPT
SELECT abs(a), abs(b) FROM t1
}
} {}
do_test tkt2927-5.5 {
db eval {
SELECT a, abs(b) FROM t1
EXCEPT
SELECT a, b FROM t1
}
} {}
do_test tkt2927-5.6 {
db eval {
SELECT a, abs(b) FROM t1
EXCEPT
SELECT a, abs(b) FROM t1
}
} {}
do_test tkt2927-5.7 {
db eval {
SELECT a, abs(b) FROM t1
EXCEPT
SELECT abs(a), b FROM t1
}
} {}
do_test tkt2927-5.8 {
db eval {
SELECT a, abs(b) FROM t1
EXCEPT
SELECT abs(a), abs(b) FROM t1
}
} {}
do_test tkt2927-5.9 {
db eval {
SELECT abs(a), b FROM t1
EXCEPT
SELECT a, b FROM t1
}
} {}
do_test tkt2927-5.10 {
db eval {
SELECT abs(a), b FROM t1
EXCEPT
SELECT a, abs(b) FROM t1
}
} {}
do_test tkt2927-5.11 {
db eval {
SELECT abs(a), b FROM t1
EXCEPT
SELECT abs(a), b FROM t1
}
} {}
do_test tkt2927-5.12 {
db eval {
SELECT abs(a), b FROM t1
EXCEPT
SELECT abs(a), abs(b) FROM t1
}
} {}
do_test tkt2927-5.13 {
db eval {
SELECT abs(a), abs(b) FROM t1
EXCEPT
SELECT a, b FROM t1
}
} {}
do_test tkt2927-5.14 {
db eval {
SELECT abs(a), abs(b) FROM t1
EXCEPT
SELECT a, abs(b) FROM t1
}
} {}
do_test tkt2927-5.15 {
db eval {
SELECT abs(a), abs(b) FROM t1
EXCEPT
SELECT abs(a), b FROM t1
}
} {}
do_test tkt2927-5.16 {
db eval {
SELECT abs(a), abs(b) FROM t1
EXCEPT
SELECT abs(a), abs(b) FROM t1
}
} {}
do_test tkt2927-6.1 {
db eval {
SELECT a, b FROM t1
INTERSECT
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.2 {
db eval {
SELECT a, b FROM t1
INTERSECT
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.3 {
db eval {
SELECT a, b FROM t1
INTERSECT
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.4 {
db eval {
SELECT a, b FROM t1
INTERSECT
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.5 {
db eval {
SELECT a, abs(b) FROM t1
INTERSECT
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.6 {
db eval {
SELECT a, abs(b) FROM t1
INTERSECT
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.7 {
db eval {
SELECT a, abs(b) FROM t1
INTERSECT
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.8 {
db eval {
SELECT a, abs(b) FROM t1
INTERSECT
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.9 {
db eval {
SELECT abs(a), b FROM t1
INTERSECT
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.10 {
db eval {
SELECT abs(a), b FROM t1
INTERSECT
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.11 {
db eval {
SELECT abs(a), b FROM t1
INTERSECT
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.12 {
db eval {
SELECT abs(a), b FROM t1
INTERSECT
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.13 {
db eval {
SELECT abs(a), abs(b) FROM t1
INTERSECT
SELECT a, b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.14 {
db eval {
SELECT abs(a), abs(b) FROM t1
INTERSECT
SELECT a, abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.15 {
db eval {
SELECT abs(a), abs(b) FROM t1
INTERSECT
SELECT abs(a), b FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
do_test tkt2927-6.16 {
db eval {
SELECT abs(a), abs(b) FROM t1
INTERSECT
SELECT abs(a), abs(b) FROM t1
ORDER BY 1
}
} {1 11 2 22 3 33 4 44 5 55}
finish_test