Tom Lane [Sat, 23 Sep 2000 23:50:47 +0000 (23:50 +0000)]
Back-patch code to deduce implied equalities from transitivity of
mergejoin clauses, and add these equalities to the given WHERE clauses.
This is necessary to ensure that sort keys we think are equivalent
really are equivalent as soon as their rels have been joined. Without
this, 7.0 may create an incorrect mergejoin plan.
Tom Lane [Sat, 23 Sep 2000 23:31:24 +0000 (23:31 +0000)]
Back-patch fix that allows AllocateFile() to return errno=ENFILE/EMFILE
after we are no longer able to close any more VFDs. This is needed to
avoid postmaster crash under out-of-file-descriptors conditions.
Tom Lane [Sat, 23 Sep 2000 22:11:41 +0000 (22:11 +0000)]
Back-patch fix for 'Sorcerer's Apprentice' syndrome wherein md.c would
create a vast quantity of zero-length files if asked to access a block
number far beyond the actual end of a relation.
Tom Lane [Sat, 23 Sep 2000 21:15:26 +0000 (21:15 +0000)]
Apply Jeroen van Vianen's patch for failure to check heap_openr failure
in RI triggers. This is fixed in another way in current sources, but
might as well apply this patch to REL7_0 branch so that 7.0.3 need not
suffer this crash.
Tom Lane [Sat, 23 Sep 2000 21:00:05 +0000 (21:00 +0000)]
Back-patch fix to copy sub-Query nodes before planning them. This
fixes problems with subselects appearing in contexts like COALESCE or
BETWEEN, where parser will make multiple links to same subexpression.
Tom Lane [Sun, 28 May 2000 15:40:25 +0000 (15:40 +0000)]
fastpath neglected to pass a valid isNull flag to the function being
called. We hadn't noticed this because C-coded functions mostly don't
pay attention to isNull anyway ... but plpgsql functions sure do ...
This is fixed in another way for 7.1, but 7.0.1 needs this patch.
Tom Lane [Fri, 26 May 2000 17:19:15 +0000 (17:19 +0000)]
Reduce eqsel()'s fudge-factor for estimating the frequency of values
other than the most common value in a column. We had had 0.5, make it
0.1 to make it more likely that an indexscan will be chosen. Really
need better statistics instead, but this should stem the bleeding
meanwhile ...
Tom Lane [Fri, 26 May 2000 01:26:19 +0000 (01:26 +0000)]
After closing frontend socket, set MyProcPort->sock = -1 to ensure that
subsequent I/O attempts fail cleanly. I'm speculating about failure
scenarios in which we do pq_close, then something in a proc_exit routine
opens a file (re-using that kernel FD number), then something else
fails and tries to write an elog message to the frontend ... message
ends up in opened file, oops. No known examples of this but it seems
like a potential hole.
Tom Lane [Thu, 25 May 2000 22:42:19 +0000 (22:42 +0000)]
Modify raw parsetree representation returned by gram.y for SubLinks:
the oper field should be a valid Node structure so it can be dumped by
outfuncs.c without risk of coredump. (We had been using a raw pointer
to character string, which surely is NOT a valid Node.) This doesn't
cause any backwards compatibility problems for stored rules, since
raw unanalyzed parsetrees are never stored.
Tom Lane [Thu, 25 May 2000 21:30:20 +0000 (21:30 +0000)]
Do table renaming in a sane order: physical file rename must happen
*last*, after all updating of system catalogs. In old code, an error
detected during TypeRename left the relation hosed. Also, add a call
to flush the relation's relcache entry, rather than trusting to shared
cache invalidation to flush it for us.
Bruce Momjian [Thu, 25 May 2000 19:09:55 +0000 (19:09 +0000)]
! * Users doing non-blocking connections need to handle the reset
! * themselves, they'll need to check the connection status if we
! * return an error.
Tatsuo Ishii [Thu, 25 May 2000 06:53:43 +0000 (06:53 +0000)]
On solaris, createdb/dropdb fails because of strange behavior of system().
(it returns error with errno ECHILD upon successful completion of commands).
This fix ignores an error from system() if errno == ECHILD.
Tom Lane [Tue, 23 May 2000 16:56:37 +0000 (16:56 +0000)]
Fix problem in which sloppily-coded test in ExecInitIndexScan would
think that both sides of indexqual look like index keys. An example is
create table inside (f1 float8 primary key);
create table outside (g1 float8, g2 float8);
select * from inside,outside where f1 = atan2(g1+1, g2);
ERROR: ExecInitIndexScan: both left and right ops are rel-vars
(note that failure is potentially platform-dependent). Solution is a
cleanup I had had in mind to make anyway: functional index keys should
be represented as Var nodes in the fixed indexqual, just like regular
index keys.
Tom Lane [Tue, 23 May 2000 04:55:44 +0000 (04:55 +0000)]
Twiddle C++ configuration checks so that we #include <string> (if
it exists) before testing 'using namespace std'. This is necessary
on some C++ setups where the compiler won't take a 'using' until
you've included a header that mentions namespace std. (Pretty braindead
if you ask me, but...)
Tom Lane [Tue, 23 May 2000 02:12:46 +0000 (02:12 +0000)]
Transmit -I switches selected by configure (particularly those from
--with-includes) to makefiles for pltcl and plperl, so that these
switches will be used even though we do not want other top-level
CFLAGS. Ain't it fun trying to support multiple-compiler platforms?
Bruce Momjian [Mon, 22 May 2000 02:34:23 +0000 (02:34 +0000)]
I am attempting to integrate postgres (v 7.0) with an open source
project I am working on (Recall - a distributed, fault-tolerant,
replicated, storage framework @ http://www.fault-tolerant.org).
Recall is written in C++. I need to include the postgres headers and
there are some problems when including the headers w/C++.
Attached is a patch generated from postgres/src that fixes my problems.
I was hoping to get this into the main source. It's very small (2k) and
3 files are changed: backend/utils/fmgr/fmgr.c,
backend/utils/Gen_fmgrtab.sh.in, and include/access/tupdesc.h.
In C++, you get a multiply defined symbol because the variable
(FmgrInfo *fmgr_pl_finfo) is defined in the header (the patch moves it
to the .c file). The other problem in tupdesc.h is the use of typeid
is a problem in c++ (I renamed it to oidtypeid).
Tom Lane [Sun, 21 May 2000 21:19:53 +0000 (21:19 +0000)]
Remove calls to getprotobyname(), which we now know leaks memory on
some platforms --- and I also see that it is documented as not thread-
safe on HPUX and possibly other platforms. No good reason not to just
use IPPROTO_TCP constant from <netinet/in.h> instead.
Tom Lane [Sun, 21 May 2000 02:28:55 +0000 (02:28 +0000)]
Repair memory leaks that caused CacheCxt to grow without bound. We
really ought to fix relcache entry construction so that it does not
do so much with CurrentMemoryContext = CacheCxt. As is, relatively
harmless leaks in either sequential or index scanning translate to
permanent leaks if they occur when called from relcache build.
For the moment, however, the path of least resistance is to repair
all such leaks...
Tom Lane [Sun, 21 May 2000 02:23:30 +0000 (02:23 +0000)]
Add debug code to aid in memory-leak tracking: if SHOW_MEMORY_STATS is
defined then statistics about memory usage of all the global memory
contexts are printed after each commit.