mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Try to optimize spellfix1 by storing a NULL in the k1 column of %_vocab
if it would otherwise have the same value as the word column. FossilOrigin-Name: b76ec7cb5841f9ad02b342271e91c5f5a598006f69df7953a6213c706e01f7a2
This commit is contained in:
@ -2492,7 +2492,7 @@ static int spellfix1FilterForMatch(
|
||||
nPattern = (int)strlen(zPattern);
|
||||
if( zPattern[nPattern-1]=='*' ) nPattern--;
|
||||
zSql = sqlite3_mprintf(
|
||||
"SELECT id, word, rank, k1"
|
||||
"SELECT id, word, rank, coalesce(k1,word)"
|
||||
" FROM \"%w\".\"%w_vocab\""
|
||||
" WHERE langid=%d AND k2>=?1 AND k2<?2",
|
||||
p->zDbName, p->zTableName, iLang
|
||||
@ -2826,17 +2826,17 @@ static int spellfix1Update(
|
||||
if( sqlite3_value_type(argv[1])==SQLITE_NULL ){
|
||||
spellfix1DbExec(&rc, db,
|
||||
"INSERT INTO \"%w\".\"%w_vocab\"(rank,langid,word,k1,k2) "
|
||||
"VALUES(%d,%d,%Q,%Q,%Q)",
|
||||
"VALUES(%d,%d,%Q,nullif(%Q,%Q),%Q)",
|
||||
p->zDbName, p->zTableName,
|
||||
iRank, iLang, zWord, zK1, zK2
|
||||
iRank, iLang, zWord, zK1, zWord, zK2
|
||||
);
|
||||
}else{
|
||||
newRowid = sqlite3_value_int64(argv[1]);
|
||||
spellfix1DbExec(&rc, db,
|
||||
"INSERT OR %s INTO \"%w\".\"%w_vocab\"(id,rank,langid,word,k1,k2) "
|
||||
"VALUES(%lld,%d,%d,%Q,%Q,%Q)",
|
||||
"VALUES(%lld,%d,%d,%Q,nullif(%Q,%Q),%Q)",
|
||||
zConflict, p->zDbName, p->zTableName,
|
||||
newRowid, iRank, iLang, zWord, zK1, zK2
|
||||
newRowid, iRank, iLang, zWord, zK1, zWord, zK2
|
||||
);
|
||||
}
|
||||
*pRowid = sqlite3_last_insert_rowid(db);
|
||||
@ -2845,9 +2845,9 @@ static int spellfix1Update(
|
||||
newRowid = *pRowid = sqlite3_value_int64(argv[1]);
|
||||
spellfix1DbExec(&rc, db,
|
||||
"UPDATE OR %s \"%w\".\"%w_vocab\" SET id=%lld, rank=%d, langid=%d,"
|
||||
" word=%Q, k1=%Q, k2=%Q WHERE id=%lld",
|
||||
" word=%Q, k1=nullif(%Q,%Q), k2=%Q WHERE id=%lld",
|
||||
zConflict, p->zDbName, p->zTableName, newRowid, iRank, iLang,
|
||||
zWord, zK1, zK2, rowid
|
||||
zWord, zK1, zWord, zK2, rowid
|
||||
);
|
||||
}
|
||||
sqlite3_free(zK1);
|
||||
|
Reference in New Issue
Block a user