ydb-platform/ydb-php-sdk

bug: кэш или возможные проблемы с индексами

gfh31fgh2 opened this issue · 2 comments

Bug Report

YDB PHP SDK version:
latest (1.5.5)

Environment
ubuntu18 and JWT
php8.1

Current behavior:
Используется код, который в related code.

Проблема: На часть запросов с индексом, ответы бд неверные.

Я записываю данные в бд. Проходит 10 минут. Я запрашиваю данные из БД запросом:
SELECT * FROM table VIEW indexname AS s WHERE s.column = '10000000977616867292221904687374';
Запрос идет из ydb-php-sdk. Используются параметры в этом запросе, чтобы не было sql-inj и прч.
На этой таблице есть индекс с этим названием.
БД отвечает, что запись не найдена. Отвечает через ydb-php-sdk.
Окей, проверяю эту запись через YQL облака - запись найдена, и показывает данные.
Снова обращаюсь к ydb-php-sdk - запись сразу находит.

Пробую по другому: теперь YQL не трогаю.
Снова вижу запись (через логи). Запрашиваю через ydb-php-sdk - снова не найдено. Запрашиваю раз 7, на 7й раз показывает запись.

В чем может быть проблема?

Expected behavior:

Возвращаются данные, сохранённые в базе.

Related code:

https://github.com/gfh31fgh2/ydb-php-simple-driver

Аналогичная ситуация, если запись делать через YQL запрос формата:
UPSERT INTO table (columns) VALUES (values);
Видит записи только раза с 8го

PRAGMA TablePathPrefix("/ru-central1/xxxx/xxx/");
DECLARE $value AS Utf8;
SELECT * FROM `table` VIEW index AS s  WHERE s.column = $value;"
rekby commented

Подскажите - воспроизводится ли проблема на чистой базе?

Если да - в идеале был бы скрипт, который демонстрирует эту проблему на чистой базе:

  1. Создаёт таблицу, индексы с вашей структурой
  2. Делает вставку данных
  3. Запрашивает данные и выводит результат

Это позволит воспроизвести проблему на нашей стороне без доступа к содержимому базы.

Зыбал написать, при создании индекса - облако как-то поругалось, но индекс вроде как создался

На чистой не тестировал. Записей больше 10млн, слишком долго.