Tom Lane [Sun, 9 May 1999 00:52:08 +0000 (00:52 +0000)]
Add 'temporary file' facility to fd.c, and arrange for temp
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.
Bruce Momjian [Fri, 7 May 1999 02:37:08 +0000 (02:37 +0000)]
Please apply the following patch for regress.sh to do something useful with
"SYSTEM", and unpack the files in the uuencoded .tar.gz file at the end in
src/test/regress so that the int2, int4 and geometry tests pass on NetBSD/i386.
They just fail on different wording of error messages and eg printing "0"
rather than "-0". At a guess the same will be true for the other NetBSD ports,
but I can't test them.
Tom Lane [Thu, 6 May 1999 01:30:58 +0000 (01:30 +0000)]
fix_indxqual_references didn't cope with ArrayRef nodes,
meaning that this failed:
select proname,typname,prosrc from pg_proc,pg_type
where proname = 'float8' and pg_proc.proargtypes[0] = pg_type.oid;
Tom Lane [Thu, 6 May 1999 00:30:47 +0000 (00:30 +0000)]
Fix some nasty coredump bugs in hashjoin. This code was just
about certain to fail anytime it decided the relation to be hashed was
too big to fit in memory --- the code for 'batching' a series of hashjoins
had multiple errors. I've fixed the easier problems. A remaining big
problem is that you can get 'hashtable out of memory' if the code's
guesstimate about how much overflow space it will need turns out wrong.
That will require much more extensive revisions to fix, so I'm committing
these fixes now before I start on that problem.
Use sprintf() to convert float8 to a string during conversion to numeric.
Original code used float8out(), but the resulting exponential notation
was not handled (e.g. '3E9' was decoded as '3').
Tom Lane [Tue, 4 May 1999 00:00:20 +0000 (00:00 +0000)]
Make sure targetlist generated for subplan does not share
nodes with HAVING qualifier of upper plan. Have not seen any failures,
just being a little bit paranoid...
Bruce Momjian [Mon, 3 May 1999 19:10:48 +0000 (19:10 +0000)]
here are some patches for 6.5.0 which I already submitted but have never
been applied. The patches are in the .tar.gz attachment at the end:
varchar-array.patch this patch adds support for arrays of bpchar() and
varchar(), which where always missing from postgres.
These datatypes can be used to replace the _char4,
_char8, etc., which were dropped some time ago.
block-size.patch this patch fixes many errors in the parser and other
program which happen with very large query statements
(> 8K) when using a page size larger than 8192.
This patch is needed if you want to submit queries
larger than 8K. Postgres supports tuples up to 32K
but you can't insert them because you can't submit
queries larger than 8K. My patch fixes this problem.
The patch also replaces all the occurrences of `8192'
and `1<<13' in the sources with the proper constants
defined in include files. You should now never find
8192 hardwired in C code, just to make code clearer.
Tom Lane [Mon, 3 May 1999 00:38:44 +0000 (00:38 +0000)]
Revise union_planner and associated routines to clean up breakage
from EXCEPT/HAVING patch. Cases involving nontrivial GROUP BY expressions
now work again. Also, the code is at least somewhat better documented...
Tom Lane [Sat, 1 May 1999 19:09:46 +0000 (19:09 +0000)]
Arrange for VACUUM to delete the init file that relcache.c uses
to save a little bit of backend startup time. This way, the first
backend started after a VACUUM will rebuild the init file with up-to-date
statistics for the critical system indexes.
Tom Lane [Fri, 30 Apr 1999 04:04:27 +0000 (04:04 +0000)]
Fill in reasonable-looking cost estimates in inserted nodes.
This makes no difference to the optimizer, which has already decided what
it's gonna do, but it makes the output of EXPLAIN much more plausible.
Tom Lane [Fri, 30 Apr 1999 04:01:44 +0000 (04:01 +0000)]
Clean up some bogosities in path cost estimation, like
sometimes estimating an index scan of a table to be cheaper than a
sequential scan of the same tuples...
Tom Lane [Fri, 30 Apr 1999 03:59:06 +0000 (03:59 +0000)]
Fix nasty little typo that prevented get_cheapest_path_for_joinkeys
from ever returning a path. This put a bit of a crimp in the system's
ability to generate intelligent merge-join plans...
Tom Lane [Thu, 29 Apr 1999 03:01:50 +0000 (03:01 +0000)]
Defend against 'update oid'. Someday we might want to support
that, but it'd be a New Feature, wouldn't it ... in the meantime,
avoiding a backend crash seems worthwhile.
Tom Lane [Sun, 25 Apr 1999 23:30:31 +0000 (23:30 +0000)]
It looks like the multibyte regress tests only work if both
the database encoding and the client encoding match the encoding expected
by the test. So, force both of them to be set from the MULTIBYTE
environment var. This allows regress tests to be run successfully in
multibyte environments other than the compiled-in default.
Tom Lane [Sun, 25 Apr 1999 20:35:51 +0000 (20:35 +0000)]
Correct potential infinite loop in pg_utf2wchar_with_len;
it failed to cover the case where high bits of char are 100 or 101.
Not sure if fix is right, but it agrees with pg_utf_mblen ... and it
doesn't lock up ...
Tom Lane [Sun, 25 Apr 1999 03:19:27 +0000 (03:19 +0000)]
Revise backend libpq interfaces so that messages to the frontend
can be generated in a buffer and then sent to the frontend in a single
libpq call. This solves problems with NOTICE and ERROR messages generated
in the middle of a data message or COPY OUT operation.
Tom Lane [Tue, 20 Apr 1999 03:51:19 +0000 (03:51 +0000)]
Un-break CREATE TYPE. Fix some other inconsistencies in the
pg_proc entries for array I/O routines besides the one detected by the
original patcher. Tighten type_sanity regress test accordingly.
Tom Lane [Tue, 20 Apr 1999 02:19:59 +0000 (02:19 +0000)]
Change elog(ERROR) to get back to main loop via a plain sigsetjmp,
instead of doing a kill(self, SIGQUIT) and expecting the signal handler
to do it. Also, clean up inconsistent definitions of the sigjmp buffer
in the several files that already referenced it.
Tom Lane [Tue, 20 Apr 1999 00:26:32 +0000 (00:26 +0000)]
Portability patches for HPUX 11 and Unixware in configure
and related files. Also remove float.c's gratuitous redeclaration of
isinf() ... looks like there are more decls in there that ought to be
in config.h, but I'll leave well enough alone for now ...
Tom Lane [Mon, 19 Apr 1999 04:17:11 +0000 (04:17 +0000)]
Fix problems seen when result of a subselect was used in an
expression context (ie, not at the top level of a WHERE clause). Examples
like this one work now:
SELECT name, value FROM t1 as touter WHERE
(value/(SELECT AVG(value) FROM t1 WHERE name = touter.name)) > 0.75;
Tom Lane [Mon, 19 Apr 1999 01:43:12 +0000 (01:43 +0000)]
Repair some problems in planner's handling of HAVING clauses.
This fixes a few of the problems Hiroshi Inoue complained of, but
I have not touched the rewrite-related issues.
Tom Lane [Sun, 18 Apr 1999 17:35:51 +0000 (17:35 +0000)]
After transforming a CASE expr with a default argument,
delete the default argument from the node. This prevents the executor
from spitting up on the untransformed argument expression. Typical
failure was:
select (case f1 when 'val' then 'subst' else f1 end) from t1;
ERROR: copyObject: don't know how to copy 704
Tom Lane [Sun, 18 Apr 1999 02:57:22 +0000 (02:57 +0000)]
Allow CREATE FUNCTION xyz AS '' LANGUAGE 'internal' to
work the way it used to (ie, assume xyz is the name of the builtin
function to call). Complain if an unknown builtin function name is
referenced.
Fix kill() call in elog() so that it gets its own pid by calling getpid().
MyProcPid global variable is set to 0 when postgres starts as a command
(not as a backend daemon). This leads issuing SIGQUIT to the process group,
not the process itself. As a result, parent sh gets core dumped in the
Wisconsin benchmark test.
Overhaul Wisconsin Benchmark test suit
- change temp -> temp_bench ("temp" is now a reserved word)
- fix bugs in queries
- add -B 256 option to run the postgres command
(without this, postgres seems to fail with hashjoin)
Fix max(int8) result by making sure int8larger() copies its result
rather than reusing the input storage.
Also made the same fix to int8smaller(), though there wasn't a symptom,
and went through and verified that other pass-by-reference data types
do the same thing. Not an issue for the by-value types.
Attached is new README.locale. Should go into .../doc. Includes
instructions on how to install and use Multibyte support. Primarily
oriented toward Russian (Cyrillic) users.
Oleg.
----
Oleg Broytmann http://members.xoom.com/phd2/ phd2@earthling.net
Programmers don't die, they just GOSUB without RETURN.
Tom Lane [Thu, 15 Apr 1999 04:08:07 +0000 (04:08 +0000)]
Initialize reltuples = 1000, relpages = 10 in a newly created
relation, rather than zeroes. This prevents the optimizer from making
foolish choices (ie, using nested-loop plans) on never-yet-vacuumed tables.
This is a hack, of course. Keeping accurate track of these statistics
would be a cleaner solution, but it's far from clear that it'd be worth
the cost of doing so. In any case we're not going to do that for 6.5.
In the meantime, this quick hack provides a useful performance improvement
in the regression tests and in many real-world scenarios.
Tom Lane [Thu, 15 Apr 1999 03:40:50 +0000 (03:40 +0000)]
Add ORDER BY clauses to some select-from-view operations
in rules regression test, in order to eliminate bogus test 'failures'
that occur due to platform-dependent and join-implementation-dependent
ordering of tuples. I'm not sure that I got all of the SELECTs that need
ordering clauses --- we may need some more. But this takes care of the
diffs between my platform and Jan's.
Tom Lane [Thu, 15 Apr 1999 02:24:41 +0000 (02:24 +0000)]
psql did the wrong thing with COPY FROM STDIN inside a file
sourced with \i (tried to read data from the terminal, rather than from
the source file; this breaks pg_dump scripts read with \i). Also, \o file
followed by COPY TO STDOUT wrote to terminal not designated file.
All better now.