Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Unified Diff: third_party/sqlite/sqlite-src-3080704/test/insert4.test

Issue 2363173002: [sqlite] Remove obsolete reference version 3.8.7.4. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/sqlite/sqlite-src-3080704/test/insert4.test
diff --git a/third_party/sqlite/sqlite-src-3080704/test/insert4.test b/third_party/sqlite/sqlite-src-3080704/test/insert4.test
deleted file mode 100644
index 889d5e780780ed11ade6e6637f7cc1763df67f51..0000000000000000000000000000000000000000
--- a/third_party/sqlite/sqlite-src-3080704/test/insert4.test
+++ /dev/null
@@ -1,564 +0,0 @@
-# 2007 January 24
-#
-# The author disclaims copyright to this source code. In place of
-# a legal notice, here is a blessing:
-#
-# May you do good and not evil.
-# May you find forgiveness for yourself and forgive others.
-# May you share freely, never taking more than you give.
-#
-#***********************************************************************
-# This file implements regression tests for SQLite library. The
-# focus of this file is testing the INSERT transfer optimization.
-#
-# $Id: insert4.test,v 1.10 2008/01/21 16:22:46 drh Exp $
-
-set testdir [file dirname $argv0]
-source $testdir/tester.tcl
-
-ifcapable !view||!subquery {
- finish_test
- return
-}
-
-# The sqlite3_xferopt_count variable is incremented whenever the
-# insert transfer optimization applies.
-#
-# This procedure runs a test to see if the sqlite3_xferopt_count is
-# set to N.
-#
-proc xferopt_test {testname N} {
- do_test $testname {set ::sqlite3_xferopt_count} $N
-}
-
-# Create tables used for testing.
-#
-execsql {
- PRAGMA legacy_file_format = 0;
- CREATE TABLE t1(a int, b int, check(b>a));
- CREATE TABLE t2(x int, y int);
- CREATE VIEW v2 AS SELECT y, x FROM t2;
- CREATE TABLE t3(a int, b int);
-}
-
-# Ticket #2252. Make sure the an INSERT from identical tables
-# does not violate constraints.
-#
-do_test insert4-1.1 {
- set sqlite3_xferopt_count 0
- execsql {
- DELETE FROM t1;
- DELETE FROM t2;
- INSERT INTO t2 VALUES(9,1);
- }
- catchsql {
- INSERT INTO t1 SELECT * FROM t2;
- }
-} {1 {CHECK constraint failed: t1}}
-xferopt_test insert4-1.2 0
-do_test insert4-1.3 {
- execsql {
- SELECT * FROM t1;
- }
-} {}
-
-# Tests to make sure that the transfer optimization is not occurring
-# when it is not a valid optimization.
-#
-# The SELECT must be against a real table.
-do_test insert4-2.1.1 {
- execsql {
- DELETE FROM t1;
- INSERT INTO t1 SELECT 4, 8;
- SELECT * FROM t1;
- }
-} {4 8}
-xferopt_test insert4-2.1.2 0
-do_test insert4-2.2.1 {
- catchsql {
- DELETE FROM t1;
- INSERT INTO t1 SELECT * FROM v2;
- SELECT * FROM t1;
- }
-} {0 {1 9}}
-xferopt_test insert4-2.2.2 0
-
-# Do not run the transfer optimization if there is a LIMIT clause
-#
-do_test insert4-2.3.1 {
- execsql {
- DELETE FROM t2;
- INSERT INTO t2 VALUES(9,1);
- INSERT INTO t2 SELECT y, x FROM t2;
- INSERT INTO t3 SELECT * FROM t2 LIMIT 1;
- SELECT * FROM t3;
- }
-} {9 1}
-xferopt_test insert4-2.3.2 0
-do_test insert4-2.3.3 {
- catchsql {
- DELETE FROM t1;
- INSERT INTO t1 SELECT * FROM t2 LIMIT 1;
- SELECT * FROM t1;
- }
-} {1 {CHECK constraint failed: t1}}
-xferopt_test insert4-2.3.4 0
-
-# Do not run the transfer optimization if there is a DISTINCT
-#
-do_test insert4-2.4.1 {
- execsql {
- DELETE FROM t3;
- INSERT INTO t3 SELECT DISTINCT * FROM t2;
- SELECT * FROM t3;
- }
-} {9 1 1 9}
-xferopt_test insert4-2.4.2 0
-do_test insert4-2.4.3 {
- catchsql {
- DELETE FROM t1;
- INSERT INTO t1 SELECT DISTINCT * FROM t2;
- }
-} {1 {CHECK constraint failed: t1}}
-xferopt_test insert4-2.4.4 0
-
-# The following procedure constructs two tables then tries to transfer
-# data from one table to the other. Checks are made to make sure the
-# transfer is successful and that the transfer optimization was used or
-# not, as appropriate.
-#
-# xfer_check TESTID XFER-USED INIT-DATA DEST-SCHEMA SRC-SCHEMA
-#
-# The TESTID argument is the symbolic name for this test. The XFER-USED
-# argument is true if the transfer optimization should be employed and
-# false if not. INIT-DATA is a single row of data that is to be
-# transfered. DEST-SCHEMA and SRC-SCHEMA are table declarations for
-# the destination and source tables.
-#
-proc xfer_check {testid xferused initdata destschema srcschema} {
- execsql "CREATE TABLE dest($destschema)"
- execsql "CREATE TABLE src($srcschema)"
- execsql "INSERT INTO src VALUES([join $initdata ,])"
- set ::sqlite3_xferopt_count 0
- do_test $testid.1 {
- execsql {
- INSERT INTO dest SELECT * FROM src;
- SELECT * FROM dest;
- }
- } $initdata
- do_test $testid.2 {
- set ::sqlite3_xferopt_count
- } $xferused
- execsql {
- DROP TABLE dest;
- DROP TABLE src;
- }
-}
-
-
-# Do run the transfer optimization if tables have identical
-# CHECK constraints.
-#
-xfer_check insert4-3.1 1 {1 9} \
- {a int, b int CHECK(b>a)} \
- {x int, y int CHECK(y>x)}
-xfer_check insert4-3.2 1 {1 9} \
- {a int, b int CHECK(b>a)} \
- {x int CHECK(y>x), y int}
-
-# Do run the transfer optimization if the destination table lacks
-# any CHECK constraints regardless of whether or not there are CHECK
-# constraints on the source table.
-#
-xfer_check insert4-3.3 1 {1 9} \
- {a int, b int} \
- {x int, y int CHECK(y>x)}
-
-# Do run the transfer optimization if the destination table omits
-# NOT NULL constraints that the source table has.
-#
-xfer_check insert4-3.4 0 {1 9} \
- {a int, b int CHECK(b>a)} \
- {x int, y int}
-
-# Do not run the optimization if the destination has NOT NULL
-# constraints that the source table lacks.
-#
-xfer_check insert4-3.5 0 {1 9} \
- {a int, b int NOT NULL} \
- {x int, y int}
-xfer_check insert4-3.6 0 {1 9} \
- {a int, b int NOT NULL} \
- {x int NOT NULL, y int}
-xfer_check insert4-3.7 0 {1 9} \
- {a int NOT NULL, b int NOT NULL} \
- {x int NOT NULL, y int}
-xfer_check insert4-3.8 0 {1 9} \
- {a int NOT NULL, b int} \
- {x int, y int}
-
-
-# Do run the transfer optimization if the destination table and
-# source table have the same NOT NULL constraints or if the
-# source table has extra NOT NULL constraints.
-#
-xfer_check insert4-3.9 1 {1 9} \
- {a int, b int} \
- {x int NOT NULL, y int}
-xfer_check insert4-3.10 1 {1 9} \
- {a int, b int} \
- {x int NOT NULL, y int NOT NULL}
-xfer_check insert4-3.11 1 {1 9} \
- {a int NOT NULL, b int} \
- {x int NOT NULL, y int NOT NULL}
-xfer_check insert4-3.12 1 {1 9} \
- {a int, b int NOT NULL} \
- {x int NOT NULL, y int NOT NULL}
-
-# Do not run the optimization if any corresponding table
-# columns have different affinities.
-#
-xfer_check insert4-3.20 0 {1 9} \
- {a text, b int} \
- {x int, b int}
-xfer_check insert4-3.21 0 {1 9} \
- {a int, b int} \
- {x text, b int}
-
-# "int" and "integer" are equivalent so the optimization should
-# run here.
-#
-xfer_check insert4-3.22 1 {1 9} \
- {a int, b int} \
- {x integer, b int}
-
-# Ticket #2291.
-#
-
-do_test insert4-4.1a {
- execsql {CREATE TABLE t4(a, b, UNIQUE(a,b))}
-} {}
-ifcapable vacuum {
- do_test insert4-4.1b {
- execsql {
- INSERT INTO t4 VALUES(NULL,0);
- INSERT INTO t4 VALUES(NULL,1);
- INSERT INTO t4 VALUES(NULL,1);
- VACUUM;
- }
- } {}
-}
-
-# Check some error conditions:
-#
-do_test insert4-5.1 {
- # Table does not exist.
- catchsql { INSERT INTO t2 SELECT a, b FROM nosuchtable }
-} {1 {no such table: nosuchtable}}
-do_test insert4-5.2 {
- # Number of columns does not match.
- catchsql {
- CREATE TABLE t5(a, b, c);
- INSERT INTO t4 SELECT * FROM t5;
- }
-} {1 {table t4 has 2 columns but 3 values were supplied}}
-
-do_test insert4-6.1 {
- set ::sqlite3_xferopt_count 0
- execsql {
- CREATE INDEX t2_i2 ON t2(x, y COLLATE nocase);
- CREATE INDEX t2_i1 ON t2(x ASC, y DESC);
- CREATE INDEX t3_i1 ON t3(a, b);
- INSERT INTO t2 SELECT * FROM t3;
- }
- set ::sqlite3_xferopt_count
-} {0}
-do_test insert4-6.2 {
- set ::sqlite3_xferopt_count 0
- execsql {
- DROP INDEX t2_i2;
- INSERT INTO t2 SELECT * FROM t3;
- }
- set ::sqlite3_xferopt_count
-} {0}
-do_test insert4-6.3 {
- set ::sqlite3_xferopt_count 0
- execsql {
- DROP INDEX t2_i1;
- CREATE INDEX t2_i1 ON t2(x ASC, y ASC);
- INSERT INTO t2 SELECT * FROM t3;
- }
- set ::sqlite3_xferopt_count
-} {1}
-do_test insert4-6.4 {
- set ::sqlite3_xferopt_count 0
- execsql {
- DROP INDEX t2_i1;
- CREATE INDEX t2_i1 ON t2(x ASC, y COLLATE RTRIM);
- INSERT INTO t2 SELECT * FROM t3;
- }
- set ::sqlite3_xferopt_count
-} {0}
-
-
-do_test insert4-6.5 {
- execsql {
- CREATE TABLE t6a(x CHECK( x<>'abc' ));
- INSERT INTO t6a VALUES('ABC');
- SELECT * FROM t6a;
- }
-} {ABC}
-do_test insert4-6.6 {
- execsql {
- CREATE TABLE t6b(x CHECK( x<>'abc' COLLATE nocase ));
- }
- catchsql {
- INSERT INTO t6b SELECT * FROM t6a;
- }
-} {1 {CHECK constraint failed: t6b}}
-do_test insert4-6.7 {
- execsql {
- DROP TABLE t6b;
- CREATE TABLE t6b(x CHECK( x COLLATE nocase <>'abc' ));
- }
- catchsql {
- INSERT INTO t6b SELECT * FROM t6a;
- }
-} {1 {CHECK constraint failed: t6b}}
-
-# Ticket [6284df89debdfa61db8073e062908af0c9b6118e]
-# Disable the xfer optimization if the destination table contains
-# a foreign key constraint
-#
-ifcapable foreignkey {
- do_test insert4-7.1 {
- set ::sqlite3_xferopt_count 0
- execsql {
- CREATE TABLE t7a(x INTEGER PRIMARY KEY); INSERT INTO t7a VALUES(123);
- CREATE TABLE t7b(y INTEGER REFERENCES t7a);
- CREATE TABLE t7c(z INT); INSERT INTO t7c VALUES(234);
- INSERT INTO t7b SELECT * FROM t7c;
- SELECT * FROM t7b;
- }
- } {234}
- do_test insert4-7.2 {
- set ::sqlite3_xferopt_count
- } {1}
- do_test insert4-7.3 {
- set ::sqlite3_xferopt_count 0
- execsql {
- DELETE FROM t7b;
- PRAGMA foreign_keys=ON;
- }
- catchsql {
- INSERT INTO t7b SELECT * FROM t7c;
- }
- } {1 {FOREIGN KEY constraint failed}}
- do_test insert4-7.4 {
- execsql {SELECT * FROM t7b}
- } {}
- do_test insert4-7.5 {
- set ::sqlite3_xferopt_count
- } {0}
- do_test insert4-7.6 {
- set ::sqlite3_xferopt_count 0
- execsql {
- DELETE FROM t7b; DELETE FROM t7c;
- INSERT INTO t7c VALUES(123);
- INSERT INTO t7b SELECT * FROM t7c;
- SELECT * FROM t7b;
- }
- } {123}
- do_test insert4-7.7 {
- set ::sqlite3_xferopt_count
- } {0}
- do_test insert4-7.7 {
- set ::sqlite3_xferopt_count 0
- execsql {
- PRAGMA foreign_keys=OFF;
- DELETE FROM t7b;
- INSERT INTO t7b SELECT * FROM t7c;
- SELECT * FROM t7b;
- }
- } {123}
- do_test insert4-7.8 {
- set ::sqlite3_xferopt_count
- } {1}
-}
-
-# Ticket [676bc02b87176125635cb174d110b431581912bb]
-# Make sure INTEGER PRIMARY KEY ON CONFLICT ... works with the xfer
-# optimization.
-#
-do_test insert4-8.1 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT REPLACE, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT REPLACE, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-do_test insert4-8.2 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT REPLACE, b);
- CREATE TABLE t2(x, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-do_test insert4-8.3 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT IGNORE, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT IGNORE, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 2}
-do_test insert4-8.4 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT IGNORE, b);
- CREATE TABLE t2(x, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 2}
-do_test insert4-8.5 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT FAIL, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT FAIL, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(-99,100);
- INSERT INTO t2 VALUES(1,3);
- SELECT * FROM t1;
- }
- catchsql {
- INSERT INTO t1 SELECT * FROM t2;
- }
-} {1 {UNIQUE constraint failed: t1.a}}
-do_test insert4-8.6 {
- execsql {
- SELECT * FROM t1;
- }
-} {-99 100 1 2}
-do_test insert4-8.7 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT ABORT, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT ABORT, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(-99,100);
- INSERT INTO t2 VALUES(1,3);
- SELECT * FROM t1;
- }
- catchsql {
- INSERT INTO t1 SELECT * FROM t2;
- }
-} {1 {UNIQUE constraint failed: t1.a}}
-do_test insert4-8.8 {
- execsql {
- SELECT * FROM t1;
- }
-} {1 2}
-do_test insert4-8.9 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT ROLLBACK, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT ROLLBACK, y);
- INSERT INTO t1 VALUES(1,2);
- INSERT INTO t2 VALUES(-99,100);
- INSERT INTO t2 VALUES(1,3);
- SELECT * FROM t1;
- }
- catchsql {
- BEGIN;
- INSERT INTO t1 VALUES(2,3);
- INSERT INTO t1 SELECT * FROM t2;
- }
-} {1 {UNIQUE constraint failed: t1.a}}
-do_test insert4-8.10 {
- catchsql {COMMIT}
-} {1 {cannot commit - no transaction is active}}
-do_test insert4-8.11 {
- execsql {
- SELECT * FROM t1;
- }
-} {1 2}
-
-do_test insert4-8.21 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT REPLACE, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT REPLACE, y);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-do_test insert4-8.22 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT IGNORE, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT IGNORE, y);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-do_test insert4-8.23 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT ABORT, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT ABORT, y);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-do_test insert4-8.24 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT FAIL, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT FAIL, y);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-do_test insert4-8.25 {
- execsql {
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1(a INTEGER PRIMARY KEY ON CONFLICT ROLLBACK, b);
- CREATE TABLE t2(x INTEGER PRIMARY KEY ON CONFLICT ROLLBACK, y);
- INSERT INTO t2 VALUES(1,3);
- INSERT INTO t1 SELECT * FROM t2;
- SELECT * FROM t1;
- }
-} {1 3}
-
-
-finish_test
« no previous file with comments | « third_party/sqlite/sqlite-src-3080704/test/insert3.test ('k') | third_party/sqlite/sqlite-src-3080704/test/insert5.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698