Commit Graph

22507 Commits

Author SHA1 Message Date
Andrew Dunstan 21e343da35 Make plperl's $_TD trigger data a global rather than a lexical variable,
with a fresh local value for each invocation, to avoid unexpected sharing
violations. Per recent -hackers discussion.
2006-05-29 13:51:23 +00:00
Teodor Sigaev b32000eda4 Som improve page split in multicolumn GiST index.
If user picksplit on n-th column generate equals
left and right unions then it calls picksplit on n+1-th
column.
2006-05-29 12:50:06 +00:00
Teodor Sigaev 0a6fde5a26 Correct cheking in findParents(). i
From Andreas Seltenreich <andreas+pg@gate450.dyndns.org>
2006-05-29 08:39:44 +00:00
Tom Lane fd15c87ad7 enlargePQExpBuffer, alone among the functions exported by pqexpbuffer.h,
wasn't exported by exports.txt.  Ooops.  Per buildfarm results.
2006-05-28 22:42:05 +00:00
Tom Lane 134b463f02 Fix up pg_dump to do string escaping fully correctly for client encoding
and standard_conforming_strings; likewise for the other client programs
that need it.  As per previous discussion, a pg_dump dump now conforms
to the standard_conforming_strings setting of the source database.
We don't use E'' syntax in the dump, thereby improving portability of
the SQL.  I added a SET escape_strings_warning = off command to keep
the dumps from getting a lot of back-chatter from that.
2006-05-28 21:13:54 +00:00
Alvaro Herrera 117d73a9e7 Don't call PQclear until the struct is really no longer going to be used.
Per Coverity bug #304.  Thanks to Martijn van Oosterhout for reporting it.

Zero out the pointer fields of PGresult so that these mistakes are more
easily catched, per discussion.
2006-05-28 17:23:29 +00:00
Andrew Dunstan 7a6676d9df fix typo 2006-05-28 03:12:00 +00:00
Andrew Dunstan 3a9ae3d206 TG_table_name and TG_table_schema for plpgsql, plus docs and regression. 2006-05-28 03:03:17 +00:00
Alvaro Herrera 3d58a1c168 Remove traces of otherwise unused RELKIND_SPECIAL symbol. Leave the psql bits
in place though, so that it plays nicely with older servers.

Per discussion.
2006-05-28 02:27:08 +00:00
Andrew Dunstan 22b118b530 TG_table_name and TG_table_schema for pl/tcl, plus regression test and docs. 2006-05-27 20:24:16 +00:00
Tom Lane 4627a8f419 Revert ill-considered change to plpgsql: it should not rely on the
current setting of standard_conforming_strings to decide how to quote
strings that will be used later.  There is much more to do here but
this particular change breaks the build on Windows, so fix it now.
2006-05-27 19:45:52 +00:00
Tom Lane 58a2dbc740 Fix initdb to properly escape quotes and backslashes in the supplied
superuser password, and also in the paths of the various files it issues
SQL COPY commands for.  Per bug #2424.
2006-05-27 18:07:06 +00:00
Tom Lane 0780ce6a93 Re-introduce the yylex filter function formerly used to support UNION
JOIN, which I removed in a recent fit of over-optimism that we wouldn't
have any future use for it.  Now it's needed to support disambiguating
WITH CHECK OPTION from WITH TIME ZONE.  As proof of concept, add stub
grammar productions for WITH CHECK OPTION.
2006-05-27 17:38:46 +00:00
Andrew Dunstan 51b40f03a4 Looks like the new plpython regression test fails on older pythons. See if this works. 2006-05-27 12:39:11 +00:00
Bruce Momjian 7a846ecc00 Use E'' strings internally only when standard_conforming_strings =
'off'. This allows pg_dump output with standard_conforming_strings =
'on' to generate proper strings that can be loaded into other databases
without the backslash doubling we typically do.  I have added the
dumping of the standard_conforming_strings value to pg_dump.

I also added standard backslash handling for plpgsql.
2006-05-26 23:48:54 +00:00
Tom Lane 4d63e26774 Further hacking on performance of COPY OUT. It seems that fwrite()'s
per-call overhead is quite significant, at least on Linux: whatever
it's doing is more than just shoving the bytes into a buffer.  Buffering
the data so we can call fwrite() just once per row seems to be a win.
2006-05-26 22:50:02 +00:00
Tom Lane 223ae6957f Support binary COPY through psql. Also improve detection of write errors
during COPY OUT.  Andreas Pflug, some editorialization by moi.
2006-05-26 19:51:29 +00:00
Bruce Momjian aadd8a23ce Update AIX FAQ.
Chris Browne
2006-05-26 19:48:32 +00:00
Andrew Dunstan 0a269db9cf Add table_name and table_schema to plpython trigger data, plus docs and regression test. 2006-05-26 19:23:09 +00:00
Andrew Dunstan 777f72cd37 Add table_name and table_schema to plperl trigger data. relname is
kept but now deprecated. Patch from Adam Sjøgren. Add regression test to
show plperl trigger data (Andrew).
TBD: apply similar changes to plpgsql, plpython and pltcl.
2006-05-26 17:34:16 +00:00
Teodor Sigaev 5d1a066e64 Fix findParents() in case of multiple levels to find.
By Andreas Seltenreich <andreas+pg@gate450.dyndns.org>
2006-05-26 08:01:17 +00:00
Tom Lane 0a5fdb0d91 Reduce per-character overhead in COPY OUT by combining calls to
CopySendData.
2006-05-25 18:42:17 +00:00
Tom Lane c76cb77105 Fix pg_restore to process BLOB COMMENT entries correctly; they aren't
really tables and shouldn't get DISABLE TRIGGER processing.  Per bug
#2452 from Robert Treat.
2006-05-24 21:20:11 +00:00
Bruce Momjian 6bd89d09c8 Remove pg_attribute detail, add URL
< 	  pg_attribute.attislocal has to be set to 'false' for ADD, and
< 	  pg_attribute.attinhcount adjusted appropriately
> 	  See http://archives.postgresql.org/pgsql-hackers/2006-05/msg00988.php.
2006-05-24 18:12:38 +00:00
Teodor Sigaev d2158b0281 * Add support NULL to GiST.
* some refactoring and simplify code int gistutil.c and gist.c
* now in some cases it can be called used-defined
  picksplit method for non-first column in index, but here
	is a place to do more.
* small fix of docs related to support NULL.
2006-05-24 11:01:39 +00:00
Bruce Momjian 86722057fd Remove trailing blank line from exports.txt. 2006-05-23 22:14:27 +00:00
Bruce Momjian c1d4551ae1 Add PQisthreadsafe() to libpq, to allow library applications to query
the thread-safety status of the library.
2006-05-23 22:13:19 +00:00
Tom Lane 7f52e0c50e Tweak writetup_heap/readtup_heap to avoid storing the tuple identity
and transaction visibility fields of tuples being sorted.  These are
always uninteresting in a tuple being sorted (if the fields were actually
selected, they'd have been pulled out into user columns beforehand).
This saves about 24 bytes per row being sorted, which is a useful savings
for any but the widest of sort rows.  Per recent discussion.
2006-05-23 21:37:59 +00:00
Bruce Momjian 672f0beb01 Update text:
> 	  This allows tables to be added/removed from an inheritance
> 	  hierarchy.  This is particularly useful for table partitioning.
2006-05-23 20:59:29 +00:00
Bruce Momjian b7741bff02 Add:
> 	o Add ALTER TABLE tab ADD/DROP INHERITS parent
>
> 	  pg_attribute.attislocal has to be set to 'false' for ADD, and
> 	  pg_attribute.attinhcount adjusted appropriately
>
2006-05-23 20:57:53 +00:00
Bruce Momjian a2b6c896e5 Rename in release notes: Mac -> OS/X, Intel to x86:
Fix for OS/X Bonjour on x86 systems (Ashley Clark)
2006-05-23 20:20:52 +00:00
Bruce Momjian 5d9062f939 Avoid duplicate definition of LOCALEDIR in pg_config.h, already defined
in port/pg_config_paths.h.
2006-05-23 19:28:45 +00:00
Bruce Momjian c8f345024d New wording, "What is the upgrade process for PostgreSQL?" 2006-05-23 15:51:07 +00:00
Bruce Momjian 4fc6aa4bc2 Update heading for upgrades. 2006-05-23 15:47:43 +00:00
Bruce Momjian 0f9652848b Add mention that everyone should upgrade to minor releases. 2006-05-23 15:22:20 +00:00
Tom Lane 798e63ffb0 Remove CXT_printf/CXT1_printf macros. If anyone had found them to be of
any use in the past many years, we'd have made some effort to include
them in all executor node types; but in fact they were only in
nodeAppend.c and nodeIndexscan.c, up until I copied nodeIndexscan.c's
occurrence into the new bitmap node types.  Remove some other unused
macros in execdebug.h, too.  Some day the whole header probably ought to
go away in favor of better-designed facilities.
2006-05-23 15:21:52 +00:00
Bruce Momjian 74d0cf3974 Make "trigger" section:
> * Referential Integrity
>
> 	o Add MATCH PARTIAL referential integrity
> 	o Change foreign key constraint for array -> element to mean element
> 	  in array?
> 	o Enforce referential integrity for system tables
>
>
< Referential Integrity
< =====================
<
< * Add MATCH PARTIAL referential integrity
> Triggers
> ========
< * Change foreign key constraint for array -> element to mean element
<   in array?
801d804
< * Enforce referential integrity for system tables
2006-05-22 20:39:23 +00:00
Bruce Momjian 32bfb1c297 Update Japanese FAQ.
J.Kuwamura
2006-05-22 14:12:55 +00:00
Bruce Momjian 9da6508e0a Change \; to ; in RULE, \; unnecessary. 2006-05-22 14:08:06 +00:00
Peter Eisentraut 79e371037b Add strerror to pg_dump error messages where missing. 2006-05-22 11:21:54 +00:00
Tom Lane e9cc53025a Update release notes for upcoming releases. 2006-05-21 21:49:22 +00:00
Bruce Momjian c6aa53e8d6 Remove mention of pg_upgrade in release checklist. 2006-05-21 20:29:16 +00:00
Tom Lane 5cf07901c5 Fix errors in fortuna PRNG reseeding logic that could cause a predictable
session key to be selected by pgp_sym_encrypt() in some cases.  This only
affects non-OpenSSL-using builds.  Marko Kreen
2006-05-21 20:22:16 +00:00
Tom Lane 515112f9d4 Modify libpq's string-escaping routines to be aware of encoding considerations
and standard_conforming_strings.  The encoding changes are needed for proper
escaping in multibyte encodings, as per the SQL-injection vulnerabilities
noted in CVE-2006-2313 and CVE-2006-2314.  Concurrent fixes are being applied
to the server to ensure that it rejects queries that may have been corrupted
by attempted SQL injection, but this merely guarantees that unpatched clients
will fail rather than allow injection.  An actual fix requires changing the
client-side code.  While at it we have also fixed these routines to understand
about standard_conforming_strings, so that the upcoming changeover to SQL-spec
string syntax can be somewhat transparent to client code.

Since the existing API of PQescapeString and PQescapeBytea provides no way to
inform them which settings are in use, these functions are now deprecated in
favor of new functions PQescapeStringConn and PQescapeByteaConn.  The new
functions take the PGconn to which the string will be sent as an additional
parameter, and look inside the connection structure to determine what to do.
So as to provide some functionality for clients using the old functions,
libpq stores the latest encoding and standard_conforming_strings values
received from the backend in static variables, and the old functions consult
these variables.  This will work reliably in clients using only one Postgres
connection at a time, or even multiple connections if they all use the same
encoding and string syntax settings; which should cover many practical
scenarios.

Clients that use homebrew escaping methods, such as PHP's addslashes()
function or even hardwired regexp substitution, will require extra effort
to fix :-(.  It is strongly recommended that such code be replaced by use of
PQescapeStringConn/PQescapeByteaConn if at all feasible.
2006-05-21 20:19:23 +00:00
Tom Lane b3eb4ea5d8 Add a new GUC parameter backslash_quote, which determines whether the SQL
parser will allow "\'" to be used to represent a literal quote mark.  The
"\'" representation has been deprecated for some time in favor of the
SQL-standard representation "''" (two single quote marks), but it has been
used often enough that just disallowing it immediately won't do.  Hence
backslash_quote allows the settings "on", "off", and "safe_encoding",
the last meaning to allow "\'" only if client_encoding is a valid server
encoding.  That is now the default, and the reason is that in encodings
such as SJIS that allow 0x5c (ASCII backslash) to be the last byte of a
multibyte character, accepting "\'" allows SQL-injection attacks as per
CVE-2006-2314 (further details will be published after release).  The
"on" setting is available for backward compatibility, but it must not be
used with clients that are exposed to untrusted input.

Thanks to Akio Ishida and Yasuo Ohgaki for identifying this security issue.
2006-05-21 20:10:42 +00:00
Tom Lane c61a2f5841 Change the backend to reject strings containing invalidly-encoded multibyte
characters in all cases.  Formerly we mostly just threw warnings for invalid
input, and failed to detect it at all if no encoding conversion was required.
The tighter check is needed to defend against SQL-injection attacks as per
CVE-2006-2313 (further details will be published after release).  Embedded
zero (null) bytes will be rejected as well.  The checks are applied during
input to the backend (receipt from client or COPY IN), so it no longer seems
necessary to check in textin() and related routines; any string arriving at
those functions will already have been validated.  Conversion failure
reporting (for characters with no equivalent in the destination encoding)
has been cleaned up and made consistent while at it.

Also, fix a few longstanding errors in little-used encoding conversion
routines: win1251_to_iso, win866_to_iso, euc_tw_to_big5, euc_tw_to_mic,
mic_to_euc_tw were all broken to varying extents.

Patches by Tatsuo Ishii and Tom Lane.  Thanks to Akio Ishida and Yasuo Ohgaki
for identifying the security issues.
2006-05-21 20:05:21 +00:00
Alvaro Herrera 1f219cf433 Add last-vacuum/analyze-time columns to the stats collector, both manual and
issued by autovacuum.  Add accessor functions to them, and use those in the
pg_stat_*_tables system views.

Catalog version bumped due to changes in the pgstat views and the pgstat file.

Patch from Larry Rosenman, minor improvements by me.
2006-05-19 19:08:27 +00:00
Teodor Sigaev 09518fbdf4 Call MarkBufferDirty() before XLogInsert() during completion of insert 2006-05-19 17:15:41 +00:00
Teodor Sigaev 420cbff881 Simplify gistSplit() and some refactoring related code. 2006-05-19 16:15:17 +00:00
Alvaro Herrera 49b3462abb Have autovacuum report its activities to the stat collector. 2006-05-19 15:15:37 +00:00