-C Change\sthe\swindows\stempfile\sname\sgenerator\sso\sthat\sit\suses\s119\sbits\nof\srandomness\sand\sdoes\snot\sbother\sto\scheck\sto\ssee\sif\sthe\sfile\salready\nexists.\s\sTicket\s#2608.\s\s(Unable\sto\stest\sfrom\sthis\smachine,\sbut\sthe\nchanges\sare\ssimple\sand\sisolated.\s\sHope\sit\sworks.)\s(CVS\s4357)
-D 2007-09-01T02:13:11
+C Call\ssqlite3OsDlError\sto\sobtain\serror\sinformation\safter\sDlOpen\sor\sDlSym\sfail.\s(CVS\s4358)
+D 2007-09-01T05:57:50
F Makefile.in bfcc303429a5d9dcd552d807ee016c77427418c3
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/journal.c 2e0fb96d5e407a28b756b4a8b3694f2dccabe7f8
F src/legacy.c 4ac53191fad2e3c4d59bde1228879b2dc5a96d66
F src/limits.h 71ab25f17e35e0a9f3f6f234b8ed49cc56731d35
-F src/loadext.c d8a41422b7c2a79d4cf89a62da404d6b786704cf
+F src/loadext.c 6894dbbf1666577d957922811620375d6c2f058d
F src/main.c 00a894cd348d8d3651097bb8136f03e53afa644b
F src/malloc.c de4e77fe70a9a0ac47a1c3a874422b107231bf31
F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
F test/laststmtchanges.test 18ead86c8a87ade949a1d5658f6dc4bb111d1b02
F test/like.test 9b8eb634d2c34b36b365c1baae115c9bd6e56674
F test/limit.test 2a87b9cb2165abb49ca0ddcf5cb43cf24074581f
-F test/loadext.test 9ab2cb0226329c1a62dd45d204be95158a872201
+F test/loadext.test ea04ac20e20e3f42514f55487ef9a9d6fda51bd1
F test/loadext2.test 95ca7e2cb03fd3e068de97c3a2fe58dbdfd769e1
F test/lock.test 6825aea0b5885578b1b63a3b178803842c4ee9f1
F test/lock2.test 5f9557b775662c2a5ee435378f39e10d64f65cb3
F test/speed1.test 22e1b27af0683ed44dcd2f93ed817a9c3e65084a
F test/speed2.test 53177056baf6556dcbdcf032bbdfc41c1aa74ded
F test/speed3.test 55e039b34d505aa442cee415f83c451ae28b3123
-F test/sqllimits1.test cd2069518d1a1d7b5406b8f26fc8436aa87268e8
+F test/sqllimits1.test 6974f124d9333510bb2c3e796012b5ec48844db3
F test/subquery.test ae324ee928c5fb463a3ce08a8860d6e7f1ca5797
F test/subselect.test 974e87f8fc91c5f00dd565316d396a5a6c3106c4
F test/substr.test 9f26cfca74397b26ab217fb838c3d0549eb4bcf3
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 8f73ebc6e30467d2c594701e0aa45b53147ef2ef
-R 47873120abe0056067c2bbb673058814
-U drh
-Z 9ba63200ed790f0c99661e3e7809f71e
+P ca6c1e3f44d8b9d9b76a0efe53ea6a6ad5e14d57
+R bc8176723b1b67ea3809dd5ad6b3d1c7
+U danielk1977
+Z 3bc8cc7848a229a5523b979148fa9e5d
-ca6c1e3f44d8b9d9b76a0efe53ea6a6ad5e14d57
\ No newline at end of file
+3d74256c9123e8434c68e6a0c5b61686b34a4328
\ No newline at end of file
handle = sqlite3OsDlOpen(pVfs, zFile);
if( handle==0 ){
if( pzErrMsg ){
- *pzErrMsg = sqlite3_mprintf("unable to open shared library [%s]", zFile);
+ char zErr[256];
+ zErr[sizeof(zErr)-1] = '\0';
+ sqlite3_snprintf(sizeof(zErr)-1, zErr,
+ "unable to open shared library [%s]", zFile);
+ sqlite3OsDlError(pVfs, sizeof(zErr)-1, zErr);
+ *pzErrMsg = sqlite3DbStrDup(db, zErr);
}
return SQLITE_ERROR;
}
sqlite3OsDlSym(pVfs, handle, zProc);
if( xInit==0 ){
if( pzErrMsg ){
- *pzErrMsg = sqlite3_mprintf("no entry point [%s] in shared library [%s]",
- zProc, zFile);
+ char zErr[256];
+ zErr[sizeof(zErr)-1] = '\0';
+ sqlite3_snprintf(sizeof(zErr)-1, zErr,
+ "no entry point [%s] in shared library [%s]", zProc,zFile);
+ sqlite3OsDlError(pVfs, sizeof(zErr)-1, zErr);
+ *pzErrMsg = sqlite3DbStrDup(db, zErr);
+ sqlite3OsDlClose(pVfs, handle);
}
- sqlite3OsDlClose(pVfs, handle);
return SQLITE_ERROR;
}else if( xInit(db, &zErrmsg, &sqlite3_apis) ){
if( pzErrMsg ){
# This file implements regression tests for SQLite library. The
# focus of this script is extension loading.
#
-# $Id: loadext.test,v 1.9 2007/04/06 21:42:22 drh Exp $
+# $Id: loadext.test,v 1.10 2007/09/01 05:57:50 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testextension ./libtestloadext.so
}
+# The error messages tested by this file are operating system dependent
+# (because they are returned by sqlite3OsDlError()). For now, they only
+# work with UNIX (and probably only certain kinds of UNIX).
+#
+# When a shared-object cannot be opened, we expect the error message to
+# be:
+#
+# [format $dlerror_cantopen <shared-object-name>]
+#
+# When a symbol cannot be found within an open shared-object, the error
+# message should be:
+#
+# [format $dlerror_nosymbol <shared-object-name> <symbol-name>]
+#
+set dlerror_cantopen {%s: file too short}
+set dlerror_nosymbol {%s: undefined symbol: %s}
+
# Make sure the test extension actually exists. If it does not
# exist, try to create it. If unable to create it, then skip this
# test file.
sqlite3_load_extension db "${testextension}xx"
} msg]
list $rc $msg
-} [list 1 [subst -nocommands \
- {unable to open shared library [${testextension}xx]}
-]]
+} [list 1 [format $dlerror_cantopen ${testextension}xx]]
# Try to load an extension for which the file is not a shared object
#
sqlite3_load_extension db "${testextension}xx"
} msg]
list $rc $msg
-} [list 1 [subst -nocommands \
- {unable to open shared library [${testextension}xx]}
-]]
+} [list 1 [format $dlerror_cantopen ${testextension}xx]]
# Try to load an extension for which the file is present but the
# entry point is not.
sqlite3_load_extension db $testextension icecream
} msg]
list $rc $msg
-} [list 1 [subst -nocommands \
- {no entry point [icecream] in shared library [$testextension]}
-]]
+} [list 1 [format $dlerror_nosymbol $testextension icecream]]
# Try to load an extension for which the entry point fails (returns non-zero)
#
catchsql {
SELECT load_extension($::testextension)
}
-} [list 1 "no entry point \[sqlite3_extension_init\]\
- in shared library \[$testextension\]"]
+} [list 1 [format $dlerror_nosymbol $testextension sqlite3_extension_init]]
do_test loadext-3.3 {
catchsql {
SELECT load_extension($::testextension,'testloadext_init')
# This file contains tests to verify that the limits defined in
# sqlite source file limits.h are enforced.
#
-# $Id: sqllimits1.test,v 1.11 2007/08/31 17:42:48 danielk1977 Exp $
+# $Id: sqllimits1.test,v 1.12 2007/09/01 05:57:50 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
# sqllimits-12.*: SQLITE_MAX_PAGE_COUNT (sqlite todo)
#
-set SQLITE_MAX_LENGTH 1000000
+set SQLITE_MAX_LENGTH 100000
set SQLITE_MAX_COLUMN
set SQLITE_MAX_SQL_LENGTH 100000
set SQLITE_MAX_EXPR_DEPTH 1000
catchsql { SELECT replace($::str, 'A', $::rep) }
} {1 {string or blob too big}}
+do_test sqllimits-1.10 {
+ set ::str [string repeat %J 2100]
+ catchsql { SELECT strftime($::str, '2003-10-31') }
+} {1 {string or blob too big}}
+
#--------------------------------------------------------------------
# Test cases sqllimits-2.* test that the SQLITE_MAX_SQL_LENGTH limit
# is enforced.