Tom Lane [Mon, 7 May 2001 00:43:27 +0000 (00:43 +0000)]
Rewrite of planner statistics-gathering code. ANALYZE is now available as
a separate statement (though it can still be invoked as part of VACUUM, too).
pg_statistic redesigned to be more flexible about what statistics are
stored. ANALYZE now collects a list of several of the most common values,
not just one, plus a histogram (not just the min and max values). Random
sampling is used to make the process reasonably fast even on very large
tables. The number of values and histogram bins collected is now
user-settable via an ALTER TABLE command.
There is more still to do; the new stats are not being used everywhere
they could be in the planner. But the remaining changes for this project
should be localized, and the behavior is already better than before.
A not-very-related change is that sorting now makes use of btree comparison
routines if it can find one, rather than invoking '<' twice.
Tom Lane [Fri, 4 May 2001 18:39:16 +0000 (18:39 +0000)]
Seems like we should not hold off cancel/die interrupts while we are
running deferred triggers. They are really part of the regular
transaction, and they could take awhile.
Tom Lane [Thu, 3 May 2001 22:53:07 +0000 (22:53 +0000)]
Consolidate several near-identical uses of mktime() into a single
routine DetermineLocalTimeZone(). In that routine, be more wary of
broken mktime() implementations than the original code was: don't allow
mktime to change the already-set y/m/d/h/m/s information, and don't
use tm_gmtoff if mktime failed. Possibly this will resolve some of
the complaints we've been hearing from users of Middle Eastern timezones
on RedHat.
Bruce Momjian [Thu, 3 May 2001 21:38:45 +0000 (21:38 +0000)]
BTW it does not add encodign it just patches existing one (KOI8) to
support two - KOI8-R and KOI8-U (latter is superset of the former if
not to take to the account pseudographics)
Tom Lane [Thu, 3 May 2001 19:00:37 +0000 (19:00 +0000)]
Ensure that btree sort ordering functions and boolean comparison operators
give consistent results for all datatypes. Types float4, float8, and
numeric were broken for NaN values; abstime, timestamp, and interval
were broken for INVALID values; timetz was just plain broken (some
possible pairs of values were neither < nor = nor >). Also clean up
text, bpchar, varchar, and bit/varbit to eliminate duplicate code and
thereby reduce the probability of similar inconsistencies arising in
the future.
Allow a string argument to the EXTRACT() function.
This is an extension to the SQL9x standard, but is consistant with usage
of the underlying date_part() function used to implement it.
Example: EXTRACT('YEAR',...)
No impact on regression tests.
Tom Lane [Mon, 30 Apr 2001 20:05:40 +0000 (20:05 +0000)]
exec_move_row() should be more forgiving of tuples with a different
number of columns than it was expecting, for reasons that are now
documented in the code...
Tom Lane [Mon, 30 Apr 2001 19:24:47 +0000 (19:24 +0000)]
Suppress pull-up of subqueries that are in the nullable side of an outer
join. This is needed to avoid improper evaluation of expressions that
should be nulled out, as in Victor Wagner's bug report of 4/27/01.
Pretty ugly solution, but no time to do anything better for 7.1.1.
Bruce Momjian [Sat, 28 Apr 2001 13:59:07 +0000 (13:59 +0000)]
In create_function there is a remark concerning SQL/PSM not
being ratified as yet. This is certainly no longer true, it wasn't
even true in Q2/1998 when I did a little research for Date's book.
SQL/PSM had been published on 1996-12-15 as ISO/IEC 9075:4. So you
might want to update that section.
Tom Lane [Wed, 25 Apr 2001 22:04:37 +0000 (22:04 +0000)]
Tweak nestloop costing to weight restart cost of inner path more heavily.
Without this, it was making some pretty silly decisions about whether an
expensive sub-SELECT should be the inner or outer side of a join...
1) Decrease the size of needlessly large buffers. For example, it
resolved the stack over flow errors reported by Johann Zuschlag.
2) Support {oj syntax for 71. servers.
A patch to fix the following bugs.
1) [ODBC] Psqlodbc and Centura: here it is a patch
posted by Matteo Cavalleli
2) [ODBC] pgsqODBC binding parameters II
posted by Ludek Finstrle
3) Invalid Page Fault in PSQLODBC.DLL
personal mail from Johann Zuschlag
Tom Lane [Sun, 22 Apr 2001 21:34:13 +0000 (21:34 +0000)]
Don't bomb out on indexes on system attributes other than 'oid'.
(Not sure such an index is actually useful, but just because it's
useless doesn't mean pg_dump should coredump.)
Peter Eisentraut [Sat, 21 Apr 2001 11:23:58 +0000 (11:23 +0000)]
Make sure that the postmaster options (from postmaster.opts[.default] or
-o option) are properly dequoted. Also, always pass an explicit -D option
to postmaster, don't rely on it being set in postmaster.opts.
Final markup for 7.1 hardcopy release. Mostly typo and table-fitting
adjustments. Note that many tables are being abused with *really* long
description columns. Should probably shrink those columns to be more
concise, and move some of the info to follow-on reference notes.
Add option --refentry to change \keepn (keep with next paragraph) to
\keep (keep current paragraph together). This fixes most troubles with
reference pages marked up with <refentry> tags.
Use on reference.rtf, generated by "make reference.rtf".
Tom Lane [Thu, 19 Apr 2001 04:29:02 +0000 (04:29 +0000)]
Kluge solution for Alex Pilosov's report of problems with whole-tuple
function arguments in join queries: copy the tuples into
TransactionCommandContext so they don't get recycled too soon. This is
horrid, but not any worse than 7.0 or before, which also leaked such
tuples until end of query. A proper fix will require allowing tuple
datums to be physically stored inside larger tuple datums, which opens
up a bunch of issues that can't realistically be solved for 7.1.1.
Tom Lane [Wed, 18 Apr 2001 22:25:31 +0000 (22:25 +0000)]
Further tweaking of error messages for cases involving attributes &
functions of join or subselect aliases. It'd be awfully nice if this
code knew for sure whether it was dealing with 'x.f' or 'f(x)' syntax;
maybe we can fix that in a future cycle.
Tom Lane [Tue, 17 Apr 2001 00:32:58 +0000 (00:32 +0000)]
Add some defenses to guard against case where a rule refers to a table
or view that's been dropped and then recreated with the same name (but,
perhaps, different columns). Eventually we'd like to support this but
for now all we can do is fail cleanly, rather than possibly coredumping
if we proceed using the obsolete rule.
Tom Lane [Mon, 16 Apr 2001 19:44:10 +0000 (19:44 +0000)]
Avoid reversing user-given order of WHERE clauses while attaching clauses
to specific base or join RelOptInfo nodes during planning. This preserves
the more-intuitive behavior of 7.0.* --- if you write an expensive clause
(such as a sub-select) last, it should get evaluated last. Someday we
ought to try to have some intelligence about the order of evaluation of
WHERE clauses, but for now we should not override what the user wrote.
Tom Lane [Mon, 16 Apr 2001 02:42:01 +0000 (02:42 +0000)]
getdatabaseencoding() and PG_encoding_to_char() were being sloppy about
converting char* strings to type 'name'. Imagine my surprise when 7.1
release coredumped upon start when compiled --enable-multibyte ...
Tom Lane [Mon, 16 Apr 2001 01:46:57 +0000 (01:46 +0000)]
Remove error report from pq_endmessage when pq_putmessage fails. The
only possible failure is in pq_flush, which will log a (better!) report
anyway --- so pq_endmessage is just cluttering the log with a redundant
entry. This matters when a client crashes partway through a large query,
since we will emit many broken-pipe reports before finishing the query
and exiting.
Tom Lane [Sun, 15 Apr 2001 03:14:18 +0000 (03:14 +0000)]
Constant expressions that appear in ORDER BY, GROUP BY, DISTINCT ON
lists should be reverse-compiled into targetlist index numbers, because
that's the only interpretation the parser allows for a constant in these
clauses. (Ergo, the only way they could have gotten into the list in
the first place is to have come from the targetlist; so this should always
work.) Per problem report from Peter E.