sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Puedo hacer que Ecto registre SQL sin formato?

Ecto usa solo declaraciones preparadas. Cuando se usa la sintaxis de consulta ecto, no es posible introducir la inyección de SQL. La sintaxis de consulta verifica en tiempo de compilación que no es posible la inyección SQL.

Mostrar exactamente las consultas ejecutadas puede ser difícil por un par de razones:

  • Postgrex (y por lo tanto Ecto) usa el protocolo binario postgresql (en lugar del protocolo de texto más común, pero menos eficiente), por lo que PREPARE la consulta nunca existe realmente como una cadena.
  • Para la mayoría de los casos, todo lo que vería sería una inicial PREPARE 64237612638712636123(...) AS ... y luego un montón de EXECUTE 64237612638712636123(...) que no es tan útil. Tratar de relacionar uno con otro sería horrible.

Según mi experiencia, la mayoría de los programas de ese tipo usan declaraciones de preparación y las registran en lugar de consultas sin procesar, ya que es mucho más útil para comprender el comportamiento del sistema.