public void MultipleCommands(bool[] queries)
{
using (var conn = OpenConnection())
{
conn.ExecuteNonQuery("CREATE TEMP TABLE data (name TEXT)");
var sb = new StringBuilder();
foreach (var query in queries)
sb.Append(query ? "SELECT 1;" : "UPDATE data SET name='yo' WHERE 1=0;");
var sql = sb.ToString();
foreach (var prepare in new[] {false, true})
{
using (var cmd = new NpgsqlCommand(sql, conn))
{
if (prepare)
cmd.Prepare();
using (var reader = cmd.ExecuteReader())
{
var numResultSets = queries.Count(q => q);
for (var i = 0; i < numResultSets; i++)
{
Assert.That(reader.Read(), Is.True);
Assert.That(reader[0], Is.EqualTo(1));
Assert.That(reader.NextResult(), Is.EqualTo(i != numResultSets - 1));
}
}
}
}
}
}