SQLite

Artifact [4610dfba44]
Login

Artifact 4610dfba4460d92f23a8014874a46493f1be77b5:


# 2015 Jan 13
#
# 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.
#
#***********************************************************************
#
#

source [file join [file dirname [info script]] fts5_common.tcl]
set testprefix fts5prefix


#-------------------------------------------------------------------------
# Check that prefix indexes really do index n-character prefixes, not 
# n-byte prefixes. Use the ascii tokenizer so as not to be confused by
# diacritic removal.
#
do_execsql_test 1.0 { 
  CREATE VIRTUAL TABLE t1 USING fts5(x, tokenize = ascii, prefix = 2) 
}

do_test 1.2 {
  foreach {rowid string} {
    1 "\xCA\xCB\xCC\xCD"
    2 "\u1234\u5678\u4321\u8765"
  } {
    execsql { INSERT INTO t1(rowid, x) VALUES($rowid, $string) }
  }
} {}

do_execsql_test 1.1.2 {
  INSERT INTO t1(t1) VALUES('integrity-check');
}

#db eval { select fts5_decode(id, block) AS d FROM t1_data; } { puts $d }

foreach o {1 2} {
  if {$o==2} breakpoint
  foreach {tn q res} {
    1 "SELECT rowid FROM t1 WHERE t1 MATCH '\xCA\xCB*'" 1
    2 "SELECT rowid FROM t1 WHERE t1 MATCH '\u1234\u5678*'" 2
  } {
    do_execsql_test 1.$o.$tn $q $res
  }

  execsql {
    DELETE FROM t1_data WHERE 
    rowid>=fts5_rowid('start-of-index', 0) AND 
    rowid<fts5_rowid('start-of-index', 1);
  }
}


finish_test