• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 2001 September 15
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# $Id: tkt3992.test,v 1.1 2009/07/27 10:05:06 danielk1977 Exp $
13
14set testdir [file dirname $argv0]
15source $testdir/tester.tcl
16
17do_test tkt3992-1.1 {
18  execsql {
19    CREATE TABLE parameters1(
20       mountcnt    INT NOT NULL CHECK (typeof(mountcnt) == 'integer'),
21       version     REAL NOT NULL
22    );
23    INSERT INTO parameters1(mountcnt, version) VALUES(1, 1.0);
24
25    CREATE TABLE parameters2(
26       mountcnt    INT NOT NULL CHECK (typeof(mountcnt) == 'integer'),
27       version     REAL CHECK (typeof(version) == 'real')
28    );
29    INSERT INTO parameters2(mountcnt, version) VALUES(1, 1.0);
30  }
31} {}
32
33do_test tkt3992-1.2 {
34  execsql {
35    UPDATE parameters1 SET mountcnt = mountcnt + 1;
36    SELECT * FROM parameters1;
37  }
38} {2 1.0}
39
40do_test tkt3992-1.3 {
41  execsql {
42    UPDATE parameters2 SET mountcnt = mountcnt + 1;
43    SELECT * FROM parameters2;
44  }
45} {2 1.0}
46
47ifcapable altertable {
48  do_test tkt3992-2.1 {
49    execsql {
50      CREATE TABLE t1(a, b);
51      INSERT INTO t1 VALUES(1, 2);
52      ALTER TABLE t1 ADD COLUMN c DEFAULT 3;
53      SELECT * FROM t1;
54    }
55  } {1 2 3}
56  do_test tkt3992-2.2 {
57    execsql {
58      UPDATE t1 SET a = 'one';
59      SELECT * FROM t1;
60    }
61  } {one 2 3}
62}
63
64ifcapable trigger {
65  db function tcl eval
66  do_test tkt3992-2.3 {
67    execsql {
68      CREATE TABLE t2(a REAL, b REAL, c REAL);
69      INSERT INTO t2 VALUES(1, 2, 3);
70      CREATE TRIGGER tr2 BEFORE UPDATE ON t2 BEGIN
71        SELECT tcl('set res', typeof(new.c));
72      END;
73
74      UPDATE t2 SET a = 'I';
75    }
76    set res
77  } {real}
78}
79
80
81finish_test
82