public void IsKey()
{
using (var conn = OpenConnection())
{
conn.ExecuteNonQuery("CREATE TEMP TABLE data (id INT PRIMARY KEY, non_id INT, uniq INT UNIQUE)");
using (var cmd = new NpgsqlCommand("SELECT id,non_id,uniq,8 FROM data", conn))
using (var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo))
{
var columns = reader.GetColumnSchema();
Assert.That(columns[0].IsKey, Is.True);
Assert.That(columns[1].IsKey, Is.False);
// Note: according to the old API docs any unique column is considered key.
// https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable(v=vs.110).aspx
// But in the new API we have a separate IsUnique so IsKey should be false
Assert.That(columns[2].IsKey, Is.False);
Assert.That(columns[3].IsKey, Is.Null);
}
}
}