Ecto usa apenas declarações preparadas. Ao usar a sintaxe de consulta ecto, a introdução de injeção de SQL não é possível. A sintaxe de consulta verifica em tempo de compilação que nenhuma injeção de SQL é possível.
Mostrar exatamente as consultas executadas pode ser difícil devido a alguns motivos:
- Postgrex (e, portanto, Ecto) usa o protocolo binário postgresql (em vez do protocolo de texto mais comum, mas menos eficiente), então o
PREPARE
query nunca existe realmente como uma string. - Na maioria dos casos, tudo o que você veria seria um
PREPARE 64237612638712636123(...) AS ...
inicial e depois muitoEXECUTE 64237612638712636123(...)
o que não é tão útil. Tentar relacionar um com o outro seria horrível.
Pela minha experiência, a maioria dos softwares desse tipo usa instruções prepare e as registra em vez de consultas brutas, pois é muito mais útil para entender o comportamento do sistema.