Я только что обновился до последней версии Data Explorer перед публикацией этого сообщения и могу подтвердить, что эта проблема всё ещё сохраняется у меня.
В плагине Data Explorer есть функция, позволяющая предоставлять доступ к запросам для групп. Я настроил это для запроса, подсчитывающего количество последовательных дней посещения, так как у меня есть пользователи, которые отчаянно хотят узнать, насколько они близки к бейджам за xxx дней посещения.
Похоже, ошибка вызвана запросом, который отправляется (здесь я показываю инспектор сети в Firefox):
Кажется, что значения параметров не обновляются по мере их ввода (username=null, min_days=10 — это параметры по умолчанию при загрузке страницы). В консоли также возникает ошибка “Uncaught TypeError: t is undefined” при вводе текста в поле username или изменении значения min_days. Ошибка возникает в этой строке:
Это лучшее, что я могу сделать для отслеживания проблемы, не форкая репозиторий и не отлаживая каждую строку. Просто хотел сообщить об этой проблеме и также интересно, сталкиваются ли с ней другие.
Спасибо @piffy за отчет. Мы недавно внесли некоторые изменения в плагин data-explorer, поэтому это вполне может быть верным. Я протестировал несколько запросов с вводом имен пользователей и не столкнулся с проблемой, описанной в оригинальном посте. Не могли бы вы оставить здесь свой запрос, чтобы я мог его проверить?
--[params]
-- string :username
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- Значение s будет одинаковым для каждой группы последовательных дней
visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s
FROM user_visits
WHERE user_id = (SELECT id FROM users WHERE username = :username)
)
SELECT
MIN(visited_at) period_start,
COUNT(*) AS consecutive_days,
MAX(visited_at) period_end
FROM consecutive_visits
GROUP BY user_id, s
HAVING COUNT(*) >= :min_days
ORDER BY period_start DESC
Я пробовал включить безопасный режим (только официальные плагины), но проблема осталась.
Пока Исаак разбирается с этим, вот ещё один полезный совет: вы также можете использовать параметр user_id для создания стильного поля автодополнения. Например:
-- [params]
-- user_id :user
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- Значение s будет одинаковым для каждой группы последовательных дней
visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s
FROM user_visits
WHERE user_id = :user
)
SELECT
MIN(visited_at) period_start,
COUNT(*) AS consecutive_days,
MAX(visited_at) period_end
FROM consecutive_visits
GROUP BY user_id, s
HAVING COUNT(*) >= :min_days
ORDER BY period_start DESC