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.
Bruce Momjian [Sun, 26 Mar 2000 00:18:57 +0000 (00:18 +0000)]
Attached is the regression diff for geometry, RedHat 6.1 on a Pentium
200 MMX. I was going through my e-mail, cleaning out my 1000+ message
inbox, and found this one. Sorry.
Tom Lane [Sat, 25 Mar 2000 19:26:49 +0000 (19:26 +0000)]
Remove bogus complexity from build/install of plperl. This stuff was
apparently copied from the makefile for the perl5 interface module,
which needs it for reasons explained in src/interfaces/Makefile.
But none of those reasons apply to plperl.
Tom Lane [Fri, 24 Mar 2000 23:34:19 +0000 (23:34 +0000)]
transformCreateStmt should put Ident nodes, not ColumnDef nodes, into
keys lists of Constraint nodes. This eliminates a type pun that would
probably have caused trouble someday, and eliminates circular references
in the parsetree that were causing trouble now.
Also, change parser's uses of strcasecmp() to strcmp(). Since scan.l
has downcased any unquoted identifier, it is never correct to check an
identifier with strcasecmp() in the parser. For example,
CREATE TABLE FOO (f1 int, UNIQUE("F1"));
was accepted, which is wrong, and xlateSqlFunc did more than it should:
select datetime();
ERROR: Function 'timestamp()' does not exist
(good)
select "DateTime"();
ERROR: Function 'timestamp()' does not exist
(bad)
Tom Lane [Fri, 24 Mar 2000 02:41:46 +0000 (02:41 +0000)]
Rename bytea functions to not have upper-case letters in their names.
Clean up grotty coding in them, too. AFAICS from the CVS logs, these
have been broken since Postgres95, so I'm not going to insist on an
initdb to fix them now...
Tom Lane [Fri, 24 Mar 2000 01:39:55 +0000 (01:39 +0000)]
Fold PQsetenv working state into PGconn, rather than trying to maintain
it in a separate object. There's no value in keeping the state separate,
and it creates dangling-pointer problems. Also, remove PQsetenv routines
from public API, until and unless they are redesigned to have a safer
interface. Since they were never part of the documented API before 7.0,
it's unlikely that anyone is calling them.
Tom Lane [Thu, 23 Mar 2000 23:35:47 +0000 (23:35 +0000)]
A little further tweaking of the range-query selectivity logic:
to avoid undue sensitivity to roundoff error, believe that a zero
or slightly negative range estimate should represent a small
positive selectivity, rather than falling back on a generic default
estimate.
Bruce Momjian [Thu, 23 Mar 2000 21:38:58 +0000 (21:38 +0000)]
Hmm, absolute pathnames for the copy makes sense. I'll whip up that
patch in a second. Should be sufficent to just make sure the first
character is a '/', right?
Bruce Momjian [Thu, 23 Mar 2000 17:27:36 +0000 (17:27 +0000)]
Some points for portability improvements:
1. C++ style comments in C source for ecpg ( // comment )
2. compiler finds wrong include file extern.h in ecpg/lib/descriptor.c
from
include path instead of workdir (rename it ?)
3. fe-connect getsockopt takes a socklen_t as fifth arg not int (use
SOCKET_SIZE_TYPE instead)
4. char vs unsigned char in psql calls to libpq
5. empty define that results in an empty but terminated line ( ; )
Now for all but point 3 I can supply changes to the
compiler flags, to make the compiler less pedantic.
Or is someone interested in the complications ?
in the meantime can someone apply the attached patch ?
Bruce Momjian [Thu, 23 Mar 2000 15:00:11 +0000 (15:00 +0000)]
Please apply the attached patch to interfaces/libpq/libpq-fe.h. This would
allow to write applications which do not have a link to postgres_ext.h in
their source directory.
Tom Lane [Thu, 23 Mar 2000 07:42:13 +0000 (07:42 +0000)]
subselect regress test was kind of silly; it claimed to test correlation
cases but actually did no such thing. Make it test some more cases than
before (including things that didn't work in 6.5).
Tom Lane [Thu, 23 Mar 2000 07:38:30 +0000 (07:38 +0000)]
Remove no-longer-necessary restriction against uplevel correlation vars
outside WHERE clause. Fix a couple of places that didn't handle uplevel
refs cleanly.
Tom Lane [Thu, 23 Mar 2000 07:36:03 +0000 (07:36 +0000)]
Hack parse_coerce so it won't try to constant-fold the dummy Const
nodes introduced by make_subplan(). It'd be better if we used a
different node type for subplan result placeholders, but for now...
Tom Lane [Thu, 23 Mar 2000 00:58:36 +0000 (00:58 +0000)]
If we cannot get a real estimate for the selectivity of a range query,
use a default value that's fairly small. We were generating a result
of about 0.1, but I think 0.01 is probably better --- want to encourage
use of an indexscan in this situation.
Tom Lane [Thu, 23 Mar 2000 00:55:42 +0000 (00:55 +0000)]
Improve selectivity estimation involving string constants: pay attention
to more than one character, and try to do the right thing in non-ASCII
locales.
Tom Lane [Wed, 22 Mar 2000 22:08:35 +0000 (22:08 +0000)]
Repair logic flaw in cost estimator: cost_nestloop() was estimating CPU
costs using the inner path's parent->rows count as the number of tuples
processed per inner scan iteration. This is wrong when we are using an
inner indexscan with indexquals based on join clauses, because the rows
count in a Relation node reflects the selectivity of the restriction
clauses for that rel only. Upshot was that if join clause was very
selective, we'd drastically overestimate the true cost of the join.
Fix is to calculate correct output-rows estimate for an inner indexscan
when the IndexPath node is created and save it in the path node.
Change of path node doesn't require initdb, since path nodes don't
appear in saved rules.