public void IsReadOnlyOnView()
{
using (var conn = OpenConnection())
{
// We can't use temporary tables because GetColumnSchema opens another connection
// internally, which doesn't have our temporary schema
conn.ExecuteNonQuery("DROP VIEW IF EXISTS view; DROP TABLE IF EXISTS data");
conn.ExecuteNonQuery("CREATE VIEW view AS SELECT 8 AS foo; CREATE TABLE data (bar INTEGER)");
try
{
using (var cmd = new NpgsqlCommand("SELECT foo,bar FROM view,data", conn))
using (var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo))
{
var columns = reader.GetColumnSchema();
Assert.That(columns[0].IsReadOnly, Is.True);
Assert.That(columns[1].IsReadOnly, Is.False);
}
}
finally
{
conn.ExecuteNonQuery("DROP VIEW IF EXISTS view; DROP TABLE IF EXISTS data");
}
}
}