Skip site navigation (1) Skip section navigation (2)

Re: Unexpected ADO properties

From: Bernard Henry Voynet <bhv(at)quebecemail(dot)com>
To: pgsql-odbc(at)postgresql(dot)org
Subject: Re: Unexpected ADO properties
Date: 2005-08-25 13:01:01
Message-ID: 20050825060103.EBB7B366@dm20.mta.everyone.net (view raw or flat)
Thread:
Lists: pgsql-odbc
Hye Jeff,

You are right when you say that : PostgreSQL has no notion of "autoincrement"

However, since :
- we are talking of pgsql-odbc (and not PostgreSQL);
- ODBC is an abstract layer that is supposed to uniformize backends access and isolate its users from the backends "technical details";
- the sequenced serial fields mechanism is a "technical detail" that offers an "autoincrement behavior";

Don't you think, therefore, that even though PostgreSQL has no notion of "autoincrement", it is the pgsql-odbc's responsability to "hide" and manage this particular technical detail ?

Technically speaking, don't you think that pgsql-odbc could in fact query PostgreSQL's catalog to check whether a serial field has its DEFAULT set with a 'nextval' and return, in such case, to ODBC user that it IS an autoincrement field ?

Best regards



--- "Jeff Eckermann" <jeff_eckermann(at)yahoo(dot)com> wrote:

From: "Jeff Eckermann" <jeff_eckermann(at)yahoo(dot)com>
Date: Mon, 22 Aug 2005 13:54:03 +0930
To: pgsql-odbc(at)postgresql(dot)org
Subject: Re: [ODBC] Unexpected ADO properties

"Bernard Henry Voynet" <bhv(at)quebecemail(dot)com> wrote in message 
news:20050820115339(dot)D2B57834(at)dm21(dot)mta(dot)everyone(dot)net(dot)(dot)(dot)
> Hello
> I  am  working  on  a project that access databases through ADO
> over ODBC and must now include PostgreSQL.
>
> The  code  of  this  project  needs  to  know  about the fields
> caracteristics like whether or not it is:
> - a primary key
> - an autoincrement key
> - nullabble
> - updatable
> - etc..
>
> For   this   I   use   the  ADO  properties  that  give  theses
> informations.
>
> For a Jet database I get (for example):
> serialkey
>     Type = adInteger
>     DefinedSize = 4
>     Precision = 10
>     NumericScale = 255
>     Status = adRecOK
>     Attributes = adFldFixed
>     Properties (9)
>          BASECATALOGNAME (adVarWChar) = (Null)
>          BASECOLUMNNAME (adVarWChar) = serialkey
>          BASESCHEMANAME (adVarWChar) = (Null)
>          BASETABLENAME (adVarWChar) = genericfields
>          CALCULATIONINFO (adVarBinary) = (Null)
>          ISAUTOINCREMENT (adBoolean) = True
>          KEYCOLUMN (adBoolean) = True
>          OPTIMIZE (adBoolean) = False
>          RELATIONCONDITIONS (adVarBinary) = (Null)
>
> However, with  PostgreSQL  8.0.3  (psqlodc 08.00.0102), I don't get what 
> is expected.
>
> When I declare le serialkey field as as SERIAL PRIMARY KEY, instead of the 
> expected result, I get:
> serialkey
>     Type = adInteger
>     DefinedSize = 4
>     Precision = 10
>     NumericScale = 255
>     Status = adRecOK
>     Attributes = adFldUnknownUpdatable, adFldFixed, adFldIsNullable, 
> adFldMayBeNull
>     Properties (9)
>          BASECATALOGNAME (adVarWChar) = (Null)
>          BASECOLUMNNAME (adVarWChar) = serialkey
>          BASESCHEMANAME (adVarWChar) = (Null)
>          BASETABLENAME (adVarWChar) = genericfields
>          CALCULATIONINFO (adVarBinary) = (Null)
>          ISAUTOINCREMENT (adBoolean) = False
>          KEYCOLUMN (adBoolean) = True
>          OPTIMIZE (adBoolean) = False
>          RELATIONCONDITIONS (adVarBinary) = (Null)
>
> Where both:
> - Attributes
> - ISAUTOINCREMENT
> Are not correct since serialkey is a non nullable serial key

PostgreSQL has no notion of "autoincrement".  The "serial" type is an 
equivalent implementation, but is not actually a type in itself; it is an 
integer type with a default value drawn from a sequence.

The values reported in the "attributes" are certainly wrong; this is 
definitely a bug somewhere, but where, I don't know enough to say.  Perhaps 
someone more knowledgeable can help.

>
> Would you have any idea on this problem ?
> And any help to get the right values ?
>
> Best regards
>
>
> _____________________________________________________________
> Obtenez aussi votre adresse electronique gratuite de
> Quebecemail.com http://www.quebecemail.com, un service gratuit et 
> permanent.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq
> 



---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org


_____________________________________________________________
Obtenez aussi votre adresse electronique gratuite de
Quebecemail.com http://www.quebecemail.com, un service gratuit et permanent.

pgsql-odbc by date

Next:From: Bernard Henry VoynetDate: 2005-08-25 13:13:03
Subject: bool tanformed into char
Previous:From: Dave PageDate: 2005-08-25 08:46:24
Subject: Re: changed behavior in libpq odbc driver

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group