Tom Lane [Tue, 4 Jul 2000 06:11:54 +0000 (06:11 +0000)]
Make toast-table creation and deletion work somewhat reliably.
Don't go through pg_exec_query_dest(), but directly to the execution
routines. Also, extend parameter lists so that there's no need to
change the global setting of allowSystemTableMods, a hack that was
certain to cause trouble in the event of any error.
Move PGPORT envar handling to ResetAllOptions(). Improve long options
parsing to not clobber the optarg string -- so that we can bring
SetOptsFile() up to speed.
Have pg_dumpall write CREATE USER and CREATE GROUP commands instead of raw
COPYs of pg_shadow and pg_group.
It also turns out that pg_dumpall was all but broken for multiple servers
running at non-standard port numbers. You might get the users and groups
from one server and the databases from another. Fixed that.
A little user interface and code cleanup along with that. This also takes
care of the portability bug discussed in "[BUGS] pg_dumpall" in March 2000.
Bruce Momjian [Sat, 1 Jul 2000 14:10:32 +0000 (14:10 +0000)]
In the attache is new to_date()/to_timestamp() version.
Now the to_timestamp() support WW,W,J,SSSS,DDD conversion from strings and
the am/pm bug is fixed, the to_char() use week-of-year (WW) full compatible
with Oracle.
This patch update relevant regress-tests and docs too.
Peter Eisentraut [Fri, 30 Jun 2000 16:11:02 +0000 (16:11 +0000)]
Fixes for Solaris/cc suggested by <pgsql-hackers@thewrittenword.com>
Don't use DISABLE_COMPLEX_MACRO on Solaris. Don't define the
replacement function in the header file. Use -KPIC, not -K PIC.
Use CC to link C++ libraries, not ld/ar.
Eliminate file not found warnings in tcl build code.
Tom Lane [Fri, 30 Jun 2000 07:04:23 +0000 (07:04 +0000)]
Use a private memory context to store rule information in each relcache
entry that has rules. This allows us to release the rule parsetrees
on relcache flush without needing a working freeObject() routine.
Formerly, the rule trees were leaked permanently at relcache flush.
Also, clean up handling of rule creation and deletion --- there was
not sufficient locking of the relation being modified, and there was
no reliable notification of other backends that a relcache reload
was needed. Also, clean up relcache.c code so that scans of system
tables needed to load a relcache entry are done in the caller's
memory context, not in CacheMemoryContext. This prevents any
un-pfreed memory from those scans from becoming a permanent memory
leak.
Tom Lane [Thu, 29 Jun 2000 07:35:57 +0000 (07:35 +0000)]
Add test code to copy all parse/plan trees. Repair essential omissions
in copyfuncs and equalfuncs exposed by regression tests. We still have
some work to do: these modules really ought to handle most or all of
the utility statement node types. But it's better than it was.
Tom Lane [Thu, 29 Jun 2000 05:50:29 +0000 (05:50 +0000)]
Rearrange config.h entries into a more sensible order, and add some
documentation. Let's try to keep this file a bit neater in future,
hmm? Also (to get back to the original point) update info about
FUNC_MAX_ARGS, and add additional config symbols for debugging
new memory management changes.
Tom Lane [Thu, 29 Jun 2000 02:26:23 +0000 (02:26 +0000)]
Remove freefuncs.c, which hasn't been used in a long time and is not
worth the effort to continue to maintain. Since freeObject() is not
capable of coping with cases like multiple links to a node, it's
unlikely that it ever will be useful again. We now have memory
context management that offers a faster and more reliable way of
getting rid of arbitrary node trees (at the cost of having to know
in advance of building the tree that you'll want to get rid of it).
Peter Eisentraut [Wed, 28 Jun 2000 18:30:16 +0000 (18:30 +0000)]
Makefile cleanup for interface tree. Now essentially with all the
standard targets and behaviour. Replaced Makefile.in's with
Makefile's and declared the respective variables in Makefile.global.
maintainer-clean target now available at top level, although it does
not work in the backend tree yet.
Cleanup pass over Makefile.shlib, renamed some targets and variables.
The shared library symlink tests are now done by make, not the shell.
ecpg: Remove one warning in sloppy flex output.
PL/Perl and Perl interface: the MakeMaker documentation is confusing,
the realclean target *does* "delete derived files", but it also
uninstalls them. Don't use that.
The submake targets in the various bin directories that update libpq
should `make all', not `make libpq.a'. That is a) unportable, and
b) doesn't build the shared library.
Tom Lane [Wed, 28 Jun 2000 04:58:36 +0000 (04:58 +0000)]
Call me silly, but I think it would be a good idea if initdb and other
scripts are executable after being installed. Latest changes got the
permissions wrong (non executable).
Tom Lane [Wed, 28 Jun 2000 03:33:33 +0000 (03:33 +0000)]
First phase of memory management rewrite (see backend/utils/mmgr/README
for details). It doesn't really do that much yet, since there are no
short-term memory contexts in the executor, but the infrastructure is
in place and long-term contexts are handled reasonably. A few long-
standing bugs have been fixed, such as 'VACUUM; anything' in a single
query string crashing. Also, out-of-memory is now considered a
recoverable ERROR, not FATAL.
Eliminate a large amount of crufty, now-dead code in and around
memory management.
Fix problem with holding off SIGTRAP, SIGSEGV, etc in postmaster and
backend startup.
Bruce Momjian [Tue, 27 Jun 2000 18:08:49 +0000 (18:08 +0000)]
Tamotsu Nakagawa has posted a fix for this to a local mail list in
Japan. Can someone comment on this? According to him, with the patch
now only the geometry test fails.
Peter Eisentraut [Tue, 27 Jun 2000 00:32:06 +0000 (00:32 +0000)]
Makefile cleanup for bin and pl subtrees. They should now support
all the standard semantics. Also get rid of Makefile.in's on the
way and instead declare all variables in Makefile.global.
Peter Eisentraut [Thu, 22 Jun 2000 22:31:24 +0000 (22:31 +0000)]
Second pass over run-time configuration system. Adjust priorities on some
option settings. Sort out SIGHUP vs BACKEND -- there is no total ordering
here, so make explicit checks. Add comments explaining all of this.
Removed permissions check on SHOW command.
Add examine_subclass to the game, rename to SQL_inheritance to fit the
official data model better. Adjust documentation.
Standalone backend needs to reset all options before it starts. To
facilitate that, have IsUnderPostmaster be set by the postmaster itself,
don't wait for the magic -p switch.
Also make sure that all environment variables and argv's survive
init_ps_display(). Use strdup where necessary.
Have initdb make configuration files (postgresql.conf, pg_hba.conf) mode
0600 -- having configuration files is no fun if you can't edit them.
Peter Eisentraut [Tue, 20 Jun 2000 16:40:19 +0000 (16:40 +0000)]
Cleaned up PL/pgSQL build. Fixed a couple of copyandpaste'os in the
interfaces and interfaces/odbc make files. Adjusted regression test
driver to start building and installing in the top level directory.
Tom Lane [Tue, 20 Jun 2000 06:41:13 +0000 (06:41 +0000)]
Make renaming a temp table behave sensibly. We don't need to touch
the underlying table at all, just change the mapping entry ... but
that logic was missing.
Tom Lane [Tue, 20 Jun 2000 01:41:22 +0000 (01:41 +0000)]
Fix handling of type tuple associated with a temp relation. We have
to apply the tempname->realname mapping to type name lookup as well
as relation name lookup, else the type tuple will not be found when
wanted. This fixes bugs like this one:
create temp table foo (f1 int);
select foo.f2 from foo;
ERROR: Unable to locate type name 'foo' in catalog
Tom Lane [Mon, 19 Jun 2000 23:40:48 +0000 (23:40 +0000)]
Modify index-opening code to guarantee that the indexes of a relation
are opened in a consistent order by different backends (I ordered them
by index OID because that's easy, but any other consistent order would
do as well). This avoids potential deadlock for index types that we
acquire exclusive locks on ... ie, rtree.
Peter Eisentraut [Mon, 19 Jun 2000 16:58:48 +0000 (16:58 +0000)]
Integrated ODBC driver into regular build. No more standalone business,
which didn't work anyway. Had to back out unixodbc related patch which
broke the regular ODBC build.
Tom Lane [Mon, 19 Jun 2000 03:55:01 +0000 (03:55 +0000)]
Clean up bogosities in pg_opclass, pg_amop, pg_amproc. There are amproc
entries now for int8 and network hash indexes. int24_ops and int42_ops
are gone. pg_opclass no longer contains multiple entries claiming to be
the default opclass for the same datatype. opr_sanity regress test
extended to catch errors like these in the future.
Tom Lane [Sun, 18 Jun 2000 22:44:35 +0000 (22:44 +0000)]
Reimplement nodeMaterial to use a temporary BufFile (or even memory, if the
materialized tupleset is small enough) instead of a temporary relation.
This was something I was thinking of doing anyway for performance, and Jan
says he needs it for TOAST because he doesn't want to cope with toasting
noname relations. With this change, the 'noname table' support in heap.c
is dead code, and I have accordingly removed it. Also clean up 'noname'
plan handling in planner --- nonames are either sort or materialize plans,
and it seems less confusing to handle them separately under those names.
Peter Eisentraut [Sun, 18 Jun 2000 21:24:54 +0000 (21:24 +0000)]
Separated set constraints and set transaction reference pages, revised set
reference page to new configuration system. Big update to administrator's
guide, chapters Runtime environment, Client authentication, and User
management, the latter two were part of the old Security chapter.
Tom Lane [Sat, 17 Jun 2000 23:41:51 +0000 (23:41 +0000)]
Get rid of IndexIsUniqueNoCache() kluge by the simple expedient of
passing the index-is-unique flag to index build routines (duh! ...
why wasn't it done this way to begin with?). Aside from eliminating
an eyesore, this should save a few milliseconds in btree index creation
because a full scan of pg_index is not needed any more.
Tom Lane [Sat, 17 Jun 2000 21:49:04 +0000 (21:49 +0000)]
Fix performance problems with pg_index lookups (see, for example,
discussion of 5/19/00). pg_index is now searched for indexes of a
relation using an indexscan. Moreover, this is done once and cached
in the relcache entry for the relation, in the form of a list of OIDs
for the indexes. This list is used by the parser and executor to drive
lookups in the pg_index syscache when they want to know the properties
of the indexes. Net result: index information will be fully cached
for repetitive operations such as inserts.
Tom Lane [Sat, 17 Jun 2000 04:56:39 +0000 (04:56 +0000)]
Clean out another pocket of functions called via nonspecific function
pointers, namely the catcache tuple fetch routines. Also get rid of
the unused and possibly confusing 'size' field in struct cachedesc.
Since it doesn't allow for variable-length fields, anyone who
actually trusted it would likely be making a mistake...
Tom Lane [Thu, 15 Jun 2000 06:07:34 +0000 (06:07 +0000)]
Repair Large Object bugs demonstrated by Ian Grant's example. inv_write
was inappropriately relying on rel->rd_nblocks to tell if the LO is
empty (apparently a hack to get around a long-dead index bug), causing
misbehavior on a written-but-never-vacuumed LO. Also, inv_read failed
to cope gracefully with 'holes' (unwritten regions) in the object.
Peter Eisentraut [Wed, 14 Jun 2000 18:18:01 +0000 (18:18 +0000)]
Big warnings cleanup for Solaris/GCC. Down to about 40 now, but
we'll get there one day.
Use `cat' to create aclocal.m4, not `aclocal'. Some people don't
have automake installed.
Only run the autoconf rule in the top-level GNUmakefile if the
invoker specified `make configure', don't run it automatically
because of CVS timestamp skew.