Tom Lane [Tue, 16 Nov 2004 18:10:16 +0000 (18:10 +0000)]
Rethink plpgsql's way of handling SPI execution during an exception block.
We don't really want to start a new SPI connection, just keep using the old
one; otherwise we have memory management problems as illustrated by
John Kennedy's bug report of today. This requires a bit of a hack to
ensure the SPI stack state is properly restored, but then again what we
were doing before was a hack too, strictly speaking. Add a regression
test to cover this case.
Tom Lane [Sun, 14 Nov 2004 19:35:35 +0000 (19:35 +0000)]
Remove GUC USERLIMIT variable category, making the affected variables
plain SUSET instead. Also delay processing of options received in
client connection request until after we know if the user is a superuser,
so that SUSET values can be set that way by legitimate superusers.
Per recent discussion.
Neil Conway [Sun, 14 Nov 2004 02:04:14 +0000 (02:04 +0000)]
There is no need for ReadBuffer() call sites to check that the returned
buffer is valid, as ReadBuffer() will elog on error. Most of the call
sites of ReadBuffer() got this right, but this patch fixes those call
sites that did not.
Bruce Momjian [Sat, 13 Nov 2004 03:18:50 +0000 (03:18 +0000)]
Not entirely sure when this broke, but libpq's VC++ build is currently
lacking pqsignal which is now required. This was found and fixed for
VC++ by Shachar Shemesh, I simply duplicated the fix for the Borland
makefile (untested, as I don't have that compiler).
Bruce Momjian [Fri, 12 Nov 2004 23:26:37 +0000 (23:26 +0000)]
Update:
< * Eliminate WAL logging for CREATE INDEX/REINDEX/CREATE TABLE AS when
< not doing WAL archiving
> * Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
Tom Lane [Fri, 12 Nov 2004 21:55:01 +0000 (21:55 +0000)]
Remove now-redundant description of Postgres file layout, in favor of
referencing the Database File Layout chapter I just added to the main
documentation.
Bruce Momjian [Fri, 12 Nov 2004 17:59:42 +0000 (17:59 +0000)]
> I think in addition the system global name "sharemem.1" should be made more
> pg specific, like "PostgreSQL.1". I have not done this since a new compile
> would not detect a running old beta. But now would be the time (or never).
Bruce Momjian [Thu, 11 Nov 2004 03:59:14 +0000 (03:59 +0000)]
Cleaups:
< * Allow GRANT/REVOKE permissions to be given to all schema objects with one
> * Allow GRANT/REVOKE permissions to be applied to all schema objects with one
60c60
< specifications. This is because new databases are created by copying
> specifications. This is because new databases are created by copying
63c63
< directory would create a new database with tables that had incorrect
> directory would create a new database with tables that had incorrect
72c72
<
>
85c85
< By not showing commented-out variables, we discourage people from
> By not showing commented-out variables, we discourage people from
91c91
< * Allow point-in-time recovery to archive partially filled write-ahead
> * Allow point-in-time recovery to archive partially filled write-ahead 102c102
< Currently all schemas are owned by the super-user because they are
> Currently all schemas are owned by the super-user because they are 128c128
< * Allow INET subnet tests with non-constants to be indexed
> * Allow INET subnet tests using non-constants to be indexed
143,144c143,144
< * Allow to_char to print localized month names
< * Allow functions to have a search path specified at creation time
> * Allow to_char() to print localized month names
> * Allow functions to have a schema search path specified at creation time 146c146
< * Add GUC variable to allow output of interval values in ISO8601 format
> * Add a GUC variable to allow output of interval values in ISO8601 format
154,155c154,155
< * Prevent inet cast to cidr if the unmasked bits are not zero, or
< zero bits
> * Prevent INET cast to CIDR if the unmasked bits are not zero, or
> zero the bits 158c158
< o Allow nulls in arrays
> o Allow NULLs in arrays
160,161c160,161
< o Delay resolution of array expression type so assignment coercion
< can be performed on empty array expressions
> o Delay resolution of array expression's data type so assignment
> coercion can be performed on empty array expressions
218,219c218,219
< key, foreign key [inheritance]
< * UNIQUE INDEX on base column not honored on inserts/updates from
> key, foreign key
> * UNIQUE INDEX on base column not honored on INSERTs/UPDATEs from 221c221
< (dup) should fail [inheritance]
> (dup) should fail 246c246
< * Fetch heap pages matching index entries in sequential order [performance]
> * Fetch heap pages matching index entries in sequential order 307c307
< functionality in DELETE. It's been agreed that the keyword should
> functionality in DELETE. It's been agreed that the keyword should 318c318
< * Allow PREPARE to automatically determine parameter types based on the SQL
> * Allow PREPARE to automatically determine parameter types based on the SQL
340,342d339
< * Allow CREATE TABLE foo (f1 INT CHECK (f1 > 0) CHECK (f1 < 10)) to work
< by searching for non-conflicting constraint names, and prefix with
< table name? 347c344
< new database.
> a new database.
350,351d346
< * Ignore temporary tables from other sessions when processing
< inheritance?
354,355c349,351
< * Add a session mode to warn about non-standard SQL usage in queries
< * Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules, triggers?)
> * Add a GUC variable to warn about non-standard SQL usage in queries
> * Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules,
> triggers?)
357,359c353,356
< * Add NOVICE output level for helpful messages like automatic sequence/index creation
< * Add COMMENT ON for all cluster global objects (users, groups,
< databases and tablespaces)
> * Add NOVICE output level for helpful messages like automatic sequence/index
> creation
> * Add COMMENT ON for all cluster global objects (users, groups, databases
> and tablespaces) 363c360
< When enabled, this would allow errors in multi-statement transactions
> When enabled, this would allow errors in multi-statement transactions 417c414
< o Allow COPY to optionally include column headings as the first line
> o Allow COPY to optionally include column headings in the first line 450c447
<
> 462c459
< o Handle references to temporary tables that are created, destroyed,
> o Handle references to temporary tables that are created, destroyed, 464c461
<
> 469d465
< o Improve PL/PgSQL exception handling using savepoints 488c484
<
> 503d498
< 518c513
< o Add pg_dumpall custom format dumps.
> o Add pg_dumpall custom format dumps. 520c515
< This is probably best done by combining pg_dump and pg_dumpall
> This is probably best done by combining pg_dump and pg_dumpall 532d526
< o Improve error handling (?) 555c549
< Adding shared locks requires recording the table/rows numbers in a
> Adding shared locks requires recording the table/rows numbers in a 643c637
< Posix_fadvise() can control both sequential/random file caching and
> Posix_fadvise() can control both sequential/random file caching and 703c697
< from distributted.net, http://www1.distributed.net/source,
> from distributted.net, http://www1.distributed.net/source, 729c723
< * Add connection pooling [pool]
> * Add connection pooling 755d748
< 759c752
<
> 768c761
< so an abrupt operating system restart might lose a few seconds of
> so an abrupt operating system restart might lose a few seconds of 785c778
< * Add utility to compute accurate random_page_cost value
> * Create utility to compute accurate random_page_cost value
787,789d779
< * Allow sorting, temp files, temp tables to use multiple work directories
<
< This allows the I/O load to be spread across multiple disk drives. 795a786
>
808,809c799,800
<
< * Use mmap() rather than SYSV shared memory or to write WAL files (?) [mmap]
>
> * Use mmap() rather than SYSV shared memory or to write WAL files (?)
812,813c803,804
< portability issues. Anonymous mmap (or mmap to /dev/zero) is required
< to prevent I/O overhead.
> portability issues. Anonymous mmap (or mmap to /dev/zero) is required
> to prevent I/O overhead.
817,819c808,810
< Doing I/O to large tables would consume a lot of address space or
< require frequent mapping/unmapping. Extending the file also causes
< mapping problems that might require mapping only individual pages,
> Doing I/O to large tables would consume a lot of address space or
> require frequent mapping/unmapping. Extending the file also causes
> mapping problems that might require mapping only individual pages, 821c812
< way to _prevent_ I/O to disk from the dirty shared buffers so changes
> way to _prevent_ I/O to disk from the dirty shared buffers so changes 826c817
< tuple overhead
> per-tuple overhead
829,831c820,822
< This would involve using multiple threads or processes to do optimization,
< sorting, or execution of single query. The major advantage of such a
< feature would be to allow multiple CPUs to work together to process a
> This would involve using multiple threads or processes to do optimization,
> sorting, or execution of single query. The major advantage of such a
> feature would be to allow multiple CPUs to work together to process a 834c825
< * Research the use of larger pages sizes
> * Research the use of larger page sizes 842a834
> * Move some /contrib modules out to their own project sites 845d836
< * Improve access-permissions check on data directory in Cygwin (Tom)
847,848c838
< * Clarify use of 'application' and 'command' tags in SGML docs
< * Better document ability to build only certain interfaces (Marc)
> * Improve documentation to build only interfaces (Marc)
852,853d841
< * Research interaction of setitimer() and sleep() used by statement_timeout
< * Rename /scripts directory because they are all C programs now
856,857d843
< * Allow binaries to be statically linked so they are more easily relocated
< * Move some /contrib modules out to their own project sites 862c848
< o Remove per-backend parameter file and move into shared memory?
> o Remove per-backend parameter file and move into shared memory
877,878c863,864
< o Update clients to use data types, typmod, schema.table.column names of
< result sets using new query protocol
> o Update clients to use data types, typmod, schema.table.column names
> of result sets using new query protocol 900d885
< * Kris is Kris Jurka 910c895
< * Simon is Simon Riggs
> * Simon is Simon Riggs <simon@2ndquadrant.com> 913d897
< * Teodor is
Bruce Momjian [Wed, 10 Nov 2004 05:47:07 +0000 (05:47 +0000)]
Done:
<
< * psql tab completion
<
< o Provide a list of conversions after ALTER CONVERSION?
< o Support for ALTER SEQUENCE clauses
< o Add RENAME TO to ALTER TRIGGER
< o Support for ALTER USER
< o Fix ALTER (GROUP|DOMAIN|...) <sth> DROP
< o Support for ALTER LANGUAGE <sth> RENAME TO
< o Improve support for COPY
< o Improve support for ALTER TABLE
Bruce Momjian [Wed, 10 Nov 2004 02:48:41 +0000 (02:48 +0000)]
Add bitmap info:
< heap page to find matching rows.
> heap page to find matching rows, or perhaps use a mixed solution where
> tids are recorded for pages with only a few matches and per-page bitmaps
> are used for more dense pages. Another idea is to use a 32-bit bitmap
> for every page and set a bit based on the item number mod(32).
Tom Lane [Tue, 9 Nov 2004 21:30:18 +0000 (21:30 +0000)]
Put in place some defenses against being fooled by accidental match of
shared memory segment ID. If we can't access the existing shmem segment,
it must not be relevant to our data directory. If we can access it,
then attach to it and check for an actual match to the data directory.
This should avoid some cases of failure-to-restart-after-boot without
introducing any significant risk of failing to detect a still-running
old backend.
Bruce Momjian [Tue, 9 Nov 2004 15:11:11 +0000 (15:11 +0000)]
Update bitmap index description:
< Such indexes could be more compact if there are only a few unique values.
> Such indexes could be more compact if there are only a few distinct values.
> Such indexes can also be compressed. Keeping such indexes updated can be
> costly.
Bruce Momjian [Tue, 9 Nov 2004 03:57:42 +0000 (03:57 +0000)]
Update mmap details:
< portability issues. Anonymous mmap is required to prevent I/O
< overhead.
> portability issues. Anonymous mmap (or mmap to /dev/zero) is required
> to prevent I/O overhead.
>
> * Consider mmap()'ing files into a backend?
>
> Doing I/O to large tables would consume a lot of address space or
> require frequent mapping/unmapping. Extending the file also causes
> mapping problems that might require mapping only individual pages,
> leading to thousands of mappings. Another problem is that there is no
> way to _prevent_ I/O to disk from the dirty shared buffers so changes
> could hit disk before WAL is written.
Tom Lane [Tue, 9 Nov 2004 00:34:46 +0000 (00:34 +0000)]
Use a hopefully-more-reliable method of detecting default selectivity
estimates when combining the estimates for a range query. As pointed out
by Miquel van Smoorenburg, the existing check for an impossible combined
result would quite possibly fail to detect one default and one non-default
input. It seems better to use the default range query estimate in such
cases. To do so, add a check for an estimate of exactly DEFAULT_INEQ_SEL.
This is a bit ugly because it introduces additional coupling between
clauselist_selectivity and scalarltsel/scalargtsel, but it's not like
there wasn't plenty already...
Bruce Momjian [Mon, 8 Nov 2004 20:16:20 +0000 (20:16 +0000)]
Update:
< posix_fadvise() [fadvise]
> posix_fadvise()
>
> Posix_fadvise() can control both sequential/random file caching and
> free-behind behavior, but it is unclear how the setting affects other
> backends that also have the file open, and the feature is not supported
> on all operating systems.
>
Tom Lane [Mon, 8 Nov 2004 18:01:28 +0000 (18:01 +0000)]
Recommend that archive_command be coded to not overwrite existing files.
Add explicit documentation of the recovery configuration settings. Other
minor improvements in the PITR docs. Simon Riggs, some editorialization
by Tom Lane.
Bruce Momjian [Mon, 8 Nov 2004 15:18:16 +0000 (15:18 +0000)]
Update item description:
< * CREATE TABLE AS can not determine column lengths from expressions [atttypmod]
> * Allow CREATE TABLE AS to determine column lengths for complex
> expressions like SELECT col1 || col2
Bruce Momjian [Mon, 8 Nov 2004 14:54:00 +0000 (14:54 +0000)]
Update view info:
< * Automatically create rules on views so they are updateable, per SQL99 [view]
> * Automatically create rules on views so they are updateable, per SQL99
>
> We can only auto-create rules for simple views. For more complex
> cases users will still have to write rules.
>
Tom Lane [Mon, 8 Nov 2004 04:02:20 +0000 (04:02 +0000)]
Kris Jurka pointed out that the qualified_name production wasn't
working as intended --- for some reason, FROM a.b.c was getting
parsed as if it were a function name and not a qualified name.
I think there must be a bug in bison, because it should have
complained that the grammar was ambiguous. Anyway, fix it along
the same lines previously used for func_name vs columnref, and get
rid of the right-recursion in attrs that seems to have confused
bison.
Tom Lane [Sat, 6 Nov 2004 23:06:29 +0000 (23:06 +0000)]
Add code to find_my_exec() to resolve a symbolic link down to the
actual executable location. This allows people to continue to use
setups where, eg, postmaster is symlinked from a convenient place.
Per gripe from Josh Berkus.
Tom Lane [Sat, 6 Nov 2004 19:36:02 +0000 (19:36 +0000)]
Update pg_dump to use SET DEFAULT_TABLESPACE instead of explicit
tablespace clauses; this should improve compatibility of dump files.
Philip Warner, some rework by Tom Lane.
Tom Lane [Sat, 6 Nov 2004 17:46:38 +0000 (17:46 +0000)]
When implementing a coercion to a domain type with a combined
type-and-length coercion function, make sure that the coercion function
is told the correct typmod. Fixes Kris Jurka's example of a domain
over bit(N).
Bruce Momjian [Sat, 6 Nov 2004 05:38:19 +0000 (05:38 +0000)]
Remove:
* Allow database recovery where tablespaces can't be created
When a pg_dump is restored, all tablespaces will attempt to be created
in their original locations. If this fails, the user must be able to
adjust the restore process.
Tom Lane [Sat, 6 Nov 2004 01:16:22 +0000 (01:16 +0000)]
Code cleanup in path.c and exec.c. Handle Windows drive and network specs
everywhere not just some places, get rid of . and .. when joining path
sections together. This should eliminate most of the ugly paths like
/foo/bar/./baz that we've been generating.
Tom Lane [Fri, 5 Nov 2004 19:17:13 +0000 (19:17 +0000)]
Create 'default_tablespace' GUC variable that supplies a TABLESPACE
clause implicitly whenever one is not given explicitly. Remove concept
of a schema having an associated tablespace, and simplify the rules for
selecting a default tablespace for a table or index. It's now just
(a) explicit TABLESPACE clause; (b) default_tablespace if that's not an
empty string; (c) database's default. This will allow pg_dump to use
SET commands instead of tablespace clauses to determine object locations
(but I didn't actually make it do so). All per recent discussions.
Bruce Momjian [Thu, 4 Nov 2004 16:49:53 +0000 (16:49 +0000)]
Updates from Simon Riggs:
< that can spam more than one table.
> that can span more than one table. 239c239
< rather than just col1
> rather than just col1; also called skip-scanning. 641c641,642
< * Add free-behind capability for large sequential scans [fadvise]
> * Allow free-behind capability for large sequential scans, perhaps using
> posix_fadvise() [fadvise]
Bruce Momjian [Thu, 4 Nov 2004 16:19:46 +0000 (16:19 +0000)]
Update bitmap index entries:
< * Allow the creation of bitmap indexes which can be quickly combined
< with other bitmap indexes
> * Allow non-bitmap indexes to be combined by creating bitmaps in memory
259,261c258,259
< combined. Such indexes could be more compact if there are few unique
< value. Also, perhaps they can be lossy requiring a scan of the heap page
< to find matching rows.
> combined. They can index by tid or can be lossy requiring a scan of the
> heap page to find matching rows. 263c261,262
< * Allow non-bitmap indexes to be combined
> * Allow the creation of on-disk bitmap indexes which can be quickly
> combined with other bitmap indexes
265,266c264
< Do lookups on non-bitmap indexes and create bitmaps in memory that can be
< combined with other indexes.
> Such indexes could be more compact if there are few unique value.