Tom Lane [Thu, 14 Dec 2000 00:41:09 +0000 (00:41 +0000)]
Change StoreCatalogInheritance() to work from a list of parent relation
OIDs rather than names. Aside from being simpler and faster, this way
doesn't blow up in the face of 'create temp table foo () inherits (foo)'.
Which is a rather odd thing to do, but it seems some people want to.
Bruce Momjian [Wed, 13 Dec 2000 04:02:15 +0000 (04:02 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.300
diff -r1.300 TODO
3c3
< Last updated: Tue Dec 12 23:01:04 EST 2000
---
> Last updated: Tue Dec 12 23:01:53 EST 2000
21d20
< * test to show diffs for TODO changes
Bruce Momjian [Wed, 13 Dec 2000 04:01:27 +0000 (04:01 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.299
diff -r1.299 TODO
3c3
< Last updated: Tue Dec 12 15:27:50 EST 2000
---
> Last updated: Tue Dec 12 23:01:04 EST 2000
20a21
> * test to show diffs for TODO changes
Tom Lane [Tue, 12 Dec 2000 23:33:34 +0000 (23:33 +0000)]
Cache eval cost of qualification expressions in RestrictInfo nodes to
avoid repeated evaluations in cost_qual_eval(). This turns out to save
a useful fraction of planning time. No change to external representation
of RestrictInfo --- although that node type doesn't appear in stored
rules anyway.
Bruce Momjian [Tue, 12 Dec 2000 16:47:52 +0000 (16:47 +0000)]
In 'Joins between classes' in Section 5 of the tutorial we have, in
the first paragraph:
As an example, say we wish to find all the records that
are in the temperature range of other records. In
effect, we need to compare the temp_lo and temp_hi
attributes of each EMP instance to the temp_lo and
temp_hi attributes of all other EMP instances.
I believe that EMP should read WEATHER, as the example query that
follows joins WEATHER to itself.
Tom Lane [Tue, 12 Dec 2000 05:07:59 +0000 (05:07 +0000)]
Revise SELECT reference page for outer joins, subselect in FROM,
ISO-compliant UNION/INTERSECT/EXCEPT. Revise discussion of rule
rewriter to reflect new subselect-in-FROM implementation of views.
Miscellaneous other cleanups.
Bruce Momjian [Sun, 10 Dec 2000 23:54:28 +0000 (23:54 +0000)]
Here is patch to the ODBC driver to update the version to 2.5 and allow
all forms of foreign keys be exposed to SQLForeignKeys. This patch is in
addition to the ones I mailed yesterday (forget had I changed that as
well....)
Michael Fork - CCNA - MCP - A+
Network Support - Toledo Internet Access - Toledo Ohio
Bruce Momjian [Sun, 10 Dec 2000 22:59:10 +0000 (22:59 +0000)]
Here is a diff to info.c in interfaces/odbc that updates SQLForeignKeys to
return foreign key information based on the pg_trigger system table. I
have tested the patch with (what I believe) is all possible
primary/foreign key combinations -- however I may have missed some, so if
anyone feels like taking the patch for a test drive, here are some useful
links:
Tom Lane [Fri, 8 Dec 2000 23:57:03 +0000 (23:57 +0000)]
Repair erroneous use of hashvarlena() for MACADDR, which is not a
varlena type. (I did not force initdb, but you won't see the fix
unless you do one.) Also, make sure all index support operators and
functions are careful not to leak memory for toasted inputs; I had
missed some hash and rtree support ops on this point before.
Tom Lane [Fri, 8 Dec 2000 22:21:33 +0000 (22:21 +0000)]
Resurrect -F switch: it controls fsyncs again, though the fsyncs are
mostly just on the WAL logfile nowadays. But if people want to disable
fsync for performance, why should we say no?
Tom Lane [Fri, 8 Dec 2000 20:06:58 +0000 (20:06 +0000)]
Remove error check that disallowed setval() on a sequence with cache
value greater than one. The behavior this sought to disallow doesn't
seem any less confusing than the other behaviors of cached sequences.
Improve wording of some error messages, too.
Update documentation accordingly. Also add an explanation that
aborted transactions do not roll back their nextval() calls; this
seems to be a FAQ, so it ought to be mentioned here...
Tom Lane [Thu, 7 Dec 2000 18:38:59 +0000 (18:38 +0000)]
Make OVERLAPS operators conform to SQL92 spec regarding NULL handling.
As I read it, the spec requires a non-null result in some cases where
one of the inputs is NULL: specifically, if the other endpoint of that
interval is between the endpoints of the other interval, then the result
is known TRUE despite the missing endpoint. The spec could've been a
lot simpler if they did not intend this behavior.
I did not force an initdb for this change, but if you don't do one you'll
still see the old strict-function behavior.
Tom Lane [Thu, 7 Dec 2000 01:12:08 +0000 (01:12 +0000)]
transformForUpdate() mustn't assume rowMarks list is initially empty.
It could be recursing into a sub-query where there was already a FOR
UPDATE clause.
Tom Lane [Wed, 6 Dec 2000 23:55:19 +0000 (23:55 +0000)]
Clean up handling of FOR UPDATE inside views and subselects ... make it
work where we can (given that the executor only handles it at top level)
and generate an error where we can't. Note that while the parser has
been allowing views to say SELECT FOR UPDATE for a few weeks now, that
hasn't actually worked until just now.
Tom Lane [Tue, 5 Dec 2000 23:40:36 +0000 (23:40 +0000)]
I've just seen what happens when the MEMORY_CONTEXT_CHECKING code fires
an error at end of transaction ... and I did *not* like it. Reduce ERROR
to NOTICE so that this situation doesn't cause an infinite loop.
Tom Lane [Tue, 5 Dec 2000 22:03:57 +0000 (22:03 +0000)]
In SELECT FOR UPDATE, silently ignore null CTIDs, rather than generating
an error as we used to. In an OUTER JOIN scenario, retrieving a null
CTID from one of the input relations is entirely expected. We still
want to lock the input rows from the other relations, so just ignore
the null and keep going.
Tom Lane [Tue, 5 Dec 2000 19:57:56 +0000 (19:57 +0000)]
From Stephan Szabo:
I believe this should fix the issue that Philip Warner
noticed about the check for unique constraints meeting the
referenced keys of a foreign key constraint allowing the
specification of a subset of a foreign key instead of
rejecting it. I also added tests for a base case of
this to the foreign key and alter table tests and patches
for expected output.
Tom Lane [Tue, 5 Dec 2000 19:15:10 +0000 (19:15 +0000)]
Repair breakage of rules containing INSERT ... SELECT actions, per bug
report from Joel Burton. Turns out that my simple idea of turning the
SELECT into a subquery does not interact well *at all* with the way the
rule rewriter works. Really what we need to make INSERT ... SELECT work
cleanly is to decouple targetlists from rangetables: an INSERT ... SELECT
wants to have two levels of targetlist but only one rangetable. No time
for that for 7.1, however, so I've inserted some ugly hacks to make the
rewriter know explicitly about the structure of INSERT ... SELECT queries.
Ugh :-(
Tom Lane [Sun, 3 Dec 2000 20:45:40 +0000 (20:45 +0000)]
Ensure that all uses of <ctype.h> functions are applied to unsigned-char
values, whether the local char type is signed or not. This is necessary
for portability. Per discussion on pghackers around 9/16/00.
Repair usage of the OVERLAPS operator.
Allow some operator-like tokens to be used as function names.
Flesh out support for time, timetz, and interval operators
and interactions.
Regression tests pass, but non-reference-platform horology test results
will need to be updated.
Tom Lane [Sat, 2 Dec 2000 18:16:40 +0000 (18:16 +0000)]
Don't cause --enable-cassert to define COPY_PARSE_PLAN_TREES automatically
anymore. That won't teach us anything new for the rest of this release
cycle, so it seems better to keep the --assert environment more like the
non-assert environment for beta.
I'm going to leave CLOBBER_FREED_MEMORY and MEMORY_CONTEXT_CHECKING
turned on by --enable-cassert for now, however.
Tom Lane [Fri, 1 Dec 2000 22:10:31 +0000 (22:10 +0000)]
Make tuple receive/print routines TOAST-aware. Formerly, printtup would
leak memory when printing a toasted attribute, and printtup_internal
didn't work at all...
Tom Lane [Fri, 1 Dec 2000 19:52:04 +0000 (19:52 +0000)]
Make elog() switch to ErrorContext while invoking libpq output routines,
since those routines may do palloc's. We want to be fairly sure we can
send the error message to the client even under low-memory conditions.
That's what we stashed away 8K in ErrorContext for, after all ...
Tom Lane [Fri, 1 Dec 2000 18:14:29 +0000 (18:14 +0000)]
Pursuant to a pghackers discussion back around 11-Jul-00, get rid of aset.c's
not-very-good handling of mid-size allocation requests. Do everything via
either the "small" case (chunk size rounded up to power of 2) or the "large"
case (pass it straight off to malloc()). Increase the number of freelists
a little to set the breakpoint between these behaviors at 8K.
Tom Lane [Fri, 1 Dec 2000 05:17:19 +0000 (05:17 +0000)]
It seems appropriate that the extended MEMORY_CONTEXT_CHECKING code
immediately uncovered three of Karel's own bugs, including a routine
that scribbled on its input (naughty naughty!)
Tom Lane [Fri, 1 Dec 2000 05:16:45 +0000 (05:16 +0000)]
Clean up MEMORY_CONTEXT_CHECKING code, and apply it more thoroughly. Also,
apply Karel Zak's patch to recycle residual space in an exhausted allocation
block. (Bet you thought I'd forgot about that, Karel?)