~ubuntu-branches/ubuntu/wily/sqlite3/wily

« back to all changes in this revision

Viewing changes to test/fkey4.test

  • Committer: Package Import Robot
  • Author(s): Colin Watson
  • Date: 2011-09-27 00:09:20 UTC
  • mfrom: (0.23.1) (1.6.1) (16.3.5 oneiric)
  • Revision ID: package-import@ubuntu.com-20110927000920-8d87xm2c8837llx3
Tags: 3.7.7-2ubuntu2
Make sure to build lemon when cross-compiling.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# 2011 Feb 04
 
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
# This file test deferred foreign key constraint processing to make
 
14
# sure that when a statement not within BEGIN...END fails a constraint,
 
15
# that statement doesn't hold the transaction open thus allowing
 
16
# a subsequent statement to fail a deferred constraint with impunity.
 
17
#
 
18
 
 
19
set testdir [file dirname $argv0]
 
20
source $testdir/tester.tcl
 
21
 
 
22
ifcapable {!foreignkey||!trigger} {
 
23
  finish_test
 
24
  return
 
25
}
 
26
 
 
27
# Create a table and some data to work with.
 
28
#
 
29
do_test fkey4-1.1 {
 
30
  execsql {
 
31
    PRAGMA foreign_keys = ON;
 
32
    CREATE TABLE t1(a PRIMARY KEY, b);
 
33
    CREATE TABLE t2(c REFERENCES t1 DEFERRABLE INITIALLY DEFERRED, d);
 
34
    INSERT INTO t1 VALUES(1,2);
 
35
    INSERT INTO t2 VALUES(1,3);
 
36
  }
 
37
} {}
 
38
 
 
39
do_test fkey4-1.2 {
 
40
  set ::DB [sqlite3_connection_pointer db]
 
41
  set ::SQL {INSERT INTO t2 VALUES(2,4)}
 
42
  set ::STMT1 [sqlite3_prepare_v2 $::DB $::SQL -1 TAIL]
 
43
  sqlite3_step $::STMT1
 
44
} {SQLITE_CONSTRAINT}
 
45
do_test fkey4-1.3 {
 
46
  set ::STMT2 [sqlite3_prepare_v2 $::DB $::SQL -1 TAIL]
 
47
  sqlite3_step $::STMT2
 
48
} {SQLITE_CONSTRAINT}
 
49
do_test fkey4-1.4 {
 
50
  db eval {SELECT * FROM t2}
 
51
} {1 3}
 
52
sqlite3_finalize $::STMT1
 
53
sqlite3_finalize $::STMT2
 
54
 
 
55
finish_test