Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Side by Side Diff: third_party/sqlite/src/src/test4.c

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/src/test3.c ('k') | third_party/sqlite/src/src/test5.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ** 2003 December 18 2 ** 2003 December 18
3 ** 3 **
4 ** The author disclaims copyright to this source code. In place of 4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing: 5 ** a legal notice, here is a blessing:
6 ** 6 **
7 ** May you do good and not evil. 7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others. 8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give. 9 ** May you share freely, never taking more than you give.
10 ** 10 **
11 ************************************************************************* 11 *************************************************************************
12 ** Code for testing the SQLite library in a multithreaded environment. 12 ** Code for testing the SQLite library in a multithreaded environment.
13 */ 13 */
14 #include "sqliteInt.h" 14 #include "sqliteInt.h"
15 #include "tcl.h" 15 #if defined(INCLUDE_SQLITE_TCL_H)
16 # include "sqlite_tcl.h"
17 #else
18 # include "tcl.h"
19 #endif
16 #if SQLITE_OS_UNIX && SQLITE_THREADSAFE 20 #if SQLITE_OS_UNIX && SQLITE_THREADSAFE
17 #include <stdlib.h> 21 #include <stdlib.h>
18 #include <string.h> 22 #include <string.h>
19 #include <pthread.h> 23 #include <pthread.h>
20 #include <sched.h> 24 #include <sched.h>
21 #include <ctype.h> 25 #include <ctype.h>
22 26
23 extern const char *sqlite3ErrName(int); 27 extern const char *sqlite3ErrName(int);
24 28
25 /* 29 /*
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 118 }
115 return zArg[0] - 'A'; 119 return zArg[0] - 'A';
116 } 120 }
117 121
118 /* 122 /*
119 ** Usage: thread_create NAME FILENAME 123 ** Usage: thread_create NAME FILENAME
120 ** 124 **
121 ** NAME should be an upper case letter. Start the thread running with 125 ** NAME should be an upper case letter. Start the thread running with
122 ** an open connection to the given database. 126 ** an open connection to the given database.
123 */ 127 */
124 static int tcl_thread_create( 128 static int SQLITE_TCLAPI tcl_thread_create(
125 void *NotUsed, 129 void *NotUsed,
126 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 130 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
127 int argc, /* Number of arguments */ 131 int argc, /* Number of arguments */
128 const char **argv /* Text of each argument */ 132 const char **argv /* Text of each argument */
129 ){ 133 ){
130 int i; 134 int i;
131 pthread_t x; 135 pthread_t x;
132 int rc; 136 int rc;
133 137
134 if( argc!=3 ){ 138 if( argc!=3 ){
(...skipping 28 matching lines...) Expand all
163 */ 167 */
164 static void thread_wait(Thread *p){ 168 static void thread_wait(Thread *p){
165 while( p->opnum>p->completed ) sched_yield(); 169 while( p->opnum>p->completed ) sched_yield();
166 } 170 }
167 171
168 /* 172 /*
169 ** Usage: thread_wait ID 173 ** Usage: thread_wait ID
170 ** 174 **
171 ** Wait on thread ID to reach its idle state. 175 ** Wait on thread ID to reach its idle state.
172 */ 176 */
173 static int tcl_thread_wait( 177 static int SQLITE_TCLAPI tcl_thread_wait(
174 void *NotUsed, 178 void *NotUsed,
175 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 179 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
176 int argc, /* Number of arguments */ 180 int argc, /* Number of arguments */
177 const char **argv /* Text of each argument */ 181 const char **argv /* Text of each argument */
178 ){ 182 ){
179 int i; 183 int i;
180 184
181 if( argc!=2 ){ 185 if( argc!=2 ){
182 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 186 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
183 " ID", 0); 187 " ID", 0);
(...skipping 23 matching lines...) Expand all
207 p->zFilename = 0; 211 p->zFilename = 0;
208 p->busy = 0; 212 p->busy = 0;
209 } 213 }
210 214
211 /* 215 /*
212 ** Usage: thread_halt ID 216 ** Usage: thread_halt ID
213 ** 217 **
214 ** Cause a thread to shut itself down. Wait for the shutdown to be 218 ** Cause a thread to shut itself down. Wait for the shutdown to be
215 ** completed. If ID is "*" then stop all threads. 219 ** completed. If ID is "*" then stop all threads.
216 */ 220 */
217 static int tcl_thread_halt( 221 static int SQLITE_TCLAPI tcl_thread_halt(
218 void *NotUsed, 222 void *NotUsed,
219 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 223 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
220 int argc, /* Number of arguments */ 224 int argc, /* Number of arguments */
221 const char **argv /* Text of each argument */ 225 const char **argv /* Text of each argument */
222 ){ 226 ){
223 int i; 227 int i;
224 228
225 if( argc!=2 ){ 229 if( argc!=2 ){
226 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 230 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
227 " ID", 0); 231 " ID", 0);
(...skipping 14 matching lines...) Expand all
242 } 246 }
243 return TCL_OK; 247 return TCL_OK;
244 } 248 }
245 249
246 /* 250 /*
247 ** Usage: thread_argc ID 251 ** Usage: thread_argc ID
248 ** 252 **
249 ** Wait on the most recent thread_step to complete, then return the 253 ** Wait on the most recent thread_step to complete, then return the
250 ** number of columns in the result set. 254 ** number of columns in the result set.
251 */ 255 */
252 static int tcl_thread_argc( 256 static int SQLITE_TCLAPI tcl_thread_argc(
253 void *NotUsed, 257 void *NotUsed,
254 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 258 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
255 int argc, /* Number of arguments */ 259 int argc, /* Number of arguments */
256 const char **argv /* Text of each argument */ 260 const char **argv /* Text of each argument */
257 ){ 261 ){
258 int i; 262 int i;
259 char zBuf[100]; 263 char zBuf[100];
260 264
261 if( argc!=2 ){ 265 if( argc!=2 ){
262 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 266 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 11 matching lines...) Expand all
274 Tcl_AppendResult(interp, zBuf, 0); 278 Tcl_AppendResult(interp, zBuf, 0);
275 return TCL_OK; 279 return TCL_OK;
276 } 280 }
277 281
278 /* 282 /*
279 ** Usage: thread_argv ID N 283 ** Usage: thread_argv ID N
280 ** 284 **
281 ** Wait on the most recent thread_step to complete, then return the 285 ** Wait on the most recent thread_step to complete, then return the
282 ** value of the N-th columns in the result set. 286 ** value of the N-th columns in the result set.
283 */ 287 */
284 static int tcl_thread_argv( 288 static int SQLITE_TCLAPI tcl_thread_argv(
285 void *NotUsed, 289 void *NotUsed,
286 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 290 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
287 int argc, /* Number of arguments */ 291 int argc, /* Number of arguments */
288 const char **argv /* Text of each argument */ 292 const char **argv /* Text of each argument */
289 ){ 293 ){
290 int i; 294 int i;
291 int n; 295 int n;
292 296
293 if( argc!=3 ){ 297 if( argc!=3 ){
294 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 298 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 15 matching lines...) Expand all
310 Tcl_AppendResult(interp, threadset[i].argv[n], 0); 314 Tcl_AppendResult(interp, threadset[i].argv[n], 0);
311 return TCL_OK; 315 return TCL_OK;
312 } 316 }
313 317
314 /* 318 /*
315 ** Usage: thread_colname ID N 319 ** Usage: thread_colname ID N
316 ** 320 **
317 ** Wait on the most recent thread_step to complete, then return the 321 ** Wait on the most recent thread_step to complete, then return the
318 ** name of the N-th columns in the result set. 322 ** name of the N-th columns in the result set.
319 */ 323 */
320 static int tcl_thread_colname( 324 static int SQLITE_TCLAPI tcl_thread_colname(
321 void *NotUsed, 325 void *NotUsed,
322 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 326 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
323 int argc, /* Number of arguments */ 327 int argc, /* Number of arguments */
324 const char **argv /* Text of each argument */ 328 const char **argv /* Text of each argument */
325 ){ 329 ){
326 int i; 330 int i;
327 int n; 331 int n;
328 332
329 if( argc!=3 ){ 333 if( argc!=3 ){
330 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 334 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 15 matching lines...) Expand all
346 Tcl_AppendResult(interp, threadset[i].colv[n], 0); 350 Tcl_AppendResult(interp, threadset[i].colv[n], 0);
347 return TCL_OK; 351 return TCL_OK;
348 } 352 }
349 353
350 /* 354 /*
351 ** Usage: thread_result ID 355 ** Usage: thread_result ID
352 ** 356 **
353 ** Wait on the most recent operation to complete, then return the 357 ** Wait on the most recent operation to complete, then return the
354 ** result code from that operation. 358 ** result code from that operation.
355 */ 359 */
356 static int tcl_thread_result( 360 static int SQLITE_TCLAPI tcl_thread_result(
357 void *NotUsed, 361 void *NotUsed,
358 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 362 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
359 int argc, /* Number of arguments */ 363 int argc, /* Number of arguments */
360 const char **argv /* Text of each argument */ 364 const char **argv /* Text of each argument */
361 ){ 365 ){
362 int i; 366 int i;
363 const char *zName; 367 const char *zName;
364 368
365 if( argc!=2 ){ 369 if( argc!=2 ){
366 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 370 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 11 matching lines...) Expand all
378 Tcl_AppendResult(interp, zName, 0); 382 Tcl_AppendResult(interp, zName, 0);
379 return TCL_OK; 383 return TCL_OK;
380 } 384 }
381 385
382 /* 386 /*
383 ** Usage: thread_error ID 387 ** Usage: thread_error ID
384 ** 388 **
385 ** Wait on the most recent operation to complete, then return the 389 ** Wait on the most recent operation to complete, then return the
386 ** error string. 390 ** error string.
387 */ 391 */
388 static int tcl_thread_error( 392 static int SQLITE_TCLAPI tcl_thread_error(
389 void *NotUsed, 393 void *NotUsed,
390 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 394 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
391 int argc, /* Number of arguments */ 395 int argc, /* Number of arguments */
392 const char **argv /* Text of each argument */ 396 const char **argv /* Text of each argument */
393 ){ 397 ){
394 int i; 398 int i;
395 399
396 if( argc!=2 ){ 400 if( argc!=2 ){
397 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 401 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
398 " ID", 0); 402 " ID", 0);
(...skipping 24 matching lines...) Expand all
423 p->pStmt = 0; 427 p->pStmt = 0;
424 } 428 }
425 p->rc = sqlite3_prepare(p->db, p->zArg, -1, &p->pStmt, 0); 429 p->rc = sqlite3_prepare(p->db, p->zArg, -1, &p->pStmt, 0);
426 } 430 }
427 431
428 /* 432 /*
429 ** Usage: thread_compile ID SQL 433 ** Usage: thread_compile ID SQL
430 ** 434 **
431 ** Compile a new virtual machine. 435 ** Compile a new virtual machine.
432 */ 436 */
433 static int tcl_thread_compile( 437 static int SQLITE_TCLAPI tcl_thread_compile(
434 void *NotUsed, 438 void *NotUsed,
435 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 439 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
436 int argc, /* Number of arguments */ 440 int argc, /* Number of arguments */
437 const char **argv /* Text of each argument */ 441 const char **argv /* Text of each argument */
438 ){ 442 ){
439 int i; 443 int i;
440 if( argc!=3 ){ 444 if( argc!=3 ){
441 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 445 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
442 " ID SQL", 0); 446 " ID SQL", 0);
443 return TCL_ERROR; 447 return TCL_ERROR;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 p->colv[i] = sqlite3_column_name(p->pStmt, i); 480 p->colv[i] = sqlite3_column_name(p->pStmt, i);
477 } 481 }
478 } 482 }
479 } 483 }
480 484
481 /* 485 /*
482 ** Usage: thread_step ID 486 ** Usage: thread_step ID
483 ** 487 **
484 ** Advance the virtual machine by one step 488 ** Advance the virtual machine by one step
485 */ 489 */
486 static int tcl_thread_step( 490 static int SQLITE_TCLAPI tcl_thread_step(
487 void *NotUsed, 491 void *NotUsed,
488 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 492 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
489 int argc, /* Number of arguments */ 493 int argc, /* Number of arguments */
490 const char **argv /* Text of each argument */ 494 const char **argv /* Text of each argument */
491 ){ 495 ){
492 int i; 496 int i;
493 if( argc!=2 ){ 497 if( argc!=2 ){
494 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 498 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
495 " IDL", 0); 499 " IDL", 0);
496 return TCL_ERROR; 500 return TCL_ERROR;
(...skipping 21 matching lines...) Expand all
518 } 522 }
519 p->rc = sqlite3_finalize(p->pStmt); 523 p->rc = sqlite3_finalize(p->pStmt);
520 p->pStmt = 0; 524 p->pStmt = 0;
521 } 525 }
522 526
523 /* 527 /*
524 ** Usage: thread_finalize ID 528 ** Usage: thread_finalize ID
525 ** 529 **
526 ** Finalize the virtual machine. 530 ** Finalize the virtual machine.
527 */ 531 */
528 static int tcl_thread_finalize( 532 static int SQLITE_TCLAPI tcl_thread_finalize(
529 void *NotUsed, 533 void *NotUsed,
530 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 534 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
531 int argc, /* Number of arguments */ 535 int argc, /* Number of arguments */
532 const char **argv /* Text of each argument */ 536 const char **argv /* Text of each argument */
533 ){ 537 ){
534 int i; 538 int i;
535 if( argc!=2 ){ 539 if( argc!=2 ){
536 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 540 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
537 " IDL", 0); 541 " IDL", 0);
538 return TCL_ERROR; 542 return TCL_ERROR;
(...skipping 10 matching lines...) Expand all
549 threadset[i].zArg = 0; 553 threadset[i].zArg = 0;
550 threadset[i].opnum++; 554 threadset[i].opnum++;
551 return TCL_OK; 555 return TCL_OK;
552 } 556 }
553 557
554 /* 558 /*
555 ** Usage: thread_swap ID ID 559 ** Usage: thread_swap ID ID
556 ** 560 **
557 ** Interchange the sqlite* pointer between two threads. 561 ** Interchange the sqlite* pointer between two threads.
558 */ 562 */
559 static int tcl_thread_swap( 563 static int SQLITE_TCLAPI tcl_thread_swap(
560 void *NotUsed, 564 void *NotUsed,
561 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 565 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
562 int argc, /* Number of arguments */ 566 int argc, /* Number of arguments */
563 const char **argv /* Text of each argument */ 567 const char **argv /* Text of each argument */
564 ){ 568 ){
565 int i, j; 569 int i, j;
566 sqlite3 *temp; 570 sqlite3 *temp;
567 if( argc!=3 ){ 571 if( argc!=3 ){
568 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 572 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
569 " ID1 ID2", 0); 573 " ID1 ID2", 0);
(...skipping 19 matching lines...) Expand all
589 return TCL_OK; 593 return TCL_OK;
590 } 594 }
591 595
592 /* 596 /*
593 ** Usage: thread_db_get ID 597 ** Usage: thread_db_get ID
594 ** 598 **
595 ** Return the database connection pointer for the given thread. Then 599 ** Return the database connection pointer for the given thread. Then
596 ** remove the pointer from the thread itself. Afterwards, the thread 600 ** remove the pointer from the thread itself. Afterwards, the thread
597 ** can be stopped and the connection can be used by the main thread. 601 ** can be stopped and the connection can be used by the main thread.
598 */ 602 */
599 static int tcl_thread_db_get( 603 static int SQLITE_TCLAPI tcl_thread_db_get(
600 void *NotUsed, 604 void *NotUsed,
601 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 605 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
602 int argc, /* Number of arguments */ 606 int argc, /* Number of arguments */
603 const char **argv /* Text of each argument */ 607 const char **argv /* Text of each argument */
604 ){ 608 ){
605 int i; 609 int i;
606 char zBuf[100]; 610 char zBuf[100];
607 extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*); 611 extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*);
608 if( argc!=2 ){ 612 if( argc!=2 ){
609 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 613 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 10 matching lines...) Expand all
620 sqlite3TestMakePointerStr(interp, zBuf, threadset[i].db); 624 sqlite3TestMakePointerStr(interp, zBuf, threadset[i].db);
621 threadset[i].db = 0; 625 threadset[i].db = 0;
622 Tcl_AppendResult(interp, zBuf, (char*)0); 626 Tcl_AppendResult(interp, zBuf, (char*)0);
623 return TCL_OK; 627 return TCL_OK;
624 } 628 }
625 629
626 /* 630 /*
627 ** Usage: thread_db_put ID DB 631 ** Usage: thread_db_put ID DB
628 ** 632 **
629 */ 633 */
630 static int tcl_thread_db_put( 634 static int SQLITE_TCLAPI tcl_thread_db_put(
631 void *NotUsed, 635 void *NotUsed,
632 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 636 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
633 int argc, /* Number of arguments */ 637 int argc, /* Number of arguments */
634 const char **argv /* Text of each argument */ 638 const char **argv /* Text of each argument */
635 ){ 639 ){
636 int i; 640 int i;
637 extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*); 641 extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*);
638 extern void *sqlite3TestTextToPtr(const char *); 642 extern void *sqlite3TestTextToPtr(const char *);
639 if( argc!=3 ){ 643 if( argc!=3 ){
640 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 644 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 11 matching lines...) Expand all
652 threadset[i].db = (sqlite3*)sqlite3TestTextToPtr(argv[2]); 656 threadset[i].db = (sqlite3*)sqlite3TestTextToPtr(argv[2]);
653 return TCL_OK; 657 return TCL_OK;
654 } 658 }
655 659
656 /* 660 /*
657 ** Usage: thread_stmt_get ID 661 ** Usage: thread_stmt_get ID
658 ** 662 **
659 ** Return the database stmt pointer for the given thread. Then 663 ** Return the database stmt pointer for the given thread. Then
660 ** remove the pointer from the thread itself. 664 ** remove the pointer from the thread itself.
661 */ 665 */
662 static int tcl_thread_stmt_get( 666 static int SQLITE_TCLAPI tcl_thread_stmt_get(
663 void *NotUsed, 667 void *NotUsed,
664 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ 668 Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
665 int argc, /* Number of arguments */ 669 int argc, /* Number of arguments */
666 const char **argv /* Text of each argument */ 670 const char **argv /* Text of each argument */
667 ){ 671 ){
668 int i; 672 int i;
669 char zBuf[100]; 673 char zBuf[100];
670 extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*); 674 extern int sqlite3TestMakePointerStr(Tcl_Interp*, char*, void*);
671 if( argc!=2 ){ 675 if( argc!=2 ){
672 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], 676 Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 int i; 717 int i;
714 718
715 for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){ 719 for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){
716 Tcl_CreateCommand(interp, aCmd[i].zName, aCmd[i].xProc, 0, 0); 720 Tcl_CreateCommand(interp, aCmd[i].zName, aCmd[i].xProc, 0, 0);
717 } 721 }
718 return TCL_OK; 722 return TCL_OK;
719 } 723 }
720 #else 724 #else
721 int Sqlitetest4_Init(Tcl_Interp *interp){ return TCL_OK; } 725 int Sqlitetest4_Init(Tcl_Interp *interp){ return TCL_OK; }
722 #endif /* SQLITE_OS_UNIX */ 726 #endif /* SQLITE_OS_UNIX */
OLDNEW
« no previous file with comments | « third_party/sqlite/src/src/test3.c ('k') | third_party/sqlite/src/src/test5.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698