Tom Lane [Tue, 17 Feb 2004 00:52:53 +0000 (00:52 +0000)]
Make use of statistics on index expressions. There are still some
corner cases that could stand improvement, but it does all the basic
stuff. A byproduct is that the selectivity routines are no longer
constrained to working on simple Vars; we might in future be able to
improve the behavior for subexpressions that don't match indexes.
Michael Meskes [Mon, 16 Feb 2004 07:41:54 +0000 (07:41 +0000)]
- Cleaned up parser a little bit. It does not make sense to allow a
typename to be typedef'ed that cannot be parsed as variable type.
- Allowed some SQL keywords to be used as C variable names.
Tom Lane [Sun, 15 Feb 2004 21:01:39 +0000 (21:01 +0000)]
First steps towards statistics on expressional (nee functional) indexes.
This commit teaches ANALYZE to store such stats in pg_statistic, but
nothing is done yet about teaching the planner to use 'em.
Also, repair longstanding oversight in separate ANALYZE command: it
updated the pg_class.relpages and reltuples counts for the table proper,
but not for indexes.
Tom Lane [Sat, 14 Feb 2004 20:16:18 +0000 (20:16 +0000)]
Create crosstype comparison operators for date vs. timestamp and date
vs. timestamptz. This allows use of indexes for expressions like
datecol >= date 'today' - interval '1 month'
which were formerly not indexable without casting the righthand side
down from timestamp to date.
Tom Lane [Fri, 13 Feb 2004 22:26:30 +0000 (22:26 +0000)]
Repair optimization bug I introduced in a moment of brain fade back in
Nov 2002: when constant-expression simplification removes all the
aggregate function calls from a query, that doesn't mean we can act as
though there never were any aggregates. Per bug report from Gabor Szucs.
Tom Lane [Fri, 13 Feb 2004 06:39:49 +0000 (06:39 +0000)]
After further thought about support for gathering stats on functional
indexes, it seems like we ought to put another layer of indirection
between the compute_stats functions and the actual data storage. This
would allow us to compute the values on-the-fly, for example.
Bruce Momjian [Fri, 13 Feb 2004 04:40:06 +0000 (04:40 +0000)]
Tom Lane wrote:
> momjian@svr1.postgresql.org (Bruce Momjian) writes:
>> someone asked me about the FK deadlock fix, mentioned in the 7.3.3
>> release notes as 3rd change:
>> http://www.postgresql.org/docs/current/static/release-7-3-3.html
>> Actually, that fix was available with 7.4, not 7.3. Don't know if we can
>> retroactively change the release-notes though.
>
> This is completely erroneous, please undo it.
>
> 2003-05-21 14:14 tgl
>
> * src/: backend/utils/adt/ri_triggers.c,
> test/regress/expected/foreign_key.out (REL7_3_STABLE): Back-patch
> Jan's fix to avoid primary key lookup (and lock) if foreign key
> does not change on UPDATE.
Oh ... didn't know that you did a backpatch. Sorry
Tom Lane [Thu, 12 Feb 2004 23:41:04 +0000 (23:41 +0000)]
Add hooks for type-specific calculation of ANALYZE statistics. Idea and
coding by Mark Cave-Ayland, some kibitzing by Tom Lane. initdb forced
due to new column in pg_type.
Bruce Momjian [Thu, 12 Feb 2004 18:09:43 +0000 (18:09 +0000)]
File not needed:
.< * Improve speed with indexes (perhaps recreate index instead) [vacuum]
> * Improve speed with indexes (perhaps recreate index instead) 369c369
< lock and truncate table [vacuum]
> lock and truncate table 371c371
< rather than in /contrib [vacuum]
> rather than in /contrib
Bruce Momjian [Thu, 12 Feb 2004 16:38:04 +0000 (16:38 +0000)]
Fix typo:
On Mon, 2004-01-26 at 21:28, Peter Eisentraut wrote:
> Christophe Combelles wrote:
> > At the bottom of this doc file :
> > file:///usr/share/doc/postgresql-doc/html/tutorial-createdb.html
> > "and it also happens that that user always has permission"
> > ---- x2
> The first "that" serves as a conjuction, the second one serves as an
> article. Looks correct to me.
A better workaround for the sentence would be something like:
"and it also happens that the user always has permission"
Jan Wieck [Thu, 12 Feb 2004 15:06:56 +0000 (15:06 +0000)]
Fixed bug where FlushRelationBuffers() did call StrategyInvalidateBuffer()
for already empty buffers because their buffer tag was not cleard out
when the buffers have been invalidated before.
Also removed the misnamed BM_FREE bufhdr flag and replaced the checks,
which effectively ask if the buffer is unpinned, with checks against the
refcount field.
Tom Lane [Wed, 11 Feb 2004 22:55:26 +0000 (22:55 +0000)]
Commit the reasonably uncontroversial parts of J.R. Nield's PITR patch, to
wit: Add a header record to each WAL segment file so that it can be reliably
identified. Avoid splitting WAL records across segment files (this is not
strictly necessary, but makes it simpler to incorporate the header records).
Make WAL entries for file creation, deletion, and truncation (as foreseen but
never implemented by Vadim). Also, add support for making XLOG_SEG_SIZE
configurable at compile time, similarly to BLCKSZ. Fix a couple bugs I
introduced in WAL replay during recent smgr API changes. initdb is forced
due to changes in pg_control contents.
Tom Lane [Wed, 11 Feb 2004 22:25:02 +0000 (22:25 +0000)]
Repair some problems in bgwriter start/stop logic. In particular, don't
allow the bgwriter to start before the startup subprocess has finished
... it tends to crash otherwise. (The same problem may have existed for
the checkpointer, I'm not entirely sure.) Remove some code that was
redundant because the bgwriter is handled as a member of the backend list.
Tom Lane [Tue, 10 Feb 2004 03:42:45 +0000 (03:42 +0000)]
Centralize implementation of delay code by creating a pg_usleep()
subroutine in src/port/pgsleep.c. Remove platform dependencies from
miscadmin.h and put them in port.h where they belong. Extend recent
vacuum cost-based-delay patch to apply to VACUUM FULL, ANALYZE, and
non-btree index vacuuming.
By the way, where is the documentation for the cost-based-delay patch?
Tom Lane [Tue, 10 Feb 2004 01:55:27 +0000 (01:55 +0000)]
Restructure smgr API as per recent proposal. smgr no longer depends on
the relcache, and so the notion of 'blind write' is gone. This should
improve efficiency in bgwriter and background checkpoint processes.
Internal restructuring in md.c to remove the not-very-useful array of
MdfdVec objects --- might as well just use pointers.
Also remove the long-dead 'persistent main memory' storage manager (mm.c),
since it seems quite unlikely to ever get resurrected.
Neil Conway [Wed, 4 Feb 2004 01:11:47 +0000 (01:11 +0000)]
Use memmove() rather than memcpy() in set_var_from_var(). If this function
is asked to assign a variable to itself, it will result in doing a
memcpy() on an entirely-overlapping memory range, which results in
undefined behavior according to ANSI C. That said, it is unlikely to
actually do anything bad on any sane libc, but this keeps valgrind quiet.
Tom Lane [Tue, 3 Feb 2004 17:34:04 +0000 (17:34 +0000)]
Rename SortMem and VacuumMem to work_mem and maintenance_work_mem.
Make btree index creation and initial validation of foreign-key constraints
use maintenance_work_mem rather than work_mem as their memory limit.
Add some code to guc.c to allow these variables to be referenced by their
old names in SHOW and SET commands, for backwards compatibility.
Joe Conway [Tue, 3 Feb 2004 08:29:57 +0000 (08:29 +0000)]
Add function (actually an int4 and an int8 version) that generates
a series of numbers, optionally using an explicit step size other
than the default value (one). Use function in the information_schema
to replace hard-wired knowledge of INDEX_MAX_KEYS. initdb forced due
to pg_proc change. Documentation update still needed -- will be
committed separately.
Neil Conway [Mon, 2 Feb 2004 16:58:30 +0000 (16:58 +0000)]
Fix a read of uninitialized memory in next_token() of hba.c, spotted via
valgrind: a buffer passed to strncmp() had to be NUL-terminated. Original
report and patch from Dennis Bjorkland, some cleanup by Andrew Dunstan,
and finally some editorializing from Neil Conway.
Neil Conway [Mon, 2 Feb 2004 00:35:08 +0000 (00:35 +0000)]
Use Tcl_PutEnv() in place of putenv() in libpgtcl, as the latter can
apparently corrupt the Tcl runtime. Per suggestion from Michael
Brusser <michael@synchronicity.com>
Bruce Momjian [Mon, 2 Feb 2004 00:11:31 +0000 (00:11 +0000)]
Briefly,
* configure + Makefile changes
* shared memory attaching in EXEC_BACKEND case (+ minor fix for apparent
cygwin bug under cygwin/EXEC_BACKEND case only)
* PATH env var separator differences
* missing win32 rand functions added
* placeholder replacements for sync etc under port.h
To those who are really interested, and there are a few of you: the attached
patch + file will allow the source base to be compiled (and, for some
definition, "run") under MingW, with the following caveats (I wanted to
first properly fix all but the last of these, but y'all won't quit asking
for a patch :-):
* child death: SIGCHLD not yet sent, so as a minimum, you'll need to
put in some sort of delay after StartupDatabase, and handle setting
StartupPID to 0 etc (ie. the stuff the reaper() signal function is supposed
to do)
* dirmod.c: comment out the elog calls
* dfmgr.c: some hackage required to substitute_libpath_macro
* slru/xact.c: comment out the errno checking after the readdir
(fixed by next version of MingW)
Again, this is only if you *really* want to see postgres compile and start,
and is a nice leg-up for working on the other Win32 TODO list items. Just
don't expect too much else from it at this point...
Tom Lane [Sun, 1 Feb 2004 06:27:48 +0000 (06:27 +0000)]
Make length() disregard trailing spaces in char(n) values, per discussion
some time ago and recent patch from Gavin Sherry. Update documentation
to point out that trailing spaces are insignificant in char(n).
Tom Lane [Sat, 31 Jan 2004 00:45:21 +0000 (00:45 +0000)]
Fix text_position to not scan past end of source string in multibyte
case, per report from Korea PostgreSQL Users' Group. Also do some
cosmetic cleanup in nearby code.
Tom Lane [Wed, 28 Jan 2004 22:14:04 +0000 (22:14 +0000)]
Make USING and WITH optional to bring the syntax of \copy into exact
agreement with what the backend grammar actually accepts (which is a
bit looser than what its documentation claims). Per report from Bill
Moran, though I did not use his patch since it removed all the
undocumented flexibility that the code historically had and the backend
still has.
Tom Lane [Wed, 28 Jan 2004 21:02:40 +0000 (21:02 +0000)]
Review uses of IsUnderPostmaster, change some tests to look at
whereToSendOutput instead because they are really inquiring about
the correct client communication protocol. Update some comments.
This is pointing towards supporting regular FE/BE client protocol
in a standalone backend, per discussion a month or so back.