Bruce Momjian [Wed, 6 Mar 2002 06:10:59 +0000 (06:10 +0000)]
Change made to elog:
o Change all current CVS messages of NOTICE to WARNING. We were going
to do this just before 7.3 beta but it has to be done now, as you will
see below.
o Change current INFO messages that should be controlled by
client_min_messages to NOTICE.
o Force remaining INFO messages, like from EXPLAIN, VACUUM VERBOSE, etc.
to always go to the client.
o Remove INFO from the client_min_messages options and add NOTICE.
Seems we do need three non-ERROR elog levels to handle the various
behaviors we need for these messages.
Bruce Momjian [Tue, 5 Mar 2002 17:55:23 +0000 (17:55 +0000)]
At this moment, --enable-debug adds debugging information to most of the
parts o f postgresql. The jdbc drivers are never compiled with debugging
support. This p atch make sure that debugging information is added to
the jdbc jar when the --en able-debug is added. This was usefull for me
for debugging some java jdbc poolin g objects but this might perhaps be
usefull for other people too?
Bruce Momjian [Tue, 5 Mar 2002 06:10:28 +0000 (06:10 +0000)]
Please, apply attached patch for contrib/tsearch to 7.2.1 and current
CVS. It fix english stemmer's problem with ending words like
'technology'.
We have found one more bug in english stemmer. The bug is with
'irregular' english words like 'skies' -> 'sky'. Please, apply attached
cumulative patch to 7.2.1 and current CVS instead previous one.
Thank to Thomas T. Thai <tom@minnesota.com> for hard testing. This kind
of bug has significance only for dump/reload database and viewing, but
searching/indexing works right.
Bruce Momjian [Tue, 5 Mar 2002 05:54:07 +0000 (05:54 +0000)]
Currently, contrib/oid2name doesn't bother to free() the memory that it
malloc()'s. This isn't too serious (because oid2name is a short-lived
utility, so the memory will soon be returned to the OS on process
termination), but I still think it's poor style.
This patch changes oid2name so that it allocates memory on the stack
where possible and free()s the remaining heap-allocated memory. The
patch also fixes a typo a comment and adds 'const' qualifiers to a few
'char *' function parameters.
Bruce Momjian [Tue, 5 Mar 2002 05:52:50 +0000 (05:52 +0000)]
> Tatsuo Ishii wrote:
> > > > It was made to cope with encoding such as an Asian bloc in 7.2Beta2.
> > > >
> > > > Added ServerEncoding
> > > > Korean (JOHAB), Thai (WIN874),
> > > > Vietnamese (TCVN), Arabic (WIN1256)
> > > >
> > > > Added ClientEncoding
> > > > Simplified Chinese (GBK), Korean (UHC)
> > > >
> > > >
> > > >
> http://www.sankyo-unyu.co.jp/Pool/postgresql-7.2b2.newencoding.diff.tar.gz
> > > > (608K)
> > >
> > > Looks good. I need some people to review this for me.
> >
> > For me they look good too. The only missing part is a
> > documentation. I will ask him to write it up. If he couldn't, I will
> > do it for him.
> > > The diff is 3mb
> > > but appears to address only additions to multibyte. I have attached a
> > > list of files it modifies. Also, look at the sizes of the mb/
> > > directory. It is getting large:
> > >
> > > 4 ./CVS
> > > 6 ./Unicode/CVS
> > > 3433 ./Unicode
> > > 6197 .
> >
> > Yes. We definitely need the on-the-fly encoding addition capability:
> > i.e. CREATE CHRACTER SET in the future...
> > --
> > Tatsuo Ishii
> >
> >
Bruce Momjian [Tue, 5 Mar 2002 05:33:31 +0000 (05:33 +0000)]
I attach a version of my toast-slicing patch, against current CVS
(current as of a few hours ago.)
This patch:
1. Adds PG_GETARG_xxx_P_SLICE() macros and associated support routines.
2. Adds routines in src/backend/access/tuptoaster.c for fetching only
necessary chunks of a toasted value. (Modelled on latest changes to
assume chunks are returned in order).
3. Amends text_substr and bytea_substr to use new methods. It now
handles multibyte cases -and should still lead to a performance
improvement in the multibyte case where the substring is near the
beginning of the string.
4. Added new command: ALTER TABLE tabname ALTER COLUMN colname SET
STORAGE {PLAIN | EXTERNAL | EXTENDED | MAIN} to parser and documented in
alter-table.sgml. (NB I used ColId as the item type for the storage
mode string, rather than a new production - I hope this makes sense!).
All this does is sets attstorage for the specified column.
4. AlterTableAlterColumnStatistics is now AlterTableAlterColumnFlags and
handles both statistics and storage (it uses the subtype code to
distinguish). The previous version of my patch also re-arranged other
code in backend/commands/command.c but I have dropped that from this
patch.(I plan to return to it separately).
5. Documented new macros (and also the PG_GETARG_xxx_P_COPY macros) in
xfunc.sgml. ref/alter_table.sgml also contains documentation for ALTER
COLUMN SET STORAGE.
Bruce Momjian [Tue, 5 Mar 2002 05:30:40 +0000 (05:30 +0000)]
I was digging through the GiST code, and figured I'd fix up some of the
"bad smell" in that code. Stuff like function parameters that aren't
used, typos in the comments, comparison between signed and unsigned
ints, etc.
Attached is a pretty trivial patch; it compiles, but beyond that
completely untested. Unless anyone sees any problems, please apply for
7.3.
Bruce Momjian [Tue, 5 Mar 2002 05:20:12 +0000 (05:20 +0000)]
Here's a patch against 7.1.3 that fixes a problem with sending larger
queries over non-blocking connections with libpq. "Larger" here
basically means that it doesn't fit into the output buffer.
The basic strategy is to fix pqFlush and pqPutBytes.
The problem with pqFlush as it stands now is that it returns EOF when an
error occurs or when not all data could be sent. The latter case is
clearly not an error for a non-blocking connection but the caller can't
distringuish it from an error very well.
The first part of the fix is therefore to fix pqFlush. This is done by
to renaming it to pqSendSome which only differs from pqFlush in its
return values to allow the caller to make the above distinction and a
new pqFlush which is implemented in terms of pqSendSome and behaves
exactly like the old pqFlush.
The second part of the fix modifies pqPutBytes to use pqSendSome instead
of pqFlush and to either send all the data or if not all data can be
sent on a non-blocking connection to at least put all data into the
output buffer, enlarging it if necessary. The callers of pqPutBytes
don't have to be changed because from their point of view pqPutBytes
behaves like before. It either succeeds in queueing all output data or
fails with an error.
I've also added a new API function PQsendSome which analogously to
PQflush just calls pqSendSome. Programs using non-blocking queries
should use this new function. The main difference is that this function
will have to be called repeatedly (calling select() properly in between)
until all data has been written.
AFAICT, the code in CVS HEAD hasn't changed with respect to non-blocking
queries and this fix should work there, too, but I haven't tested that
yet.
Tom Lane [Tue, 5 Mar 2002 05:10:24 +0000 (05:10 +0000)]
Previous patch to mark UNION outputs with common typmod (if any) breaks
three-or-more-way UNIONs, as per example from Josh Berkus. Cause is a
fragile assumption that one tlist's entries will exactly match another.
Restructure code to make that assumption a little less fragile.
Bruce Momjian [Tue, 5 Mar 2002 02:01:44 +0000 (02:01 +0000)]
Back out python patch:
Elliot Lee wrote:
> This patch to the python bindings adds C versions of the often-used
query
> args quoting routines, as well as support for quoting lists e.g.
> dbc.execute("SELECT * FROM foo WHERE blah IN %s", ([1,2,3],))
Bruce Momjian [Tue, 5 Mar 2002 00:23:13 +0000 (00:23 +0000)]
This patch to the python bindings adds C versions of the often-used
query args quoting routines, as well as support for quoting lists e.g.
dbc.execute("SELECT * FROM foo WHERE blah IN %s", ([1,2,3],))
Tom Lane [Mon, 4 Mar 2002 05:17:55 +0000 (05:17 +0000)]
Fix very ancient breakage in alter-table tests: apparently, there was a
type named 'dt' back in Postgres 4.2, and the regression test wasn't
updated when it was removed. Per report from Patricia Holben of Great
Bridge.
Tom Lane [Mon, 4 Mar 2002 04:45:27 +0000 (04:45 +0000)]
If presented db path has a trailing slash, remove it to avoid generating
double slashes in generated filenames. This is not strictly necessary
on standard Unixen, but I'm being a neatnik...
Tatsuo Ishii [Mon, 4 Mar 2002 03:55:50 +0000 (03:55 +0000)]
Fix bug in extract/date_part for milliseconds/miscroseconds and
timestamp/timestamptz combo. Now extract/date_part returns
seconds*1000 or 1000000 + fraction part as the manual stats.
regression test are also fixed.
Tom Lane [Mon, 4 Mar 2002 01:46:04 +0000 (01:46 +0000)]
Further work on elog cleanup: fix some bogosities in elog's logic about
when to send what to which, prevent recursion by introducing new COMMERROR
elog level for client-communication problems, get rid of direct writes
to stderr in backend/libpq files, prevent non-error elogs from going to
client during the authentication cycle.
Tom Lane [Sun, 3 Mar 2002 17:47:56 +0000 (17:47 +0000)]
Catcaches can now store negative entries as well as positive ones, to
speed up repetitive failed searches; per pghackers discussion in late
January. inval.c logic substantially simplified, since we can now treat
inserts and deletes alike as far as inval events are concerned. Some
repair work needed in heap_create_with_catalog, which turns out to have
been doing CommandCounterIncrement at a point where the new relation has
non-self-consistent catalog entries. With the new inval code, that
resulted in assert failures during a relcache entry rebuild.
Bruce Momjian [Sat, 2 Mar 2002 21:39:36 +0000 (21:39 +0000)]
Commit to match discussed elog() changes. Only update is that LOG is
now just below FATAL in server_min_messages. Added more text to
highlight ordering difference between it and client_min_messages.
REALLYFATAL => PANIC
STOP => PANIC
New INFO level the prints to client by default
New LOG level the prints to server log by default
Cause VACUUM information to print only to the client
NOTICE => INFO where purely information messages are sent
DEBUG => LOG for purely server status messages
DEBUG removed, kept as backward compatible
DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1 added
DebugLvl removed in favor of new DEBUG[1-5] symbols
New server_min_messages GUC parameter with values:
DEBUG[5-1], INFO, NOTICE, ERROR, LOG, FATAL, PANIC
New client_min_messages GUC parameter with values:
DEBUG[5-1], LOG, INFO, NOTICE, ERROR, FATAL, PANIC
Server startup now logged with LOG instead of DEBUG
Remove debug_level GUC parameter
elog() numbers now start at 10
Add test to print error message if older elog() values are passed to elog()
Bootstrap mode now has a -d that requires an argument, like postmaster
Tom Lane [Sat, 2 Mar 2002 20:46:12 +0000 (20:46 +0000)]
Add code to allow profiling of backends on Linux: save and restore the
profiling timer setting across fork(). The correct way to build a
profilable backend on Linux is now gmake PROFILE="-pg -DLINUX_PROFILE"
Tom Lane [Sat, 2 Mar 2002 00:49:22 +0000 (00:49 +0000)]
Don't bother to request SSL connection over a Unix socket, since the
postmaster won't accept the request anyway. (If your kernel can't
be trusted, SSL will not help you.)
Tom Lane [Sat, 2 Mar 2002 00:34:24 +0000 (00:34 +0000)]
Array slice extraction should produce a result array with index lower
bounds of 1, not the lower bound subscripts of the original slice.
Per bug report from Andre Holzner, 1-Feb-02.
Tom Lane [Fri, 1 Mar 2002 04:09:28 +0000 (04:09 +0000)]
Teach planner about the idea that a mergejoin won't necessarily read
both input streams to the end. If one variable's range is much less
than the other, an indexscan-based merge can win by not scanning all
of the other table. Per example from Reinhard Max.
Tom Lane [Wed, 27 Feb 2002 23:16:07 +0000 (23:16 +0000)]
Tweak pg_exec_query_string so that we close down transaction command
before reporting command-complete message for the final command of a
query string. This way, any errors detected during finish_xact_command
(such as RI violations) will appear to be part of the final command,
rather than coming out after the command is reported complete. This
avoids confusing PQendcopy and other not-overly-bright clients.
Per Lee Harr's bug report of 25-Feb-02.
Tom Lane [Wed, 27 Feb 2002 20:59:05 +0000 (20:59 +0000)]
#ifdef out pg_dump's check on whether a sequence's sequence_name field
matches the sequence name from pg_class. This fails if the sequence has
been renamed, and seems rather pointless in any case.
Also improve a couple of error messages about inconsistencies.
Tom Lane [Wed, 27 Feb 2002 19:36:13 +0000 (19:36 +0000)]
Clean up BeginCommand and related routines. BeginCommand and EndCommand
are now both invoked once per received SQL command (raw parsetree) from
pg_exec_query_string. BeginCommand is actually just an empty routine
at the moment --- all its former operations have been pushed into tuple
receiver setup routines in printtup.c. This makes for a clean distinction
between BeginCommand/EndCommand (once per command) and the tuple receiver
setup/teardown routines (once per ExecutorRun call), whereas the old code
was quite ad hoc. Along the way, clean up the calling conventions for
ExecutorRun a little bit.
Tatsuo Ishii [Wed, 27 Feb 2002 01:34:41 +0000 (01:34 +0000)]
Fix bug in COPY FROM when DELIMITER is not in ASCII range.
See pgsql-bugs/pgsql-hackers discussion "COPY FROM is not 8bit clean"
around 2002/02/26 for more details -- Tatsuo Ishii
Tom Lane [Tue, 26 Feb 2002 22:47:12 +0000 (22:47 +0000)]
Restructure command-completion-report code so that there is just one
report for each received SQL command, regardless of rewriting activity.
Also ensure that this report comes from the 'original' command, not the
last command generated by rewrite; this fixes 7.2 breakage for INSERT
commands that have actions added by rules. Fernando Nasser and Tom Lane.
Tom Lane [Mon, 25 Feb 2002 21:37:42 +0000 (21:37 +0000)]
Tweak psql's \connect command to not downcase unquoted database and user
names. This is a temporary measure to allow backwards compatibility with
7.2 and earlier pg_dump. 7.2.1 and later pg_dump will double-quote mixed
case names in \connect. Once we feel that older dumps are not a problem
anymore, we can revert this change and treat \connect arguments as normal
SQL identifiers.
Bruce Momjian [Mon, 25 Feb 2002 18:48:54 +0000 (18:48 +0000)]
Add items and JDBC maintainers:
> o Add LISTEN/NOTIFY support to the JDBC driver (Barry) 479a481
> * Barry is Barry Lind <barry@xythos.com> 482a485
> * Dave is Dave Cramer <dave@fastcrypt.com>
Bruce Momjian [Mon, 25 Feb 2002 06:23:54 +0000 (06:23 +0000)]
Update completed items:
> * -Prevent SIGHUP and 'pg_ctl reload' from changing command line
> * -Remove LIMIT #,# and force use LIMIT and OFFSET clauses in 7.3 (Bruce)
> * -Prevent create/drop scripts from allowing extra args (Bruce)
> * -Have pg_dump -C dump database location and encoding information
Bruce Momjian [Mon, 25 Feb 2002 04:21:55 +0000 (04:21 +0000)]
This patch will allow arbitrary levels of analyze / rewriting
by making the static variables extra_before and extra_after
automatic so we can use recursion.
It gets much easier to generate extra commands now, and one can rest
assured that the extra commands will be properly analyzed/rewritten.
Without this patch, if a command produced by transformation tries to
use these static lists their first contents would be lost with
unpredictable results. I know I could fix this by just using nconc()
instead of assignments, but the resulting order of the commands would
not be exactly what one could expect.
Bruce Momjian [Mon, 25 Feb 2002 04:06:52 +0000 (04:06 +0000)]
I've attached a simple patch which should improve the performance of
hashname() and reduce the penalty incured when NAMEDATALEN is increased.
I posted this to -hackers a couple days ago, and there haven't been any
major complaints. It passes the regression tests. See -hackers for more
discussion, as well as the suggestion from Tom Lane on which this patch
is based.
Unless anyone sees any problems, please apply for 7.3.
Tom Lane [Sun, 24 Feb 2002 21:57:23 +0000 (21:57 +0000)]
Modify pg_dumpall so that output script uses new OWNER option of CREATE
DATABASE; also make it use SET SESSION AUTHORIZATION commands rather than
\connect commands. This makes it possible to restore databases belonging
to users who do not have CREATEDB privilege. It should also become at
least somewhat feasible to run the restore script under password
authentication --- you'll get one superuser password prompt per database,
rather than a large number of challenges for passwords belonging to
varying unspecified user names.