X-Original-To: pgsql-interfaces-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 1BA3ED1B26D for ; Mon, 7 Jun 2004 21:54:37 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 30873-01 for ; Tue, 8 Jun 2004 00:54:31 +0000 (GMT) Received: from esri3.esri.com (dwp.esri.com [198.102.62.250]) by svr1.postgresql.org (Postfix) with ESMTP id 0F988D1B1A1 for ; Mon, 7 Jun 2004 21:54:27 -0300 (ADT) Received: from zipwire.esri.com (zipwire.esri.com [46.1.2.224]) by esri3.esri.com (8.11.6+Sun/8.11.6) with ESMTP id i580sRl13303; Mon, 7 Jun 2004 17:54:27 -0700 (PDT) Received: by zipwire.esri.com with Internet Mail Service (5.5.2657.72) id ; Mon, 7 Jun 2004 17:52:12 -0700 Message-ID: <491DC5F3D279CD4EB4B157DDD62237F401ADE475@zipwire.esri.com> From: Brijesh Shrivastav To: "'L J Bayuk'" Cc: pgsql-interfaces@postgresql.org Subject: Re: Is there a way to describe precision and scale f Date: Mon, 7 Jun 2004 17:52:11 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2657.72) Content-Type: text/plain; charset="iso-8859-1" X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=1.1 tagged_above=0.0 required=5.0 tests=MAILTO_TO_SPAM_ADDR X-Spam-Level: * X-Archive-Number: 200406/14 X-Sequence-Number: 4942 Thanks for the comments. They were very helpful. However, I am still not sure about the second problem i.e. of describing the prepared statement. Does some other api exposes it? Can I use some sql command to get around it (I couldn't find any)? any other ideas? Brijesh Shrivastav -----Original Message----- From: L J Bayuk [mailto:ljb220@mindspring.com] Sent: Sunday, June 06, 2004 5:44 PM To: Bshrivastav@esri.com Cc: pgsql-interfaces@postgresql.org Subject: Re: [INTERFACES] Is there a way to describe precision and scale for columns in a s Brijesh Shrivastav wrote: > > Hi! All, > > I am a new postgres developer and as is the case with many of us I am > porting > an existing application to postgres database. One of the requirement for us > is to be able to determine the scale and precision for select columns so we > can > accordingly allordingly allocate memory or inform client applications. > > I looked at libpq api and found following api to describe a select statement > > PQfname() > PQftype() > PQfsize() > > However, PQfsize() gives me the space alloced for this column in database > row. How > can I get precision and scale for numeric columns? It's a little tricky. Use PQfmod() on the column. Call the result F. The precision is the high 16 bits, and the scale is the low 16 bits, but with an offset of 4 first: precision = ((F - 4) >> 16) & 0xffff; scale = (F - 4) & 0xffff; > I have run into another problem. I execute PREPARE statement with pgexec to > prepare > the query before executing it multiple time with different parameter values. > It > seems I can't get the select column information untill I perform an > PQexecPrepared(). > Is there any way around it? I don't think so. The protocol supports it ("Describe" message on a named prepared statement, without Bind or Execute), and I assume the backend would play along, but I don't think libpq has any way to let you do it in the current release.