Armadilhas conhecidas
- Aceitar SQL que a gramática não define, e quebrar depois
- Não verificar se a tabela existe antes de inserir
- Tratar todo valor como texto
Nenhuma dessas quebra o teste de forma óbvia. Todas quebram o módulo seguinte.
A entrega
- Pull request no repositório da dupla, com os testes de aceitação passando
NOTES.md com um parágrafo sobre a decisão mais difícil deste módulo
- Histórico de commits que mostre o trabalho acontecendo, não um despejo final
Depois do prazo publico a implementação de referência, e a partir daí este módulo não vale mais pontos.
Exercício de saída
Antes de sair, quebre o parser de propósito.
- 1. Passe uma consulta com aspas desbalanceadas e guarde a mensagem de erro
- 2. Passe uma consulta que cita uma tabela inexistente e guarde a mensagem
- 3. Mostre que as duas falham em etapas diferentes, e com mensagens diferentes
Se as duas produzem a mesma mensagem, a análise semântica ainda está misturada com a sintática, e isso vai atrapalhar o executor no M5.