OLD | NEW |
| (Empty) |
1 # 2006 January 20 | |
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 implements tests for calling sqlite3_result_error() | |
14 # from within an aggregate function implementation. | |
15 # | |
16 # $Id: aggerror.test,v 1.3 2006/05/03 23:34:06 drh Exp $ | |
17 | |
18 set testdir [file dirname $argv0] | |
19 source $testdir/tester.tcl | |
20 | |
21 | |
22 # Add the x_count aggregate function to the database handle. | |
23 # x_count will error out if its input is 40 or 41 or if its | |
24 # final results is 42. Make sure that such errors are handled | |
25 # appropriately. | |
26 # | |
27 do_test aggerror-1.1 { | |
28 set DB [sqlite3_connection_pointer db] | |
29 sqlite3_create_aggregate $DB | |
30 execsql { | |
31 CREATE TABLE t1(a); | |
32 INSERT INTO t1 VALUES(1); | |
33 INSERT INTO t1 VALUES(2); | |
34 INSERT INTO t1 SELECT a+2 FROM t1; | |
35 INSERT INTO t1 SELECT a+4 FROM t1; | |
36 INSERT INTO t1 SELECT a+8 FROM t1; | |
37 INSERT INTO t1 SELECT a+16 FROM t1; | |
38 INSERT INTO t1 SELECT a+32 FROM t1 ORDER BY a LIMIT 7; | |
39 SELECT x_count(*) FROM t1; | |
40 } | |
41 } {39} | |
42 do_test aggerror-1.2 { | |
43 execsql { | |
44 INSERT INTO t1 VALUES(40); | |
45 SELECT x_count(*) FROM t1; | |
46 } | |
47 } {40} | |
48 do_test aggerror-1.3 { | |
49 catchsql { | |
50 SELECT x_count(a) FROM t1; | |
51 } | |
52 } {1 {value of 40 handed to x_count}} | |
53 ifcapable utf16 { | |
54 do_test aggerror-1.4 { | |
55 execsql { | |
56 UPDATE t1 SET a=41 WHERE a=40 | |
57 } | |
58 catchsql { | |
59 SELECT x_count(a) FROM t1; | |
60 } | |
61 } {1 abc} | |
62 } | |
63 do_test aggerror-1.5 { | |
64 execsql { | |
65 SELECT x_count(*) FROM t1 | |
66 } | |
67 } 40 | |
68 do_test aggerror-1.6 { | |
69 execsql { | |
70 INSERT INTO t1 VALUES(40); | |
71 INSERT INTO t1 VALUES(42); | |
72 } | |
73 catchsql { | |
74 SELECT x_count(*) FROM t1; | |
75 } | |
76 } {1 {x_count totals to 42}} | |
77 | |
78 finish_test | |
OLD | NEW |