ATTACH 'test.db2' AS aux; CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT); CREATE TABLE t2(a INTEGER PRIMARY KEY, b TEXT); CREATE TABLE aux.t3(a INTEGER PRIMARY KEY, b TEXT); INSERT INTO t1 VALUES(1, 'one'), (2, 'two'), (3, 'three'); INSERT INTO t2 VALUES(10, 'ten'), (11, 'eleven'), (12, 'twelve'); INSERT INTO t3 VALUES(20, 'twenty'), (21, 'twenty-one'), (22, 'twenty-two'); CREATE VIRTUAL TABLE temp.uuu USING unionvtab( "VALUES(NULL, 't1', 1, 9), ('main', 't2', 10, 19), ('aux', 't3', 20, 29)" ); SELECT * FROM uuu; PRAGMA table_info(uuu); SELECT * FROM uuu WHERE rowid = 3; SELECT * FROM uuu WHERE rowid = 11; SELECT * FROM uuu WHERE rowid IN (12, 10, 2); SELECT * FROM uuu WHERE rowid BETWEEN 3 AND 11; SELECT * FROM uuu WHERE rowid BETWEEN 11 AND 15; SELECT * FROM uuu WHERE rowid BETWEEN -46 AND 1500; CREATE TABLE src(db, tbl, min, max); INSERT INTO src VALUES(NULL, 't1', 1, 9); INSERT INTO src VALUES('main', 't2', 10, 19); INSERT INTO src VALUES('aux', 't3', 20, 29); CREATE VIRTUAL TABLE temp.opp USING unionvtab(src); SELECT * FROM opp; CREATE VIRTUAL TABLE temp.qll USING unionvtab( 'SELECT * FROM src WHERE db!=''xyz''' ); SELECT * FROM qll WHERE rowid BETWEEN 10 AND 21; CREATE TABLE wr1(a, b, c PRIMARY KEY) WITHOUT ROWID; CREATE VIEW v1 AS SELECT * FROM t1; CREATE VIEW v2 AS SELECT _rowid_, * FROM t1; CREATE TABLE wr2(a, _rowid_ INTEGER, c PRIMARY KEY) WITHOUT ROWID; CREATE TABLE wr3(a, b, _rowid_ PRIMARY KEY) WITHOUT ROWID; CREATE TABLE x1(a BLOB, b); CREATE TABLE x2(a BLOB, b); CREATE TEMP TABLE x3(a BLOB, b); CREATE TABLE aux.y1(one, two, three INTEGER PRIMARY KEY); CREATE TEMP TABLE y2(one, two, three INTEGER PRIMARY KEY); CREATE TABLE y3(one, two, three INTEGER PRIMARY KEY); CREATE TABLE tbl1(a INTEGER PRIMARY KEY, b); CREATE TABLE tbl2(a INTEGER PRIMARY KEY, b); CREATE TABLE tbl3(a INTEGER PRIMARY KEY, b); WITH ss(ii) AS ( SELECT 1 UNION ALL SELECT ii+1 FROM ss WHERE ii<100 ) INSERT INTO tbl1 SELECT ii, '1.' || ii FROM ss; WITH ss(ii) AS ( SELECT 1 UNION ALL SELECT ii+1 FROM ss WHERE ii<100 ) INSERT INTO tbl2 SELECT ii, '2.' || ii FROM ss; WITH ss(ii) AS ( SELECT 1 UNION ALL SELECT ii+1 FROM ss WHERE ii<100 ) INSERT INTO tbl3 SELECT ii, '3.' || ii FROM ss; CREATE VIRTUAL TABLE temp.uu USING unionvtab( "VALUES(NULL,'tbl2', 26, 74), (NULL,'tbl3', 75, 100), (NULL,'tbl1', 1, 25)" ); SELECT * FROM uu WHERE rowid = 10; SELECT * FROM uu WHERE rowid = 25; SELECT count(*) FROM uu WHERE rowid <= 24 SELECT count(*) FROM uu WHERE rowid <= 25 SELECT count(*) FROM uu WHERE rowid <= 26 SELECT count(*) FROM uu WHERE rowid <= 73 SELECT count(*) FROM uu WHERE rowid <= 74 SELECT count(*) FROM uu WHERE rowid <= 75 SELECT count(*) FROM uu WHERE rowid <= 99 SELECT count(*) FROM uu WHERE rowid <= 100 SELECT count(*) FROM uu WHERE rowid <= 101 SELECT count(*) FROM uu WHERE rowid < 25 SELECT count(*) FROM uu WHERE rowid < 26 SELECT count(*) FROM uu WHERE rowid < 27 SELECT count(*) FROM uu WHERE rowid < 73 SELECT count(*) FROM uu WHERE rowid < 74 SELECT count(*) FROM uu WHERE rowid < 75 SELECT count(*) FROM uu WHERE rowid < 76 SELECT count(*) FROM uu WHERE rowid < 99 SELECT count(*) FROM uu WHERE rowid < 100 SELECT count(*) FROM uu WHERE rowid < 101 SELECT count(*) FROM uu WHERE rowid > 24 SELECT count(*) FROM uu WHERE rowid > 25 SELECT count(*) FROM uu WHERE rowid > 26 SELECT count(*) FROM uu WHERE rowid > 27 SELECT count(*) FROM uu WHERE rowid > 73 SELECT count(*) FROM uu WHERE rowid > 74 SELECT count(*) FROM uu WHERE rowid > 75 SELECT count(*) FROM uu WHERE rowid > 76 SELECT count(*) FROM uu WHERE rowid > 99 SELECT count(*) FROM uu WHERE rowid > 100 SELECT count(*) FROM uu WHERE rowid > 101 SELECT count(*) FROM uu WHERE rowid >= 24 SELECT count(*) FROM uu WHERE rowid >= 25 SELECT count(*) FROM uu WHERE rowid >= 26 SELECT count(*) FROM uu WHERE rowid >= 27 SELECT count(*) FROM uu WHERE rowid >= 73 SELECT count(*) FROM uu WHERE rowid >= 74 SELECT count(*) FROM uu WHERE rowid >= 75 SELECT count(*) FROM uu WHERE rowid >= 76 SELECT count(*) FROM uu WHERE rowid >= 99 SELECT count(*) FROM uu WHERE rowid >= 100 SELECT count(*) FROM uu WHERE rowid >= 101 SELECT count(*) FROM uu WHERE rowid >= $S SELECT count(*) FROM uu WHERE rowid > $S SELECT count(*) FROM uu WHERE rowid <= $S SELECT count(*) FROM uu WHERE rowid < $S SELECT count(*) FROM uu WHERE rowid >= $L SELECT count(*) FROM uu WHERE rowid > $L SELECT count(*) FROM uu WHERE rowid <= $L SELECT count(*) FROM uu WHERE rowid < $L SELECT count(*) FROM uu WHERE a < 25 SELECT count(*) FROM uu WHERE a < 26 SELECT count(*) FROM uu WHERE a < 27 SELECT count(*) FROM uu WHERE a < 73 SELECT count(*) FROM uu WHERE a < 74 SELECT count(*) FROM uu WHERE a < 75 SELECT count(*) FROM uu WHERE a < 76 SELECT count(*) FROM uu WHERE a < 99 SELECT count(*) FROM uu WHERE a < 100 SELECT count(*) FROM uu WHERE a < 101 CREATE TABLE s1(k INTEGER PRIMARY KEY, v); INSERT INTO s1 VALUES($S, 'one'); INSERT INTO s1 VALUES($S+1, 'two'); INSERT INTO s1 VALUES($S+2, 'three'); CREATE TABLE l1(k INTEGER PRIMARY KEY, v); INSERT INTO l1 VALUES($L, 'six'); INSERT INTO l1 VALUES($L-1, 'five'); INSERT INTO l1 VALUES($L-2, 'four'); CREATE VIRTUAL TABLE temp.sl USING unionvtab( "SELECT NULL, 'l1', 0, 9223372036854775807 UNION ALL SELECT NULL, 's1', -9223372036854775808, -1" ); SELECT * FROM sl; SELECT * FROM sl WHERE rowid>-9223372036854775808 SELECT * FROM sl WHERE rowid>=-9223372036854775808 SELECT * FROM sl WHERE rowid<=-9223372036854775808 SELECT * FROM sl WHERE rowid<-9223372036854775808 SELECT * FROM sl WHERE rowid<9223372036854775807 SELECT * FROM sl WHERE rowid<=9223372036854775807 SELECT * FROM sl WHERE rowid>=9223372036854775807 SELECT * FROM sl WHERE rowid>9223372036854775807 CREATE TABLE c0(one, two INTEGER PRIMARY KEY); CREATE TABLE c1(one, two INTEGER PRIMARY KEY); CREATE TABLE c2(one, two INTEGER PRIMARY KEY); CREATE TABLE c3(one, two INTEGER PRIMARY KEY); CREATE TABLE c4(one, two INTEGER PRIMARY KEY); CREATE TABLE c5(one, two INTEGER PRIMARY KEY); CREATE TABLE c6(one, two INTEGER PRIMARY KEY); CREATE TABLE c7(one, two INTEGER PRIMARY KEY); CREATE TABLE c8(one, two INTEGER PRIMARY KEY); CREATE TABLE c9(one, two INTEGER PRIMARY KEY); INSERT INTO c0 VALUES('zero', 0); INSERT INTO c1 VALUES('one', 1); INSERT INTO c2 VALUES('two', 2); INSERT INTO c3 VALUES('three', 3); INSERT INTO c4 VALUES('four', 4); INSERT INTO c5 VALUES('five', 5); INSERT INTO c6 VALUES('six', 6); INSERT INTO c7 VALUES('seven', 7); INSERT INTO c8 VALUES('eight', 8); INSERT INTO c9 VALUES('nine', 9); CREATE VIRTUAL TABLE temp.cc USING unionvtab([ SELECT 'main', 'c9', 9, 9 UNION ALL SELECT 'main', 'c8', 8, 8 UNION ALL SELECT 'main', 'c7', 7, 7 UNION ALL SELECT 'main', 'c6', 6, 6 UNION ALL SELECT 'main', 'c5', 5, 5 UNION ALL SELECT 'main', 'c4', 4, 4 UNION ALL SELECT 'main', 'c3', 3, 3 UNION ALL SELECT 'main', 'c2', 2, 2 UNION ALL SELECT 'main', 'c1', 1, 1 UNION ALL SELECT 'main', 'c0', 0, 0 ]); SELECT sum(two) FROM cc; SELECT one FROM cc WHERE one>='seven' SELECT y.one FROM cc AS x, cc AS y WHERE x.one=y.one AND x.rowid>5 SELECT cc.one FROM c4, cc WHERE cc.rowid>c4.rowid SELECT * FROM cc WHERE two LIKE '6'