Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Adjust some test cases in triggerC.test to handle non-default SQLITE_MAX_TRIGGER_DEPTH settings. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9d6c6129fd8be42c164f14bb90011b25 |
User & Date: | shaneh 2011-04-17 00:55:13.458 |
Context
2011-04-17
| ||
17:09 | Change the prototype for the open() system call to agree with Posix. Though a faulty function prototype in a pointer cast is a seemingly innocuous error, the correct prototype is necessary for pthreads to work correctly on NetBSD. (check-in: 3e135748f1 user: drh tags: trunk) | |
00:55 | Adjust some test cases in triggerC.test to handle non-default SQLITE_MAX_TRIGGER_DEPTH settings. (check-in: 9d6c6129fd user: shaneh tags: trunk) | |
2011-04-15
| ||
21:37 | Adjust test case in quota.test to handle Windows dir seperators. (check-in: 75ed1bcee8 user: shaneh tags: trunk) | |
Changes
Changes to test/triggerC.test.
︙ | ︙ | |||
242 243 244 245 246 247 248 | INSERT INTO t22 VALUES(1); SELECT count(*) FROM t22; } } {100} do_test triggerC-2.3 { | | | < > | | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | INSERT INTO t22 VALUES(1); SELECT count(*) FROM t22; } } {100} do_test triggerC-2.3 { execsql " CREATE TABLE t23(x PRIMARY KEY); CREATE TRIGGER t23a AFTER INSERT ON t23 BEGIN INSERT INTO t23 VALUES(new.x + 1); END; CREATE TRIGGER t23b BEFORE INSERT ON t23 BEGIN SELECT CASE WHEN new.x>[expr $SQLITE_MAX_TRIGGER_DEPTH / 2] THEN RAISE(IGNORE) ELSE NULL END; END; INSERT INTO t23 VALUES(1); SELECT count(*) FROM t23; " } [list [expr $SQLITE_MAX_TRIGGER_DEPTH / 2]] #----------------------------------------------------------------------- # This block of tests, triggerC-3.*, test that SQLite throws an exception # when it detects excessive recursion. # do_test triggerC-3.1.1 { |
︙ | ︙ | |||
284 285 286 287 288 289 290 | catchsql { INSERT INTO t3 VALUES(0,0) } } {1 {too many levels of trigger recursion}} do_test triggerC-3.1.3 { execsql { SELECT * FROM t3 } } {} do_test triggerC-3.2.1 { | | | < > | | < > | | | < > | | | < > | | | < > | | < > | | | < > | | | 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | catchsql { INSERT INTO t3 VALUES(0,0) } } {1 {too many levels of trigger recursion}} do_test triggerC-3.1.3 { execsql { SELECT * FROM t3 } } {} do_test triggerC-3.2.1 { execsql " CREATE TABLE t3b(x); CREATE TRIGGER t3bi AFTER INSERT ON t3b WHEN new.x<[expr $SQLITE_MAX_TRIGGER_DEPTH * 2] BEGIN INSERT INTO t3b VALUES(new.x+1); END; " catchsql { INSERT INTO t3b VALUES(1); } } {1 {too many levels of trigger recursion}} do_test triggerC-3.2.2 { db eval {SELECT * FROM t3b} } {} do_test triggerC-3.3.1 { catchsql " INSERT INTO t3b VALUES([expr $SQLITE_MAX_TRIGGER_DEPTH + 1]); " } {0 {}} do_test triggerC-3.3.2 { db eval {SELECT count(*), max(x), min(x) FROM t3b} } [list $SQLITE_MAX_TRIGGER_DEPTH [expr $SQLITE_MAX_TRIGGER_DEPTH * 2] [expr $SQLITE_MAX_TRIGGER_DEPTH + 1]] do_test triggerC-3.4.1 { catchsql " DELETE FROM t3b; INSERT INTO t3b VALUES([expr $SQLITE_MAX_TRIGGER_DEPTH - 1]); " } {1 {too many levels of trigger recursion}} do_test triggerC-3.4.2 { db eval {SELECT count(*), max(x), min(x) FROM t3b} } {0 {} {}} do_test triggerC-3.5.1 { sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH [expr $SQLITE_MAX_TRIGGER_DEPTH / 10] catchsql " INSERT INTO t3b VALUES([expr ($SQLITE_MAX_TRIGGER_DEPTH * 2) - ($SQLITE_MAX_TRIGGER_DEPTH / 10) + 1]); " } {0 {}} do_test triggerC-3.5.2 { db eval {SELECT count(*), max(x), min(x) FROM t3b} } [list [expr $SQLITE_MAX_TRIGGER_DEPTH / 10] [expr $SQLITE_MAX_TRIGGER_DEPTH * 2] [expr ($SQLITE_MAX_TRIGGER_DEPTH * 2) - ($SQLITE_MAX_TRIGGER_DEPTH / 10) + 1]] do_test triggerC-3.5.3 { catchsql " DELETE FROM t3b; INSERT INTO t3b VALUES([expr ($SQLITE_MAX_TRIGGER_DEPTH * 2) - ($SQLITE_MAX_TRIGGER_DEPTH / 10)]); " } {1 {too many levels of trigger recursion}} do_test triggerC-3.5.4 { db eval {SELECT count(*), max(x), min(x) FROM t3b} } {0 {} {}} do_test triggerC-3.6.1 { sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 1 catchsql " INSERT INTO t3b VALUES([expr $SQLITE_MAX_TRIGGER_DEPTH * 2]); " } {0 {}} do_test triggerC-3.6.2 { db eval {SELECT count(*), max(x), min(x) FROM t3b} } [list 1 [expr $SQLITE_MAX_TRIGGER_DEPTH * 2] [expr $SQLITE_MAX_TRIGGER_DEPTH * 2]] do_test triggerC-3.6.3 { catchsql " DELETE FROM t3b; INSERT INTO t3b VALUES([expr ($SQLITE_MAX_TRIGGER_DEPTH * 2) - 1]); " } {1 {too many levels of trigger recursion}} do_test triggerC-3.6.4 { db eval {SELECT count(*), max(x), min(x) FROM t3b} } {0 {} {}} sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH $SQLITE_MAX_TRIGGER_DEPTH #----------------------------------------------------------------------- # This next block of tests, triggerC-4.*, checks that affinity # transformations and constraint processing is performed at the correct # times relative to BEFORE and AFTER triggers. # # For an INSERT statement, for each row to be inserted: |
︙ | ︙ |