1# 2005 February 14 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. The 12# focus of this file is testing the CREATE INDEX statement. 13# 14# $Id: index3.test,v 1.3 2008/03/19 13:03:34 drh Exp $ 15 16 17set testdir [file dirname $argv0] 18source $testdir/tester.tcl 19 20# Ticket #1115. Make sure that when a UNIQUE index is created on a 21# non-unique column (or columns) that it fails and that it leaves no 22# residue behind. 23# 24do_test index3-1.1 { 25 execsql { 26 CREATE TABLE t1(a); 27 INSERT INTO t1 VALUES(1); 28 INSERT INTO t1 VALUES(1); 29 SELECT * FROM t1; 30 } 31} {1 1} 32do_test index3-1.2 { 33 catchsql { 34 BEGIN; 35 CREATE UNIQUE INDEX i1 ON t1(a); 36 } 37} {1 {indexed columns are not unique}} 38do_test index3-1.3 { 39 catchsql COMMIT; 40} {0 {}} 41integrity_check index3-1.4 42 43# This test corrupts the database file so it must be the last test 44# in the series. 45# 46do_test index3-99.1 { 47 execsql { 48 PRAGMA writable_schema=on; 49 UPDATE sqlite_master SET sql='nonsense'; 50 } 51 db close 52 catch { sqlite3 db test.db } 53 catchsql { DROP INDEX i1 } 54} {1 {malformed database schema (t1) - near "nonsense": syntax error}} 55 56finish_test 57