У меня странная проблема с таблицей FTS в моей базе данных sqlite.Я создаю таблицу следующим образом:
CREATE VIRTUAL TABLE table01 USING fts4(name, content, tokenize=icu ru_RU);
Затем вставляю две строки, одну с именем и содержимым, а другую только с именем.
INSERT INTO table01(name, content) VALUES('Abc1', 'asdasd');
INSERT INTO table01(name) VALUES('Abc2');
И когда я пытаюсь обновить илиудалить строку, заполненную только именем столбца Я получаю сообщение об ошибке «Нарушение прав доступа по адресу 7244CF96 в модуле« sqlite3.dll ». Чтение адреса 00000000.».С другим рядом все в порядке, я могу его обновить или удалить как обычно.Неважно, какую локаль я использую, я пробовал en_US и многие другие.И нет никакой разницы между fts3 и fts4.Это похоже на ошибку ICU, потому что нет проблем со встроенными токенизаторами sqlite.Это ошибка ICU или sqlite, или я делаю что-то не так?Я пробовал это на SQLite Expert и в моем проекте со всеми необходимыми параметрами компиляции и всеми включенными библиотеками.
Последнее в стеке:
msvcr100d.dll!strlen(unsigned char * buf) Line 81 Asm
my_prog.exe!icuOpen(sqlite3_tokenizer * pTokenizer, const char * zInput, int nInput, sqlite3_tokenizer_cursor * * ppCursor) Line 60276 + 0x9 bytes
my_prog.exe!fts3PendingTermsAdd(Fts3Table * p, const char * zText, int iCol, unsigned int * pnWord) Line 52616 + 0x18 bytes C
my_prog.exe!fts3DeleteTerms(int * pRC, Fts3Table * p, Mem * * apVal, unsigned int * aSz) Line 52828 + 0x1a bytes C
fts3DeleteTerms становится нулевымуказатель вместо строки и передача его вниз.Я не могу отладить его пошагово прямо сейчас (я использую объединение, а VS 2010 не может отладить более 65535 строк кода).