Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a test case that uses a trigger to insert many rows to sqllimits1.test. (CVS 3953) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
6368222558d00f968b49f862bfe67257 |
User & Date: | danielk1977 2007-05-08 16:13:45.000 |
Context
2007-05-08
| ||
17:54 | Add a few more tests to sqllimit1.test. (CVS 3954) (check-in: eeee6b71e5 user: danielk1977 tags: trunk) | |
16:13 | Add a test case that uses a trigger to insert many rows to sqllimits1.test. (CVS 3953) (check-in: 6368222558 user: danielk1977 tags: trunk) | |
15:59 | Add new test file sqllimits1.test. (CVS 3952) (check-in: c897460397 user: danielk1977 tags: trunk) | |
Changes
Changes to test/sqllimits1.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file contains tests to verify that the limits defined in # sqlite source file limits.h are enforced. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file contains tests to verify that the limits defined in # sqlite source file limits.h are enforced. # # $Id: sqllimits1.test,v 1.2 2007/05/08 16:13:45 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl #-------------------------------------------------------------------- # Test cases sqllimits-1.* test that the SQLITE_MAX_LENGTH limit # is enforced. |
︙ | ︙ | |||
40 41 42 43 44 45 46 | do_test sqllimits-1.4 { set ::str [string repeat A 65537] set ::rep [string repeat B 65537] catchsql { SELECT replace($::str, 'A', $::rep) } } {1 {string or blob too big}} #-------------------------------------------------------------------- | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | do_test sqllimits-1.4 { set ::str [string repeat A 65537] set ::rep [string repeat B 65537] catchsql { SELECT replace($::str, 'A', $::rep) } } {1 {string or blob too big}} #-------------------------------------------------------------------- # Test cases sqllimits-2.* test that the SQLITE_MAX_SQL limit # is enforced. # do_test sqllimits-2.1 { set sql "SELECT 1 WHERE 1==1" append sql [string repeat " AND 1==1" 200000] catchsql $sql } {1 {String or BLOB exceeded size limit}} #-------------------------------------------------------------------- # Test cases sqllimits-3.* test that the limit set using the # max_page_count pragma. # do_test sqllimits-3.1 { execsql { PRAGMA max_page_count = 1000; } } {1000} do_test sqllimits-3.2 { execsql { CREATE TABLE trig (a INTEGER, b INTEGER); } # Set up a tree of triggers to fire when a row is inserted # into table "trig". # # INSERT -> insert_b -> update_b -> insert_a -> update_a (chain 1) # -> update_a -> insert_a -> update_b (chain 2) # -> insert_a -> update_b -> insert_b -> update_a (chain 3) # -> update_a -> insert_b -> update_b (chain 4) # # Table starts with N rows. # # Chain 1: insert_b (update N rows) # -> update_b (insert 1 rows) # -> insert_a (update N rows) # -> update_a (insert 1 rows) # # chains 2, 3 and 4 are similar. Each inserts more than N^2 rows, where # N is the number of rows at the conclusion of the previous chain. # # Therefore, a single insert adds (N^16 plus some) rows to the database. # A really long loop... # execsql { CREATE TRIGGER update_b BEFORE UPDATE ON trig FOR EACH ROW BEGIN INSERT INTO trig VALUES (65, 'update_b'); END; CREATE TRIGGER update_a AFTER UPDATE ON trig FOR EACH ROW BEGIN INSERT INTO trig VALUES (65, 'update_a'); END; CREATE TRIGGER insert_b BEFORE INSERT ON trig FOR EACH ROW BEGIN UPDATE trig SET a = 1; END; CREATE TRIGGER insert_a AFTER INSERT ON trig FOR EACH ROW BEGIN UPDATE trig SET a = 1; END; } } {} do_test sqllimits1-3.3 { execsql { INSERT INTO trig VALUES (1,1); } } {} do_test sqllimits1-3.4 { execsql { SELECT COUNT(*) FROM trig; } } {7} # This tries to insert so many rows it fills up the database (limited # to 1MB, so not that noteworthy an achievement). # do_test sqllimits1-3.5 { catchsql { INSERT INTO trig VALUES (1,10); } } {1 {database or disk is full}} do_test sqllimits1-3.6 { catchsql { SELECT COUNT(*) FROM trig; } } {0 7} finish_test |