xref: /sqlite-3.40.0/test/selectF.test (revision bd41d566)
1# 2014-03-03
2#
3# The author disclaims copyright to this source code.  In place of
4# a legal notice, here is a blessing:
5#
6#    May you do good and not evil.
7#    May you find forgiveness for yourself and forgive others.
8#    May you share freely, never taking more than you give.
9#
10#***********************************************************************
11#
12# This file verifies that an OP_Copy operation is used instead of OP_SCopy
13# in a compound select in a case where the source register might be changed
14# before the copy is used.
15#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19set testprefix selectF
20
21do_execsql_test 1 {
22  BEGIN TRANSACTION;
23  CREATE TABLE t1(a, b, c);
24  INSERT INTO "t1" VALUES(1,'one','I');
25  CREATE TABLE t2(d, e, f);
26  INSERT INTO "t2" VALUES(5,'ten','XX');
27  INSERT INTO "t2" VALUES(6,NULL,NULL);
28
29  CREATE INDEX i1 ON t1(b, a);
30  COMMIT;
31}
32
33#explain_i {
34#  SELECT * FROM t2
35#  UNION ALL
36#  SELECT * FROM t1 WHERE a<5
37#  ORDER BY 2, 1
38#}
39
40do_execsql_test 2 {
41  SELECT * FROM t2
42  UNION ALL
43  SELECT * FROM t1 WHERE a<5
44  ORDER BY 2, 1
45} {6 {} {} 1 one I 5 ten XX}
46
47
48
49finish_test
50