ValidationException: Unexpected from source

TL;DR — O nome da tabela na sua cláusula FROM do PartiQL contém caracteres que o parser não aceita nus — normalmente um traço. Envolva o nome em aspas duplas (SELECT * FROM "my-table"). Aspas simples não funcionam: no PartiQL elas significam um literal de string, não um identificador.

O que significa

ValidationException: Unexpected from source

O parser do PartiQL lê FROM my-table como o identificador my seguido de tokens inesperados — o traço não é válido dentro de um identificador nu. Nomes de tabela do DynamoDB podem conter legalmente -, . e _, então um nome de tabela perfeitamente válido ainda pode ser impossível de fazer parse no PartiQL até que esteja entre aspas. O mesmo se aplica a nomes que colidem com palavras-chave do PartiQL.

Por que acontece

  • O nome da tabela contém um traço ou pontousers-prod, app.events. Identificadores nus não podem carregá-los.
  • Nomes de tabela gerados por framework — ferramentas que anexam um ambiente ou stage ao nome da tabela (por exemplo, Todo-dev) são a forma clássica de um traço entrar sem você escolher.
  • Consultar um índice sem aspas — a forma "table"."index" precisa de aspas duplas em torno de ambas as partes.
  • Aspas simples em vez de duplasFROM 'my-table' também falha: aspas simples denotam um literal de string no PartiQL, não um nome.

Como corrigir

  1. Coloque o nome da tabela entre aspas duplas:

    SELECT * FROM "users-prod" WHERE pk = 'USER#42'
  2. Coloque ambas as partes entre aspas duplas ao consultar um índice:

    SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'
  3. Mantenha aspas simples apenas para valores de string — nomes em aspas duplas, valores em aspas simples. Trocá-los produz exatamente essa classe de erro de parse.

  4. Coloque entre aspas defensivamente em instruções geradas — se seu código interpola nomes de tabela no PartiQL, sempre emita-os entre aspas duplas; é válido mesmo quando o nome não precisaria estritamente.

O app desktop DynoTable traz um workbench SQL para DynamoDB que trata o quoting de identificadores por você, e o DynamoDB Expression Builder mostra a requisição nativa Query/Scan equivalente quando você prefere desviar do parsing do PartiQL inteiramente.

Erros relacionados

Referências

Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.

Trabalhe com o DynamoDB sem o Console

O DynoTable é um cliente desktop rápido para o DynamoDB — navegue pelas tabelas, execute consultas no estilo SQL e edite itens localmente.