xref: /sqlite-3.40.0/test/vtabE.test (revision 4dd176ea)
1a62bb8d4Sdrh# 2009 November 23
2a62bb8d4Sdrh#
3a62bb8d4Sdrh# The author disclaims copyright to this source code.  In place of
4a62bb8d4Sdrh# a legal notice, here is a blessing:
5a62bb8d4Sdrh#
6a62bb8d4Sdrh#    May you do good and not evil.
7a62bb8d4Sdrh#    May you find forgiveness for yourself and forgive others.
8a62bb8d4Sdrh#    May you share freely, never taking more than you give.
9a62bb8d4Sdrh#
10a62bb8d4Sdrh#***********************************************************************
11a62bb8d4Sdrh# This file implements regression tests for SQLite library.
12a62bb8d4Sdrh#
13a62bb8d4Sdrh# The focus of this file making sure the register cache logic works
14a62bb8d4Sdrh# correctly with virtual tables.  Ticket [16fbf14cb2].
15a62bb8d4Sdrh#
16a62bb8d4Sdrh
17a62bb8d4Sdrhset testdir [file dirname $argv0]
18a62bb8d4Sdrhsource $testdir/tester.tcl
19a62bb8d4Sdrh
20a62bb8d4Sdrhifcapable !vtab {
21a62bb8d4Sdrh  finish_test
22a62bb8d4Sdrh  return
23a62bb8d4Sdrh}
24a62bb8d4Sdrh
25a62bb8d4Sdrhregister_tclvar_module [sqlite3_connection_pointer db]
26a62bb8d4Sdrh
27a62bb8d4Sdrhunset -nocomplain vtabE
28a62bb8d4Sdrhset vtabE(vtabE1) 11
29a62bb8d4Sdrhset vtabE(vtabE2) 22
30a62bb8d4Sdrhunset -nocomplain vtabE1
31a62bb8d4Sdrhset vtabE1(w) x
32a62bb8d4Sdrhset vtabE1(y) z
33a62bb8d4Sdrhunset -nocomplain vtabE2
34a62bb8d4Sdrhset vtabE2(a) b
35a62bb8d4Sdrhset vtabE2(c) d
36a62bb8d4Sdrh
37a62bb8d4Sdrhdo_test vtabE-1 {
38a62bb8d4Sdrh  db eval {
39a62bb8d4Sdrh    CREATE VIRTUAL TABLE t1 USING tclvar;
40a62bb8d4Sdrh    CREATE VIRTUAL TABLE t2 USING tclvar;
41a62bb8d4Sdrh    CREATE TABLE t3(a INTEGER PRIMARY KEY, b);
42*4dd176eaSdrh    SELECT t1.name, t1.arrayname, t1.value,
43*4dd176eaSdrh           t2.name, t2.arrayname, t2.value,
44*4dd176eaSdrh           abs(t3.b + abs(t2.value + abs(t1.value)))
45a62bb8d4Sdrh      FROM t1 LEFT JOIN t2 ON t2.name = t1.arrayname
46a62bb8d4Sdrh           LEFT JOIN t3 ON t3.a=t2.value
47a62bb8d4Sdrh     WHERE t1.name = 'vtabE'
48a62bb8d4Sdrh     ORDER BY t1.value, t2.value;
49a62bb8d4Sdrh  }
50a62bb8d4Sdrh} {vtabE vtabE1 11 vtabE1 w x {} vtabE vtabE1 11 vtabE1 y z {} vtabE vtabE2 22 vtabE2 a b {} vtabE vtabE2 22 vtabE2 c d {}}
5143970dd7Sdan
5243970dd7Sdanfinish_test
53