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

Side by Side Diff: third_party/sqlite/src/ext/fts3/fts3_test.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
OLDNEW
1 /* 1 /*
2 ** 2011 Jun 13 2 ** 2011 Jun 13
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 ** 12 **
13 ** This file is not part of the production FTS code. It is only used for 13 ** This file is not part of the production FTS code. It is only used for
14 ** testing. It contains a Tcl command that can be used to test if a document 14 ** testing. It contains a Tcl command that can be used to test if a document
15 ** matches an FTS NEAR expression. 15 ** matches an FTS NEAR expression.
16 ** 16 **
17 ** As of March 2012, it also contains a version 1 tokenizer used for testing 17 ** As of March 2012, it also contains a version 1 tokenizer used for testing
18 ** that the sqlite3_tokenizer_module.xLanguage() method is invoked correctly. 18 ** that the sqlite3_tokenizer_module.xLanguage() method is invoked correctly.
19 */ 19 */
20 20
21 #include <tcl.h> 21 #if defined(INCLUDE_SQLITE_TCL_H)
22 # include "sqlite_tcl.h"
23 #else
24 # include "tcl.h"
25 # ifndef SQLITE_TCLAPI
26 # define SQLITE_TCLAPI
27 # endif
28 #endif
22 #include <string.h> 29 #include <string.h>
23 #include <assert.h> 30 #include <assert.h>
24 31
25 #if defined(SQLITE_TEST) 32 #if defined(SQLITE_TEST)
26 #if defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) 33 #if defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4)
27 34
28 /* Required so that the "ifdef SQLITE_ENABLE_FTS3" below works */ 35 /* Required so that the "ifdef SQLITE_ENABLE_FTS3" below works */
29 #include "fts3Int.h" 36 #include "fts3Int.h"
30 37
31 #define NM_MAX_TOKEN 12 38 #define NM_MAX_TOKEN 12
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 nOcc++; 143 nOcc++;
137 } 144 }
138 } 145 }
139 146
140 return nOcc; 147 return nOcc;
141 } 148 }
142 149
143 /* 150 /*
144 ** Tclcmd: fts3_near_match DOCUMENT EXPR ?OPTIONS? 151 ** Tclcmd: fts3_near_match DOCUMENT EXPR ?OPTIONS?
145 */ 152 */
146 static int fts3_near_match_cmd( 153 static int SQLITE_TCLAPI fts3_near_match_cmd(
147 ClientData clientData, 154 ClientData clientData,
148 Tcl_Interp *interp, 155 Tcl_Interp *interp,
149 int objc, 156 int objc,
150 Tcl_Obj *CONST objv[] 157 Tcl_Obj *CONST objv[]
151 ){ 158 ){
152 int nTotal = 0; 159 int nTotal = 0;
153 int rc; 160 int rc;
154 int ii; 161 int ii;
155 int nPhrase; 162 int nPhrase;
156 NearPhrase *aPhrase = 0; 163 NearPhrase *aPhrase = 0;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 ** tests. For example: 278 ** tests. For example:
272 ** 279 **
273 ** # Override incr-load settings for testing: 280 ** # Override incr-load settings for testing:
274 ** set cfg [fts3_configure_incr_load $new_chunksize $new_threshold] 281 ** set cfg [fts3_configure_incr_load $new_chunksize $new_threshold]
275 ** 282 **
276 ** .... run tests .... 283 ** .... run tests ....
277 ** 284 **
278 ** # Restore initial incr-load settings: 285 ** # Restore initial incr-load settings:
279 ** eval fts3_configure_incr_load $cfg 286 ** eval fts3_configure_incr_load $cfg
280 */ 287 */
281 static int fts3_configure_incr_load_cmd( 288 static int SQLITE_TCLAPI fts3_configure_incr_load_cmd(
282 ClientData clientData, 289 ClientData clientData,
283 Tcl_Interp *interp, 290 Tcl_Interp *interp,
284 int objc, 291 int objc,
285 Tcl_Obj *CONST objv[] 292 Tcl_Obj *CONST objv[]
286 ){ 293 ){
287 #ifdef SQLITE_ENABLE_FTS3 294 #ifdef SQLITE_ENABLE_FTS3
288 extern int test_fts3_node_chunksize; 295 extern int test_fts3_node_chunksize;
289 extern int test_fts3_node_chunk_threshold; 296 extern int test_fts3_node_chunk_threshold;
290 Tcl_Obj *pRet; 297 Tcl_Obj *pRet;
291 298
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 pCsr->aBuffer = sqlite3_malloc(nToken); 458 pCsr->aBuffer = sqlite3_malloc(nToken);
452 } 459 }
453 if( pCsr->aBuffer==0 ){ 460 if( pCsr->aBuffer==0 ){
454 rc = SQLITE_NOMEM; 461 rc = SQLITE_NOMEM;
455 }else{ 462 }else{
456 int i; 463 int i;
457 464
458 if( pCsr->iLangid & 0x00000001 ){ 465 if( pCsr->iLangid & 0x00000001 ){
459 for(i=0; i<nToken; i++) pCsr->aBuffer[i] = pToken[i]; 466 for(i=0; i<nToken; i++) pCsr->aBuffer[i] = pToken[i];
460 }else{ 467 }else{
461 for(i=0; i<nToken; i++) pCsr->aBuffer[i] = testTolower(pToken[i]); 468 for(i=0; i<nToken; i++) pCsr->aBuffer[i] = (char)testTolower(pToken[i]);
462 } 469 }
463 pCsr->iToken++; 470 pCsr->iToken++;
464 pCsr->iInput = (int)(p - pCsr->aInput); 471 pCsr->iInput = (int)(p - pCsr->aInput);
465 472
466 *ppToken = pCsr->aBuffer; 473 *ppToken = pCsr->aBuffer;
467 *pnBytes = nToken; 474 *pnBytes = nToken;
468 *piStartOffset = (int)(pToken - pCsr->aInput); 475 *piStartOffset = (int)(pToken - pCsr->aInput);
469 *piEndOffset = (int)(p - pCsr->aInput); 476 *piEndOffset = (int)(p - pCsr->aInput);
470 *piPosition = pCsr->iToken; 477 *piPosition = pCsr->iToken;
471 } 478 }
472 } 479 }
473 480
474 return rc; 481 return rc;
475 } 482 }
476 483
477 static int testTokenizerLanguage( 484 static int testTokenizerLanguage(
478 sqlite3_tokenizer_cursor *pCursor, 485 sqlite3_tokenizer_cursor *pCursor,
479 int iLangid 486 int iLangid
480 ){ 487 ){
481 int rc = SQLITE_OK; 488 int rc = SQLITE_OK;
482 test_tokenizer_cursor *pCsr = (test_tokenizer_cursor *)pCursor; 489 test_tokenizer_cursor *pCsr = (test_tokenizer_cursor *)pCursor;
483 pCsr->iLangid = iLangid; 490 pCsr->iLangid = iLangid;
484 if( pCsr->iLangid>=100 ){ 491 if( pCsr->iLangid>=100 ){
485 rc = SQLITE_ERROR; 492 rc = SQLITE_ERROR;
486 } 493 }
487 return rc; 494 return rc;
488 } 495 }
489 #endif 496 #endif
490 497
491 static int fts3_test_tokenizer_cmd( 498 static int SQLITE_TCLAPI fts3_test_tokenizer_cmd(
492 ClientData clientData, 499 ClientData clientData,
493 Tcl_Interp *interp, 500 Tcl_Interp *interp,
494 int objc, 501 int objc,
495 Tcl_Obj *CONST objv[] 502 Tcl_Obj *CONST objv[]
496 ){ 503 ){
497 #ifdef SQLITE_ENABLE_FTS3 504 #ifdef SQLITE_ENABLE_FTS3
498 static const sqlite3_tokenizer_module testTokenizerModule = { 505 static const sqlite3_tokenizer_module testTokenizerModule = {
499 1, 506 1,
500 testTokenizerCreate, 507 testTokenizerCreate,
501 testTokenizerDestroy, 508 testTokenizerDestroy,
502 testTokenizerOpen, 509 testTokenizerOpen,
503 testTokenizerClose, 510 testTokenizerClose,
504 testTokenizerNext, 511 testTokenizerNext,
505 testTokenizerLanguage 512 testTokenizerLanguage
506 }; 513 };
507 const sqlite3_tokenizer_module *pPtr = &testTokenizerModule; 514 const sqlite3_tokenizer_module *pPtr = &testTokenizerModule;
508 if( objc!=1 ){ 515 if( objc!=1 ){
509 Tcl_WrongNumArgs(interp, 1, objv, ""); 516 Tcl_WrongNumArgs(interp, 1, objv, "");
510 return TCL_ERROR; 517 return TCL_ERROR;
511 } 518 }
512 Tcl_SetObjResult(interp, Tcl_NewByteArrayObj( 519 Tcl_SetObjResult(interp, Tcl_NewByteArrayObj(
513 (const unsigned char *)&pPtr, sizeof(sqlite3_tokenizer_module *) 520 (const unsigned char *)&pPtr, sizeof(sqlite3_tokenizer_module *)
514 )); 521 ));
515 #endif 522 #endif
516 UNUSED_PARAMETER(clientData); 523 UNUSED_PARAMETER(clientData);
517 return TCL_OK; 524 return TCL_OK;
518 } 525 }
519 526
520 static int fts3_test_varint_cmd( 527 static int SQLITE_TCLAPI fts3_test_varint_cmd(
521 ClientData clientData, 528 ClientData clientData,
522 Tcl_Interp *interp, 529 Tcl_Interp *interp,
523 int objc, 530 int objc,
524 Tcl_Obj *CONST objv[] 531 Tcl_Obj *CONST objv[]
525 ){ 532 ){
526 #ifdef SQLITE_ENABLE_FTS3 533 #ifdef SQLITE_ENABLE_FTS3
527 char aBuf[24]; 534 char aBuf[24];
528 int rc; 535 int rc;
529 Tcl_WideInt w, w2; 536 Tcl_WideInt w;
537 sqlite3_int64 w2;
530 int nByte, nByte2; 538 int nByte, nByte2;
531 539
532 if( objc!=2 ){ 540 if( objc!=2 ){
533 Tcl_WrongNumArgs(interp, 1, objv, "INTEGER"); 541 Tcl_WrongNumArgs(interp, 1, objv, "INTEGER");
534 return TCL_ERROR; 542 return TCL_ERROR;
535 } 543 }
536 544
537 rc = Tcl_GetWideIntFromObj(interp, objv[1], &w); 545 rc = Tcl_GetWideIntFromObj(interp, objv[1], &w);
538 if( rc!=TCL_OK ) return rc; 546 if( rc!=TCL_OK ) return rc;
539 547
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 interp, "fts3_test_tokenizer", fts3_test_tokenizer_cmd, 0, 0 583 interp, "fts3_test_tokenizer", fts3_test_tokenizer_cmd, 0, 0
576 ); 584 );
577 585
578 Tcl_CreateObjCommand( 586 Tcl_CreateObjCommand(
579 interp, "fts3_test_varint", fts3_test_varint_cmd, 0, 0 587 interp, "fts3_test_varint", fts3_test_varint_cmd, 0, 0
580 ); 588 );
581 return TCL_OK; 589 return TCL_OK;
582 } 590 }
583 #endif /* SQLITE_ENABLE_FTS3 || SQLITE_ENABLE_FTS4 */ 591 #endif /* SQLITE_ENABLE_FTS3 || SQLITE_ENABLE_FTS4 */
584 #endif /* ifdef SQLITE_TEST */ 592 #endif /* ifdef SQLITE_TEST */
OLDNEW
« no previous file with comments | « third_party/sqlite/src/ext/fts3/fts3Int.h ('k') | third_party/sqlite/src/ext/fts3/fts3_tokenizer.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698