PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Puis-je demander à Ecto d'enregistrer du SQL brut ?

Ecto n'utilise que des déclarations préparées. Lors de l'utilisation de la syntaxe de requête ecto, l'introduction de l'injection SQL n'est pas possible. La syntaxe de la requête vérifie au moment de la compilation qu'aucune injection SQL n'est possible.

Afficher exactement les requêtes exécutées peut être difficile pour plusieurs raisons :

  • Postgrex (et donc Ecto) utilise le protocole binaire postgresql (au lieu du protocole texte le plus courant, mais moins efficace), donc le PREPARE la requête n'existe jamais réellement en tant que chaîne.
  • Dans la plupart des cas, tout ce que vous verriez serait une initiale PREPARE 64237612638712636123(...) AS ... et plus tard beaucoup de EXECUTE 64237612638712636123(...) ce qui n'est pas si utile. Essayer de se relier les uns aux autres serait horrible.

D'après mon expérience, la plupart des logiciels de ce type utilisent des instructions de préparation et les enregistrent au lieu de requêtes brutes, car cela est beaucoup plus utile pour comprendre le comportement du système.