public void DataTypeWithComposite()
{
var csb = new NpgsqlConnectionStringBuilder(ConnectionString)
{
ApplicationName = nameof(DataTypeWithComposite), // Prevent backend type caching in TypeHandlerRegistry
Pooling = false
};
using (var conn = OpenConnection(csb))
{
conn.ExecuteNonQuery("CREATE TYPE pg_temp.some_composite AS (foo int)");
conn.ReloadTypes();
conn.MapComposite<SomeComposite>();
conn.ExecuteNonQuery("CREATE TEMP TABLE data (comp pg_temp.some_composite)");
using (var cmd = new NpgsqlCommand("SELECT comp,'(4)'::some_composite FROM data", conn))
using (var reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly))
{
var columns = reader.GetColumnSchema();
Assert.That(columns[0].DataType, Is.SameAs(typeof(SomeComposite)));
Assert.That(columns[0].UdtAssemblyQualifiedName, Is.EqualTo(typeof(SomeComposite).AssemblyQualifiedName));
Assert.That(columns[1].DataType, Is.SameAs(typeof(SomeComposite)));
Assert.That(columns[1].UdtAssemblyQualifiedName, Is.EqualTo(typeof(SomeComposite).AssemblyQualifiedName));
}
}
}