On Sun, Jan 8, 2012 at 06:54, Mike Christensen <mike@xxxxxxxxxxxxx> wrote: >>>>>> According to the manuals, Postgres has smallint (2 byte), integer (4 >>>>>> bytes) and bigint (8 bytes).. I use a lot of structures with "bytes" >>>>>> in my code and it's kinda annoying to cast DB output from Int16 to >>>>>> Byte every time, especially since there's no explicit cast in .NET and >>>>>> you have to use System.Convert(). >>>>>> >>>>>> Is there a work-around, or do people just cast or use Int16 in their >>>>>> data structures? Just wondering.. I know on modern computers it >>>>>> probably doesn't make any difference anyway.. >>>>> >>>>> >>>>> Is this just about programmer convenience or is it about space efficiency >>>>> in >>>>> the database? BYTEA might help you. Or try declaring a DOMAIN over >>>>> SMALLINT that limits allowed values to the range of a byte. -- Darren >>>>> Duncan >>>> >>>> >>>> This is purely programmer convenience. >>>> >>>> Basically, I want Npgsql to marshal the value as a .NET Byte type, if >>>> I can find a way to do that I'm happy. Perhaps it's more of a Npgsql >>>> question, though I'm curious as to why Postgres doesn't have an >>>> intrinsic tinyint or byte type. >>> >>> >>> Maybe Postgres doesn't need a Byte type predefined because it gives you the >>> means to define the type yourself, such as using DOMAIN. >>> >>> Generally speaking, I believe it is more important for a type system to >>> provide the means for arbitrary user-defined types which can be used in all >>> the places as built-in-defined types, than to have large numbers of >>> built-in-defined types. >> >> Precisely. postgresql's extensable nature allows you to build your >> own types as well. If it's popular enough it'll make it into contrib, >> then maybe core. My guess is that there's some non-trivial cost to >> maintaining each core type, and since a byte type isn't required by >> the SQL spec, it would take some effort to get a standard one included >> in the core. > > That makes sense. > > I guess my question is more of a NpgSql question then. Is there a way > to create a custom PG type, and have npgsql serialize that type in a > dataset to a .NET Byte type? > > I'd probably be better off posting on the npgsql mailing list, but > perhaps someone here knows as well.. > Hi! Npgsql already has support to map .Net byte data type to int2 and vice-versa. You can see all the supported type mappings in this file: http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/npgsql/Npgsql2/src/NpgsqlTypes/NpgsqlTypesHelper.cs?rev=1.41&content-type=text/x-cvsweb-markup Check method PrepareDefaultTypesMap(). I hope it helps. -- Regards, Francisco Figueiredo Jr. Npgsql Lead Developer http://www.npgsql.org http://gplus.to/franciscojunior http://fxjr.blogspot.com http://twitter.com/franciscojunior -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general