Tom Lane [Mon, 18 Sep 2006 16:04:04 +0000 (16:04 +0000)]
Fix problems with column name list of CREATE TABLE AS being applied to
the input query's target list too soon, causing it to affect processing
of ORDER BY in the input query.
Bruce Momjian [Mon, 18 Sep 2006 15:52:23 +0000 (15:52 +0000)]
Add item:
>
> * Set client encoding based on the client operating system encoding
>
> Currently client_encoding is set in postgresql.conf, which
> defaults to the server encoding.
Tom Lane [Mon, 18 Sep 2006 00:52:14 +0000 (00:52 +0000)]
Fix CREATE TABLE ... AS VALUES ... to work rather than Assert'ing;
oversight in original implementation of VALUES. Also fix an oversight
in recent addition of options to CREATE TABLE AS: they weren't getting
propagated if the query was a set-operation such as UNION.
Tom Lane [Sun, 17 Sep 2006 22:50:31 +0000 (22:50 +0000)]
Change ANALYZE to take ShareUpdateExclusiveLock not AccessShareLock on
the table being analyzed. This prevents two ANALYZEs from running
concurrently on the same table and possibly suffering concurrent-update
failures while trying to store their results into pg_statistic. The
downside is that a database-wide ANALYZE executed within a transaction
block will hold ShareUpdateExclusiveLock on many tables simultaneously,
which could lead to concurrency issues or even deadlock against another
such ANALYZE. However, this seems a corner case of less importance
than getting unexpected errors from a foreground ANALYZE when autovacuum
elects to analyze the same table concurrently. Per discussion.
Tom Lane [Sun, 17 Sep 2006 22:16:22 +0000 (22:16 +0000)]
Marginal cleanup in arrangements for ensuring StrategyHintVacuum is cleared
after an error during VACUUM. We have a PG_TRY block anyway around the only
call sites, so just reset it in the CATCH clause instead of having
AtEOXact_Buffers blindly do it during xact end. I think the old code was
actively wrong for the case of a failure during ANALYZE inside a
subtransaction --- the flag wouldn't get cleared until main transaction end.
Probably not worth back-patching though.
Bruce Momjian [Sat, 16 Sep 2006 22:06:54 +0000 (22:06 +0000)]
Update TODO for short header versions:
< o Reorder physical storage order to reduce padding?
<
< This involves having the user-specified order of columns
< be different from the physical order. SELECT * would
< need to reorder the physical values to match the
< user-specified ordering.
<
< o Store disk pages with no alignment/padding?
<
< This necessitates adding CPU-required padding when moving
< rows from disk to memory.
<
< One idea is to store the header in network byte order (high bits
< first), and read the high bits to determine the header length.
< http://archives.postgresql.org/pgsql-hackers/2006-09/msg00848.php
> One idea is to create zero-or-one-byte-header versions
> of varlena data types. In involves setting the high-bit and
> 0-127 length in the single-byte header, or clear the high bit
> and store the 7-bit ASCII value in the rest of the byte.
> The small-header versions have no alignment requirements.
> http://archives.postgresql.org/pgsql-hackers/2006-09/msg01372.php
Tom Lane [Sat, 16 Sep 2006 20:14:34 +0000 (20:14 +0000)]
Rename the recently-added pg_timezonenames view to pg_timezone_abbrevs,
and create a new view pg_timezone_names that provides information about
the zones known in the 'zic' database. Magnus Hagander, with some
additional work by Tom Lane.
Tom Lane [Sat, 16 Sep 2006 16:18:11 +0000 (16:18 +0000)]
Rename xml_valid() to xml_is_well_formed(), but provide a temporary
alias with the old name for backwards compatibility. Per discussion,
the old name is actively wrong because validity and well-formedness
have different meanings in XML.
Tom Lane [Thu, 14 Sep 2006 22:05:06 +0000 (22:05 +0000)]
Add a couple of information functions to support direct checks on whether
a schema is our own temp schema or another backend's temp schema, and use
these in place of some former kluges in information_schema. Per my
proposal of yesterday.
Bruce Momjian [Thu, 14 Sep 2006 17:11:51 +0000 (17:11 +0000)]
Update TODO items:
< o Store disk pages with no alignment/padding?
>
> This involves having the user-specified order of columns
> be different from the physical order. SELECT * would
> need to reorder the physical values to match the
> user-specified ordering.
>
> o Store disk pages with no alignment/padding?
>
> This necessitates adding CPU-required padding when moving
> rows from disk to memory.
>
>
> http://archives.postgresql.org/pgsql-hackers/2006-09/msg00848.php
>
GIN documentation and slightly improving GiST docs.
Thanks to Christopher Kings-Lynne <chris.kingslynne@gmail.com> for
initial version and Jeff Davis <pgsql@j-davis.com> for inspection
Tom Lane [Wed, 13 Sep 2006 17:47:08 +0000 (17:47 +0000)]
Code review for patch to avoid second scan when vacuuming index-less
table: avoid invoking LockBufferForCleanup without need, put out the
same log message we would have before, minor code beautification.
Tom Lane [Mon, 11 Sep 2006 20:10:30 +0000 (20:10 +0000)]
Move set_pglocale_pgservice() from path.c to exec.c, so that pulling in
path.c does not in itself force linking of both exec.c and libintl.
Should fix current ecpglib build failure on pickier platforms.
Tom Lane [Mon, 11 Sep 2006 15:14:46 +0000 (15:14 +0000)]
Rename the uninstall scripts for contrib/lo and contrib/tsearch2 to
match the convention that foo's uninstall script is uninstall_foo.sql.
Also, stop installing lo_test.sql, which really ought to be made into
a regression test anyway (though it's unclear how to avoid a dependency
on the current OID counter...)
Bruce Momjian [Sun, 10 Sep 2006 22:20:01 +0000 (22:20 +0000)]
Add items:
< * Research storing disk pages with no alignment/padding
> * Consider ways of storing rows more compactly on disk
>
> o Store disk pages with no alignment/padding?
> o Reorder physical storage order to reduce padding?
> o Support a smaller header for short variable-length fields?
> o Reduce the row header size?
Tom Lane [Sun, 10 Sep 2006 22:07:02 +0000 (22:07 +0000)]
Install a cleaner solution to the AIX libpq linking problem, as per
an earlier discussion. Centralize assumptions about what libpq depends
on in one place in Makefile.global. I am unconvinced that this list
is complete, but since ecpg seems to have gotten along with just these
entries, we'll try it this way and see what happens.
Tom Lane [Sun, 10 Sep 2006 20:14:20 +0000 (20:14 +0000)]
If we're going to advertise the array overlap/containment operators,
we probably should make them work reliably for all arrays. Fix code
to handle NULLs and multidimensional arrays, move it into arrayfuncs.c.
GIN is still restricted to indexing arrays with no null elements, however.
Tom Lane [Sun, 10 Sep 2006 00:29:35 +0000 (00:29 +0000)]
Rename contains/contained-by operators to @> and <@, per discussion that
agreed these symbols are less easily confused. I made new pg_operator
entries (with new OIDs) for the old names, so as to provide backward
compatibility while making it pretty easy to remove the old names in
some future release cycle. This commit only touches the core datatypes,
contrib will be fixed separately.
Tom Lane [Sat, 9 Sep 2006 04:07:52 +0000 (04:07 +0000)]
Add contrib/isn module for ISBN/ISSN/EAN13/etc product numbers, and
remove the old isbn_issn module which is about to be obsoleted by EAN13.
contrib/isn is by Germán Méndez Bravo. Our thanks to Garrett A. Wollman
for having written the original isbn_issn module.
Tom Lane [Sat, 9 Sep 2006 03:15:40 +0000 (03:15 +0000)]
Revise OpenLDAP configuration and linking to work on more platforms
than before. Albe Laurenz (but editorialized heavily by me, so if it
doesn't work it's my fault).
Tom Lane [Fri, 8 Sep 2006 18:05:35 +0000 (18:05 +0000)]
Fix pg_dump for recent change removing separate RULE privilege.
I had thought this code could be left alone, but I was wrong: as-is
it's failing to recognize when to use ALL for table privileges in 8.2.
Tom Lane [Fri, 8 Sep 2006 17:49:13 +0000 (17:49 +0000)]
Put back plan-time check for trying to apply SELECT FOR UPDATE/SHARE
to a relation on the nullable side of an outer join. I had removed
this during the outer join planning rewrite a few months ago ... I think
I intended to put it somewhere else, but forgot ...
Tom Lane [Fri, 8 Sep 2006 15:55:53 +0000 (15:55 +0000)]
Tweak the behavior of log_duration as proposed by Guillaume Smet: rather
than being equivalent to setting log_min_duration_statement to zero, this
option now forces logging of all query durations, but doesn't force logging
of query text. Also, add duration logging coverage for fastpath function
calls.
Tom Lane [Thu, 7 Sep 2006 22:52:01 +0000 (22:52 +0000)]
Clean up logging for extended-query-protocol operations, as per my recent
proposal. Parameter logging works even for binary-format parameters, and
logging overhead is avoided when disabled.
log_statement = all output for the src/test/examples/testlibpq3.c example
now looks like
LOG: statement: execute <unnamed>: SELECT * FROM test1 WHERE t = $1
DETAIL: parameters: $1 = 'joe''s place'
LOG: statement: execute <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
DETAIL: parameters: $1 = '2'
and log_min_duration_statement = 0 results in
LOG: duration: 2.431 ms parse <unnamed>: SELECT * FROM test1 WHERE t = $1
LOG: duration: 2.335 ms bind <unnamed> to <unnamed>: SELECT * FROM test1 WHERE t = $1
DETAIL: parameters: $1 = 'joe''s place'
LOG: duration: 0.394 ms execute <unnamed>: SELECT * FROM test1 WHERE t = $1
DETAIL: parameters: $1 = 'joe''s place'
LOG: duration: 1.251 ms parse <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
LOG: duration: 0.566 ms bind <unnamed> to <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
DETAIL: parameters: $1 = '2'
LOG: duration: 0.173 ms execute <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
DETAIL: parameters: $1 = '2'
(This example demonstrates the folly of ignoring parse/bind steps for duration
logging purposes, BTW.)
Along the way, create a less ad-hoc mechanism for determining which commands
are logged by log_statement = mod and log_statement = ddl. The former coding
was actually missing quite a few things that look like ddl to me, and it
did not handle EXECUTE or extended query protocol correctly at all.
This commit does not do anything about the question of whether log_duration
should be removed or made less redundant with log_min_duration_statement.
Tom Lane [Wed, 6 Sep 2006 20:40:48 +0000 (20:40 +0000)]
Change processing of extended-Query mode so that an unnamed statement
that has parameters is always planned afresh for each Bind command,
treating the parameter values as constants in the planner. This removes
the performance penalty formerly often paid for using out-of-line
parameters --- with this definition, the planner can do constant folding,
LIKE optimization, etc. After a suggestion by Andrew@supernews.
Fix compiler warnings on 64-bit boxes: difference between
pointers are int64, but warnings are emitted for position info in
error messages in parser, so, just cast it to int32
Tom Lane [Tue, 5 Sep 2006 21:08:36 +0000 (21:08 +0000)]
Get rid of the separate RULE privilege for tables: now only a table's owner
can create or modify rules for the table. Do setRuleCheckAsUser() while
loading rules into the relcache, rather than when defining a rule. This
ensures that permission checks for tables referenced in a rule are done with
respect to the current owner of the rule's table, whereas formerly ALTER TABLE
OWNER would fail to update the permission checking for associated rules.
Removal of separate RULE privilege is needed to prevent various scenarios
in which a grantee of RULE privilege could effectively have any privilege
of the table owner. For backwards compatibility, GRANT/REVOKE RULE is still
accepted, but it doesn't do anything. Per discussion here:
http://archives.postgresql.org/pgsql-hackers/2006-04/msg01138.php