Re: [SQL] Getting datatype before SELECT

From: Glenn Sullivan <glenn(dot)sullivan(at)nmr(dot)varian(dot)com>
To: herouth maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>
Cc: pgsql-sql(at)hub(dot)org
Subject: Re: [SQL] Getting datatype before SELECT
Date: 1998-10-01 17:39:57
Message-ID: 3613BE6D.215C6663@nmr.varian.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Herouth,

This works great and is indeed faster that other methods
I have now tried.

One question:
The value I get returned from PQftype() for a varchar is 1043
and for an int is 23.
I am uncomfortable just testing for these values. I could
not find in the documentation, what the return values of
PQftype() are. Can anyone point me to that information?

Thanks to all those who have responded, for all the great input
on my original question.

Glenn

herouth maoz wrote:
>
> On Tue, 29 Sep 1998, Glenn Sullivan wrote:
>
> > In my C code which communicates with the Postgres database,
> > I have the need to determine the datatype of a column, before
> > I have done a SELECT command. I have the name of the column,
> > but I cannot seem to figure out how to get the datatype information
> > until after I have done a SELECT. Then I can call PQfnumber() and
> > PQftype() to get the type. Does anyone know how to do this?
>
> In addition to looking up the name of the column, you can use a general
> approach, which is also good in case the select is using an EXPRESSION
> rather than a column name (e.g. SELECT salary/1000 FROM emp).
>
> The approach is to work on your query, and replace its where clause (or
> add one if it doesn't have one) with boolean literal 'false'. This means
> that the query will not return any tuples, nor take much toll on the
> database, but the parser will parse it and give you back all the necessary
> type information.
>
> So, if you want to issue the following query:
>
> SELECT field1, ( field2 * 13 )
> FROM table
> WHERE field1>1000 AND (( field2 % 4 ) = 3 );
>
> And you want to check the types and lengths first, first issue the query:
>
> SELECT field1, ( field2 * 13 )
> FROM table
> WHERE 'false'::bool;
>
> You can use PQftype() etc. on the result, and only then issue the real
> query, and use the information you gathered in this "dummy" pass.
>
> Herouth

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message D'Arcy J.M. Cain 1998-10-02 02:14:24 Re: [SQL] Getting datatype before SELECT
Previous Message Jackson, DeJuan 1998-10-01 16:41:06 RE: [SQL] Getting datatype before SELECT