Ok I did more investigation on this and traced the issue down to a singe npgsql bug. Enums actually work fine, as long as you're using an IDataReader to get at the data. Once you attempt to load the reader into a DataSet, it blows up. I'll log this bug.. Mike On Mon, Jun 7, 2010 at 4:43 AM, Mike Christensen <mike@xxxxxxxxxxxxx> wrote: > This is probably not the right forum for this question, but maybe > someone can help me out or redirect me. > > I'm running into a lot of problems with npgsql and enum types. There > seems to be very little support or testing in this area. The issue > right now is I have a lot of SQL functions that have OUT parameters of > an enum type. Such as: > > CREATE TYPE UnitTypeEnum AS ENUM ('Unit', 'Volume', 'Weight'); > > > CREATE OR REPLACE FUNCTION readformsforingredient(IN _ingredient text, > OUT UnitType UnitTypeEnum) > RETURNS SETOF record AS > ... > > When I call that function using the npgsql driver, I get all sorts of > errors. The data table simple has no ProviderType (it's blank), even > though the DataType is System.String. If I try to read the data > reader, I get exceptions. The solution I found is to cast the enum to > a text, such as: > > CREATE OR REPLACE FUNCTION readformsforingredient(IN _ingredient text, > OUT UnitType text) > ... > select UnitType::text from foo; > > However, this becomes a pain if I'm not using OUT parameters and just > returning a set of a row type. Plus, having to cast ENUMs is kind of > a hack. > > Are the people working on npgsql aware of this problem, and can we > expect to get real enum support in future versions? It seems they > should just magically cast to either a string or an int and I > shouldn't have to worry about that. Thanks!! > > Mike > -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general