Re: Selecting a constant question - Mailing list pgsql-hackers

From Dann Corbit
Subject Re: Selecting a constant question
Date
Msg-id D425483C2C5C9F49B5B7A41F8944154701000721@postal.corporate.connx.com
Whole thread Raw
In response to Re: Selecting a constant question  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> -----Original Message-----
> From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
> Sent: Monday, June 11, 2007 5:32 PM
> To: Larry McGhaw
> Cc: Alvaro Herrera; Dann Corbit; Gregory Stark; Martijn van
Oosterhout;
> pgsql-hackers@postgresql.org
> Subject: Re: [HACKERS] Selecting a constant question
>
> "Larry McGhaw" <lmcghaw@connx.com> writes:
> > I think perhaps we have lost sight of the main issue:
> > 1) libpq can properly describe the maximum internal data size of any
> > numeric or char column in a table via Pqfsize
> > 2) libpq can properly describe the maximum internal data size of any
> > varchar column via Pqfmod
> > 3) libpq can properly describe the maximum internal data size of any
> > numeric constant in a SQL statement via Pqfsize
>
> None of the above statements are actually true, at least not when you
> take off your blinders and note the existence of unconstrained-width
> numeric and text columns.

Unconstrained width columns are not what are being discussed here.  It
is constant expressions of known width.
> > The database *knows* this size of the char constant (obviously),
>
> No, what it knows (and reports) is type information.  There are a
small
> number of datatypes where you can infer a maximum width from knowledge
> of the datatype.  There are many others where you can't set an upper
> bound from this knowledge --- at least not a usefully tight one.

If you do not know how large 1::numeric is, then how can you know
whether it is safe or not to insert it into a column of type
numeric(12,4)?

If you do not know how large 'Joe'::varchar is, then how can you know
whether it is safe to insert it into a column of type varchar(256)?

Clearly, neither of these operations will cause any problems and so the
size of a constant can be determined.
> Anyway, if we were to cast those constants to something other than
> unknown, it would be text, not varchar, and you'd still have the same
> issue.

Other database systems can manage this, and the programmers of those
database systems are not smarter than the programmers of the PostgreSQL
group.  Therefore I can conclude that if the PostgreSQL group decides it
is important, then they can figure out the size of a string or numeric
constant.



pgsql-hackers by date:

Previous
From: "Dann Corbit"
Date:
Subject: Re: Got no response last time on setsockopt post, so I thought I would reiterate.
Next
From: "FAST PostgreSQL"
Date:
Subject: Re: COPYable logs status