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.
Fix query for primary keys to reflect new DISTINCT ON () syntax.
Reported by "Tibor Laszlo" <ltibor@mail.tiszanet.hu> and fix suggested by
"Hiroshi Inoue" <Inoue@tpf.co.jp>.
Add syntax for BIT() and BIT VARYING(), but no underlying implementation
is available yet.
Remove redundant call to xlateSqlType() in the character
type handling code.
Tom Lane [Tue, 21 Mar 2000 05:12:12 +0000 (05:12 +0000)]
Restructure planning code so that preprocessing of targetlist and quals
to simplify constant expressions and expand SubLink nodes into SubPlans
is done in a separate routine subquery_planner() that calls union_planner().
We formerly did most of this work in query_planner(), but that's the
wrong place because it may never see the real targetlist. Splitting
union_planner into two routines also allows us to avoid redundant work
when union_planner is invoked recursively for UNION and inheritance
cases. Upshot is that it is now possible to do something like
select float8(count(*)) / (select count(*) from int4_tbl) from int4_tbl
group by f1;
which has never worked before.
Tom Lane [Sun, 19 Mar 2000 22:48:30 +0000 (22:48 +0000)]
Make use of pre-existing regexp match capability to eliminate redundant
entries in template selection rules. Also, change alpha-dec-osf pattern
to cope with version info attached to the 'alpha' part.
Tom Lane [Sun, 19 Mar 2000 22:46:22 +0000 (22:46 +0000)]
Change configure.in to note that since we are using expr(1)'s regex match
command, the entries in template/.similar can really be regular
expressions. This isn't a new feature, just an observation of what the
code already did.