| Предыдущий | Следующий |
| QPARSE_E_EXPECTING_REGEX_PROPERTY | QPARSE_E_NO_SUCH_PROPERTY |
QPARSE_E_INVALID_LITERAL
Точка в workflow
Практический смысл QPARSE_E_INVALID_LITERAL (0X8004166E): парсер обнаружил некорректный литерал. В трассировке отделяйте маркер «invalid literal» от последующих wrapper/UI ошибок: они могут появиться уже после первичной границы и не объясняют исходное состояние.
Диагностический пакет
До повторной попытки запишите финальную строку запроса, parser offset, delimiter/quote state и property schema. Для условия «парсер обнаружил некорректный литерал» эти данные важнее общего текста сообщения, потому что позволяют связать результат с конкретным владельцем операции.
- точную сериализованную строку/список свойств, реально переданный парсеру.
- позицию токена, quote/delimiter state, locale и code page.
- canonical property name/type и schema/catalog generation.
| Наблюдение | Что оно означает |
|---|---|
| Первый вызов возвращает QPARSE_E_INVALID_LITERAL | Граница «парсер обнаружил некорректный литерал» относится к текущему объекту и generation; сохраните это состояние до cleanup. |
| После одного целевого изменения код исчезает | Связь с условием «парсер обнаружил некорректный литерал» подтверждается только если остальные входы и owning context не изменились. |
| Первым становится другой HRESULT | Считайте его новой первичной границей; маркер «invalid literal» больше не должен подменять причину следующего отказа. |
Специфическая проверка для этого кода
Сохраните literal bytes, token class, locale и property type. Ищите несоответствие формы литерала ожидаемому типу, а не общий syntax reset. Контроль — валидный literal того же типа в той же позиции и с тем же operator.
Контрольный запуск
Контрольный запуск должен воспроизводить «парсер обнаружил некорректный литерал» на тех же исходных данных. Затем исправьте только поле, структуру, token или registration value, которое отклонил компонент. Если операция проходит прежнюю стадию, гипотеза локализована; если нет — вернитесь к первому HRESULT и сохранённым полям.
- Зафиксируйте первый
QPARSE_E_INVALID_LITERALи объект, которому принадлежит маркер «invalid literal». - Сохраните входные данные и lifecycle-state до изменения условия «парсер обнаружил некорректный литерал».
- Измените только состояние, связанное с «парсер обнаружил некорректный литерал», и выполните тот же вызов ещё раз.
Завершение проверки
Не правьте каталог или schema до сохранения точной сериализованной строки и позиции токена. Исправление считается реальным, когда прежняя граница «парсер обнаружил некорректный литерал» пройдена на сопоставимом входе, а не просто скрыта более общим сообщением.
Документация
- Microsoft: legacy Indexing Service error messages.
- Microsoft: Windows Search WHERE clause.
- Microsoft: Windows Search SQL syntax.
- Microsoft: ISearchQueryHelper.
Нужно найти другой код? Найти другой код состояния или ошибки.