vários valores selectInput criam um comportamento inesperado do dplyr (postgres)

Eu tenho um aplicativo Shiny adorável que aceita valores selectInput, consulta um banco de dados postgres e gera um gráfico. (É uma interface simples, mas difícil de reproduzir aqui devido às conexões com o banco de dados dplyr!)

Hoje mudei o primeiro valor selectInput para multiple = TRUE; atualizou a variável que está sendo passada para o banco de dados em% em% a lista retornada pelo controle modificado; e todos os pedaços se soltaram.

Antes de selecionar um valor, o controle é nulo, por isso sou recebido pelo vermelho brilhante "ERRO: Driver RS-DBI ...", dizendo que minha consulta "IN ()" não é válidaQuando apenas um valor é selecionado, recebo um erro de sintaxe, "" locationID "IN 'A1080330'"Eu posso resolver isso colocando parênteses em volta da lista retornada ... locationID% em% (input $ rtnLocid)no entanto, isso cria um novo erro "operador não existe" quando seleciono mais de um item da lista devido aos parênteses adicionados: "IN (('A1080330', 'B ...'))

Eu acho que o que está acontecendo é que o driver do postgres sempre quer valores de lista SQL entre parênteses ao usar IN (alguns bancos de dados podem ser mais branda aqui); adicionar parênteses corrige a primeira seleção; os parênteses adicionados quebram o driver do postgres novamente quando a seleção múltipla está ativada.

Alguém mais usando o Shiny / postgres pode verificar esse comportamento?

Atenciosamente, Jeff

Atualização: @Steven apontou esse link de informações nos comentários que eu não encontrei quando publiquei:https://github.com/hadley/dplyr/issues/511

questionAnswers(2)

yourAnswerToTheQuestion