Tom Lane [Tue, 4 Apr 2000 23:52:50 +0000 (23:52 +0000)]
Actually, that still wasn't quite right. If we skip a query because of
xact abort state in pg_exec_query_dest, we should continue scanning the
querytree list, on the off chance that one of the later queries in the
string is COMMIT or ROLLBACK.
Tom Lane [Tue, 4 Apr 2000 21:44:40 +0000 (21:44 +0000)]
Fix bug noted by Bruce: FETCH in an already-aborted transaction block
would crash, due to premature invocation of SetQuerySnapshot(). Clean
up problems with handling of multiple queries by splitting
pg_parse_and_plan into two routines. The old code would not, for
example, do the right thing with END; SELECT... submitted in one query
string when it had been in transaction abort state, because it'd decide
to skip planning the SELECT before it had executed the END. New
arrangement is simpler and doesn't force caller to plan if only
parse+rewrite is needed.
Tom Lane [Tue, 4 Apr 2000 05:22:46 +0000 (05:22 +0000)]
Add a check to pg_dump to see whether backend is same version as pg_dump.
If not, abort by default. Abort can be prevented by using -i or
--ignore-version switch.
Tom Lane [Tue, 4 Apr 2000 02:30:52 +0000 (02:30 +0000)]
When rewriting an aggregate introduced into WHERE, allow agg argument to
be an expression not just a simple Var, so long as only one table is
referenced (so that code isn't really any more difficult than before).
This whole thing is still fundamentally bogus, but at least we can accept
a few more cases than before.
Tom Lane [Tue, 4 Apr 2000 01:21:48 +0000 (01:21 +0000)]
Fix extremely nasty little bug observed when a sub-SELECT appears in
WHERE in a place where it can be part of a nestloop inner indexqual.
As the code stood, it put the same physical sub-Plan node into both
indxqual and indxqualorig of the IndexScan plan node. That confused
later processing in the optimizer (which expected that tracing the
subPlan list would visit each subplan node exactly once), and would
probably have blown up in the executor if the planner hadn't choked first.
Fix by making the 'fixed' indexqual be a complete deep copy of the
original indexqual, rather than trying to share nodes below the topmost
operator node. This had further ramifications though, because we were
making the aforesaid list of sub-Plan nodes during SS_process_sublinks
which is run before construction of the 'fixed' indexqual, meaning that
the copy of the sub-Plan didn't show up in that list. Fix by rearranging
logic so that the sub-Plan list is built by the final set_plan_references
pass, not in SS_process_sublinks. This may sound like a mess, but it's
actually a good deal cleaner now than it was before, because we are no
longer dependent on the assumption that planning will never make a copy
of a sub-Plan node.
Augment the function call map logic with code from Tom Lane.
Should be more robust to overflows.
Pass through an unmapped function unchanged, rather than rejecting it.
Add a few more functions, but comment out those which can go through as-is.
Can be used with contrib/odbc/ package, though that isn't committed yet.
Bruce Momjian [Mon, 3 Apr 2000 20:56:40 +0000 (20:56 +0000)]
Hi,
here is an updated version of the bit type with a bugfix and all the necessa
ry
SQL functions defined. This should replace what is currently in contrib. I'd
appreciate any comments on what is there.
Tom Lane [Fri, 31 Mar 2000 19:39:22 +0000 (19:39 +0000)]
Fix low-probability bug in relcache startup: write_irels wrote the
pg_internal.init file in-place, which meant that if another backend
started at about the same time, it might read the incomplete file.
init_irels tries to guard against that, but I have now seen a crash
due to reading bad data from a partly-written file. (This may indicate
a kernel bug on my platform? Not sure.) Anyway, clearly the safest
course is to write the new pg_internal.init file under a unique temporary
filename, and rename it into place only after it's all written.
Bruce Momjian [Fri, 31 Mar 2000 14:14:36 +0000 (14:14 +0000)]
I have tested the beta3 on WinNT and here are the results:
- I was unable to compile ecpg due to the ":=" instead of "=" in defining
LIBPQDIR and some other variables in Makefile.global.in
- pg_id (and also pg_encoding) executable was not removed during "make
clean" - there was no $(X) appended to the executable name for rm
- I have added result for int2, int4, float8 and geometry regression tests
- int2, int2 - yet another message for too large numbers ;-)
- float8 - it is problably a bug in the newlib C library - it has no
error message for numbers with exponent -400
- geometry - differences in precision of float numbers
- I have added appropriate lines into resultmap file
- I have modified the script regress.sh to use "case" statement when testing
the hostname. For cygwin the script is called with "i686-pc-cygwin" (on my
machine) as a parameter and this was not catched with the "if" statement.
The check was done for PORTNAME (win) and not HOSTNAME (i.86-pc-cygwin*).
The patch for described modifications is included.
All this modifications can be applied to "current" tree too.
The compilation was done on CygwinB20.1 with gcc 2.95, cygipc library 1.05.
The binaries were able to run also on the newest development snapshot
(2000-03-25).
Tatsuo Ishii [Fri, 31 Mar 2000 13:04:31 +0000 (13:04 +0000)]
Fix configure.in. Remove SJIS, BIG5, WIN1250 from the selection list of
multibyte encodings. These cannot be used as a backend/database encoding
(OK to use as a client encoding).
Tom Lane [Fri, 31 Mar 2000 05:11:13 +0000 (05:11 +0000)]
Update horology-solaris-1947.out per results from SL Baur. These are
actually from an alpha-dec-osf machine, but as far as can be told the
two platforms have the same ideas about past DST rules.
Tom Lane [Fri, 31 Mar 2000 05:03:39 +0000 (05:03 +0000)]
Update alpha templates as suggested by SL Baur and Adriaan Joubert.
Make similar changes to hpux templates. Might want to do the same for
other foo_cc and foo_gcc pairs, but will desist until I hear from
someone who uses those platforms.
Tom Lane [Fri, 31 Mar 2000 05:00:36 +0000 (05:00 +0000)]
Use the CXXFLAGS exported by configure (amazingly, we weren't before!)
and do not arbitrarily pull in CFLAGS instead. This caters to platforms
where the C++ compiler does not like all the same switches the C compiler
wants.
Tom Lane [Fri, 31 Mar 2000 02:43:31 +0000 (02:43 +0000)]
Get rid of SetBufferWriteMode(), which was an accident waiting to happen.
In the event of an elog() while the mode was set to immediate write,
there was no way for it to be set back to the normal delayed write.
The mechanism was a waste of space and cycles anyway, since the only user
was varsup.c, which could perfectly well call FlushBuffer directly.
Now it does just that, and the notion of a write mode is gone.
Accumulated fixups.
Add some chapters on new topics.
Change to referencing OASIS/Docbook v3.1 rather than Davenport/Docbook v3.0
Grepped for and fixed apparent tag mangling from emacs
"Normalize" operation. Should be the last of those.
Split off language-specific docs to their own chapters.
Add PL/perl docs from Mark Hollomon.
Put language-specific docs into the User's Guide, and move the rest
to the Programmer's Guide.
Enable more flexible syntax for the SET command. Now allows single floats,
single integers, and lists of names, without surrounding them with quotes.
Remove all tokens which are defined as operators from ColID and ColLabel
to avoid precedence confusion. Thanks to Tom Lane for catching this.
Tom Lane [Thu, 30 Mar 2000 00:53:30 +0000 (00:53 +0000)]
Tweak indexscan cost estimation: round estimated # of tuples visited up
to next integer. Previously, if selectivity was small, we could compute
very tiny scan cost on the basis of estimating that only 0.001 tuple
would be fetched, which is silly. This naturally led to some rather
silly plans...
Change rules for interpreting date/time input to disallow 1 and 3 character
years. Rejects dates like '0.085', which were accepted previously.
Minor mods of ODBC markup.
Add mention of join syntax to release notes, and reformat a few lines.
Update porting info. Still need a lot of platforms tested.
Fix small errors in markup.
Tom Lane [Tue, 28 Mar 2000 02:53:02 +0000 (02:53 +0000)]
Clean up major bogosity in description of creating a new index operator
class. This chapter was apparently sewed together from several
inconsistent examples... and perhaps from old docs that no longer
apply at all.
Start updating for the v7.0 release.
Use "generic functions" for math and other routines.
Use SQL92 "type 'literal'" syntax rather than Postgres "'literal'::type".
Allow full type names in CREATE FUNCTION arguments and return type.
Move CREATE FUNCTION/WITH clause to end of statement to get around
shift/reduce conflicts with type names containing "WITH".
Add lots of tokens as allowed ColId's and/or ColLabel's,
so this should be a complete set for the v7.0 release.
Change form of query which used "DISTINCT ON" to help support primary keys.
We still have an internal limit in the ODBC code of 8 columns per key,
but this should lay the groundwork for resolving that.
Includes reformulated query from Tom Lane.
Tom Lane [Sun, 26 Mar 2000 19:43:58 +0000 (19:43 +0000)]
nodeAgg has always been willing to accept an aggregate with a finalFunc
and only one transition state, but the CREATE AGGREGATE code rejected
this combination.
Tom Lane [Sun, 26 Mar 2000 07:03:38 +0000 (07:03 +0000)]
Rearrange steps in recommended install procedure to something more
reasonable, ie configure and build first, then optionally run regress
tests using new parallel (non-installed) test method, and only then
backup and kill old installation.