Grupo de exploração de dados relata - bug de parâmetro

Acabei de atualizar para a versão mais recente do Data Explorer antes de postar isso e posso confirmar que este problema ainda está presente para mim.

No plugin Data Explorer, há um recurso que permite expor consultas a grupos. Fiz isso para a consulta que conta os dias consecutivos visitados, pois tenho usuários ansiosos para saber o quão perto estão dos distintivos de xxx dias visitados.

Isso estava funcionando até recentemente. Agora recebo este erro.

O erro parece ser causado pela solicitação que está sendo enviada (aqui estou mostrando o inspetor de rede no Firefox):
image

Parece não estar atualizando os valores dos parâmetros à medida que são inseridos (username=null, min_days=10 são os parâmetros padrão ao carregar a página). O console também gera um erro “Uncaught TypeError: t is undefined” ao inserir texto na caixa username ou alterar o valor de min_days. Esta linha está gerando o erro:

Esta é a melhor forma que consigo rastrear o problema sem fazer um fork do repositório e depurar cada linha. Apenas queria relatar o problema e também estou curioso se outros têm o mesmo problema.

4 curtidas

Obrigado @piffy pelo relatório. Fizemos algumas alterações recentes no plugin data-explorer, então isso pode muito bem ser válido. Testei várias consultas com uma entrada de nome de usuário e não encontrei o problema vinculado no OP. Você poderia postar sua consulta aqui para que eu possa testá-la?

Obrigado :slight_smile:

5 curtidas
--[params]
-- string :username
-- int :min_days = 10

WITH consecutive_visits AS (
  SELECT user_id,
       visited_at,
       -- O valor de s será o mesmo para cada grupo de dias consecutivos
       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

Tentei com o modo de segurança ativado (apenas plugins oficiais) e tenho o mesmo problema.

1 curtida

Obrigado, darei uma olhada.

2 curtidas

Como uma dica extra divertida enquanto Isaac analisa isso, você também pode usar o parâmetro user_id para obter uma caixa de parâmetro de preenchimento automático elegante. Exemplo:

-- [params]
-- user_id :user
-- int :min_days = 10

WITH consecutive_visits AS (
  SELECT user_id,
       visited_at,
       -- O valor de s será o mesmo para cada grupo de dias consecutivos
       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

5 curtidas

Obrigado, bom saber! Faz muito mais sentido do que uma caixa de texto livre

3 curtidas

Desculpe pelo atraso @piffy. Isso deve ter sido corrigido agora :slight_smile:

4 curtidas

Funciona, muito obrigado! Meus usuários realmente apreciam este recurso

3 curtidas