Tatsuo Ishii [Sat, 6 Jan 2001 03:33:17 +0000 (03:33 +0000)]
Fix copy to make it more robust against unexpected character
sequences. This is done by disabling multi-byte awareness when it's
not necessary. This is kind of a workaround, not a perfect solution.
However, there is no ideal way to parse broken multi-byte character
sequences. So I guess this is the best way what we could do right
now...
Tom Lane [Fri, 5 Jan 2001 22:54:37 +0000 (22:54 +0000)]
Rename and document some invalidation routines to make it clearer that
they don't themselves flush any cache entries, only add to to-do lists
that will be processed later.
Tom Lane [Fri, 5 Jan 2001 06:34:23 +0000 (06:34 +0000)]
Remove not-really-standard implementation of CREATE TABLE's UNDER clause,
and revert documentation to describe the existing INHERITS clause
instead, per recent discussion in pghackers. Also fix implementation
of SQL_inheritance SET variable: it is not cool to look at this var
during the initial parsing phase, only during parse_analyze(). See
recent bug report concerning misinterpretation of date constants just
after a SET TIMEZONE command. gram.y really has to be an invariant
transformation of the query string to a raw parsetree; anything that
can vary with time must be done during parse analysis.
Tom Lane [Thu, 4 Jan 2001 01:23:47 +0000 (01:23 +0000)]
pg_dump failed to handle backslashes embedded in function definitions
(and most other places where it needed to output a string literal, too,
except for data INSERT statements). Per bug report from Easter, 12/1/00.
Repair always-broken date_part('quarter',timestamp).
Previous result did not have correct month boundaries so anything near edge
cases was suspect (e.g. April was in Q1 and July, August were lumped into
Q2).
Thanks to Denis Osadchy <osadchy@turbo.nsk.su> for the report.
Bruce Momjian [Wed, 3 Jan 2001 06:56:52 +0000 (06:56 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.311
diff -r1.311 TODO
3c3
< Last updated: Tue Jan 2 21:23:11 EST 2001
---
> Last updated: Wed Jan 3 01:56:41 EST 2001
10c10
< A dash(-) marks changes that will appear in the upcoming 7.1 release.
---
> A dash (-) marks changes that will appear in the upcoming 7.1 release.
23c23
< * -Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
---
> * -Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME (Thomas)
35c35
< * -Views containing aggregates sometimes fail(Jan)
---
> * -Views containing aggregates sometimes fail (Jan)
37,38c37,38
< duplicates(inherit)
< * -Disallow LOCK on view(Mark Hollomon)
---
> duplicates (inherit)
> * -Disallow LOCK on view (Mark Hollomon)
58,60c58,60
< * -Add OUTER joins, left and right[outer](Tom, Thomas)
< * -Allow long tuples by chaining or auto-storing outside db (TOAST)(Jan)
< * Fix memory leak for expressions[memory](Tom?)
---
> * -Add OUTER joins, left and right[outer] (Tom, Thomas)
> * -Allow long tuples by chaining or auto-storing outside db (TOAST) (Jan)
> * Fix memory leak for expressions[memory] (Tom?)
70c70
< * Allow row re-use without vacuum(Vadim)
---
> * Allow row re-use without vacuum (Vadim)
74c74
< * More access control over who can create tables and use locks(Karel)
---
> * More access control over who can create tables and use locks (Karel)
92c92
< o -Fix large object mapping scheme, own typeid or reltype(Peter)
---
> o -Fix large object mapping scheme, own typeid or reltype (Peter)
97c97
< * Fix improper masking of some inet/cidr types [cidr]
---
> * -Fix improper masking of some inet/cidr types [cidr] 113c113
< * Get BIT type working
---
> * -Get BIT type working 119c119
< * Update macaddr manufacturer numbers, or remove the function macaddr_manuf()
---
> * -Update macaddr manufacturer numbers, or remove the function macaddr_manuf() 147c147
< * -Add ALTER TABLE ALTER COLUMN feature(Peter E)
---
> * -Add ALTER TABLE ALTER COLUMN feature (Peter E) 157c157
< * Auto-destroy sequence on DROP of table with SERIAL(Ryan)
---
> * Auto-destroy sequence on DROP of table with SERIAL (Ryan) 166a167
> * Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..) 172d172
< * Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..) 176c176
< * Make NULL's come out at the beginning or end depending on the
---
> * Make NULL's come out at the beginning or end depending on the 220c220
< * Certain indexes will not shrink, i.e. oid indexes with many inserts(Vadim)
---
> * Certain indexes will not shrink, i.e. oid indexes with many inserts (Vadim) 226c226
< with after-row images(Vadim) [logging](Vadim)
---
> with after-row images (Vadim) [logging] 232c232
< * -Redesign the function call interface to handle NULLs better[function](Tom)
---
> * -Redesign the function call interface to handle NULLs better[function] (Tom) 239c239
< * Encrpyt passwords in pg_shadow table using MD5(Vince)
---
> * Encrpyt passwords in pg_shadow table using MD5 (Vince) 298a299,300
> * Create a transaction processor to aid in persistent connections and
> connection pooling 307c309
< * Remove SET KSQO option now that OR processing is improved(Tom)
---
> * Remove SET KSQO option now that OR processing is improved (Tom)
Bruce Momjian [Wed, 3 Jan 2001 02:23:22 +0000 (02:23 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.310
diff -r1.310 TODO
3c3
< Last updated: Wed Dec 27 00:44:44 EST 2000
---
> Last updated: Tue Jan 2 21:23:11 EST 2001 310a311
> * Allow libedit to be used in place of libreadline
Bruce Momjian [Tue, 2 Jan 2001 22:03:02 +0000 (22:03 +0000)]
I've found a memory leak in libecpg of PostgreSQL 7.0.3.
The leak is caused by the memory allocation in
src/interfaces/ecpg/lib/execute.c in line 669 which is never freed.
Adding a "free(array_query);" after PQexec in line 671 seems to fix the
leak.
Tom Lane [Tue, 2 Jan 2001 04:33:24 +0000 (04:33 +0000)]
Clean up non-reentrant interface for hash_seq/HashTableWalk, so that
starting a new hashtable search no longer clobbers any other search
active anywhere in the system. Fix RelationCacheInvalidate() so that
it will not crash or go into an infinite loop if invoked recursively,
as for example by a second SI Reset message arriving while we are still
processing a prior one.
Tom Lane [Sun, 31 Dec 2000 18:38:44 +0000 (18:38 +0000)]
Don't say 'export PGHOST' or 'export PGPORT' unless we actually define
those variables. Some shells will invent an empty-string definition in
this case, which is not what we want.
Vadim B. Mikheev [Sat, 30 Dec 2000 15:19:57 +0000 (15:19 +0000)]
1. WAL needs in zero-ed content of newly initialized page.
2. Log record for PageRepaireFragmentation now keeps array
of !LP_USED offnums to redo cleanup properly.
Tom Lane [Sat, 30 Dec 2000 02:34:56 +0000 (02:34 +0000)]
Clean up spinlock assembly code slightly (just cosmetic improvements)
for Alpha gcc case. For Alpha non-gcc case, replace use of
__INTERLOCKED_TESTBITSS_QUAD builtin with __LOCK_LONG_RETRY and
__UNLOCK_LONG. The former does not execute an MB instruction and
therefore was guaranteed not to work on multiprocessor machines.
The LOCK_LONG builtins produce code that is the same in all essential
details as the gcc assembler code.
Tom Lane [Sat, 30 Dec 2000 01:20:55 +0000 (01:20 +0000)]
Paranoia about possible values of errno after a shmget/semget failure.
In theory we should always get EEXIST if there's a key collision, but
if the kernel code tests error conditions in a weird order, perhaps
EACCES or EIDRM could occur too.
Tom Lane [Fri, 29 Dec 2000 21:31:21 +0000 (21:31 +0000)]
Fix failure in CreateCheckPoint on some Alpha boxes --- it's not OK to
assume that TAS() will always succeed the first time, even if the lock
is known to be free. Also, make sure that code will eventually time out
and report a stuck spinlock, rather than looping forever. Small cleanups
in s_lock.h, too.
Tom Lane [Fri, 29 Dec 2000 20:39:09 +0000 (20:39 +0000)]
stamp-h needs to be made by config.status, not elsewhere, per recipe in
Autoconf manual. In particular, touching it before creating config.status
is guaranteed to lose.
Bruce Momjian [Thu, 28 Dec 2000 23:56:46 +0000 (23:56 +0000)]
Attached are patches for two fixes to reduce memory usage by the JDBC
drivers.
The first fix fixes the PreparedStatement object to not allocate
unnecessary objects when converting native types to Stings. The old
code used the following format:
(new Integer(x)).toString()
whereas this can more efficiently be occompilshed by:
Integer.toString(x);
avoiding the unnecessary object creation.
The second fix is to release some resources on the close() of a
ResultSet. Currently the close() method on ResultSet is a noop. The
purpose of the close() method is to release resources when the ResultSet
is no longer needed. The fix is to free the tuples cached by the
ResultSet when it is closed (by clearing out the Vector object that
stores the tuples). This is important for my application, as I have a
cache of Statement objects that I reuse. Since the Statement object
maintains a reference to the ResultSet and the ResultSet kept references
to the old tuples, my cache was holding on to a lot of memory.
Peter Eisentraut [Thu, 28 Dec 2000 17:34:52 +0000 (17:34 +0000)]
Qualify %.in rule to avoid triggering on configure.in, repair unportable
attempt to install more than one file per 'install' invocation, clean up
some other oddities.
Tom Lane [Wed, 27 Dec 2000 23:59:14 +0000 (23:59 +0000)]
Fix portability problems recently exposed by regression tests on Alphas.
1. Distinguish cases where a Datum representing a tuple datatype is an OID
from cases where it is a pointer to TupleTableSlot, and make sure we use
the right typlen in each case.
2. Make fetchatt() and related code support 8-byte by-value datatypes on
machines where Datum is 8 bytes. Centralize knowledge of the available
by-value datatype sizes in two macros in tupmacs.h, so that this will be
easier if we ever have to do it again.
Bruce Momjian [Wed, 27 Dec 2000 05:44:57 +0000 (05:44 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.309
diff -r1.309 TODO
3c3
< Last updated: Sat Dec 23 09:48:47 EST 2000
---
> Last updated: Wed Dec 27 00:44:44 EST 2000
60a61,70
> * Add replication of distributed databases [replication]
> o automatic fallover
> o load balancing
> o master/slave replication
> o multi-master replication
> o partition data across servers
> o sample implementation in contrib/rserv
> o queries across databases or servers (two-phase commit)
> * Point-in-time data recovery using backup and write-ahead log
> * Allow row re-use without vacuum(Vadim) 112c122
< * Make file in/out interface to TOAST columns
---
> * Make binary/file in/out interface for TOAST columns 122a133
> * Automatically create rules on views so they are updateable, per SQL92 173c184
< * allow psql \d to show temporary table schema
---
> * allow psql \d to show temporary table structure 195d205
< * Add replication of distributed databases [replication] 200a211,212
> * Incremental backups
> * Allow SQL92 schemas 205d216
< * Allow row re-use without vacuum(Vadim) 229a241
> * Allow Java server-side programming 278a291
> * Automatically keep clustering on a table 329d341
< \9b5~
Bruce Momjian [Sat, 23 Dec 2000 14:48:57 +0000 (14:48 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.308
diff -r1.308 TODO
3c3
< Last updated: Thu Dec 21 14:45:00 EST 2000
---
> Last updated: Sat Dec 23 09:48:47 EST 2000
72a73
> * Remove unused files during database vacuum or postmaster startup
Tom Lane [Sat, 23 Dec 2000 04:05:31 +0000 (04:05 +0000)]
Replace overly-cute coding with code that (a) has defined behavior
according to the ANSI C spec, (b) gets the boundary conditions right,
and (c) is about a third as long and three times more intelligible.
Tom Lane [Fri, 22 Dec 2000 23:12:07 +0000 (23:12 +0000)]
Small cleanup of temp-table handling. Disallow creation of a non-temp
table that inherits from a temp table. Make sure the right things happen
if one creates a temp table, creates another temp that inherits from it,
then renames the first one. (Previously, system would end up trying to
delete the temp tables in the wrong order.)
Peter Eisentraut [Fri, 22 Dec 2000 19:31:56 +0000 (19:31 +0000)]
Avoid using the terms 'installation', 'site', or 'instance' when referring
to the thing you get from running initdb. That's called a database cluster
(per SQL).
Tom Lane [Fri, 22 Dec 2000 18:35:09 +0000 (18:35 +0000)]
Add 'ONLY' to queries generated by RI triggers, so as to preserve pre-7.1
semantics of RI operations. Eventually we ought to look at making RI
work properly across inheritance trees, but not for 7.1 ...
Tom Lane [Fri, 22 Dec 2000 18:00:24 +0000 (18:00 +0000)]
Change default output formatting for CIDR to be unabbreviated, per
recommendation from Paul Vixie. Add a new abbrev() function to produce
abbreviated format as text. No forced initdb, but new function is not
available unless you do an initdb or add the pg_proc row manually.
If pghost == "" and pgport == "" then PQsetdbLogin() fails with a
error message:
Is the postmaster running locally
and accepting connections on Unix socket '/tmp/.s.PGSQL.0'?
I see many applications such as PHP fails due to this behavior.
Now if pgport == "", then it is assumed to be a DEF_PGPORT_STR. This
is the same behavior as the version prior 7.1.
Bruce Momjian [Fri, 22 Dec 2000 03:08:52 +0000 (03:08 +0000)]
In looking at the 7.1beta1 code for JDBC, I noticed that support was
added to support character set encodings. However I noticed that the
encoding that is used isn't obtained from the DB. Since Java uses
unicode UCS2 internally the character set encoding is used to translate
strings from/to the DB encoding. So it seems logical that the code
would get the encoding from the DB instead of the current method of
requiring the user pass it as a parameter.
Attached is a patch that gets the DB encoding from the DB in the same
manner as is done in libpq/fe-connect.c. The patch is created off of
the latest CVS sources (Connection.java version 1.10).
Tom Lane [Fri, 22 Dec 2000 00:51:54 +0000 (00:51 +0000)]
Revise lock manager to support "session level" locks as well as "transaction
level" locks. A session lock is not released at transaction commit (but it
is released on transaction abort, to ensure recovery after an elog(ERROR)).
In VACUUM, use a session lock to protect the master table while vacuuming a
TOAST table, so that the TOAST table can be done in an independent
transaction.
I also took this opportunity to do some cleanup and renaming in the lock
code. The previously noted bug in ProcLockWakeup, that it couldn't wake up
any waiters beyond the first non-wakeable waiter, is now fixed. Also found
a previously unknown bug of the same kind (failure to scan all members of
a lock queue in some cases) in DeadLockCheck. This might have led to failure
to detect a deadlock condition, resulting in indefinite waits, but it's
difficult to characterize the conditions required to trigger a failure.
Bruce Momjian [Thu, 21 Dec 2000 19:45:07 +0000 (19:45 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.307
diff -r1.307 TODO
3c3
< Last updated: Thu Dec 21 14:12:04 EST 2000
---
> Last updated: Thu Dec 21 14:45:00 EST 2000
32d31
< * Prevent BETWEEN from using duplicate nodes
Bruce Momjian [Thu, 21 Dec 2000 19:12:11 +0000 (19:12 +0000)]
Update TODO list.
Index: TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.306
diff -r1.306 TODO
3c3
< Last updated: Fri Dec 15 17:44:57 EST 2000
---
> Last updated: Thu Dec 21 14:12:04 EST 2000
31a32
> * Prevent BETWEEN from using duplicate nodes