xref: /sqlite-3.40.0/test/vtab9.test (revision a04a34ff)
116ed8a64Sdrh# 2006 August 29
216ed8a64Sdrh#
316ed8a64Sdrh# The author disclaims copyright to this source code.  In place of
416ed8a64Sdrh# a legal notice, here is a blessing:
516ed8a64Sdrh#
616ed8a64Sdrh#    May you do good and not evil.
716ed8a64Sdrh#    May you find forgiveness for yourself and forgive others.
816ed8a64Sdrh#    May you share freely, never taking more than you give.
916ed8a64Sdrh#
1016ed8a64Sdrh#***********************************************************************
1116ed8a64Sdrh# This file implements regression tests for SQLite library.  The
1216ed8a64Sdrh# focus of this file inserting into virtual tables from a SELECT
1316ed8a64Sdrh# statement.
1416ed8a64Sdrh#
15*a04a34ffSdanielk1977# $Id: vtab9.test,v 1.2 2007/04/16 15:06:26 danielk1977 Exp $
1616ed8a64Sdrh
1716ed8a64Sdrhset testdir [file dirname $argv0]
1816ed8a64Sdrhsource $testdir/tester.tcl
1916ed8a64Sdrh
2016ed8a64Sdrhifcapable !vtab {
2116ed8a64Sdrh  finish_test
2216ed8a64Sdrh  return
2316ed8a64Sdrh}
2416ed8a64Sdrh
2516ed8a64Sdrhdo_test vtab9-1.1 {
2616ed8a64Sdrh  register_echo_module [sqlite3_connection_pointer db]
2716ed8a64Sdrh  execsql {
2816ed8a64Sdrh    CREATE TABLE t0(a);
2916ed8a64Sdrh    CREATE VIRTUAL TABLE t1 USING echo(t0);
3016ed8a64Sdrh    INSERT INTO t1 SELECT 'hello';
3116ed8a64Sdrh    SELECT rowid, * FROM t1;
3216ed8a64Sdrh  }
3316ed8a64Sdrh} {1 hello}
3416ed8a64Sdrh
3516ed8a64Sdrhdo_test vtab9-1.2 {
3616ed8a64Sdrh  execsql {
3716ed8a64Sdrh    CREATE TABLE t2(a,b,c);
3816ed8a64Sdrh    CREATE VIRTUAL TABLE t3 USING echo(t2);
3916ed8a64Sdrh    CREATE TABLE d1(a,b,c);
4016ed8a64Sdrh    INSERT INTO d1 VALUES(1,2,3);
4116ed8a64Sdrh    INSERT INTO d1 VALUES('a','b','c');
4216ed8a64Sdrh    INSERT INTO d1 VALUES(NULL,'x',123.456);
4316ed8a64Sdrh    INSERT INTO d1 VALUES(x'6869',123456789,-12345);
4416ed8a64Sdrh    INSERT INTO t3(a,b,c) SELECT * FROM d1;
4516ed8a64Sdrh    SELECT rowid, * FROM t3;
4616ed8a64Sdrh  }
4716ed8a64Sdrh} {1 1 2 3 2 a b c 3 {} x 123.456 4 hi 123456789 -12345}
4816ed8a64Sdrh
49*a04a34ffSdanielk1977# do_test vtab9-2.1 {
50*a04a34ffSdanielk1977#   execsql {
51*a04a34ffSdanielk1977#     CREATE TABLE t4(a);
52*a04a34ffSdanielk1977#     CREATE VIRTUAL TABLE t5 USING echo(t4);
53*a04a34ffSdanielk1977#     INSERT INTO t4 VALUES('hello');
54*a04a34ffSdanielk1977#     SELECT rowid, a FROM t5;
55*a04a34ffSdanielk1977#   }
56*a04a34ffSdanielk1977# } {1 hello}
57*a04a34ffSdanielk1977# do_test vtab9-2.2 {
58*a04a34ffSdanielk1977#   execsql {
59*a04a34ffSdanielk1977#     INSERT INTO t5(rowid, a) VALUES(1, 'goodbye');
60*a04a34ffSdanielk1977#   }
61*a04a34ffSdanielk1977# } {1 hello}
62*a04a34ffSdanielk1977# do_test vtab9-2.3 {
63*a04a34ffSdanielk1977#   execsql {
64*a04a34ffSdanielk1977#     REPLACE INTO t5(rowid, a) VALUES(1, 'goodbye');
65*a04a34ffSdanielk1977#     SELECT * FROM t5;
66*a04a34ffSdanielk1977#   }
67*a04a34ffSdanielk1977# } {1 goodbye}
68*a04a34ffSdanielk1977
6916ed8a64Sdrhunset -nocomplain echo_module_begin_fail
7016ed8a64Sdrhfinish_test
71