Annotation of embedaddon/sqlite3/test/vtab2.test, revision 1.1
1.1 ! misho 1: # 2006 June 10
! 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: # This file implements regression tests for SQLite library.
! 12: #
! 13: # $Id: vtab2.test,v 1.9 2008/10/13 10:37:50 danielk1977 Exp $
! 14:
! 15: set testdir [file dirname $argv0]
! 16: source $testdir/tester.tcl
! 17:
! 18: ifcapable !vtab||!schema_pragmas {
! 19: finish_test
! 20: return
! 21: }
! 22:
! 23: register_schema_module [sqlite3_connection_pointer db]
! 24: do_test vtab2-1.1 {
! 25: execsql {
! 26: CREATE VIRTUAL TABLE schema USING schema;
! 27: SELECT * FROM schema;
! 28: }
! 29: } [list \
! 30: main schema 0 database {} 0 {} 0 \
! 31: main schema 1 tablename {} 0 {} 0 \
! 32: main schema 2 cid {} 0 {} 0 \
! 33: main schema 3 name {} 0 {} 0 \
! 34: main schema 4 type {} 0 {} 0 \
! 35: main schema 5 not_null {} 0 {} 0 \
! 36: main schema 6 dflt_value {} 0 {} 0 \
! 37: main schema 7 pk {} 0 {} 0 \
! 38: ]
! 39:
! 40: # See ticket #2230.
! 41: #
! 42: do_test vtab2-1.2 {
! 43: execsql {
! 44: SELECT length(tablename) FROM schema GROUP by tablename;
! 45: }
! 46: } {6}
! 47: do_test vtab2-1.3 {
! 48: execsql {
! 49: SELECT tablename FROM schema GROUP by length(tablename);
! 50: }
! 51: } {schema}
! 52: do_test vtab2-1.4 {
! 53: execsql {
! 54: SELECT length(tablename) FROM schema GROUP by length(tablename);
! 55: }
! 56: } {6}
! 57:
! 58: register_tclvar_module [sqlite3_connection_pointer db]
! 59: do_test vtab2-2.1 {
! 60: set ::abc 123
! 61: execsql {
! 62: CREATE VIRTUAL TABLE vars USING tclvar;
! 63: SELECT * FROM vars WHERE name='abc';
! 64: }
! 65: } [list abc "" 123]
! 66: do_test vtab2-2.2 {
! 67: set A(1) 1
! 68: set A(2) 4
! 69: set A(3) 9
! 70: execsql {
! 71: SELECT * FROM vars WHERE name='A';
! 72: }
! 73: } [list A 1 1 A 2 4 A 3 9]
! 74: unset -nocomplain result
! 75: unset -nocomplain var
! 76: set result {}
! 77: foreach var [lsort [info vars tcl_*]] {
! 78: catch {lappend result $var [set $var]}
! 79: }
! 80: do_test vtab2-2.3 {
! 81: execsql {
! 82: SELECT name, value FROM vars
! 83: WHERE name MATCH 'tcl_*' AND arrayname = ''
! 84: ORDER BY name;
! 85: }
! 86: } $result
! 87: unset result
! 88: unset var
! 89:
! 90: # Ticket #2894.
! 91: #
! 92: # Make sure we do call Column(), and Rowid() methods of
! 93: # a virtual table when that table is in a LEFT JOIN.
! 94: #
! 95: do_test vtab2-3.1 {
! 96: execsql {
! 97: SELECT * FROM schema WHERE dflt_value IS NULL LIMIT 1
! 98: }
! 99: } {main schema 0 database {} 0 {} 0}
! 100: do_test vtab2-3.2 {
! 101: execsql {
! 102: SELECT *, b.rowid
! 103: FROM schema a LEFT JOIN schema b ON a.dflt_value=b.dflt_value
! 104: WHERE a.rowid=1
! 105: }
! 106: } {main schema 0 database {} 0 {} 0 {} {} {} {} {} {} {} {} {}}
! 107:
! 108: do_test vtab2-4.1 {
! 109: execsql {
! 110: BEGIN TRANSACTION;
! 111: CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c, UNIQUE(b, c));
! 112: CREATE TABLE fkey(
! 113: to_tbl,
! 114: to_col
! 115: );
! 116: INSERT INTO "fkey" VALUES('t1',NULL);
! 117: COMMIT;
! 118: }
! 119: } {}
! 120: do_test vtab2-4.2 {
! 121: execsql { CREATE VIRTUAL TABLE v_col USING schema }
! 122: } {}
! 123: do_test vtab2-4.3 {
! 124: execsql { SELECT name FROM v_col WHERE tablename = 't1' AND pk }
! 125: } {a}
! 126: do_test vtab2-4.4 {
! 127: execsql {
! 128: UPDATE fkey
! 129: SET to_col = (SELECT name FROM v_col WHERE tablename = 't1' AND pk);
! 130: }
! 131: } {}
! 132: do_test vtab2-4.5 {
! 133: execsql { SELECT * FROM fkey }
! 134: } {t1 a}
! 135:
! 136: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>