files to be closed automatically at transaction abort or commit, should
they still be open. Also close any still-open stdio files allocated with
AllocateFile at abort/commit. This should eliminate problems with leakage
of file descriptors after an error. Also, put in some primitive buffered-IO
support so that psort.c can use virtual files without severe performance
penalties.
of MAXBACKENDS is now 1024, since all it's costing is about 32 bytes of memory
per array slot. configure's --with-maxbackends switch now controls DEF_MAXBACKENDS
which is simply the default value of the postmaster's -N switch. Thus,
the out-of-the-box configuration will still limit you to 64 backends,
but you can go up to 1024 backends simply by restarting the postmaster with
a different -N switch --- no rebuild required.
(--with-maxbackends). Add a postmaster switch (-N backends) that allows
the limit to be reduced at postmaster start time. (You can't increase it,
sorry to say, because there are still some fixed-size arrays.)
Grab the number of semaphores indicated by min(MAXBACKENDS, -N) at
postmaster startup, so that this particular form of bogus configuration
is exposed immediately rather than under heavy load.
spin-locks. Notice that it's now inline assembler in s_lock.h,
rather than seperate code in s_lock.c. It also shrank a little
bit... Just rip out the S_LOCK() define and insert the tas() inline
function. Please let me know if there are any problems with it.
Jon Buller
1. The UnixWare tas macro was reformatted (by indent or it like?) which caused
it to break. The asm macro construct is very particular about the %mem
construct -- it has to start in column 1.
2. When compiling libpq++, g++ was used even if configure found the C++ com-
piler to be CC.
3. When compiling libpq++, '-Wno-error' was added to CXXFLAGS, even if the
compiler wasn't g++.
Billy G. Allie
> sinval.patch
>
> fixes a problem in SI cache which causes table overflow if some
> backend is idle for a long time while other backends keep adding
> entries.
> It uses the new signal handling implemented in tprintf.patch.
> I have also increacasesed the max number of backends from 32 to 64
> and the table size from 1000 to 5000.
> I don't know if anybody is working on SI, but until another
> solution is found this patch fixes the problem. I have received
> messages from other people reporting the same problem which I
> fixed many months ago.
lock.patch
I have rewritten lock.c cleaning up the code and adding better
assert checking I have also added some fields to the lock and
xid tags for better support of user locks. There is also a new
function which returns an array of pids owning a lock.
I'm using this code from over six months and it works fine.
Summary of changes:
In pqcomm.h, use the SUN_LEN macro if it is defined to calculate
the size of the sockaddr_un structure.
In unixware.h, drop the use of the UNIXWARE macro. Everything can
be handled with the USE_UNIVEL_CC and DISABLE_COMPLEX_MACRO macros.
In s_lock.h, remove the reference to the UNIXWARE macro (see above).
In the unixware template, add the YFLAGS:-d line.
In various makefile templates, add (or cleanup) unixware and univel
port specific information.
-- Billy G. Allie
no longer returns buffer pointer, can be gotten from scan;
descriptor; bootstrap can create multi-key indexes;
pg_procname index now is multi-key index; oidint2, oidint4, oidname
are gone (must be removed from regression tests); use System Cache
rather than sequential scan in many places; heap_modifytuple no
longer takes buffer parameter; remove unused buffer parameter in
a few other functions; oid8 is not index-able; remove some use of
single-character variable names; cleanup Buffer variables usage
and scan descriptor looping; cleaned up allocation and freeing of
tuples; 18k lines of diff;
calls. Outside a transaction, the backend detects them as buffer
leaks; it sends a NOTICE, and frees them. This sometimes cause a
segmentation fault (at least on Linux). These indexes are initialized
on the first lo_read/lo_write/lo_tell call, and (normally) closed
on a lo_close call. Thus the buffer leaks appear when lo direct
access functions are used, and not with lo_import/lo_export functions
(libpq version calls lo_close before ending the command, and the
backend version uses another path).
The included patches (against recent snapshot, and against 6.3.2)
cause indexes to be closed on transaction end (that is on explicit
'END' statment, or on command termination outside trasaction blocks),
thus preventing the buffer leaks while increasing performance inside
transactions. Some (all?) 'classic' memory leaks are also removed.
I hope it will be ok.
--- Pascal ANDRE, graduated from Ecole Centrale Paris andre@via.ecp.fr
in a more readable form. -- I am submitting the following patches
to the June 6, 1998 snapshot of PostgreSQL. These patches implement
a port of PostgreSQL to SCO UnixWare 7, and updates the Univel port
(UnixWare 2.x). The patched files, and the reason
for the patch are:
File Reason for the patch ---------------
---------------------------------------------------------------
src/backend/port/dynloader/unixware.c src/backend/port/dynloader/unixware.h
src/include/port/unixware.h src/makefiles/Makefile.unixware
src/template/unixware
Created for the UNIXWARE port.
src/include/port/univel.h
Modifed this file to work with the changes made to
s_lock.[ch].
src/backend/storage/buffer/s_lock.c src/include/storage/s_lock.h
Moved the UNIXWARE (and Univel) tas() function from
s_lock.c to s_lock.h. The UnixWare compiler asm
construct is treated as a macro and needs to be in
the s_lock.h file. I also reworked the tas()
function to correct some errors in the code.
src/include/version.h.in
The use of the ## operator with quoted strings in
the VERSION macro caused problems with the UnixWare
C compiler. I removed the ## operators since they
were not needed in this case. The macro expands
into a sequence of quoted strings that will be
concatenated by any ANSI C compiler.
src/config.guess
This script was modified to recognize SCO UnixWare
7.
src/configure src/configure.in
The configure script was modified to recognize SCO
UnixWare 7.
Billy G. Allie
NS32K machine I contributed. In any case, I now have postgresql-6.3
running again on NetBSD/pc532, a NS32532 machine. The following
changes are needed relative to the src directory. (It looks like
support was partially removed when the files were moved from the
src/backend/storage/.... tree to the src/include tree.)
If you need me to get a current development version of postgresql
for this change let me know. Also, let me know if this code needs
updating due to another code movement that deleted the old NS32K
support.
Thank you.
Phil Nelson
GCC, the inner "#if defined(__GNUC__)" can just be omitted in that
architecture's block.
The existing arrangement with an outer "#if defined(__GNUC__)"
doesn't have any obvious benefit, and it encourages missed cases
like this one.
BTW, I'd suggest making the definition of clear_lock for HPUX be
static const slock_t clear_lock = {{-1, -1, -1, -1}};
The extra braces are needed to suppress warnings from gcc, and
declaring it const just seems like good practice.
regards, tom lane
but as I don't have access to a sparc for testing I just did what
I could. I am guessing here, but please apply the following to your
pgsql and let me know what happens. Also, cd to src/storage/buffer
and do 'make s_lock_test' as well.
David Gould