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:
13
manifest
13
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Version\s3.5.6\s(CVS\s4777)
|
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-06T16:58:28
|
D 2008-02-06T23:52:37
|
||||||
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
|
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
|
||||||
F Makefile.in bc2b5df3e3d0d4b801b824b7ef6dec43812b049b
|
F Makefile.in bc2b5df3e3d0d4b801b824b7ef6dec43812b049b
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -132,7 +132,7 @@ F src/pragma.c 2bb8d6882b9a330e041acd05fb6aff5a01bf0a08
|
|||||||
F src/prepare.c 1b0601ca3f97a9d253cc08697484e3045a1678e9
|
F src/prepare.c 1b0601ca3f97a9d253cc08697484e3045a1678e9
|
||||||
F src/printf.c eb27822ba2eec669161409ca31279a24c26ac910
|
F src/printf.c eb27822ba2eec669161409ca31279a24c26ac910
|
||||||
F src/random.c 02ef38b469237482f1ea14a78b2087cfbaec48bd
|
F src/random.c 02ef38b469237482f1ea14a78b2087cfbaec48bd
|
||||||
F src/select.c 1a5d0aaf8f420b164eb775d3b1ba2bfb79597f65
|
F src/select.c 394aa3542e8df599dcca77b0e75f7875760a13ad
|
||||||
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
|
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
|
||||||
F src/shell.c ca06cb687c40a8bff6307b5fad41a0e86a0f8558
|
F src/shell.c ca06cb687c40a8bff6307b5fad41a0e86a0f8558
|
||||||
F src/sqlite.h.in 690736613958e0f462e08ae2a9136fa335214edc
|
F src/sqlite.h.in 690736613958e0f462e08ae2a9136fa335214edc
|
||||||
@@ -495,6 +495,7 @@ F test/tkt2822.test 8b1526b1e5b0d38a1a993f7828fbb81759093686
|
|||||||
F test/tkt2832.test cd56dc66bb31898b7eb2146baa5bde2eb80f96fe
|
F test/tkt2832.test cd56dc66bb31898b7eb2146baa5bde2eb80f96fe
|
||||||
F test/tkt2854.test aebd5a9904d36d1ef7a074fc5e7c7da3ab00c32a
|
F test/tkt2854.test aebd5a9904d36d1ef7a074fc5e7c7da3ab00c32a
|
||||||
F test/tkt2920.test a8737380e4ae6424e00c0273dc12775704efbebf
|
F test/tkt2920.test a8737380e4ae6424e00c0273dc12775704efbebf
|
||||||
|
F test/tkt2927.test 492c6a9a14b2fc7bdbb17ce8e497d82df627f64d
|
||||||
F test/trace.test 951cd0f5f571e7f36bf7bfe04be70f90fb16fb00
|
F test/trace.test 951cd0f5f571e7f36bf7bfe04be70f90fb16fb00
|
||||||
F test/trans.test b73289992b46d38d9479ecc4fdc03d8edb2413dc
|
F test/trans.test b73289992b46d38d9479ecc4fdc03d8edb2413dc
|
||||||
F test/trigger1.test 7c13f39ca36f529bf856e05c7d004fc0531d48b4
|
F test/trigger1.test 7c13f39ca36f529bf856e05c7d004fc0531d48b4
|
||||||
@@ -615,7 +616,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
|
|||||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||||
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
|
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
|
||||||
P 3444efabfc3d9a30b7ef22f40ecfa401d033d43f
|
P 1d82ab6987e567fff051cf4dd7b1a0bf6d174145
|
||||||
R 73930ec2f92f5a7b40b836d05a1f5880
|
R 27d406015aaf8a169469efe427569dc7
|
||||||
U drh
|
U drh
|
||||||
Z 984cc6ab4f49b36fd57cbb663a11c64f
|
Z f7375f9f0a761af4d5cb2ddfe36898ea
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1d82ab6987e567fff051cf4dd7b1a0bf6d174145
|
e9fcb793998be07eaea01404407087b71c29853d
|
||||||
14
src/select.c
14
src/select.c
@@ -12,7 +12,7 @@
|
|||||||
** This file contains C code routines that are called by the parser
|
** This file contains C code routines that are called by the parser
|
||||||
** to handle SELECT statements in SQLite.
|
** 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"
|
#include "sqliteInt.h"
|
||||||
|
|
||||||
@@ -522,7 +522,6 @@ static void selectInnerLoop(
|
|||||||
int eDest = pDest->eDest; /* How to dispose of results */
|
int eDest = pDest->eDest; /* How to dispose of results */
|
||||||
int iParm = pDest->iParm; /* First argument to disposal method */
|
int iParm = pDest->iParm; /* First argument to disposal method */
|
||||||
int nResultCol; /* Number of result columns */
|
int nResultCol; /* Number of result columns */
|
||||||
int nToFree; /* Number of result columns to release */
|
|
||||||
|
|
||||||
if( v==0 ) return;
|
if( v==0 ) return;
|
||||||
assert( pEList!=0 );
|
assert( pEList!=0 );
|
||||||
@@ -542,13 +541,10 @@ static void selectInnerLoop(
|
|||||||
}else{
|
}else{
|
||||||
nResultCol = pEList->nExpr;
|
nResultCol = pEList->nExpr;
|
||||||
}
|
}
|
||||||
if( pDest->iMem>0 ){
|
if( pDest->iMem==0 ){
|
||||||
regResult = pDest->iMem;
|
pDest->iMem = sqlite3GetTempRange(pParse, nResultCol);
|
||||||
nToFree = 0;
|
|
||||||
}else{
|
|
||||||
pDest->iMem = regResult = sqlite3GetTempRange(pParse, nResultCol);
|
|
||||||
nToFree = nResultCol;
|
|
||||||
}
|
}
|
||||||
|
regResult = pDest->iMem;
|
||||||
if( nColumn>0 ){
|
if( nColumn>0 ){
|
||||||
for(i=0; i<nColumn; i++){
|
for(i=0; i<nColumn; i++){
|
||||||
sqlite3VdbeAddOp3(v, OP_Column, srcTab, i, regResult+i);
|
sqlite3VdbeAddOp3(v, OP_Column, srcTab, i, regResult+i);
|
||||||
@@ -694,7 +690,6 @@ static void selectInnerLoop(
|
|||||||
pushOntoSorter(pParse, pOrderBy, p, r1);
|
pushOntoSorter(pParse, pOrderBy, p, r1);
|
||||||
sqlite3ReleaseTempReg(pParse, r1);
|
sqlite3ReleaseTempReg(pParse, r1);
|
||||||
}else if( eDest==SRT_Subroutine ){
|
}else if( eDest==SRT_Subroutine ){
|
||||||
nToFree = 0; /* Preserve registers. Subroutine will need them. */
|
|
||||||
sqlite3VdbeAddOp2(v, OP_Gosub, 0, iParm);
|
sqlite3VdbeAddOp2(v, OP_Gosub, 0, iParm);
|
||||||
}else{
|
}else{
|
||||||
sqlite3VdbeAddOp2(v, OP_ResultRow, regResult, nColumn);
|
sqlite3VdbeAddOp2(v, OP_ResultRow, regResult, nColumn);
|
||||||
@@ -721,7 +716,6 @@ static void selectInnerLoop(
|
|||||||
sqlite3VdbeAddOp2(v, OP_AddImm, p->iLimit, -1);
|
sqlite3VdbeAddOp2(v, OP_AddImm, p->iLimit, -1);
|
||||||
sqlite3VdbeAddOp2(v, OP_IfZero, p->iLimit, iBreak);
|
sqlite3VdbeAddOp2(v, OP_IfZero, p->iLimit, iBreak);
|
||||||
}
|
}
|
||||||
sqlite3ReleaseTempRange(pParse, regResult, nToFree);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
638
test/tkt2927.test
Normal file
638
test/tkt2927.test
Normal 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
|
||||||
Reference in New Issue
Block a user