public void DoublePrepare()
{
using (var conn = OpenConnection())
{
conn.ExecuteNonQuery("CREATE TEMP TABLE data (name TEXT, int INTEGER)");
using (var cmd = new NpgsqlCommand("INSERT INTO data (name) VALUES (:p0)", conn))
{
cmd.Parameters.Add(new NpgsqlParameter("p0", NpgsqlDbType.Text));
cmd.Parameters["p0"].Value = "test";
cmd.Prepare();
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO data (int) VALUES (:p0)";
cmd.Parameters.Clear();
cmd.Parameters.Add(new NpgsqlParameter("p0", NpgsqlDbType.Integer));
cmd.Parameters["p0"].Value = 8;
cmd.Prepare();
cmd.ExecuteNonQuery();
}
Assert.That(conn.ExecuteScalar("SELECT COUNT(*) FROM pg_prepared_statements"), Is.EqualTo(0), "Prepared statements are being leaked");
}
}