Ecto hanya menggunakan pernyataan yang disiapkan. Saat menggunakan sintaks kueri ecto, pengenalan injeksi SQL tidak dimungkinkan. Sintaks kueri memverifikasi pada waktu kompilasi bahwa injeksi SQL tidak dimungkinkan.
Menampilkan dengan tepat kueri yang dieksekusi mungkin sulit karena beberapa alasan:
- Postgrex (dan karenanya Ecto) menggunakan protokol biner postgresql (bukan protokol teks yang paling umum, tetapi kurang efisien), jadi
PREPARE
kueri tidak pernah benar-benar ada sebagai string. - Untuk sebagian besar kasus, semua yang Anda lihat hanyalah satu
PREPARE 64237612638712636123(...) AS ...
dan kemudian banyakEXECUTE 64237612638712636123(...)
yang tidak begitu membantu. Mencoba menghubungkan satu sama lain akan mengerikan.
Dari pengalaman saya, sebagian besar perangkat lunak semacam itu, gunakan pernyataan persiapan dan catat lognya alih-alih kueri mentah, karena jauh lebih membantu dalam memahami perilaku sistem.