AryaWu/sqlite
0
1# 2006 January 202#3# The author disclaims copyright to this source code. In place of4# 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 18set testdir [file dirname $argv0]19source $testdir/tester.tcl20 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 its24# final results is 42. Make sure that such errors are handled25# appropriately.26#27do_test aggerror-1.1 {28 set DB [sqlite3_connection_pointer db]29 sqlite3_create_aggregate $DB30 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}42do_test aggerror-1.2 {43 execsql {44 INSERT INTO t1 VALUES(40);45 SELECT x_count(*) FROM t1;46 }47} {40}48do_test aggerror-1.3 {49 catchsql {50 SELECT x_count(a) FROM t1;51 }52} {1 {value of 40 handed to x_count}}53ifcapable utf16 {54 do_test aggerror-1.4 {55 execsql {56 UPDATE t1 SET a=41 WHERE a=4057 }58 catchsql {59 SELECT x_count(a) FROM t1;60 }61 } {1 abc}62}63do_test aggerror-1.5 {64 execsql {65 SELECT x_count(*) FROM t166 }67} 4068do_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 78finish_test79 