1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-01-06 08:01:16 +03:00
Calling UPDATE against an fts table in a UTF-16 database inserts
corrupted data into the database.  The UTF-8 data is being inserted
directly.  This appears to happen because sqlite3_ value_text()
destructively coerces a value to UTF-8, and it's never converted back
when updating the table. This works around the problem by rearranging
things so that the update happens before the coercion. (CVS 3596)

FossilOrigin-Name: 4f2ab4b6320ffc621900049b41f50bc30d76d7f5
This commit is contained in:
shess
2007-01-19 22:59:56 +00:00
parent c49de5d98c
commit 3ad202dd17
6 changed files with 179 additions and 15 deletions

View File

@@ -3089,11 +3089,11 @@ static int index_update(fulltext_vtab *v, sqlite_int64 iRow,
int rc = deleteTerms(v, pTerms, iRow);
if( rc!=SQLITE_OK ) return rc;
/* Now add positions for terms which appear in the updated row. */
rc = insertTerms(v, pTerms, iRow, pValues);
rc = content_update(v, pValues, iRow); /* execute an SQL UPDATE */
if( rc!=SQLITE_OK ) return rc;
return content_update(v, pValues, iRow); /* execute an SQL UPDATE */
/* Now add positions for terms which appear in the updated row. */
return insertTerms(v, pTerms, iRow, pValues);
}
/* This function implements the xUpdate callback; it's the top-level entry