Tom Lane [Tue, 20 Jun 2006 19:56:52 +0000 (19:56 +0000)]
Split definitions for md5.c out of crypt.h and into their own header
libpq/md5.h, so that there's a clear separation between backend-only
definitions and shared frontend/backend definitions. (Turns out this
is reversing a bad decision from some years ago...) Fix up references
to crypt.h as needed. I looked into moving the code into src/port, but
the headers in src/include/libpq are sufficiently intertwined that it
seems more work than it's worth to do that.
Tom Lane [Mon, 19 Jun 2006 01:51:22 +0000 (01:51 +0000)]
Take the statistics collector out of the loop for monitoring backends'
current commands; instead, store current-status information in shared
memory. This substantially reduces the overhead of stats_command_string
and also ensures that pg_stat_activity is fully up to date at all times.
Per my recent proposal.
Tom Lane [Sun, 18 Jun 2006 18:30:21 +0000 (18:30 +0000)]
Don't try to call posix_fadvise() unless <fcntl.h> supplies a declaration
for it. Hopefully will fix core dump evidenced by some buildfarm members
since fadvise patch went in. The actual definition of the function is not
ABI-compatible with compiler's default assumption in the absence of any
declaration, so it's clearly unsafe to try to call it without seeing a
declaration.
Tom Lane [Sun, 18 Jun 2006 17:30:48 +0000 (17:30 +0000)]
Fix saveHistory() to not emit bogus complaint during psql exit when using
Darwin's libedit; per my proposal last August. Also, suppress cast-away-
const warnings.
Tom Lane [Sun, 18 Jun 2006 16:21:23 +0000 (16:21 +0000)]
Increase timeout in statement_timeout test from 1 second to 2 seconds.
We have once or twice seen failures suggesting that control didn't get
to the exception block before the timeout elapsed, which is unlikely
but not impossible in a parallel regression test (with a dozen other
backends competing for cycles). This change doesn't completely prevent
the problem of course, but it should reduce the probability enough that
we don't see it anymore. Per buildfarm results.
Peter Eisentraut [Sun, 18 Jun 2006 15:38:37 +0000 (15:38 +0000)]
Merge postmaster and postgres command into just postgres. postmaster
symlink is kept for now for compatibility. To call single-user mode, use
postgres --single.
Bruce Momjian [Fri, 16 Jun 2006 22:08:46 +0000 (22:08 +0000)]
Add:
> o Allow PL/python to composite types and result sets
> once buggy assert-enabled versions of python can be detected
>
> http://archives.postgresql.org/pgsql-patches/2006-04/msg00087.php
Tom Lane [Fri, 16 Jun 2006 18:42:24 +0000 (18:42 +0000)]
Fix problems with cached tuple descriptors disappearing while still in use
by creating a reference-count mechanism, similar to what we did a long time
ago for catcache entries. The back branches have an ugly solution involving
lots of extra copies, but this way is more efficient. Reference counting is
only applied to tupdescs that are actually in caches --- there seems no need
to use it for tupdescs that are generated in the executor, since they'll go
away during plan shutdown by virtue of being in the per-query memory context.
Neil Conway and Tom Lane
Bruce Momjian [Fri, 16 Jun 2006 17:44:43 +0000 (17:44 +0000)]
Add:
> o Fix problems with RETURN NEXT on tables with
> dropped/added columns after function creation
>
> http://archives.postgresql.org/pgsql-patches/2006-02/msg00165.php
Bruce Momjian [Thu, 15 Jun 2006 16:54:13 +0000 (16:54 +0000)]
Clarify dynamic pl/pgsql item and add URLs. Restructure server-side
section into PL/pgSQL and non-PL/pgSQL sections:
< o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
< o Allow function parameters to be passed by name,
< get_employee_salary(emp_id => 12345, tax_year => 2001)
< o Add Oracle-style packages
< o Add table function support to pltcl, plpython
< o Add capability to create and call PROCEDURES
< o Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[]
< o Allow function argument names to be statements from PL/PgSQL
< o Add MOVE to PL/pgSQL
< o Add support for polymorphic arguments and return types to
< languages other than PL/PgSQL
< o Add support for OUT and INOUT parameters to languages other
< than PL/PgSQL
< o Add single-step debugging of PL/PgSQL functions
< o Allow PL/PgSQL to support WITH HOLD cursors
< o Allow PL/PgSQL RETURN to return row or record functions
<
< http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php
> o PL/pgSQL
> o Fix RENAME to work on variables other than OLD/NEW
> o Allow function parameters to be passed by name,
> get_employee_salary(emp_id => 12345, tax_year => 2001)
> o Add Oracle-style packages
> o Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
> o Allow listing of record column names, and access to
> record columns via variables, e.g. columns := r.(*),
> tval2 := r.(colname)
>
> http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php
> http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php
> http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php
>
> o Add MOVE
> o Add single-step debugging of functions
> o Add support for WITH HOLD cursors
> o Allow PL/RETURN to return row or record functions
>
> http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php
>
>
> o Other
> o Add table function support to pltcl, plpython
> o Add support for polymorphic arguments and return types to
> languages other than PL/PgSQL
> o Add capability to create and call PROCEDURES
> o Add support for OUT and INOUT parameters to languages other
> than PL/PgSQL
Bruce Momjian [Thu, 15 Jun 2006 02:23:13 +0000 (02:23 +0000)]
Done, removed:
<
< * Consider padding the spinlock structure to have spinlock registers
< on different CPU cache line
<
< http://archives.postgresql.org/pgsql-hackers/2005-10/msg00498.php
Tom Lane [Thu, 15 Jun 2006 02:08:09 +0000 (02:08 +0000)]
Remove the limit on the number of entries allowed in catcaches, and
remove the infrastructure needed to enforce the limit, ie, the global
LRU list of cache entries. On small-to-middling databases this wins
because maintaining the LRU list is a waste of time. On large databases
this wins because it's better to keep more cache entries (we assume
such users can afford to use some more per-backend memory than was
contemplated in the Berkeley-era catcache design). This provides a
noticeable improvement in the speed of psql \d on a 10000-table
database, though it doesn't make it instantaneous.
While at it, use per-catcache settings for the number of hash buckets
per catcache, rather than the former one-size-fits-all value. It's a
bit silly to be using the same number of hash buckets for, eg, pg_am
and pg_attribute. The specific values I used might need some tuning,
but they seem to be in the right ballpark based on CATCACHE_STATS
results from the standard regression tests.
Bruce Momjian [Wed, 14 Jun 2006 21:47:06 +0000 (21:47 +0000)]
Add:
>
> * Consider padding the spinlock structure to have spinlock registers
> on different CPU cache line
>
> http://archives.postgresql.org/pgsql-hackers/2005-10/msg00498.php
Bruce Momjian [Wed, 14 Jun 2006 21:40:00 +0000 (21:40 +0000)]
Add item, not fixed:
>
> * Fix ILIKE and regular expressions to handle case insensitivity
> properly in multibyte encodings
>
> http://archives.postgresql.org/pgsql-bugs/2005-10/msg00001.php
Bruce Momjian [Wed, 14 Jun 2006 21:38:21 +0000 (21:38 +0000)]
Remove, already in back branches:
<
< o Add new version of PQescapeString() that doesn't double backslashes
< that are part of a client-only multibyte sequence
<
< Single-quote is not a valid byte in any supported client-only
< encoding. This requires using mblen() to determine if the
< backslash is inside or outside a multi-byte sequence.
<
< o Add new version of PQescapeString() that doesn't double
< backslashes when standard_conforming_strings is true and
< non-E strings are used
Bruce Momjian [Wed, 14 Jun 2006 21:10:50 +0000 (21:10 +0000)]
Add information schema item:
> * Improve the information schema to be more standards-compliant:
>
> http://archives.postgresql.org/pgsql-bugs/2005-10/msg00028.php
> * Add URL to more complete multi-byte regression tests
>
> http://archives.postgresql.org/pgsql-hackers/2005-07/msg00272.php
< * Add URL to more complete multi-byte regression tests
<
< http://archives.postgresql.org/pgsql-hackers/2005-07/msg00272.php
Bruce Momjian [Wed, 14 Jun 2006 19:01:42 +0000 (19:01 +0000)]
Add URL, remove TODO.detail:
< o %Allow pg_dump to use multiple -t and -n switches [pg_dump]
> o %Allow pg_dump to use multiple -t and -n switches
>
> http://archives.postgresql.org/pgsql-patches/2006-01/msg00190.php
>
Bruce Momjian [Wed, 14 Jun 2006 18:47:53 +0000 (18:47 +0000)]
Add locale/encoding references:
< Right now only one encoding is allowed per database.
> Right now only one encoding is allowed per database. [locale]
> * Add CREATE COLLATE? [locale]
Bruce Momjian [Wed, 14 Jun 2006 18:36:57 +0000 (18:36 +0000)]
Add:
> o Fix problem when cascading referential triggers make changes on
> cascaded tables, seeing the tables in an intermediate state
>
> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
Tom Lane [Wed, 14 Jun 2006 17:49:25 +0000 (17:49 +0000)]
Further thoughts about lo_export/lo_import error handling: if one of
the lower-level large object functions fails, it will have already set
a suitable error message --- probably something from the backend ---
and it is not useful to overwrite that with a generic 'error while
reading large object' message. So remove redundant messages.
Tom Lane [Wed, 14 Jun 2006 16:49:03 +0000 (16:49 +0000)]
Clean up psql's control-C handling to avoid longjmp'ing out of random
places --- that risks corrupting data structures, losing sync with the
backend, etc. We now longjmp only from calls to readline, fgets, and
fread, which we assume are coded to protect themselves against interrupts
at undesirable times. This requires adding explicit tests for
cancel_pressed in long-running loops, but on the whole it's far cleaner.
Martijn van Oosterhout and Tom Lane.
Tom Lane [Wed, 14 Jun 2006 01:24:14 +0000 (01:24 +0000)]
Do a CHECK_FOR_INTERRUPTS immediately before terminating a fastpath
function call. Previously, there may have been no CHECK_FOR_INTERRUPTS
at all in the fastpath code path, making it impossible to cancel an
operation such as \lo_import externally. This addition doesn't ensure
you can cancel, since your SIGINT may arrive while the backend is idle
waiting for the client, but it gives the largest window we can easily
provide. Noted while experimenting with new control-C code for psql.
Bruce Momjian [Mon, 12 Jun 2006 16:09:11 +0000 (16:09 +0000)]
Win32 can't catch the exception thrown by INT_MIN / -1 or INT_MIN * -1,
so on that platform we test for those before the computation and throw
an "out of range" error.
Tom Lane [Sun, 11 Jun 2006 15:49:28 +0000 (15:49 +0000)]
Fix Assert failure when a fastpath function call is attempted inside an
already-aborted transaction block. GetSnapshotData throws an Assert if
not in a valid transaction; hence we mustn't attempt to set a snapshot
for the function until after checking for aborted transaction. This is
harmless AFAICT if Asserts aren't enabled (GetSnapshotData will compute
a bogus snapshot, but it doesn't matter since HandleFunctionRequest will
throw an error shortly anywy). Hence, not a major bug.
Along the way, add some ability to log fastpath calls when statement
logging is turned on. This could probably stand to be improved further,
but not logging anything is clearly undesirable.
Backpatched as far as 8.0; bug doesn't exist before that.
Bruce Momjian [Sat, 10 Jun 2006 23:33:27 +0000 (23:33 +0000)]
Remove pg_dump wording:
< pg_get_tabledef(), pg_get_domaindef(), pg_get_functiondef(), and
< make use of them in pg_dump
> pg_get_tabledef(), pg_get_domaindef(), pg_get_functiondef()
Bruce Momjian [Sat, 10 Jun 2006 23:17:21 +0000 (23:17 +0000)]
Add:
< pg_get_tabledef(), pg_get_domaindef(), pg_get_functiondef()
> pg_get_tabledef(), pg_get_domaindef(), pg_get_functiondef(), and
> make use of them in pg_dump
Tom Lane [Fri, 9 Jun 2006 19:46:09 +0000 (19:46 +0000)]
Repair remarkably-inefficient query for dumping large object comments: it
was invoking obj_description() for each large object chunk, instead of once
per large object. This code is new as of 8.1, which may explain why the
problem hadn't been noticed already.
Tom Lane [Fri, 9 Jun 2006 19:30:56 +0000 (19:30 +0000)]
Revert sampling patch for EXPLAIN ANALYZE; it turns out to be too unreliable
because node timing is much less predictable than the patch expects. I kept
the API change for InstrStopNode, however.
Bruce Momjian [Fri, 9 Jun 2006 18:41:57 +0000 (18:41 +0000)]
Cleanups:
< * Allow a database in tablespace t1 with tables created in
> o Allow a database in tablespace t1 with tables created in 125c125
< * Allow reporting of which objects are in which tablespaces
> o Allow reporting of which objects are in which tablespaces 593c593
< * Allow GRANT/REVOKE permissions to be inherited by objects based on
> o Allow GRANT/REVOKE permissions to be inherited by objects based on 596c596
< * Allow SERIAL sequences to inherit permissions from the base table?
> o Allow SERIAL sequences to inherit permissions from the base table?
Teodor Sigaev [Fri, 9 Jun 2006 13:25:59 +0000 (13:25 +0000)]
Now ispell dictionary can eat dictionaries in MySpell format,
used by OpenOffice. Dictionaries are placed at
http://lingucomponent.openoffice.org/spell_dic.html
Dictionary automatically recognizes format of files.
Warning. MySpell's format has limitation with compound
word support: it's impossible to mark affix as
compound-only affix. So for norwegian, german etc
languages it's recommended to use original ispell format.
For that reason I don't want to remove my2ispell
scripts, it's has workaround at least for norwegian language.
Tom Lane [Thu, 8 Jun 2006 23:55:48 +0000 (23:55 +0000)]
Fix bootstrap.c so that database startup process and bgwriter properly release
LWLocks during a panic exit. This avoids the possible self-deadlock pointed
out by Qingqing Zhou. Also, I noted that an error during LoadFreeSpaceMap()
or BuildFlatFiles() would result in exit(0) which would leave the postmaster
thinking all is well. Added a critical section to ensure such errors don't
allow startup to proceed.
Backpatched to 8.1. The 8.0 code is a bit different and I'm not sure if the
problem exists there; given we've not seen this reported from the field, I'm
going to be conservative about backpatching any further.
Bruce Momjian [Thu, 8 Jun 2006 16:07:23 +0000 (16:07 +0000)]
Use simple URL's rather than text and a URL:
< recovery. See http://archives.postgresql.org/pgsql-patches/2005-04/msg00121.php.
> recovery.
> http://archives.postgresql.org/pgsql-patches/2005-04/msg00121.php
< Right now only one encoding is allowed per database. For a partial
< patch, see http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php.
> Right now only one encoding is allowed per database.
> http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php 459c460
< notify the protocol when a RESET CONNECTION command is used. See
> notify the protocol when a RESET CONNECTION command is used. 461d461
< for a partial implementation. 515c515
< See http://archives.postgresql.org/pgsql-patches/2006-02/msg00168.php.
> http://archives.postgresql.org/pgsql-patches/2006-02/msg00168.php 535c535
< See http://archives.postgresql.org/pgsql-hackers/2006-05/msg00988.php.
> http://archives.postgresql.org/pgsql-hackers/2006-05/msg00988.php 821c821
< See http://archives.postgresql.org/pgsql-patches/2005-07/msg00107.php.
> http://archives.postgresql.org/pgsql-patches/2005-07/msg00107.php 877c877
< Details at http://archives.postgresql.org/pgsql-hackers/2004-04/msg00818.php.
> http://archives.postgresql.org/pgsql-hackers/2004-04/msg00818.php
< See partially completed patch and additional work required at
< http://archives.postgresql.org/pgsql-patches/2006-06/msg00025.php.
> http://archives.postgresql.org/pgsql-patches/2006-06/msg00025.php 1297c1296
< See http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php.
> http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php 1311c1310,1311
< o Improve signal handling,
> o Improve signal handling
> 1312a1313
>
Bruce Momjian [Thu, 8 Jun 2006 15:41:22 +0000 (15:41 +0000)]
Add URL.
< * Support triggers on columns (Greg Sabino Mullane)
> * Support triggers on columns
>
> See http://archives.postgresql.org/pgsql-patches/2005-07/msg00107.php.
>
Tom Lane [Thu, 8 Jun 2006 14:58:33 +0000 (14:58 +0000)]
Remove obsolete comment about VACUUM FULL: it takes buffer content locks
now, and must do so to ensure bgwriter doesn't write a page that is in
process of being compacted.
Bruce Momjian [Thu, 8 Jun 2006 14:32:11 +0000 (14:32 +0000)]
/contrib/adminpack: More clearly identify renaming of existing backend
functions. I also found that pg_file_length was incorrectly documented
in the README as pg_file_size.