Tom Lane [Tue, 19 Feb 2002 20:11:20 +0000 (20:11 +0000)]
A bunch of changes aimed at reducing backend startup time...
Improve 'pg_internal.init' relcache entry preload mechanism so that it is
safe to use for all system catalogs, and arrange to preload a realistic
set of system-catalog entries instead of only the three nailed-in-cache
indexes that were formerly loaded this way. Fix mechanism for deleting
out-of-date pg_internal.init files: this must be synchronized with transaction
commit, not just done at random times within transactions. Drive it off
relcache invalidation mechanism so that no special-case tests are needed.
Cache additional information in relcache entries for indexes (their pg_index
tuples and index-operator OIDs) to eliminate repeated lookups. Also cache
index opclass info at the per-opclass level to avoid repeated lookups during
relcache load.
Generalize 'systable scan' utilities originally developed by Hiroshi,
move them into genam.c, use in a number of places where there was formerly
ugly code for choosing either heap or index scan. In particular this allows
simplification of the logic that prevents infinite recursion between syscache
and relcache during startup: we can easily switch to heapscans in relcache.c
when and where needed to avoid recursion, so IndexScanOK becomes simpler and
does not need any expensive initialization.
Eliminate useless opening of a heapscan data structure while doing an indexscan
(this saves an mdnblocks call and thus at least one kernel call).
Tom Lane [Tue, 19 Feb 2002 19:53:35 +0000 (19:53 +0000)]
Arrange to call localtime() during postmaster startup. On most Unixen,
the first call of localtime() in a process will read /usr/lib/tztab or
local equivalent. Better to do this once in the postmaster and inherit
the data by fork() than to have to do it during every backend start.
Hiroshi Inoue [Mon, 18 Feb 2002 03:16:11 +0000 (03:16 +0000)]
The version is now 7.01.0010.
1) Handle parameter array.
2) Allow re-use of the connection handle after SQLDisconnect.
3) Reject NULL if no indicator specified.
4) Improve the handling of '_' in table name.
5) Unify internal begin/commit/abort operations.
6) Change SQLTables() to return null not "" for the
table_owner.
7) Fix a bug about parameter handling reported by Benoit Menendez.
8) Add cast in handling ODBC date/time escape sequences.
9) Fix a bug about cache_size handing in declare/fetch mode.
[ODBC3.0 related]
10) Improve the handling of descriptor handles(ODBC3.0).
11) Improve the type handling of some types for ODBC3.0.
[Thanks to Marcelo Aceto for his useful patches]
12) Allow nested ODBC escape.
13) Allow changing autocommit on/off inside the transaction
block.
14) Improve the handling of ODBC scalar functions.
Bruce Momjian [Sun, 17 Feb 2002 11:50:09 +0000 (11:50 +0000)]
I think it's important that it's actually documented that they can add
primary keys after the fact!
Also, we need to add regression tests for alter table / add primary key
and alter table / drop constraint. These shouldn't be added until 7.3
tho
methinks...
Tom Lane [Thu, 14 Feb 2002 15:24:10 +0000 (15:24 +0000)]
Ensure that a cursor is scanned under the same scanCommandId it was
originally created with, so that the set of visible tuples does not
change as a result of other activity. This essentially makes PG cursors
INSENSITIVE per the SQL92 definition. See bug report of 13-Feb-02.
Tom Lane [Wed, 13 Feb 2002 19:32:17 +0000 (19:32 +0000)]
Point out that --adduser actually makes the new user a superuser. This
was mentioned on the man page for the underlying CREATE USER command,
but it should be explained here too.
Tom Lane [Tue, 12 Feb 2002 23:41:25 +0000 (23:41 +0000)]
Use RTLD_NOW, not RTLD_LAZY, as binding mode for dlopen() on all platforms.
This restores the Linux behavior to what it was in PG 7.0 and 7.1, and
causes other platforms to agree. (Other well-tested platforms like HPUX
were doing it this way already.) Per pghackers discussion over the past
month or so.
Tom Lane [Tue, 12 Feb 2002 21:25:41 +0000 (21:25 +0000)]
Modify COPY TO to emit carriage returns and newlines as backslash escapes
(backslash-r, backslash-n) for protection against newline-conversion
munging. In future we will also tweak COPY FROM, but this part of the
change should be backwards-compatible. Per pghackers discussion.
Also, update COPY reference page to describe the backslash conversions
more completely and accurately.
Tom Lane [Mon, 11 Feb 2002 22:41:59 +0000 (22:41 +0000)]
Tweak GiST code to work correctly on machines where 8-byte alignment
of pointers is required. Patch from Teodor Sigaev per pghackers
discussion. It's an ugly kluge but avoids forcing initdb; we'll put
a better fix into 7.3 or later.
Tom Lane [Mon, 11 Feb 2002 20:10:50 +0000 (20:10 +0000)]
Repair problems with EvalPlanQual where target table is scanned as
inner indexscan (ie, one with runtime keys). ExecIndexReScan must
compute or recompute runtime keys even if we are rescanning in the
EPQ case. TidScan seems to have comparable problems. Per bug
noted by Barry Lind 11-Feb-02.
Tom Lane [Mon, 11 Feb 2002 00:14:10 +0000 (00:14 +0000)]
pg_dump and pg_restore man pages need to mention that one should restore
into a virgin database, ie, one created from template0, if there are any
site-local additions in template1.
Tom Lane [Sun, 10 Feb 2002 22:56:31 +0000 (22:56 +0000)]
Don't Assert() that fsync() and close() never fail; I have seen this
crash on Solaris when over disk quota. Instead, report such failures
via elog(DEBUG).