From: | Michael Fuhr <mike(at)fuhr(dot)org> |
---|---|
To: | James Harper <james(dot)harper(at)bendigoit(dot)com(dot)au> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: libpq questions |
Date: | 2006-02-01 02:44:44 |
Message-ID: | 20060201024444.GA92630@winnie.fuhr.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, Feb 01, 2006 at 09:47:12AM +1100, James Harper wrote:
> > Be careful what you infer from such a scan: not finding any NULLs
> > doesn't necessarily mean a column isn't nullable, it just means the
> > result set didn't contain any NULLs.
>
> I understand that limitation, but haven't figured out if it matters in
> my situation. The only time it might is if the client wants to infer a
> schema as a result of a query, eg 'SELECT * FROM TableX WHERE 0 = 1'.
Even if such a query did return a "nullable" flag, plenty of other
metadata would be absent that might be just as interesting from a
schema-viewing standpoint (CHECK, PRIMARY KEY, etc.). A better way
to view the schema is to query the system catalogs or the Information
Schema.
> In the above example, does the database engine assign internally a
> 'nullability' flag? I guess it must do... because how would the
> following be evaluated:
>
> SELECT f1 + f2 AS f INTO TableY FROM TableX WHERE f1 < 30
>
> Would the column f in the created table be nullable or not?
>
> I guess I need to do some testing unless you know off the top of your
> head?
I'm not familiar enough with PostgreSQL internals to comment on
what's happening underneath, but I could tell you from experience
what the above query would do. But with a quick test you could
figure it out for yourself :-)
> Hmmm... so a select statement with result set of a million rows is going
> to stall for a while before the results are usefully available to the
> client, and is then going to use a significant amount of memory on the
> client...
Correct.
> Is this a limitation of libpq or of the underlying database engine?
The "Incremental results from libpq" thread from a few months ago
might answer your questions:
http://archives.postgresql.org/pgsql-interfaces/2005-11/msg00010.php
> Are there any alternative (but native - eg not ODBC) interfaces to
> postgresql?
What problem do you want the alternative to solve? If it's just
the libpq-fetches-all-rows problem then you could use a cursor.
--
Michael Fuhr
From | Date | Subject | |
---|---|---|---|
Next Message | James Harper | 2006-02-01 02:51:00 | Re: libpq questions |
Previous Message | rlee0001 | 2006-02-01 02:11:51 | Re: 8.0.3 regexp_replace()... |