Re: Is there a reason why Postgres doesn't have Byte or tinyint? - Mailing list pgsql-general

From Mike Christensen
Subject Re: Is there a reason why Postgres doesn't have Byte or tinyint?
Date
Msg-id CABs1bs1sh4F02FBuxf0p-8GSv659jinYCMRbTYf4ai-gg3BQWA@mail.gmail.com
Whole thread Raw
In response to Re: Is there a reason why Postgres doesn't have Byte or tinyint?  ("Francisco Figueiredo Jr." <francisco@npgsql.org>)
Responses Re: Is there a reason why Postgres doesn't have Byte or tinyint?
List pgsql-general
On Sun, Jan 8, 2012 at 10:12 AM, Francisco Figueiredo Jr.
<francisco@npgsql.org> wrote:
> On Sun, Jan 8, 2012 at 06:54, Mike Christensen <mike@kitchenpc.com> 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.

Thanks!  I'll have to mess around with this a bit more..  From what
I've seen so far, functions that have int2 out parameters will return
Int16 through the DataReader..  Maybe I'm doing something wrong..

Mike

pgsql-general by date:

Previous
From: Clemens Eisserer
Date:
Subject: Re: Initdb fails on openwrt in "creating template1 database"
Next
From: Stefan Keller
Date:
Subject: Re: Binary Large Objects (LOB/BLOB) in Hibernate and JDBC: Unresolved issues