Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Changes to loadext.test so that it works on osx as well as linux. (CVS 5329) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
189cd85413a2e00696752bb82e7a442e |
User & Date: | danielk1977 2008-06-30 15:09:29.000 |
Context
2008-06-30
| ||
18:12 | Call the query flattener while processing the parent query. Previously, it was called while processing the sub-queries. (CVS 5330) (check-in: 6fcb3bffe2 user: danielk1977 tags: trunk) | |
15:09 | Changes to loadext.test so that it works on osx as well as linux. (CVS 5329) (check-in: 189cd85413 user: danielk1977 tags: trunk) | |
10:16 | Fix a malloc() failure related problem in os_unix.c. (CVS 5328) (check-in: ba8819a6f3 user: danielk1977 tags: trunk) | |
Changes
Changes to src/sqlite3ext.h.
︙ | ︙ | |||
11 12 13 14 15 16 17 | ************************************************************************* ** This header file defines the SQLite interface for use by ** shared libraries that want to be imported as extensions into ** an SQLite instance. Shared libraries that intend to be loaded ** as extensions by SQLite should #include this file instead of ** sqlite3.h. ** | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ************************************************************************* ** This header file defines the SQLite interface for use by ** shared libraries that want to be imported as extensions into ** an SQLite instance. Shared libraries that intend to be loaded ** as extensions by SQLite should #include this file instead of ** sqlite3.h. ** ** @(#) $Id: sqlite3ext.h,v 1.24 2008/06/30 15:09:29 danielk1977 Exp $ */ #ifndef _SQLITE3EXT_H_ #define _SQLITE3EXT_H_ #include "sqlite3.h" typedef struct sqlite3_api_routines sqlite3_api_routines; |
︙ | ︙ | |||
362 363 364 365 366 367 368 | #define sqlite3_extended_result_codes sqlite3_api->extended_result_codes #define sqlite3_limit sqlite3_api->limit #define sqlite3_next_stmt sqlite3_api->next_stmt #define sqlite3_sql sqlite3_api->sql #define sqlite3_status sqlite3_api->status #endif /* SQLITE_CORE */ | | | 362 363 364 365 366 367 368 369 370 371 372 | #define sqlite3_extended_result_codes sqlite3_api->extended_result_codes #define sqlite3_limit sqlite3_api->limit #define sqlite3_next_stmt sqlite3_api->next_stmt #define sqlite3_sql sqlite3_api->sql #define sqlite3_status sqlite3_api->status #endif /* SQLITE_CORE */ #define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api = 0; #define SQLITE_EXTENSION_INIT2(v) sqlite3_api = v; #endif /* _SQLITE3EXT_H_ */ |
Changes to test/loadext.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2006 July 14 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is extension loading. # | | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # 2006 July 14 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is extension loading. # # $Id: loadext.test,v 1.13 2008/06/30 15:09:29 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !load_ext { finish_test return } # The name of the test extension varies by operating system. # if {$::tcl_platform(platform) eq "windows"} { set testextension ./testloadext.dll } else { set testextension ./libtestloadext.so } set gcc_shared -shared if {$::tcl_platform(os) eq "Darwin"} { set gcc_shared -dynamiclib } # 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 because it does not exist, the # format of the message returned is: |
︙ | ︙ | |||
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # The exact error messages are not important. The important bit is # that SQLite is correctly copying the message from xDlError(). # set dlerror_nosuchfile \ {%s: cannot open shared object file: No such file or directory} set dlerror_notadll {%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. # if {![file exists $testextension]} { set srcdir [file dir $testdir]/src set testextsrc $srcdir/test_loadext.c if {[catch { | > > > > > > > | | 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 | # The exact error messages are not important. The important bit is # that SQLite is correctly copying the message from xDlError(). # set dlerror_nosuchfile \ {%s: cannot open shared object file: No such file or directory} set dlerror_notadll {%s: file too short} set dlerror_nosymbol {%s: undefined symbol: %s} if {$::tcl_platform(os) eq "Darwin"} { set dlerror_nosuchfile {dlopen(%s, 10): image not found} set dlerror_notadll {dlopen(%1$s, 10): no suitable image found. Did find: %1$s: file to short} set dlerror_nosymbol {dlsym(XXX, %2$s): symbol not found} } # 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. # if {![file exists $testextension]} { set srcdir [file dir $testdir]/src set testextsrc $srcdir/test_loadext.c if {[catch { exec gcc $gcc_shared -Wall -I$srcdir -I. -g $testextsrc -o $testextension } msg]} { puts "Skipping loadext tests: Test extension not built..." puts $msg finish_test return } } |
︙ | ︙ | |||
144 145 146 147 148 149 150 151 152 153 154 155 156 157 | # Try to load an extension for which the file is present but the # entry point is not. # do_test loadext-2.3 { set rc [catch { sqlite3_load_extension db $testextension icecream } msg] list $rc $msg } [list 1 [format $dlerror_nosymbol $testextension icecream]] # Try to load an extension for which the entry point fails (returns non-zero) # do_test loadext-2.4 { set rc [catch { | > > > | 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | # Try to load an extension for which the file is present but the # entry point is not. # do_test loadext-2.3 { set rc [catch { sqlite3_load_extension db $testextension icecream } msg] if {$::tcl_platform(os) eq "Darwin"} { regsub {0x[1234567890abcdefABCDEF]*} $msg XXX msg } list $rc $msg } [list 1 [format $dlerror_nosymbol $testextension icecream]] # Try to load an extension for which the entry point fails (returns non-zero) # do_test loadext-2.4 { set rc [catch { |
︙ | ︙ | |||
169 170 171 172 173 174 175 | sqlite3_enable_load_extension db 1 do_test loadext-3.1 { catchsql { SELECT half(5); } } {1 {no such function: half}} do_test loadext-3.2 { | | > > > > | 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | sqlite3_enable_load_extension db 1 do_test loadext-3.1 { catchsql { SELECT half(5); } } {1 {no such function: half}} do_test loadext-3.2 { set res [catchsql { SELECT load_extension($::testextension) }] if {$::tcl_platform(os) eq "Darwin"} { regsub {0x[1234567890abcdefABCDEF]*} $res XXX res } set res } [list 1 [format $dlerror_nosymbol $testextension sqlite3_extension_init]] do_test loadext-3.3 { catchsql { SELECT load_extension($::testextension,'testloadext_init') } } {0 {{}}} do_test loadext-3.4 { |
︙ | ︙ |