Commit Graph

4671 Commits

Author SHA1 Message Date
Peter Eisentraut c0d4d5473a Make the world somewhat safe for (not from) DELETE FROM pg_shadow;
Assign the fixed user id 1 to the user created by initdb.
A stand-alone backend will always set the user id to 1.
(Consequently, the name of that user is no longer important.)

In stand-alone mode, the user id 1 will have implicit superuser
status, to allow repairs even if there are no users defined.

Print a warning message when starting in stand-alone mode when no
users are defined.

Disallow dropping the current user and session user.

Granting/revoking superuser status also grants/revokes usecatupd.
(Previously, it would never grant it back.  This could lead to "deadlocks".)

CREATE USER and CREATE GROUP will start allocating user ids at 100
(unless explicitly specified), to prevent accidental creation of a
superuser (plus some room for future extensions).
2001-09-08 15:24:00 +00:00
Bruce Momjian fdbf796f36 > > A simple and robus solution is in the begin of mbutils.c set default
> > ClientEncoding to SQL_ASCII (like default DatabaseEncoding). Bruce, can
> > you change it? It's one line change. Again thanks.

 Forget it! A default client encoding must be set by actual database encoding...
Please apply the small attached patch that solve it better.

Karel Zak
2001-09-08 14:30:15 +00:00
Tom Lane 02b1a7fd51 Clean up some confusion about where and how to set whereToSendOutput.
We will no longer try to send elog messages to the client before we have
initialized backend libpq (oops); however, reporting bogus commandline
switches via elog does work now (not irrelevant, because of PGOPTIONS).
Fix problem with inappropriate sending of checkpoint-process messages
to stderr.
2001-09-08 01:10:21 +00:00
Tom Lane 09e99a1082 Change addlit() to not assume its input is null-terminated, so that we
don't have more bugs like the quote-quote-quote-quote one.  Propagate
fix into ecpg lexer, too.
2001-09-07 23:17:14 +00:00
Bruce Momjian bd9b32803b Here is my much-promised patch to let people add UNIQUE constraints after
table creation time.  Big deal you say - but this patch is the basis of the
next thing which is adding PRIMARY KEYs after table creation time.  (Which
is currently impossible without twiddling catalogs)

Rundown
-------

* I have made the makeObjectName function of analyze.c non-static, and
exported it in analyze.h

* I have included analyze.h and defrem.h into command.c, to support
makingObjectNames and creating indices

* I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
says you can't add primary keys, rather than just doing nothing and
reporting nothing!!!

* I have modified the docs.

Algorithm
---------

* If name specified is null, search for a new valid constraint name.  I'm
not sure if I should "lock" my generated name somehow tho - should I open
the relation before doing this step?

* Open relation in access exclusive mode

* Check that the constraint does not already exist

* Define the new index

* Warn if they're doubling up on an existing index

Christopher Kings-Lynne
2001-09-07 21:57:53 +00:00
Tom Lane 17c03b30b0 Revert treatment of NOTIFY in rules to its pre-7.1 behavior: notify will
occur unconditionally, even if the rule should otherwise execute
conditionally.  This is more useful than giving an error, even though it's
not truly the correct behavior.  Per today's pghackers discussion.
2001-09-07 20:52:31 +00:00
Bruce Momjian 8c55728295 Add CRED alignment for NetBSD. 2001-09-07 19:59:04 +00:00
Bruce Momjian a7621c92ae Update SCM_CREDS for Net/Free/BSD-OS. Add configure checks. 2001-09-07 19:52:54 +00:00
Jan Wieck 7e26a8241d Enable SIGTERM and SIGQUIT during client authentication so
the postmaster can kill the forked off processes when shutdown
is requested.

Jan
2001-09-07 16:12:49 +00:00
Bruce Momjian d9044b5637 Remove file, per Karel. 2001-09-07 15:14:16 +00:00
Bruce Momjian 4ea26bf354 Remove variable length macros used in debugging, per Karel. 2001-09-07 15:01:45 +00:00
Bruce Momjian 7bfc83f673 Remove unused files for Karel's patch. 2001-09-07 14:17:17 +00:00
Bruce Momjian 9f5185cf63 Remove common.c, removed in Karal's patch. 2001-09-07 14:00:25 +00:00
Tatsuo Ishii 3bdd67a203 Add missing files. 2001-09-07 03:32:11 +00:00
Tom Lane 0fc7779d2e Revise overflow test in int84() to avoid codegen bug in some older
versions of gcc.  We don't really need to explicitly test the limits
anyway, just reverse-convert and see if we get the same answer.
2001-09-07 01:33:44 +00:00
Tom Lane e67bb7af5a Missed a few places that referred to a compile-time limit on
max_connections.
2001-09-07 00:46:42 +00:00
Tom Lane 863aceb54f Get rid of PID entries in shmem hash table; there is no longer any need
for them, and making them just wastes time during backend startup/shutdown.
Also, remove compile-time MAXBACKENDS limit per long-ago proposal.
You can now set MaxBackends as high as your kernel can stand without
any reconfiguration/recompilation.
2001-09-07 00:27:30 +00:00
Tatsuo Ishii 227767112c Commit Karel's patch.
-------------------------------------------------------------------
Subject: Re: [PATCHES] encoding names
From: Karel Zak <zakkr@zf.jcu.cz>
To: Peter Eisentraut <peter_e@gmx.net>
Cc: pgsql-patches <pgsql-patches@postgresql.org>
Date: Fri, 31 Aug 2001 17:24:38 +0200

On Thu, Aug 30, 2001 at 01:30:40AM +0200, Peter Eisentraut wrote:
> > 		- convert encoding 'name' to 'id'
>
> I thought we decided not to add functions returning "new" names until we
> know exactly what the new names should be, and pending schema

 Ok, the patch not to add functions.

> better
>
>     ...(): encoding name too long

 Fixed.

 I found new bug in command/variable.c in parse_client_encoding(), nobody
probably never see this error:

if (pg_set_client_encoding(encoding))
{
	elog(ERROR, "Conversion between %s and %s is not supported",
                     value, GetDatabaseEncodingName());
}

because pg_set_client_encoding() returns -1 for error and 0 as true.
It's fixed too.

 IMHO it can be apply.

		Karel
PS:

    * following files are renamed:

src/utils/mb/Unicode/KOI8_to_utf8.map  -->
        src/utils/mb/Unicode/koi8r_to_utf8.map

src/utils/mb/Unicode/WIN_to_utf8.map  -->
        src/utils/mb/Unicode/win1251_to_utf8.map

src/utils/mb/Unicode/utf8_to_KOI8.map -->
        src/utils/mb/Unicode/utf8_to_koi8r.map

src/utils/mb/Unicode/utf8_to_WIN.map -->
        src/utils/mb/Unicode/utf8_to_win1251.map

   * new file:

src/utils/mb/encname.c

   * removed file:

src/utils/mb/common.c

--
 Karel Zak  <zakkr@zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/

 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
2001-09-06 04:57:30 +00:00
Bruce Momjian 04c1f72920 PAM authentication:
> pam_strerror() should be used a few more times, rather than just saying
> "Error!".  Also, the configure.in snippet seems wrong.  You add
> -I$pam_prefix/include/security to $INCLUDES and then you #include
> <security/pam_appl.h>.  This whole thing is probably unnecessary, since
> PAM is a system library on the systems where it exists, so the headers
> and libraries are found automatically, unlike OpenSSL and
> Kerberos.

See attached revised patch. (I'm sure the configure.in stuff can be done
right/better, I'm just not enough of a autoconf guru to know what to
change it to.)

Dominic J. Eidson
2001-09-06 03:23:38 +00:00
Bruce Momjian 2a34134b6c - new to_char(interval, text)
- new millisecond (ms) and microsecond (us) support
 - more robus parsing from string - used is separator checking for
   non-exact formats like to_date('2001-9-1', 'YYYY-MM-DD')
 - SGML docs are included

Karel Zak
2001-09-06 03:22:42 +00:00
Tom Lane 6c91eef7b7 Fix handling of pg_type.typdefault per bug report from Dave Blasby.
If there's anyone out there who's actually using datatype-defined
default values, this will be an incompatible change in behavior ...
but the old behavior was so broken that I doubt anyone was using it.
2001-09-06 02:07:42 +00:00
Tom Lane f2b604ecf4 Add some debugging details to some of the elog(STOP) conditions for WAL.
Standardize on %X/%X as the formatting for XLOG position display --- we
had a couple of different formats before, and none of 'em were as useful
as hex offsets IMHO.
2001-09-06 02:02:48 +00:00
Tom Lane 763554393a Fix code so that we recover cleanly if there are no free semaphores
available in freeSemMap.  As noted by Tatsuo, this is now a likely
scenario for detecting MaxBackends-exceeded; if MaxBackends is a multiple
of PROC_NSEMS_PER_SET then we will fail here and not in sinval.c.  The
cleanup path did not work correctly before, anyway.
2001-09-04 21:42:17 +00:00
Tom Lane 936114a019 Fix comment, add Assert. 2001-09-04 19:12:05 +00:00
Tom Lane bc1a61a30d Fix typo. 2001-09-04 19:05:59 +00:00
Tom Lane b553cba15a Clean up the lock state properly when aborting because of early deadlock
detection in ProcSleep().  Bug noted by Tomasz Zielonka --- how did this
escape detection for this long??
2001-09-04 02:26:57 +00:00
Peter Eisentraut 3c59a9e3b7 Bring references to ipcclean in sync with reality. 2001-09-04 00:22:34 +00:00
Peter Eisentraut 309401a7b6 Fix misscanning of """" (an identifier consisting of one double-quote). 2001-09-04 00:19:39 +00:00
Peter Eisentraut 68e5360018 Convert some fprintf's to elog's. 2001-08-30 19:02:42 +00:00
Peter Eisentraut b1a38a4380 Install the SQL command man pages into a section appropriate for each
system.  Some systems did not understand the 'l' section, and in general
it wasn't entirely appropriate.

On SCO OpenServer, the man pages won't be installed at all until someone
figures out their man system.
2001-08-29 19:14:40 +00:00
Peter Eisentraut f45b7270b6 Whoops, wrong logic. 2001-08-29 11:54:12 +00:00
Peter Eisentraut dd225655b9 Change the conditionals so the mips + gcc code here doesn't apply for Irix.
The code in s_lock.h should get used.

report from Bruno Mattarollo <bruno@web1.greenpeace.org>
2001-08-28 15:04:27 +00:00
Tom Lane 545c6696a6 Fix confusion over static-ness of a subroutine. 2001-08-27 20:03:38 +00:00
Tom Lane bc7d37a525 Transaction IDs wrap around, per my proposal of 13-Aug-01. More
documentation to come, but the code is all here.  initdb forced.
2001-08-26 16:56:03 +00:00
Tom Lane ca86791a61 Fix portability problem in new CLOG code, per report from Rene Pijlman. 2001-08-25 23:24:39 +00:00
Tom Lane 2589735da0 Replace implementation of pg_log as a relation accessed through the
buffer manager with 'pg_clog', a specialized access method modeled
on pg_xlog.  This simplifies startup (don't need to play games to
open pg_log; among other things, OverrideTransactionSystem goes away),
should improve performance a little, and opens the door to recycling
commit log space by removing no-longer-needed segments of the commit
log.  Actual recycling is not there yet, but I felt I should commit
this part separately since it'd still be useful if we chose not to
do transaction ID wraparound.
2001-08-25 18:52:43 +00:00
Bruce Momjian 46d7ae759b Add intended Array.java file that accidentally was patched into the
wrong directory.
2001-08-25 01:35:45 +00:00
Peter Eisentraut d374e06905 Hide backend debug output in initdb by default. To that end, the bootstrap
backend gets on -o option like the regular backend.
2001-08-25 00:31:17 +00:00
Peter Eisentraut 9cf701f324 Start adding some more documentation about the number types. Make
bigserial and alias for serial8 for consistency with bigint/int8.
2001-08-24 20:03:45 +00:00
Peter Eisentraut 968d7733a1 Rename config.h to pg_config.h and os.h to pg_config_os.h, fix a number of
places that were including the wrong files.
2001-08-24 14:07:50 +00:00
Tom Lane 7326e78c42 Ensure that all TransactionId comparisons are encapsulated in macros
(TransactionIdPrecedes, TransactionIdFollows, etc).  First step on the
way to transaction ID wrap solution ...
2001-08-23 23:06:38 +00:00
Tom Lane 5b2208a82e Allow the return value of an SQL function to be binary-compatible with
the declared result type, rather than requiring exact type match as
before.  Per pghackers discusssion of 14-Aug.
2001-08-23 00:49:46 +00:00
Peter Eisentraut a4cc5770ef remove no longer needed -Wno-error 2001-08-22 20:02:56 +00:00
Tom Lane a54075a6d6 Update GiST for new pg_opclass arrangement (finally a clean solution
for haskeytype).  Update GiST contrib modules too.  Add linear-time split
algorithm for R-tree GiST opclass.
From Oleg Bartunov and Teodor Sigaev.
2001-08-22 18:24:26 +00:00
Tom Lane b04e3a2575 Remove special-case treatment of all-zeroes MAC address, per today's
discussion in pgsql-general.
2001-08-21 21:23:21 +00:00
Tom Lane f933766ba7 Restructure pg_opclass, pg_amop, and pg_amproc per previous discussions in
pgsql-hackers.  pg_opclass now has a row for each opclass supported by each
index AM, not a row for each opclass name.  This allows pg_opclass to show
directly whether an AM supports an opclass, and furthermore makes it possible
to store additional information about an opclass that might be AM-dependent.
pg_opclass and pg_amop now store "lossy" and "haskeytype" information that we
previously expected the user to remember to provide in CREATE INDEX commands.
Lossiness is no longer an index-level property, but is associated with the
use of a particular operator in a particular index opclass.

Along the way, IndexSupportInitialize now uses the syscaches to retrieve
pg_amop and pg_amproc entries.  I find this reduces backend launch time by
about ten percent, at the cost of a couple more special cases in catcache.c's
IndexScanOK.

Initial work by Oleg Bartunov and Teodor Sigaev, further hacking by Tom Lane.

initdb forced.
2001-08-21 16:36:06 +00:00
Bruce Momjian c2d1566912 Move WAL params higher in file, next to fsync option. 2001-08-21 16:31:23 +00:00
Bruce Momjian 253ade2cfe Regroup GEQO configs. 2001-08-21 16:15:31 +00:00
Bruce Momjian 8dbaca424f Fix SCM_CREDS for FreeBSD, from Teodor Sigaev. 2001-08-21 15:49:17 +00:00
Bruce Momjian 9bee8a1fd9 Add missing include for SCM_CREDS. 2001-08-21 15:21:25 +00:00
Bruce Momjian ca66b2370a Fix SO_PEERCRED printf bug added with SCM_CREDS cleanup. 2001-08-21 14:48:19 +00:00
Bruce Momjian bca9d0cdf4 Add SCM_CREDS to get owner of unix-domain socket on BSD-like systems. 2001-08-21 00:33:28 +00:00
Hiroshi Inoue 58d4f951ea Ensure to hold an exclusive lock while reindexing a relation.
This is mainly to help developers to understand the code.
2001-08-17 23:50:00 +00:00
Bruce Momjian 9df188bc0d A little more code reorg for MD5/crypt. 2001-08-17 15:44:17 +00:00
Bruce Momjian 0a3094b6f3 Reorder MD5/crypt so MD5 comes first in the code. 2001-08-17 15:40:07 +00:00
Bruce Momjian b5453fae74 Force crypt() salt to be null-terminated. 2001-08-17 03:09:31 +00:00
Bruce Momjian da45a0bdb7 Add 4-byte MD5 salt. 2001-08-17 02:59:20 +00:00
Tom Lane d4f4b971a4 Sequences are now based on int8, not int4, arithmetic. SERIAL pseudo-type
has an alias SERIAL4 and a sister SERIAL8.  SERIAL8 is just the same
except the created column is type int8 not int4.
initdb forced.  Note this also breaks any chance of pg_upgrade from 7.1,
unless we hack up pg_upgrade to drop and recreate sequences.  (Which is
not out of the question, but I don't wanna do it.)
2001-08-16 20:38:56 +00:00
Bruce Momjian bcb0ccf5be Add new MD5 pg_hba.conf keyword. Prevent fallback to crypt. 2001-08-16 16:24:16 +00:00
Bruce Momjian cd6868176e Remove protocol version change. Try MD5 first, then crypt() on all clients. 2001-08-16 04:27:18 +00:00
Bruce Momjian 368e87e6ae Use malloc/palloc as appropriate. 2001-08-15 23:22:49 +00:00
Bruce Momjian d4fb1b2388 Move md5.h contents to crypt.h. 2001-08-15 21:08:21 +00:00
Bruce Momjian 957613be18 Add new files. 2001-08-15 18:42:55 +00:00
Bruce Momjian 38bb1abcda Use MD5 for wire protocol encryption for >= 7.2 client/server.
Allow pg_shadow to be MD5 encrypted.
Add ENCRYPTED/UNENCRYPTED option to CREATE/ALTER user.
Add password_encryption postgresql.conf option.
Update wire protocol version to 2.1.
2001-08-15 18:42:16 +00:00
Tatsuo Ishii ab9b6c45cf Add conver/convert2 functions. They are similar to the SQL99's convert. 2001-08-15 07:07:40 +00:00
Tom Lane 5f7c2bdb53 sum() on int2 and int4 columns now uses an int8, not numeric, accumulator
for speed reasons; its result type also changes to int8.  avg() on these
datatypes now accumulates the running sum in int8 for speed; but we still
deliver the final result as numeric, so that fractional accuracy is
preserved.

count() now counts and returns in int8, not int4.  I am a little nervous
about this possibly breaking users' code, but there didn't seem to be
a strong sentiment for avoiding the problem.  If we get complaints during
beta, we can change count back to int4 and add a "count8" aggregate.
For that matter, users can do it for themselves with a simple CREATE
AGGREGATE command; the int4inc function is still present, so no C hacking
is needed.

Also added max() and min() aggregates for OID that do proper unsigned
comparison, instead of piggybacking on int4 aggregates.

initdb forced.
2001-08-14 22:21:59 +00:00
Tom Lane 4bc9f5e9ba Fix brokenness of nested EXCEPT/INTERSECT queries. prepunion was being
a tad sloppy about generating the targetlist for some nodes, by generating
a tlist entry that claimed to be a constant when the value wasn't actually
constant.  This caused setrefs.c to do the wrong thing later on.
2001-08-14 17:12:57 +00:00
Peter Eisentraut ee8ed85da3 Make LANCOMPILER clause in CREATE LANGUAGE optional. Allow "identifier"
syntax for language names (instead of 'string').

createlang now handles the case where a second language uses the same call
handler as an already installed language (e.g., plperl/plperlu).

droplang now handles the reverse case, i.e., dropping a language where
the call handler is still used by another language.  Moreover, droplang
can now be used to drop any user-defined language, not just the supplied
ones.
2001-08-13 21:34:54 +00:00
Tom Lane 38cfc95865 Make hashjoin give the right answer with toasted input data. 2001-08-13 19:50:11 +00:00
Tom Lane 95f8901a96 Add comparison operators and btree indexing support for type bytea.
From Joe Conway.
2001-08-13 18:45:36 +00:00
Tom Lane 1b5cffacdf Make ALTER TABLE RENAME on a view rename the view's on-select rule too.
Needed to keep pg_dump from getting confused.
2001-08-12 21:35:19 +00:00
Tom Lane dfb8e3f115 CREATE VIEW with optional column name list wasn't quite right for the
case where there are resjunk columns in the query.
2001-08-11 00:02:13 +00:00
Peter Eisentraut 633b5d5653 update 2001-08-10 20:58:09 +00:00
Tom Lane ef6ccb0bcc Cleanup some minor oversights in optional-OIDs stuff. 2001-08-10 20:52:25 +00:00
Tom Lane bf56f0759b Make OIDs optional, per discussions in pghackers. WITH OIDS is still the
default, but OIDS are removed from many system catalogs that don't need them.
Some interesting side effects: TOAST pointers are 20 bytes not 32 now;
pg_description has a three-column key instead of one.

Bugs fixed in passing: BINARY cursors work again; pg_class.relhaspkey
has some usefulness; pg_dump dumps comments on indexes, rules, and
triggers in a valid order.

initdb forced.
2001-08-10 18:57:42 +00:00
Peter Eisentraut 8265769c82 message refinements 2001-08-10 15:49:39 +00:00
Bruce Momjian 13923be7c8 1. null-safe interface to GiST
(as proposed in http://fts.postgresql.org/db/mw/msg.html?mid=1028327)

2. support for 'pass-by-value' arguments - to test this
   we used special opclass for int4 with values in range [0-2^15]
   More testing will be done after resolving problem with
   index_formtuple and implementation of B-tree using GiST

3. small patch to contrib modules (seg,cube,rtree_gist,intarray) -
   mark functions as 'isstrict' where needed.

Oleg Bartunov
2001-08-10 14:34:28 +00:00
Bruce Momjian 77a69a2ed1 Patch to LOCK multiple tables in one LOCK command.
Neil Padgett
2001-08-10 14:30:15 +00:00
Peter Eisentraut 2e57875b97 Use format_type sibling in backend error messages, so the user sees
consistent type naming.
2001-08-09 18:28:18 +00:00
Peter Eisentraut 51e8dfddf1 No longer a need for -Wno-error 2001-08-09 18:13:23 +00:00
Bruce Momjian 1b2d57dc83 A small patch to keep postgres working on the latest BeOS.
Cyril VELTER
2001-08-07 16:56:17 +00:00
Tom Lane 0bc291e03c Fix thinko (revealed by gcc warning). 2001-08-07 15:55:16 +00:00
Peter Eisentraut 50036e85b3 Add a check for end of client connection before expecting a password
response, to avoid noise in the server log.
2001-08-07 10:44:16 +00:00
Peter Eisentraut bf51b8608b Use a fixed error message for ERANGE to avoid duplicate test result files.
Add some resultmap entries for SCO OpenServer.
2001-08-06 21:55:16 +00:00
Tom Lane 80185f4b5b Seems like a bad idea to free() a string we are about to use in an
error message.
2001-08-06 18:17:42 +00:00
Tom Lane 246793469e Modify partial-index-predicate applicability tester to test whether
clauses are equal(), before trying to match them up using btree opclass
inference rules.  This allows it to recognize many simple cases involving
non-btree operations, for example 'x IS NULL'.  Clean up code a little.
2001-08-06 18:09:45 +00:00
Tom Lane 7d6fbe15a2 Evaluate LIMIT/OFFSET expressions with ExecEvalExprSwitchContext, not
ExecEvalExpr, to avoid possible memory leak.
2001-08-06 18:05:07 +00:00
Peter Eisentraut f487e3da68 Check that the data directory does not have group or world access; remove
a similar check on postgresql.conf.
2001-08-06 13:45:15 +00:00
Bruce Momjian 46e252141b Add QueryIsRule gram.y reset. 2001-08-06 05:42:48 +00:00
Tom Lane e8f1097361 Endeavor to make pgstats buffer process (a) safe and (b) useful.
Make sure it exits immediately when collector process dies --- in old code,
buffer process would hang around and compete with the new buffer process
for packets.  Make sure it doesn't block on writing the pipe when the
collector falls more than a pipeload behind.  Avoid leaking pgstats FDs
into every backend.
2001-08-05 02:06:50 +00:00
Tom Lane 5181d37e4c Remove no-longer-needed fcntl call (I'm not sure it *ever* did anything
useful, in fact).
2001-08-05 01:22:16 +00:00
Bruce Momjian d1c9633060 Back out LOCK A,B,C patch at Tom's suggestion. 2001-08-04 22:01:39 +00:00
Bruce Momjian 3e51868226 This patch is because Hurd does not support NOFILE. It is against current
cvs.

The Debian bug report says, "The upstream source makes use of NOFILE
unconditionalized.  As the Hurd doesn't have an arbitrary limit on the
number of open files, this is not defined.  But _SC_OPEN_MAX works fine
and returns 1024 (applications can increase this as they want), so I
suggest the below diff.  Please forward this upstream, too."

Oliver Elphick
2001-08-04 19:42:34 +00:00
Bruce Momjian 16365ac75b Add LOCK A,B,C functionality as LOCK A;LOCK B;LOCK C; as agreed.
Neil Padgett
2001-08-04 19:39:00 +00:00
Tom Lane dad8e410d0 Fix handling of SIGCHLD, per recent pghackers discussion: on some
platforms system(2) gets confused unless the signal handler is set to
SIG_DFL, not SIG_IGN.  pgstats.c now uses pqsignal() as it should,
not signal().  Also, arrange for the stats collector process to show
a reasonable ID in 'ps', rather than looking like a postmaster.
2001-08-04 00:14:43 +00:00
Tom Lane fd61fbe837 For some reason, CREATE TYPE has only accepted alignment specifications
of 'int4' and 'double'.  Add 'char' and 'int2' to allow user-defined types
to access the full set of supported alignments.
2001-08-03 20:47:40 +00:00
Tom Lane f59f3c8899 Add a SPI_copytupledesc function that parallels SPI_copytuple --- ie,
it copies the tupdesc into upper-executor memory.  This is necessary
for returning tuple descriptors without leaking all of lower exec memory.
2001-08-02 18:08:43 +00:00
Tom Lane ba4d223cd9 Tweak memory context sizing for saved SPI plans. 2001-08-02 16:05:23 +00:00
Tom Lane ecaa2e01b7 Fix some poor decisions about sizing of trigger-related memory contexts. 2001-08-02 15:59:28 +00:00
Tom Lane d00b272299 Even though SO_PEERCRED is probably totally unportable, might as well
declare the getsockopt parameter as ACCEPT_TYPE_ARG3 to be consistent
with our other uses of getsockopt.
2001-08-02 14:39:35 +00:00
Tom Lane 49435fb98f Remove SO_PASSCRED step in ident_unix --- according to Helge Bahmann,
that call is not needed to prepare for SO_PEERCRED.  Also, simplify code
so that #ifdef SO_PEERCRED appears in only one place, to make it easier
to support other platforms with variants of this capability.
2001-08-02 14:27:40 +00:00
Tom Lane cb90b2dacb Digging through previous discussion of this patch, I note where Peter E.
points out how silly it is to use Autoconf to test for a preprocessor
symbol, when one can equally easily #ifdef on the symbol itself.
Accordingly, revert configure to prior state and do it that way.
2001-08-01 23:52:50 +00:00
Tom Lane bc042e0a77 Support ident authentication on local (Unix) socket connections, if the
system supports SO_PEERCRED requests for Unix sockets.  This is an
amalgamation of patches submitted by Helge Bahmann and Oliver Elphick,
with some editorializing by yours truly.
2001-08-01 23:25:39 +00:00
Bruce Momjian da872534ac Add mention of SIGHUP for pg_ident.conf. 2001-08-01 00:52:19 +00:00
Bruce Momjian 8ef0aa170f Add documentation changes for new pg_hba.conf behavior. 2001-08-01 00:48:52 +00:00
Tom Lane 77896d1fc9 Cleanup code for preparsing pg_hba.conf and pg_ident.conf. Store line
number in the data structure so that we can give at least a minimally
useful idea of where the mistake is when we issue syntax error messages.
Move the ClientAuthentication() call to where it should have been in
the first place, so that postmaster memory releasing can happen in a
reasonable place also.  Update obsolete comments, correct one real bug
(auth_argument was not picked up correctly).
2001-07-31 22:55:45 +00:00
Tom Lane 0889bd00bd Further thought shows that has_distinct_on_clause() needs to take much
more care with resjunk tlist entries than it was doing.  The original
coding ignored resjunk entries entirely, but a resjunk entry that is
in either the distinctClause or sortClause lists indicates that DISTINCT
ON was used.  It's important for ruleutils.c to get this right, else we
may dump views using DISTINCT ON incorrectly.
2001-07-31 20:16:33 +00:00
Tom Lane 421467cdc8 Fix optimizer to not try to push WHERE clauses down into a sub-SELECT that
has a DISTINCT ON clause, per bug report from Anthony Wood.  While at it,
improve the DISTINCT-ON-clause recognizer routine to not be fooled by out-
of-order DISTINCT lists.
2001-07-31 17:56:31 +00:00
Bruce Momjian a54f0e8d5c Update info on pg_hba.conf comments. 2001-07-31 15:45:20 +00:00
Tom Lane c4c194f100 Fix unportable coding for FRONTEND case. 2001-07-31 02:02:45 +00:00
Bruce Momjian 462b7d46d1 Load pg_hba.conf and pg_ident.conf on startup and SIGHUP into List of
Lists, and use that for user validation.

Bruce Momjian
2001-07-30 14:50:24 +00:00
Tom Lane 94cb3fd875 Suppress gcc warning in USE_LOCALE case. 2001-07-22 22:01:04 +00:00
Bruce Momjian 54bf5da7d7 Source formatting cleanup. 2001-07-21 00:29:56 +00:00
Tom Lane 8a59f336bb Minor performance improvement in MultiRecordFreeSpace. 2001-07-19 21:25:37 +00:00
Tom Lane 7d4d5c00f0 Arrange to recycle old XLOG log segment files as new segment files,
rather than deleting them only to have to create more.  Steady state
is 2*CHECKPOINT_SEGMENTS + WAL_FILES + 1 segment files, which will
simply be renamed rather than constantly deleted and recreated.
To make this safe, added current XLOG file/offset number to page
header of XLOG pages, so that an un-overwritten page from an old
incarnation of a logfile can be reliably told from a valid page.
This change means that if you try to restart postmaster in a CVS-tip
database after installing the change, you'll get a complaint about
bad XLOG page magic number.  If you don't want to initdb, run
contrib/pg_resetxlog (and be sure you shut down the old postmaster
cleanly).
2001-07-19 02:12:35 +00:00
Tom Lane ccf193f1a5 New-style vacuum neglected to update pg_class statistics about indexes
if there were no deletions to do.
2001-07-18 00:46:25 +00:00
Tom Lane 75586cb584 Disallow non-cachable functions in functional indexes and in index
predicates.  Per suggestion from Hiroshi.
2001-07-17 21:53:01 +00:00
Tom Lane ed5c4e4a14 Improve documentation about reasoning behind the order of operations
in GetSnapshotData, GetNewTransactionId, CommitTransaction, AbortTransaction,
etc.  Correct race condition in transaction status testing in
HeapTupleSatisfiesVacuum --- this wasn't important for old VACUUM with
exclusive lock on its table, but it sure is important now.  All per
pghackers discussion 7/11/01 and 7/12/01.
2001-07-16 22:43:34 +00:00
Bruce Momjian 784def9e8e More EXTEND INDEX removal.
Martijn van Oosterhout
2001-07-16 19:07:40 +00:00
Tom Lane 40db52af34 Do not push down quals into subqueries that have LIMIT/OFFSET clauses,
since the added qual could change the set of rows that get past the
LIMIT.  Per discussion on pgsql-sql 7/15/01.
2001-07-16 17:57:02 +00:00
Tom Lane f31dc0ada7 Partial indexes work again, courtesy of Martijn van Oosterhout.
Note: I didn't force an initdb, figuring that one today was enough.
However, there is a new function in pg_proc.h, and pg_dump won't be
able to dump partial indexes until you add that function.
2001-07-16 05:07:00 +00:00
Tom Lane c8076f09d2 Restructure index AM interface for index building and index tuple deletion,
per previous discussion on pghackers.  Most of the duplicate code in
different AMs' ambuild routines has been moved out to a common routine
in index.c; this means that all index types now do the right things about
inserting recently-dead tuples, etc.  (I also removed support for EXTEND
INDEX in the ambuild routines, since that's about to go away anyway, and
it cluttered the code a lot.)  The retail indextuple deletion routines have
been replaced by a "bulk delete" routine in which the indexscan is inside
the access method.  I haven't pushed this change as far as it should go yet,
but it should allow considerable simplification of the internal bookkeeping
for deletions.  Also, add flag columns to pg_am to eliminate various
hardcoded tests on AM OIDs, and remove unused pg_am columns.

Fix rtree and gist index types to not attempt to store NULLs; before this,
gist usually crashed, while rtree managed not to crash but computed wacko
bounding boxes for NULL entries (which might have had something to do with
the performance problems we've heard about occasionally).

Add AtEOXact routines to hash, rtree, and gist, all of which have static
state that needs to be reset after an error.  We discovered this need long
ago for btree, but missed the other guys.

Oh, one more thing: concurrent VACUUM is now the default.
2001-07-15 22:48:19 +00:00
Tatsuo Ishii 1032445e5d TODO item:
* Make n of CHAR(n)/VARCHAR(n) the number of letters, not bytes
2001-07-15 11:07:37 +00:00
Tom Lane 4046e58c24 Initial implementation of concurrent VACUUM. Ifdef'd out for the moment,
because index locking issues are not handled correctly yet.  Need to go
work on the index AMs next.
2001-07-13 22:55:59 +00:00
Tom Lane 20ca834ce9 Minor code cleanup/beautification in RelationPutHeapTuple. 2001-07-13 22:52:58 +00:00
Bruce Momjian 249ecff611 indicies to indexes from Neil Conway 2001-07-12 20:35:54 +00:00
Tom Lane 3284758a17 Remove grammar restrictions on order of optional clauses in CREATE GROUP.
From Vince Vielhaber.
2001-07-12 18:03:00 +00:00
Bruce Momjian 79d78bb26a Add missing encode file. 2001-07-12 14:05:31 +00:00
Tom Lane b9f3a929ee Create a new HeapTupleSatisfiesVacuum() routine in tqual.c that embodies the
validity checking rules for VACUUM.  Make some other rearrangements of the
VACUUM code to allow more code to be shared between full and lazy VACUUM.
Minor code cleanups and added comments for TransactionId manipulations.
2001-07-12 04:11:13 +00:00
Bruce Momjian 7771436e18 > > Put encode() into base system. Used part of Alex' patch
> > for docs, hope he does not mind ;)

Marko Kreen
2001-07-11 22:14:03 +00:00
Bruce Momjian b6564c445e Disable COPY TO/FROM on views. 2001-07-11 21:53:59 +00:00
Bruce Momjian 461ea6b796 Better document use of ident on localhost, per Tom Lane's idea. 2001-07-11 20:32:11 +00:00
Bruce Momjian 357d9bdce5 Move export to a separate line, per Peter E. 2001-07-11 19:36:41 +00:00
Tom Lane 153f400676 Instead of believing SOMAXCONN from the system header files (which is
a lie on many Unixen), invoke listen() with MIN(MaxBackends*2, 10000).
The clamp value 10000 is configurable in config.h.in, if that proves
to be necessary --- hopefully it won't.
2001-07-11 19:03:07 +00:00
Tom Lane 11ac469f4a Remove direct calls of index_insert(), instead use ExecInsertIndexTuples().
This makes VACUUM work properly with partial indexes, and avoids memory
leakage with functional indexes.  Also, suppress complaint about fewer
index tuples than heap tuples when the index is a partial index.
From Martijn van Oosterhout.
2001-07-11 18:38:07 +00:00
Tom Lane 320b6db090 Changes from Vince Vielhaber to allow the optional clauses of CREATE
USER and ALTER USER to appear in any order, not only the fixed order
they used to be required to appear in.
Also, some changes from Tom Lane to create a FULL option for VACUUM;
it doesn't do anything yet, but I needed to change many of the same
files to make that happen, so now seemed like a good time.
2001-07-10 22:09:29 +00:00
Tom Lane 975da0a75e Remove formatter's assumption that year would never exceed four digits.
Enforce MAXTZLEN for all datestyles, not just some.  Remove macro
definitions that were redundant with datetime.h.
2001-07-10 01:41:47 +00:00
Tom Lane fa9a95d6c4 Remove unnecessarily enthusiastic parenthesizing in reverse-listing of
IS NULL, IS TRUE, and friends (my fault...)
2001-07-10 00:02:02 +00:00
Tom Lane cb052e0bf1 Fix rule rewriter so that new ordering of ON INSERT actions applies
in cases of qualified rules as well as unqualified ones.  Tweak rules
test to avoid cluttering output with dummy SELECT results.  Update
documentation to match code.
2001-07-09 23:50:32 +00:00
Tom Lane 4fe42dfbc3 Add SHARE UPDATE EXCLUSIVE lock mode, coming soon to a VACUUM near you.
Name chosen per pghackers discussion around 6/22/01.
2001-07-09 22:18:34 +00:00
Tom Lane 55432fedd2 Implement LockBufferForCleanup(), which will allow concurrent VACUUM
to wait until it's safe to remove tuples and compact free space in a
shared buffer page.  Miscellaneous small code cleanups in bufmgr, too.
2001-07-06 21:04:26 +00:00
Jan Wieck 9981b0f9ef Fire rule actions ON INSERT after original statement (if not INSTEAD).
Jan
2001-07-06 13:40:47 +00:00
Hiroshi Inoue 852a26f79e Fix my old fault(returns auto variable reference). 2001-07-06 09:41:36 +00:00
Tom Lane fb0919fb83 Don't assume that max offset number stays fixed on a page when we're
not holding a pin on the page.  Use double instead of long to count
rows in relation, so that code still works for > LONG_MAX rows in rel.
2001-07-05 19:33:35 +00:00
Jan Wieck 6497a7fd71 Added GUC configuration options to control access statistics.
Jan
2001-07-05 15:19:40 +00:00
Tom Lane 499c81d3a3 Prohibit a column from appearing twice in a PRIMARY KEY or UNIQUE
constraint.  This case (a) is useless, (b) violates SQL92, and
(c) is certain to cause a failure downstream when we try to create
an index with duplicated column names.  So give an appropriate error
message instead of letting the index failure occur.  Per report from
Colin Strickland.  NOTE: currently, CREATE INDEX fooi ON foo(f1,f1)
still fails with 'cannot insert duplicate key' error.  Should we
change that too?  What about functional indexes?
2001-07-04 17:36:54 +00:00
Tom Lane 3ec9fb893e Add a little more error checking and reporting to readDatum(). 2001-07-03 16:52:48 +00:00
Tom Lane 31c1fea6a8 Start the stats collector at a less randomly chosen time. Bad idea
to start it before we have acquired the data directory lock; also a
bad idea to start it before we have set up to catch SIGCHLD signals.
2001-07-03 16:52:12 +00:00
Tom Lane c8fe66dfb2 Don't go into infinite loop if /home/postgres/testversion/data directory is not writable. 2001-07-03 16:49:48 +00:00
Tom Lane 42748087c1 First non-stub implementation of shared free space map. It's not super
useful as yet, since its primary source of information is (full) VACUUM,
which makes a concerted effort to get rid of free space before telling
the map about it ... next stop is concurrent VACUUM ...
2001-07-02 20:50:46 +00:00
Tom Lane a29f6c095c Make the found-a-buffer-when-we-were-expecting-to-extend-the-rel path
actually work.  It had been throwing an Assert as of my recent changes
to bufmgr.c, but was not really right even before that AFAICT.
2001-07-02 18:47:18 +00:00
Tom Lane 109d50dd35 Under new theory of operation wherein postmaster forks children
immediately, we will fork a child even if the database state does not
permit connections to be accepted (eg, we are in recovery mode).
The child process will correctly reject the connection and exit as
soon as it's finished collecting the connection request message.
However, this means that reaper() must be prepared to see child
process exit signals even while it's waiting for startup or shutdown
process to finish.  As was, a connection request arriving during a
database recovery or shutdown would cause postmaster abort.
2001-07-01 00:06:23 +00:00
Peter Eisentraut 10e9cd2299 Allow default transaction isolation level (a.k.a. set session
characteristics) to be set through GUC.
2001-06-30 22:03:26 +00:00
Peter Eisentraut 55f8fc3bc6 portability enhancements 2001-06-30 19:01:27 +00:00
Tom Lane af5ced9cfd Further work on connecting the free space map (which is still just a
stub) into the rest of the system.  Adopt a cleaner approach to preventing
deadlock in concurrent heap_updates: allow RelationGetBufferForTuple to
select any page of the rel, and put the onus on it to lock both buffers
in a consistent order.  Remove no-longer-needed isExtend hack from
API of ReleaseAndReadBuffer.
2001-06-29 21:08:25 +00:00
Tom Lane 0eab92c0e6 Fix VACUUM so that it can use pages as move targets even if they do not
have any newly-dead tuples on them.  This is a longstanding deficiency
that prevents VACUUM from compacting a file as much as one would expect.
Change requires fixing repair_frag to not assume that fraged_pages is
a subset of vacuum_pages.
Also make some further cleanups of places that assumed page numbers fit
in int and tuple counts fit in uint32.
2001-06-29 20:14:27 +00:00
Tom Lane 39381507b7 Fix longstanding error in VACUUM: sometimes would examine a buffer page
after writing/unpinning it.  An actual failure is unlikely, unless the
system is tremendously short of buffers ... but a bug is a bug.
2001-06-29 16:34:30 +00:00
Jan Wieck 1d4ee0cc1e Turned high-frequently called pgstat functions into macros
for speed.

Jan
2001-06-29 16:29:37 +00:00
Tom Lane f889b12be9 Fix erroneous GUC variable references from commandline-GUC patch. 2001-06-29 16:05:57 +00:00
Tom Lane fb2c3289ff Repair logic error for multi-key indexes. From Oleg Bartunov. 2001-06-28 16:00:07 +00:00
Tom Lane e0c9301c87 Install infrastructure for shared-memory free space map. Doesn't actually
do anything yet, but it has the necessary connections to initialization
and so forth.  Make some gestures towards allowing number of blocks in
a relation to be BlockNumber, ie, unsigned int, rather than signed int.
(I doubt I got all the places that are sloppy about it, yet.)  On the
way, replace the hardwired NLOCKS_PER_XACT fudge factor with a GUC
variable.
2001-06-27 23:31:40 +00:00
Tom Lane 5ba723e950 Fix a couple remaining places where GUC variables were assigned to
directly, rather than through SetConfigOption().
2001-06-25 23:03:03 +00:00
Tom Lane 2e67a67715 Fix a couple remaining places where GUC variables were assigned to
directly, rather than through SetConfigOption().
2001-06-25 22:56:05 +00:00
Tom Lane 4d58a7ca87 Optimizer can now estimate selectivity of IS NULL, IS NOT NULL,
IS TRUE, etc, with some degree of verisimilitude.  Split out
selectivity support functions from builtins.h into a new header
file selfuncs.h, so as to reduce the number of header files builtins.h
must depend on.  Fix a few missing inclusions exposed thereby.
From Joe Conway, with some kibitzing from Tom Lane.
2001-06-25 21:11:45 +00:00
Tom Lane c31545af27 Suppress gcc warning. 2001-06-25 20:20:02 +00:00
Bruce Momjian 06f6404c42 Back out BYTEA binary compatibility changes. 2001-06-24 02:41:21 +00:00
Peter Eisentraut f1423cd9fc Since a missing pg_pwd file is a valid situation, don't print an error
message in that case.
2001-06-23 23:26:17 +00:00
Bruce Momjian 6a7f23c213 > Marko Kreen <marko@l-t.ee> writes:
> > secure_ctx changes too.  it will be PGC_BACKEND after '-p'.
>
> Oh, okay, I missed that part.  Could we see the total state of the
> patch --- ie, a diff against current CVS, not a bunch of deltas?
> I've gotten confused about what's in and what's out.

Ok, here it is.  Cleared the ctx comment too - after -p
it will be PGC_BACKEND in any case.

Marko Kreen
2001-06-23 22:23:49 +00:00
Bruce Momjian a0c12d5e90 Add TEMPORARY sequences and have SERIAL on a temp table have a temporary
sequence.
2001-06-23 00:07:34 +00:00
Bruce Momjian 9e39ffe4cd Attached is documentation describing plperlu differences from plperl.
Alex Pilosov
2001-06-22 21:37:14 +00:00
Jan Wieck 140ddb78fe The new files for statistical system views.
Jan
2001-06-22 19:18:36 +00:00
Jan Wieck 8d80b0d980 Statistical system views (yet without the config stuff, but
it's hard to keep such massive changes in sync with the tree
so I need to get it in and work from there now).

Jan
2001-06-22 19:16:24 +00:00
Tom Lane d8d9ed931e Add support to lock manager for conditionally locking a lock (ie,
return without waiting if we can't get the lock immediately).
Not used yet, but will be needed for concurrent VACUUM.
2001-06-22 00:04:59 +00:00
Tom Lane 695e575470 Tweak error message. 2001-06-21 19:45:45 +00:00
Bruce Momjian bcde8ea7cf Fix strangely formatted comment. 2001-06-21 18:25:54 +00:00
Tom Lane f3868f8af9 A bit of code beautification/cleanup of obsolete comments. Rethink
ordering of startup operations in one or two places.
2001-06-21 16:43:24 +00:00
Peter Eisentraut c5f7a94f3c There is no RTLD_GLOBAL on OpenBSD, says Alex Pilosov <alex@pilosoft.com>. 2001-06-20 18:33:31 +00:00
Peter Eisentraut 9b4bfbdc2c Handle reading of startup packet and authentication exchange after forking
a new postmaster child process.  This should eliminate problems with
authentication blocking (e.g., ident, SSL init) and also reduce problems
with the accept queue filling up under heavy load.

The option to send elog output to a different file per backend (postgres -o)
has been disabled for now because the initialization would have to happen
in a different order and it's not clear we want to keep this anyway.
2001-06-20 18:07:56 +00:00
Bruce Momjian 2e81f3d204 Back out SET ALL patch because it is breaking things. 2001-06-19 23:40:10 +00:00
Tom Lane 116d2bba7e Add IS UNKNOWN, IS NOT UNKNOWN boolean tests, fix the existing boolean
tests to return the correct results per SQL9x when given NULL inputs.
Reimplement these tests as well as IS [NOT] NULL to have their own
expression node types, instead of depending on special functions.
From Joe Conway, with a little help from Tom Lane.
2001-06-19 22:39:12 +00:00
Tom Lane bbbc00af88 Clean up some longstanding problems in shared-cache invalidation.
SI messages now include the relevant database OID, so that operations
in one database do not cause useless cache flushes in backends attached
to other databases.  Declare SI messages properly using a union, to
eliminate the former assumption that Oid is the same size as int or Index.
Rewrite the nearly-unreadable code in inval.c, and document it better.
Arrange for catcache flushes at end of command/transaction to happen before
relcache flushes do --- this avoids loading a new tuple into the catcache
while setting up new relcache entry, only to have it be flushed again
immediately.
2001-06-19 19:42:16 +00:00
Bruce Momjian 3709a5ada7 RESET ALL secondary patch:
Here is Tomified version of my 2 pending patches.
Dropped the set_.._real change as it is not needed.
Desc would be:

* use GUC for settings from cmdline

Marko Kreen
2001-06-18 23:42:32 +00:00
Bruce Momjian 7dac778561 Add GUC setting for Australian timezones. Uses new GUC boolean callback
functions to clear date cache.  Allow regression tests to pass when
timezone set.
2001-06-18 16:14:44 +00:00
Bruce Momjian 49ce6fff1d Allow removal of system-named pg_* temp tables. Rename temp file/dir as
pgsql_tmp.
2001-06-18 16:13:21 +00:00
Bruce Momjian 0bba6bdb8a Improve wording of authentication files. 2001-06-18 16:11:30 +00:00
Tom Lane 2c5aa2acb4 Do some restructuring to improve performance of the catcaches. Teach
CatalogCacheFlushRelation (formerly called SystemCacheRelationFlushed)
how to distinguish tuples it should flush from those it needn't; this
means a relcache flush event now only removes the catcache entries
it ought to, rather than zapping the caches completely as it used to.
Testing with the regression tests indicates that this considerably
improves the lifespan of catcache entries.  Also, rearrange catcache
data structures so that the limit on number of cached tuples applies
globally across all the catcaches, rather than being per-catcache.
It was a little silly to have the same size limit on both, say,
pg_attribute caches and pg_am caches (there being only four possible
rows in the latter...).  Doing LRU removal across all the caches
instead of locally in each one should reduce cache reload traffic
in the more heavily used caches and improve the efficiency of
cache memory use.
2001-06-18 03:35:07 +00:00
Tom Lane 6054b33290 Keep the list of to-be-NOTIFYed names in a plain List palloc'd in
TopTransactionContext, rather than using Dllist.  This simplifies and
speeds up the code, and eliminates a former risk of coredump when
out of memory (since the old code didn't bother to check for malloc
failure).  It also moves us one step closer to retiring Dllist...
2001-06-17 22:27:15 +00:00
Tom Lane 1f1ca182be Make inet/cidr << and <<= operators indexable. From Alex Pilosov <alex@pilosoft.com>. 2001-06-17 02:05:20 +00:00
Tom Lane 2917f0a5dd Tweak startup sequence so that running out of PROC array slots is
detected sooner in backend startup, and is treated as an expected error
(it gives 'Sorry, too many clients already' now).  This allows us not
to have to enforce the MaxBackends limit exactly in the postmaster.
Also, remove ProcRemove() and fold its functionality into ProcKill().
There's no good reason for a backend not to be responsible for removing
its PROC entry, and there are lots of good reasons for the postmaster
not to be touching shared-memory data structures.
2001-06-16 22:58:17 +00:00
Tom Lane 668db147d5 It turns out that the relcache thinks it can distinguish different
rules and triggers by OID.  So, even though we have no cross-references
in the system catalogs to pg_rewrite.oid or pg_trigger.oid, we'd better
have unique indexes on them.  Put back pg_rewrite_oid_index, which I
mistakenly removed a few days ago, and add pg_trigger_oid_index.
2001-06-16 18:59:31 +00:00
Tom Lane 823ab92295 Add missing PG_SETMASK(&BlockSig) to SIGHUP_handler(). 2001-06-14 19:59:24 +00:00
Tom Lane c9499e68da has_table_privilege functions from Joe Conway (with some kibitzing from
Tom Lane).  For the moment, only the OID/name variants are provided.
I didn't force initdb, but the additions to the 'privileges' regress
test won't pass until you do one.
2001-06-14 01:09:22 +00:00
Tom Lane 1a6bb6d877 Allow a non-superuser database owner to vacuum all tables in his
database, including system catalogs (but not the shared catalogs,
since they don't really belong to his database).  This is per recent
mailing list discussion.  Clean up some other code that also checks
for database ownerness by introducing a test function is_dbadmin().
2001-06-13 21:44:41 +00:00
Bruce Momjian d4a4d4c326 Attached is a patch adding following functions:
inet(text), cidr(text): convert a text value into inet/cidr
set_masklen(inet): set masklen on the inet value

Patch also contains regression checks for these functions.

Alex Pilosov
2001-06-13 21:09:00 +00:00
Bruce Momjian 82dc79702f Fix compile failure when --enable-multibyte.
Marko Kreen
2001-06-13 21:07:12 +00:00
Tom Lane df3f152ed7 Don't assume free(NULL) is OK. Yes, I know ANSI C says it is. 2001-06-13 19:52:33 +00:00
Tom Lane bbb7b6f699 Remove some dead code, simplify calling convention. 2001-06-13 18:56:30 +00:00
Tom Lane 2938eec7fe Extend GUC concepts of parse_hook and assign_hook to all four supported
datatypes, not only strings.  parse_hook is useless for bool, I suppose,
but it seems possibly useful for int and double to apply variable-specific
constraints that are more complex than simple range limits.  assign_hook
is definitely useful for all datatypes --- we need it right now for bool
to support date cache reset when changing Australian timezone rule setting.
Also, clean up some residual problems with the reset all/show all patch,
including memory leaks and mistaken reset of PostPortNumber.  It seems
best that RESET ALL not touch variables that don't have SUSET or
USERSET context.
2001-06-12 22:54:06 +00:00
Tom Lane 2a06b3bdfd Repair problem with multi-action rules in combination with any nontrivial
manipulation of rtable/jointree by planner.  Rewriter was generating
actions that shared rtable/jointree substructure, which caused havoc
when planner got to the later actions that it'd already mucked up.
2001-06-12 18:54:22 +00:00
Bruce Momjian 76e9ad1f55 Back out has_table_privilege patch. 2001-06-12 16:34:27 +00:00
Bruce Momjian 58c909bb8d OK -- here's take #5.
It "make"s and "make check"s clean against current cvs tip.

There are now both Text and Name variants, and the regression test support
is rolled into the patch. Note that to be complete wrt Name based variants,
there are now 12 user visible versions of has_table_privilege:

has_table_privilege(Text usename, Text relname, Text priv_type)
has_table_privilege(Text usename, Name relname, Text priv_type)
has_table_privilege(Name usename, Text relname, Text priv_type)
has_table_privilege(Name usename, Name relname, Text priv_type)
has_table_privilege(Text relname, Text priv_type) /* assumes current_user */
has_table_privilege(Name relname, Text priv_type) /* assumes current_user */
has_table_privilege(Text usename, Oid reloid, Text priv_type)
has_table_privilege(Name usename, Oid reloid, Text priv_type)
has_table_privilege(Oid reloid, Text priv_type)  /* assumes current_user */
has_table_privilege(Oid usesysid, Text relname, Text priv_type)
has_table_privilege(Oid usesysid, Name relname, Text priv_type)
has_table_privilege(Oid usesysid, Oid reloid, Text priv_type)

For the Text based inputs, a new internal function, get_Name is used
(shamelessly copied from get_seq_name in sequence.c) to downcase if not
quoted, or remove quotes if quoted, and truncate. I also added a few test
cases for the downcasing, quote removal, and Name based variants to the
regression test.

Joe Conway
2001-06-12 15:58:34 +00:00
Tom Lane 1d584f97b9 Clean up various to-do items associated with system indexes:
pg_database now has unique indexes on oid and on datname.
pg_shadow now has unique indexes on usename and on usesysid.
pg_am now has unique index on oid.
pg_opclass now has unique index on oid.
pg_amproc now has unique index on amid+amopclaid+amprocnum.
Remove pg_rewrite's unnecessary index on oid, delete unused RULEOID syscache.
Remove index on pg_listener and associated syscache for performance reasons
(caching rows that are certain to change before you need 'em again is
rather pointless).
Change pg_attrdef's nonunique index on adrelid into a unique index on
adrelid+adnum.

Fix various incorrect settings of pg_class.relisshared, make that the
primary reference point for whether a relation is shared or not.
IsSharedSystemRelationName() is now only consulted to initialize relisshared
during initial creation of tables and indexes.  In theory we might now
support shared user relations, though it's not clear how one would get
entries for them into pg_class &etc of multiple databases.

Fix recently reported bug that pg_attribute rows created for an index all have
the same OID.  (Proof that non-unique OID doesn't matter unless it's
actually used to do lookups ;-))

There's no need to treat pg_trigger, pg_attrdef, pg_relcheck as bootstrap
relations.  Convert them into plain system catalogs without hardwired
entries in pg_class and friends.

Unify global.bki and template1.bki into a single init script postgres.bki,
since the alleged distinction between them was misleading and pointless.
Not to mention that it didn't work for setting up indexes on shared
system relations.

Rationalize locking of pg_shadow, pg_group, pg_attrdef (no need to use
AccessExclusiveLock where ExclusiveLock or even RowExclusiveLock will do).
Also, hold locks until transaction commit where necessary.
2001-06-12 05:55:50 +00:00
Tom Lane 88e948216c Nest macros with slightly less enthusiasm, for performance and to avoid
having non-gcc compilers spit up.
2001-06-11 05:00:56 +00:00
Tom Lane 2a6f7ac456 Move temporary files into 'pg_tempfiles' subdirectory of each database
directory (which can be made a symlink to put temp files on another disk).
Add code to delete leftover temp files during postmaster startup.
Bruce, with some kibitzing from Tom.
2001-06-11 04:12:29 +00:00
Tom Lane 01a819abe3 Make planner compute the number of hash buckets the same way that
nodeHash.c will compute it (by sharing code).
2001-06-11 00:17:08 +00:00
Tom Lane a8fe109ac1 Fix thinko in hash cost estimation: average frequency
should be computed from total number of distinct values in whole
relation, not # distinct values we expect to have after restriction
clauses are applied.
2001-06-10 02:59:35 +00:00
Peter Eisentraut 7ceed2a9b5 Allow GRANT/REVOKE to/from more than one user per invocation. Command tag
for GRANT/REVOKE is now just that, not "CHANGE".

On the way, migrate some of the aclitem internal representation away from
the parser and build a real parse tree instead.  Also add some 'const'
qualifiers.
2001-06-09 23:21:55 +00:00
Tom Lane 202548d6cc Teach convert_to_scalar about datatypes timetz, inet, cidr, macaddr. 2001-06-09 22:16:18 +00:00
Tom Lane bdadc9bf1c Remove RelationGetBufferWithBuffer(), which is horribly confused about
appropriate pin-count manipulation, and instead use ReleaseAndReadBuffer.
Make use of the fact that the passed-in buffer (if there is one) must
be pinned to avoid grabbing the bufmgr spinlock when we are able to
return this same buffer.  Eliminate unnecessary 'previous tuple' and
'next tuple' fields of HeapScanDesc and IndexScanDesc, thereby removing
a whole lot of bookkeeping from heap_getnext() and related routines.
2001-06-09 18:16:59 +00:00
Peter Eisentraut 959dc927d3 Preliminary code cleanup in elog(). Split out some code into utility
functions, remove indent support, make sure all strings are marked
translatable.
2001-06-08 21:16:49 +00:00
Bruce Momjian 4ee76ad884 reset all: command line and .conf options change defaults
on RESET ALL those are restored.

show all: GUC + non-GUC.

SHOW ALL, RESET ALL

Marko Kreen
2001-06-07 04:50:57 +00:00
Bruce Momjian ba17165f55 This adds unary plus capability. No grammar changes, per Tom's request.
Marko Kreen
2001-06-07 00:09:32 +00:00
Tom Lane a6697b3614 get_seq_name should truncate name to NAMEDATALEN, so that this works:
create sequence a1234567890123456789012345678901234567890;
select nextval('a1234567890123456789012345678901234567890');
2001-06-06 22:03:48 +00:00
Tom Lane b67fc0079c Be a little smarter about deciding how many most-common values to save. 2001-06-06 21:29:17 +00:00
Tom Lane 1173344e74 Adjust WAL code so that checkpoints truncate the xlog at the previous
checkpoint's redo pointer, not its undo pointer, per discussion in
pghackers a few days ago.  No point in hanging onto undo information
until we have the ability to do something with it --- and this solves
a rather large problem with log space for long-running transactions.
Also, change all calls of write() to detect the case where write
returned a count less than requested, but failed to set errno.
Presume that this situation indicates ENOSPC, and give the appropriate
error message, rather than a random message associated with the previous
value of errno.
2001-06-06 17:07:46 +00:00
Tom Lane fb97d2b6bf Correct permissions-checking bugs associated with ancient decision to
copy PUBLIC access rights into each newly created ACL entry.  Instead
treat each ACL entry as independent flags.  Also clean up some ugliness
in acl.h API.
2001-06-05 19:34:56 +00:00
Tom Lane cdd230d628 Improve planning of OR indexscan plans: for quals like
WHERE (a = 1 or a = 2) and b = 42
and an index on (a,b), include the clause b = 42 in the indexquals
generated for each arm of the OR clause.  Essentially this is an index-
driven conversion from CNF to DNF.  Implementation is a bit klugy, but
better than not exploiting the extra quals at all ...
2001-06-05 17:13:52 +00:00
Tom Lane 7c579fa12d Further work on making use of new statistics in planner. Adjust APIs
of costsize.c routines to pass Query root, so that costsize can figure
more things out by itself and not be so dependent on its callers to tell
it everything it needs to know.  Use selectivity of hash or merge clause
to estimate number of tuples processed internally in these joins
(this is more useful than it would've been before, since eqjoinsel is
somewhat more accurate than before).
2001-06-05 05:26:05 +00:00
Bruce Momjian 28d2420eef This patch adds support for %TYPE in CREATE FUNCTION argument and return
types.  This version has an elog() to remind the user the type
resolution is not dynamic.

Ian Lance Taylor
2001-06-04 23:27:23 +00:00
Tom Lane eeaa497e7b Give error message, rather than coredump, for utility statements in
conditional rules (rules with WHERE clauses).  We cannot support these
since there's noplace to hang a condition on a utility statement.
We caught the other case (attempt to attach a condition at rewrite time)
awhile ago, but this one escaped notice until now.
2001-06-04 16:17:30 +00:00
Peter Eisentraut 12c1552066 Mark many strings in backend not covered by elog for translation. Also,
make strings in xlog.c look more like English and less like binary noise.
2001-06-03 14:53:56 +00:00
Tom Lane 277a47ad0f Accept and output '-Infinity' as well as 'Infinity', per long-ago
suggestion from Ross Reedstrom.  Still needs work to make those symbols
convert to actual IEEE infinities (on machines where such things exist).
2001-06-02 20:18:30 +00:00
Tom Lane 5433b48380 Tweak sorting so that nulls appear at the front of a descending sort
(vs. at the end of a normal sort).  This ensures that explicit sorts
yield the same ordering as a btree index scan.  To be really sure that
that equivalence holds, we use the btree entries in pg_amop to decide
whether we are looking at a '<' or '>' operator.  For a sort operator
that has no btree association, we put the nulls at the front if the
operator is named '>' ... pretty grotty, but it does the right thing in
simple ASC and DESC cases, and at least there's no possibility of getting
a different answer depending on the plan type chosen.
2001-06-02 19:01:53 +00:00
Peter Eisentraut e542036461 Native Language Support (NLS)
Use --enable-nls to turn it on; see installation instructions for details.
See developer's guide how to make use of it in programs and how to add
translations.

psql sources have been almost fully prepared and an incomplete German
translation has been provided.  In the backend, only elog() calls are
currently translatable, and the provided German translation file is more
of a placeholder.
2001-06-02 18:25:18 +00:00
Tom Lane 58193c5f37 Paranoia about unordered comparisons in IEEE float math. If we are
given values that compare as unordered, make sure we reply that they
are equal, which is better than giving an arbitrary answer --- at least
it doesn't depend on which one is passed as which arg.
2001-06-02 17:12:12 +00:00
Jan Wieck fc7c16fd16 dllist.c is included in the frontend libpq interface via symlink.
There is no elog() available. Used fprintf(stderr, ...) and exit
instead.

Jan
2001-06-02 15:16:55 +00:00
Tom Lane c6b1ef8fe7 Check for malloc failure. 2001-06-01 20:29:43 +00:00
Tom Lane ddd96e1f21 Guard against malloc failure. Also, don't examine segP->lastBackend
until we hold the spinlock.
2001-06-01 20:07:16 +00:00
Tom Lane d8adce8983 Check for malloc failure. 2001-06-01 19:54:58 +00:00
Tom Lane 25ee08e14a If spi.c wants to use malloc, it better test for malloc failure. 2001-06-01 19:43:55 +00:00
Tom Lane 7c0c9b3cce New improved version of bpcharin() may have got the truncation case
right, but it failed to get the padding case right.

This was obscured by subsequent application of bpchar() in all but one
regression test case, and that one didn't fail in an obvious way ---
trailing blanks are hard to see.  Add another test case to make it
more obvious if it breaks again.
2001-06-01 17:49:17 +00:00
Tom Lane a51ec450ff Remove fastpath.c's lame attempt at caching function lookup info across
calls.  This has never actually cached anything, because postgres.c does
each fastpath call as a separate transaction command, and so fastpath.c
would always decide that its cache was outdated.  If it had worked, it
would now be failing for calls of oldstyle functions due to dangling
pointers in the FmgrInfo struct.  Rip it out for simplicity and bug-
proofing.
2001-06-01 15:45:42 +00:00
Tom Lane 0b370ea7c8 Clean up some minor problems exposed by further thought about Panon's bug
report on old-style functions invoked by RI triggers.  We had a number of
other places that were being sloppy about which memory context FmgrInfo
subsidiary data will be allocated in.  Turns out none of them actually
cause a problem in 7.1, but this is for arcane reasons such as the fact
that old-style triggers aren't supported anyway.  To avoid getting burnt
later, I've restructured the trigger support so that we don't keep trigger
FmgrInfo structs in relcache memory.  Some other related cleanups too:
it's not really necessary to call fmgr_info at all while setting up
the index support info in relcache entries, because those ScanKeyEntry
structs are never used to invoke the functions.  This should speed up
relcache initialization a tiny bit.
2001-06-01 02:41:36 +00:00
Tom Lane 3043810d97 Updates to make GIST work with multi-key indexes (from Oleg Bartunov
and Teodor Sigaev).  Declare key values as Datum where appropriate,
rather than char* (Tom Lane).
2001-05-31 18:16:55 +00:00
Tom Lane e1107fc285 RI triggers would fail for datatypes using old-style equal function,
because cached fmgr info contained reference to a shorter-lived data
structure.  Also guard against possibility that fmgr_info could fail,
leaving an incomplete entry present in the hash table.
2001-05-31 17:32:33 +00:00
Bruce Momjian 53020d0fbe Remove OLD_FILE_NAMING code. No longer used. 2001-05-30 20:52:34 +00:00
Tom Lane f1d5d0905c Tweak StrategyEvaluation data structure to eliminate hardwired limit on
number of strategies supported by an index AM.  Add missing copyright
notices and CVS $Header$ markers to GIST source files.
2001-05-30 19:53:40 +00:00
Tom Lane 6625cf5f4f Fix broken $Header$ declaration. 2001-05-30 18:32:29 +00:00
Bruce Momjian 33f2614aa1 Remove SEP_CHAR, replace with / or '/' as appropriate. 2001-05-30 14:15:27 +00:00
Bruce Momjian 7160c86ec2 These patches should fix check constraints not inheriting
when added by alter table add constraint.  The first file
patches backend/commands/command.c and the latter is a patch
to the alter table regression test.

Stephan Szabo
2001-05-30 13:00:03 +00:00
Bruce Momjian 36546c98b5 Attached is my patch that adds DROP CONSTRAINT support to PostgreSQL. I
basically want your guys feedback.  I have sprinkled some of my q's thru
the text delimited with the @@ symbol.  It seems to work perfectly.

[ Removed @@ comments because patch was reviewed. ]

At the moment it does CHECK constraints only, with inheritance.  However,
due to the problem mentioned before with the mismatching between inherited
constraints it may be wise to disable the inheritance feature for a while.
it is written in an extensible fashion to support future dropping of other
types of constraint, and is well documented.

Please send me your comments, check my use of locking, updating of
indices, use of ERROR and NOTICE, etc. and I will rework the patch based
on feedback until everyone
is happy with it...

Christopher Kings
2001-05-30 12:57:36 +00:00
Tom Lane 8a3b80deb0 Make text <=> char conversion functions convert zero character to and
from an empty text string.  This makes them consistent with the de facto
behavior of type char's I/O conversion functions, and avoids generating
text values with embedded nulls, which confuse many text operators.
2001-05-28 21:58:32 +00:00
Tatsuo Ishii e23f8c4557 Fix a message error in utf_to_local 2001-05-28 01:00:25 +00:00
Tom Lane 9e7243063c When using a junkfilter, the output tuple should NOT be stored back into
the same tuple slot that the raw tuple came from, because that slot has
the wrong tuple descriptor.  Store it into its own slot with the correct
descriptor, instead.  This repairs problems with SPI functions seeing
inappropriate tuple descriptors --- for example, plpgsql code failing to
cope with SELECT FOR UPDATE.
2001-05-27 20:48:51 +00:00
Tom Lane a3855c5761 Cause ExecCountSlots() accounting to bear some relationship to reality.
Rather surprising we hadn't seen bug reports about this ...
2001-05-27 20:42:20 +00:00
Tom Lane 73d1040bd9 Fix eqjoinsel() to make use of new statistics. 2001-05-27 17:37:48 +00:00
Peter Eisentraut 96147a6d1c Make UPDATE and DELETE privileges distinct. Add REFERENCES and TRIGGER
privileges.  INSERT and COPY FROM now require INSERT (only).  Add
privileges regression test.
2001-05-27 09:59:30 +00:00
Bruce Momjian f6923ff3ac Oops, only wanted python change in the last commit. Backing out. 2001-05-25 15:45:34 +00:00
Bruce Momjian dffb673692 While changing Cygwin Python to build its core as a DLL (like Win32
Python) to support shared extension modules, I have learned that Guido
prefers the style of the attached patch to solve the above problem.
I feel that this solution is particularly appropriate in this case
because the following:

    PglargeType
    PgType
    PgQueryType

are already being handled in the way that I am proposing for PgSourceType.

Jason Tishler
2001-05-25 15:34:50 +00:00
Bruce Momjian f36fc7bb63 I haven't tried building postgres with the Watcom compiler for 7.1 because
it does not support 64bit integers. AFAIK that's the default data type for
OIDs, so I am not surprised that this does not work. Use gcc instead.
BTW., 7.1 does not compile as is with gcc either, I believed the
required patches made it into the 7.1.1 release but obviously I missed
the deadline.
Since the ports mailing list does not seem to be archived I have attached
a copy of the patch (for 7.1 and 7.1.1).

I've just performed a build of a Watcom compiled version and found a couple
of bugs in the watcom specific part of that patch. Please use the attached
version instead.

Tegge, Bernd
2001-05-24 15:53:34 +00:00
Bruce Momjian f08245cfe3 I found the answer to this: the partition had filled up, and so the problem
was lack of disk space.

Oliver Elphick
2001-05-22 16:52:49 +00:00
Peter Eisentraut efcecd9eca Make bit and bit varying types reject too long input. (They already tried
to do that, but inconsistently.)  Make bit type reject too short input,
too, per SQL.  Since it no longer zero pads, 'zpbit*' has been renamed to
'bit*' in the source, hence initdb.
2001-05-22 16:37:17 +00:00
Bruce Momjian 1b62a714dc The Watcom preprocessor adds a space at the start of each line. Therefore
the output of "egrep '^[0-9]' " is empty. Changing the pattern to
"egrep '^[ ]*[0-9]" generates the correct file.

Tegge, Bernd
2001-05-22 12:06:51 +00:00
Bruce Momjian 66e9ee79c7 Print error on SELECT tab FROM tab:
You can't use relation names alone in the target list, try relation.*
2001-05-21 18:42:08 +00:00
Peter Eisentraut 5546ec289b Make char(n) and varchar(n) types raise an error if the inserted string is
too long.  While I was adjusting the regression tests I moved the array
things all into array.sql, to make things more manageable.
2001-05-21 16:54:46 +00:00
Jan Wieck d27f363e3f Enhancement of SPI to get access to portals
- New functions to create a portal using a prepared/saved
  SPI plan or lookup an existing portal by name.
- Functions to fetch/move from/in portals. Results are placed
  in the usual SPI_processed and SPI_tuptable, so the entire
  set of utility functions can be used to gain attribute access.
- Prepared/saved SPI plans now use their own memory context
  and SPI_freeplan(plan) can remove them.
- Tuple result sets (SPI_tuptable) now uses it's own memory
  context and can be free'd by SPI_freetuptable(tuptab).

Enhancement of PL/pgSQL

- Uses generic named portals internally in FOR ... SELECT
  loops to avoid running out of memory on huge result sets.
- Support for CURSOR and REFCURSOR syntax using the new SPI
  functionality. Cursors used internally only need no explicit
  transaction block. Refcursor variables can be used inside
  of explicit transaction block to pass cursors between main
  application and functions.


Jan
2001-05-21 14:22:19 +00:00
Tom Lane be03eb25f3 Modify optimizer data structures so that IndexOptInfo lists built for
create_index_paths are not immediately discarded, but are available for
subsequent planner work.  This allows avoiding redundant syscache lookups
in several places.  Change interface to operator selectivity estimation
procedures to allow faster and more flexible estimation.
Initdb forced due to change of pg_proc entries for selectivity functions!
2001-05-20 20:28:20 +00:00
Peter Eisentraut d1af54cf6d Make sure fmgr_info() fills in fn_oid last, so that no partially
initialized FmgrInfo structs linger after elog.
2001-05-19 09:28:08 +00:00
Peter Eisentraut cb8b40e6d5 Allow special '$libdir' macro to show up in object file path in CREATE
FUNCTION command.  Guard against trying to load a directory.  Update
documentation some.
2001-05-19 09:01:10 +00:00
Bruce Momjian 385d271b81 Comment additions in parser. 2001-05-19 01:57:11 +00:00
Bruce Momjian 5e987038ce Move ParserFuncOrColumn function higher in the file. 2001-05-19 00:37:45 +00:00
Bruce Momjian 5ec8474323 New comment. This func/column things has always confused me.
/*
 *  parse function
 *  This code is confusing because the database can accept
 *  relation.column, column.function, or relation.column.function.
 *  In these cases, funcname is the last parameter, and fargs are
 *  the rest.
 *
 *  It can also be called as func(col) or func(col,col).
 *  In this case, Funcname is the part before parens, and fargs
 *  are the part in parens.
 *
 */
Node *
ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
                  bool agg_star, bool agg_distinct,
                  int precedence)
2001-05-19 00:33:20 +00:00
Bruce Momjian f61d70c2ac Undo \dT change. Not worth it. 2001-05-18 22:54:23 +00:00
Bruce Momjian 2fd831d323 Rename ParseFuncOrColumn() to ParseColumnOrFunc(). 2001-05-18 22:35:51 +00:00
Bruce Momjian dc0ff5c67a Small code cleanups,formatting. 2001-05-18 21:24:20 +00:00
Tom Lane a9da3fed30 Suppress compiler warnings about pid_t vs int. 2001-05-18 17:49:52 +00:00
Peter Eisentraut 761a0bb69b Add dynamic_library_path parameter and automatic appending of shared
library extension.
2001-05-17 17:44:18 +00:00
Bruce Momjian 2d7795ebb4 Prevent forced blank line before comment block in pgindent. 2001-05-17 15:55:24 +00:00
Bruce Momjian e044fc0599 Spacing cleanup. 2001-05-17 15:22:12 +00:00
Bruce Momjian 806aba49fd Small cleanup of spacing. 2001-05-17 14:59:31 +00:00
Tom Lane 77f277575a Replace poorly-coded vac_find_eq routine with call to standard bsearch
library code.  Tweak progress messages to include elapsed real time,
not only CPU time.
2001-05-17 01:28:50 +00:00
Bruce Momjian 8128ae686f Add missing paren. 2001-05-16 22:36:03 +00:00
Tom Lane 27336e4f7a Repair race condition introduced into heap_update() in 7.1 ---
PageGetFreeSpace() was being called while not holding the buffer lock, which
not only could yield a garbage answer, but even if it's the right answer there
might be less space available after we reacquire the buffer lock.

Also repair potential deadlock introduced by my recent performance improvement
in RelationGetBufferForTuple(): it was possible for two heap_updates to try to
lock two buffers in opposite orders.  The fix creates a global rule that
buffers of a single heap relation should be locked in decreasing block number
order.  Currently, this only applies to heap_update; VACUUM can get away with
ignoring the rule since it holds exclusive lock on the whole relation anyway.
However, if we try to implement a VACUUM that can run in parallel with other
transactions, VACUUM will also have to obey the lock order rule.
2001-05-16 22:35:12 +00:00
Peter Eisentraut dbb219b896 Add missing dlfcn.h includes. Fix "" vs <>. 2001-05-15 16:55:27 +00:00
Tom Lane 6f3da9ae17 Remove unnecessary EvalPlanQual support code --- since this plan node
type never scans a relation directly, it can't be an EPQ target.
Explicitly drop subplan's tuple table to ensure we have no buffer pin
leaks.
2001-05-15 16:11:58 +00:00
Bruce Momjian d0e1091cfd we found a problem in GiST with massive insert/update operations
with many NULLs ( inserting of NULL into indexed field cause
ERROR: MemoryContextAlloc: invalid request size)
As a workaround 'vacuum analyze' could be used.

This patch resolves the problem, please upply to 7.1.1 sources and
current cvs tree.

Oleg Bartunov
2001-05-15 14:14:49 +00:00
Bruce Momjian ed6998d0b3 Re-add pg_index.indhaskeytype. 2001-05-15 03:49:35 +00:00
Bruce Momjian f756acf8a8 Re-add pg_index.indisclustered in a minimalist way. Also fix BSDi
dynamic linker change.  #include must be before #ifdef test.
2001-05-15 01:12:59 +00:00
Tom Lane 7809cbf7e6 Some badly needed documentation about EvalPlanQual. 2001-05-15 00:35:50 +00:00
Tom Lane a4155d3bbd EvalPlanQual was thoroughly broken for concurrent update/delete on inheritance
trees (mostly my fault).  Repair.  Also fix long-standing bug in ExecReplace:
after recomputing a concurrently updated tuple, we must recheck constraints.
Make EvalPlanQual leak memory with somewhat less enthusiasm than before,
although plugging leaks fully will require more changes than I care to risk
in a dot-release.
2001-05-15 00:33:36 +00:00
Bruce Momjian 80d4ae931a Small include file fix for pg_variabie.h 2001-05-14 22:06:41 +00:00
Bruce Momjian 7d9504d4e2 Pg_varaiable removal cleanup found from regression. 2001-05-14 21:58:10 +00:00
Bruce Momjian 783fbdab70 Remove columns pg_index.haskeytype and pg_index.indisclustered. Not used. 2001-05-14 21:53:16 +00:00
Peter Eisentraut c87bc779d4 Use RTLD_GLOBAL flag for dlopen-style dynamic loaders. 2001-05-14 21:45:53 +00:00
Bruce Momjian 1e7b79cebc Remove unused tables pg_variable, pg_inheritproc, pg_ipl tables. Initdb
forced.
2001-05-14 20:30:21 +00:00
Tom Lane 248182560c Current implementation of FOR UPDATE has no hope of working correctly
for relations on the nullable side of an OUTER JOIN.  For now I think
we'd better refuse such queries.
2001-05-14 20:25:00 +00:00
Tom Lane eedb7d18fa Modify RelationGetBufferForTuple() so that we only do lseek and lock
when we need to move to a new page; as long as we can insert the new
tuple on the same page as before, we only need LockBuffer and not the
expensive stuff.  Also, twiddle bufmgr interfaces to avoid redundant
lseeks in RelationGetBufferForTuple and BufferAlloc.  Successive inserts
now require one lseek per page added, rather than one per tuple with
several additional ones at each page boundary as happened before.
Lock contention when multiple backends are inserting in same table
is also greatly reduced.
2001-05-12 19:58:28 +00:00
Peter Eisentraut 2e1579a99f Make bootstrap debug messages more readable. Clean up some clutter. 2001-05-12 01:48:49 +00:00
Tom Lane 642107d5ba Avoid unnecessary lseek() calls by cleanups in md.c. mdfd_lstbcnt was
not being consulted anywhere, so remove it and remove the _mdnblocks()
calls that were used to set it.  Change smgrextend interface to pass in
the target block number (ie, current file length) --- the caller always
knows this already, having already done smgrnblocks(), so it's silly to
do it over again inside mdextend.  Net result: extension of a file now
takes one lseek(SEEK_END) and a write(), not three lseeks and a write.
2001-05-10 20:38:49 +00:00
Tom Lane c23bc6fbb0 First cut at making indexscan cost estimates depend on correlation
between index order and table order.
2001-05-09 23:13:37 +00:00
Bruce Momjian bea7a88576 I have modifed heap.c so that it won't automatically generate duplicate
constraint names.

> > A reasonable interpretation of DROP CONSTRAINT "foo" is to drop *all*
> > constraints named "foo" on the target table.
>
> Then it should probably be a good thing to avoid the automatic
> generation of
> duplicate names?  I might take a look at that, actually...
>

Christopher Kings-Lynne
2001-05-09 21:13:35 +00:00
Bruce Momjian 8678929c22 This patch should catch cases where the types
in referencing and referenced columns of an fk constraint
aren't comparable using '=' at constraint definition time
rather than insert/update time.

Stephan Szabo
2001-05-09 21:10:39 +00:00
Bruce Momjian f598201348 Noticed a small bug in the code. Probably been there for some time. Note
that the original code would consider things like UNIX domain sockets are
regular files.

Gavin Sherry
2001-05-09 19:28:31 +00:00
Peter Eisentraut c8db55f78a Use ColId instead of Ident for SET SESSION AUTHORIZATION. 2001-05-09 16:50:44 +00:00
Tom Lane 6cda3ad8fe Cause planner to make use of average-column-width statistic that is now
collected by ANALYZE.  Also, add some modest amount of intelligence to
guesses that are used for varlena columns in the absence of any ANALYZE
statistics.  The 'width' reported by EXPLAIN is finally something less
than totally bogus for varlena columns ... and, in consequence, hashjoin
estimating should be a little better ...
2001-05-09 00:35:09 +00:00
Peter Eisentraut 1c1c58c76c Add SET SESSION AUTHORIZATION command. 2001-05-08 21:06:43 +00:00
Tom Lane 5708a56729 Append and SubqueryScan nodes were not passing changed-parameter signals down
to their children, leading to misbehavior if they had any children that paid
attention to chgParam (most plan node types don't).  Append's bug has been
there a long time, but nobody had noticed because it used to be difficult
to create a query where an Append would be used below the top level of a
plan; so there were never any parameters getting passed down.  SubqueryScan
is new in 7.1 ... and I'd modeled its behavior on Append :-(
2001-05-08 19:47:02 +00:00
Peter Eisentraut c3fa600d8c Need to factor out strdup.o for separate treatment since it's in a
different directory.  This makes dependency tracking work and copes with
compilers that don't suport -c and -o together.
2001-05-08 19:38:57 +00:00
Bruce Momjian 82c9ce2c40 Small cleanup. 2001-05-08 19:00:26 +00:00
Bruce Momjian 857abb0e57 Add newlines around debug output in optimizer showing total costs. 2001-05-08 17:25:28 +00:00
Bruce Momjian ef06003b06 Fix comment in file about 2*max_connections. 2001-05-07 23:32:55 +00:00
Peter Eisentraut 465cf168eb Fix remaining RI permission problems (cascaded update/delete, restrict,
set null/default).
2001-05-07 19:57:24 +00:00
Bruce Momjian 415263b2d2 > Occasionally and without warning I get this from my daily vacuum
> cronjob:
> NOTICE:  RegisterSharedInvalid: SI buffer overflow
> NOTICE:  InvalidateSharedInvalid: cache state reset
> I don't understand what these mean. Should I be concerned about them
> and what do they signify?

No real need to worry.  Those should've been downgraded to DEBUG-level
messages a release or two back, but nobody bothered...

Tom Lane
2001-05-07 17:20:19 +00:00
Tom Lane f905d65ee3 Rewrite of planner statistics-gathering code. ANALYZE is now available as
a separate statement (though it can still be invoked as part of VACUUM, too).
pg_statistic redesigned to be more flexible about what statistics are
stored.  ANALYZE now collects a list of several of the most common values,
not just one, plus a histogram (not just the min and max values).  Random
sampling is used to make the process reasonably fast even on very large
tables.  The number of values and histogram bins collected is now
user-settable via an ALTER TABLE command.

There is more still to do; the new stats are not being used everywhere
they could be in the planner.  But the remaining changes for this project
should be localized, and the behavior is already better than before.

A not-very-related change is that sorting now makes use of btree comparison
routines if it can find one, rather than invoking '<' twice.
2001-05-07 00:43:27 +00:00
Tom Lane 28ac24e4dd Makefile should have automatic dependency for parser.o too, if it's
going to have any at all.
2001-05-04 22:01:03 +00:00
Tom Lane e2e19ca0cd Seems like we should not hold off cancel/die interrupts while we are
running deferred triggers.  They are really part of the regular
transaction, and they could take awhile.
2001-05-04 18:39:16 +00:00
Tom Lane f5ba72ea04 Consolidate several near-identical uses of mktime() into a single
routine DetermineLocalTimeZone().  In that routine, be more wary of
broken mktime() implementations than the original code was: don't allow
mktime to change the already-set y/m/d/h/m/s information, and don't
use tm_gmtoff if mktime failed.  Possibly this will resolve some of
the complaints we've been hearing from users of Middle Eastern timezones
on RedHat.
2001-05-03 22:53:07 +00:00
Bruce Momjian 0cec2bb0cd BTW it does not add encodign it just patches existing one (KOI8) to
support two - KOI8-R and KOI8-U (latter is superset of the former if
not to take to the account pseudographics)

Andy Rysin
2001-05-03 21:38:45 +00:00
Tom Lane d05b4bd7c6 Permission checking wasn't quite right for insert/update/delete rules,
either :-(.
2001-05-03 21:16:48 +00:00
Tom Lane 2792374cff Ensure that btree sort ordering functions and boolean comparison operators
give consistent results for all datatypes.  Types float4, float8, and
numeric were broken for NaN values; abstime, timestamp, and interval
were broken for INVALID values; timetz was just plain broken (some
possible pairs of values were neither < nor = nor >).  Also clean up
text, bpchar, varchar, and bit/varbit to eliminate duplicate code and
thereby reduce the probability of similar inconsistencies arising in
the future.
2001-05-03 19:00:37 +00:00
Tom Lane f2122d092f Permissions were not checked correctly when one view invokes another.
Per bug report from Lieven Van Acker, 5/2/01.
2001-05-03 17:47:49 +00:00
Thomas G. Lockhart d63571a7f4 Allow a string argument to the EXTRACT() function.
This is an extension to the SQL9x standard, but is consistant with usage
 of the underlying date_part() function used to implement it.
 Example: EXTRACT('YEAR',...)
No impact on regression tests.
2001-05-01 01:36:10 +00:00
Tom Lane e2004dfc69 Suppress pull-up of subqueries that are in the nullable side of an outer
join.  This is needed to avoid improper evaluation of expressions that
should be nulled out, as in Victor Wagner's bug report of 4/27/01.
Pretty ugly solution, but no time to do anything better for 7.1.1.
2001-04-30 19:24:47 +00:00
Tatsuo Ishii c527366b60 Add missing Unicode support for Cyrillic encodings.
Patches contributed by Victor Wagner.
2001-04-29 07:27:38 +00:00
Tom Lane 2adff4b20e Remove bogus Assert from AbsoluteTimeIsBefore(). (If you don't think
it's bogus, try building a btree index on the regress tests' abstime_tbl.)
2001-04-26 21:52:17 +00:00
Tom Lane a43f20cb0a Tweak nestloop costing to weight restart cost of inner path more heavily.
Without this, it was making some pretty silly decisions about whether an
expensive sub-SELECT should be the inner or outer side of a join...
2001-04-25 22:04:37 +00:00
Peter Eisentraut fae92fba43 Send 'cd' output to /dev/null. 2001-04-23 20:27:55 +00:00
Tom Lane a933bceacf compatible_oper needs to do ReleaseSysCache in one path to avoid
complaints about 'Cache reference leak'.  Per report from Don Baccus.
2001-04-23 04:32:30 +00:00
Tom Lane 8407bb3c72 Remove useless setuid() call, instead add a check that real and effective
userids are the same.  Per today's pghackers discussion.
2001-04-21 18:29:29 +00:00
Peter Eisentraut 47324d7689 Add extern int optreset declaration, per bug report from <info@decc.nl>. 2001-04-19 19:09:23 +00:00
Peter Eisentraut 7ff8d11065 Fix "off by VARHDRSZ" bug in (Cyrillic) recode support. 2001-04-19 19:01:23 +00:00
Tom Lane 2dbdba86db Kluge solution for Alex Pilosov's report of problems with whole-tuple
function arguments in join queries: copy the tuples into
TransactionCommandContext so they don't get recycled too soon.  This is
horrid, but not any worse than 7.0 or before, which also leaked such
tuples until end of query.  A proper fix will require allowing tuple
datums to be physically stored inside larger tuple datums, which opens
up a bunch of issues that can't realistically be solved for 7.1.1.
2001-04-19 04:29:02 +00:00
Tatsuo Ishii b9be04e63d Add a crash gurard to pg_encoding_mblen in case of an invalid encoding
given.
2001-04-19 02:34:35 +00:00
Tom Lane 23436bd530 Further tweaking of error messages for cases involving attributes &
functions of join or subselect aliases.  It'd be awfully nice if this
code knew for sure whether it was dealing with 'x.f' or 'f(x)' syntax;
maybe we can fix that in a future cycle.
2001-04-18 22:25:31 +00:00
Tom Lane d5096af2c4 Make the world safe for passing whole rows of views to functions. This
already worked fine for whole rows of tables, but not so well for views...
2001-04-18 20:42:56 +00:00
Tom Lane 40136f4465 Make rule lister do the right thing with Vars representing whole tuples. 2001-04-18 17:04:24 +00:00
Tom Lane c273e8b13c Add some defenses to guard against case where a rule refers to a table
or view that's been dropped and then recreated with the same name (but,
perhaps, different columns).  Eventually we'd like to support this but
for now all we can do is fail cleanly, rather than possibly coredumping
if we proceed using the obsolete rule.
2001-04-17 00:32:58 +00:00
Tom Lane cdcaec5c53 Avoid reversing user-given order of WHERE clauses while attaching clauses
to specific base or join RelOptInfo nodes during planning.  This preserves
the more-intuitive behavior of 7.0.* --- if you write an expensive clause
(such as a sub-select) last, it should get evaluated last.  Someday we
ought to try to have some intelligence about the order of evaluation of
WHERE clauses, but for now we should not override what the user wrote.
2001-04-16 19:44:10 +00:00
Tatsuo Ishii 722f7efdd9 Correction for mathematical properties in Unicode converison maps.
Patches contributed by Eiji Tokuya (e-tokuya@sankyo-unyu.co.jp)
2001-04-16 06:10:19 +00:00
Tom Lane fbee97664e getdatabaseencoding() and PG_encoding_to_char() were being sloppy about
converting char* strings to type 'name'.  Imagine my surprise when 7.1
release coredumped upon start when compiled --enable-multibyte ...
2001-04-16 02:42:01 +00:00
Tom Lane 6ccb2af725 Remove error report from pq_endmessage when pq_putmessage fails. The
only possible failure is in pq_flush, which will log a (better!) report
anyway --- so pq_endmessage is just cluttering the log with a redundant
entry.  This matters when a client crashes partway through a large query,
since we will emit many broken-pipe reports before finishing the query
and exiting.
2001-04-16 01:46:57 +00:00
Tom Lane ffbeafb19a Constant expressions that appear in ORDER BY, GROUP BY, DISTINCT ON
lists should be reverse-compiled into targetlist index numbers, because
that's the only interpretation the parser allows for a constant in these
clauses.  (Ergo, the only way they could have gotten into the list in
the first place is to have come from the targetlist; so this should always
work.)  Per problem report from Peter E.
2001-04-15 03:14:18 +00:00
Tom Lane f9094c44c0 Prevent generation of invalid plans for RIGHT or FULL joins with multiple
join clauses.  The mergejoin executor wants all the join clauses to appear
as merge quals, not as extra joinquals, for these kinds of joins.  But the
planner would consider plans in which partially-sorted input paths were
used, leading to only some of the join clauses becoming merge quals.
This is fine for inner/left joins, not fine for right/full joins.
2001-04-15 00:48:17 +00:00
Bruce Momjian 25efda227d Add debug_query_string global variable for pgmonitor and debugging use. 2001-04-14 19:11:45 +00:00
Tom Lane 83c94a886c Another try at making numeric MODULO operator produce the right answer.
Although it was now using the right equation, it was making bogus choices
of the precision to compute intermediate results to.  I'm not sure this
is really right even yet, but it's better than before ...
2001-04-14 02:10:57 +00:00
Tom Lane f10596c3ec Fix comment that Vadim found confusing. 2001-04-05 16:55:21 +00:00
Vadim B. Mikheev 3092869233 StartupXLOG(): initialize XLogCtl->Insert to new page if there is
no room for a record on last log page.
2001-04-05 09:34:32 +00:00
Tom Lane 6faf150a30 Fix/cleanup DLLLIBS handling for Cygwin port. If it works it's to
Jason Tishler's credit, if it's broken it's my fault ...
2001-04-04 21:15:56 +00:00
Vadim B. Mikheev 278aa680fc Have to lock buffer while changing page' LSN.
Thanks to Tom.
2001-04-04 15:43:25 +00:00
Vadim B. Mikheev 1d9819d69e Log sequence creation (to initialize magic number on recovery). 2001-04-03 21:58:00 +00:00
Tom Lane 1c68f27877 Correct bogus mktime() calls. 2001-04-03 18:05:53 +00:00
Tom Lane 08bf4d797b Check for failure of malloc() and realloc() when allocating space for
VFD entries.  On platforms where dereferencing a null pointer doesn't
lead to coredump, it's possible that this omission could have led to
unpleasant behavior like deleting the wrong file.
2001-04-03 04:07:02 +00:00
Tom Lane 6cc6f18d15 open(2) flags saved for re-opening a virtual file should probably not
include O_CREAT.
2001-04-03 02:31:52 +00:00
Tom Lane 503c80d2a0 Restore pre-7.1 behavior of allowing DROP of a table whose underlying
physical file has disappeared.  There is no really good reason why
relcache should be opening the underlying file at all, AFAICS.
In any case we needn't raise a hard error here.
2001-04-02 23:30:04 +00:00
Tom Lane 244fd47124 _mdfd_getrelnfd() should include kernel error code in failure message. 2001-04-02 23:20:24 +00:00
Tom Lane e18f5011aa Complain if the same column name is inherited from multiple parents
with different default values, unless the child table redeclares the
column with an explicit default.  This was judged to be the approach
least likely to cause unpleasant surprises.
2001-04-02 18:30:49 +00:00
Bruce Momjian 97c04fad82 Disable creation of indexes on system tables. 2001-04-02 14:34:25 +00:00
Tom Lane ba8b844f5a Remove duplicate definition of DLLLIBS, per gripe from Fred Yankowski. 2001-04-02 03:21:23 +00:00
Tom Lane 5967dbd082 Tom Ivar Helbekkmo <tih@kpnQwest.no> says that dynamic linking works
now on VAX NetBSD.  Hence, remove #ifdef'd disable tests.
2001-04-02 03:08:30 +00:00
Tom Lane 2ef99ee708 Planner wasn't correctly handling adjustment of tuple_fraction for the
case of LIMIT in a sub-select.
2001-04-01 22:37:19 +00:00
Tom Lane 648c09181e Re-allow specification of a new default value for an inherited column
in CREATE TABLE, but give a warning notice.  Clean up inconsistent
handling of defaults and NOT NULL flags from multiply-inherited columns.
Per pghackers discussion 28-Mar through 30-Mar.
2001-03-30 20:50:36 +00:00
Peter Eisentraut e692b0130b Rename 'random_seed' back to 'seed'. 2001-03-29 19:03:57 +00:00
Tom Lane f155cc82ec Quick hack to fix Oliver Elphick's problem with subselects in an
inheritance query: make duplicate copies of subplans in adjust_inherited_attrs.
When we redesign querytrees we really gotta do something about this
issue of whether querytrees are read-only and can share substructure
or not.
2001-03-27 18:02:19 +00:00
Tom Lane fa0f2c6577 Repair pgindent damage to comments. 2001-03-27 17:12:34 +00:00
Bruce Momjian 341cb70044 The following patch updates the FAQ_AIX and makes C++ code work with
more recent versions of the IBM C++ compiler (now called VisualAge C++).
The C++ part was previously broken (g++ and xlC), thus this is zero risk.
Only AIX specific parts are touched (1 Makefile.shlib line (link with $(COMPILER
) instead
of $(CC) and one shell script line (parameter -C to nm to not demangle C++ symbo
ls for
.exp file)).

I thus ask you to please apply this patch before release.

With or without this patch RC1 on AIX 4.3.2 RS6000 passes "gmake check" for both
 the native
compiler vac.C 5.0.1 and gcc 2.95.2 :-)

Andreas
2001-03-27 14:56:20 +00:00
Tom Lane ff71301806 Spell __volatile__ correctly. 2001-03-27 01:16:24 +00:00
Bruce Momjian 33881e4f68 Add period to message. 2001-03-26 17:00:54 +00:00
Bruce Momjian 099b60b352 Change message to _the_ administrator. There is only one administrative
account.

	This connection has been terminated by the administrator.
2001-03-26 16:59:38 +00:00
Tom Lane ccd415c63f Fix unportable assumptions about alignment of local char[n] variables. 2001-03-25 23:23:59 +00:00
Tom Lane 00713cb7cb Fix code that incorrectly assumed a 'char foo[N]' local variable would
be aligned on a word boundary.  Per report from Steve Nicolai.
2001-03-25 00:45:20 +00:00
Tom Lane e458ebfd21 When using 'long long int' for int64 type, check to see if the compiler
accepts nnnLL syntax for long long constants.  If so, decorate the CRC64
constants with LL to avoid warnings and/or erroneous results from certain
non-standards-compliant compilers.
2001-03-23 18:42:12 +00:00
Tom Lane 32924c1c90 Mark exception and assert global variables as DLLIMPORT, so that plpgsql
can be compiled with asserts enabled on Windoze.
2001-03-23 18:26:01 +00:00
Bruce Momjian 7cf952e7b4 Fix comments that were mis-wrapped, for Tom Lane. 2001-03-23 04:49:58 +00:00
Tom Lane b32cac8055 Fix Joubert's complaint that int8-sized numeric literals are mishandled
on Alpha (because parser mistakenly assumes that a nonoverflow result
from strtol means the value will fit into int4).  A scan for other uses
of strtol and strtoul found a couple other places with the same mistake;
fix them too.  The changes are all conditional on HAVE_LONG_INT_64 to
avoid complaints from compilers that think x != x is a silly test
(cf. pg_atoi).
2001-03-22 17:41:47 +00:00
Bruce Momjian 0686d49da0 Remove dashes in comments that don't need them, rewrap with pgindent. 2001-03-22 06:16:21 +00:00
Bruce Momjian 9e1552607a pgindent run. Make it all clean. 2001-03-22 04:01:46 +00:00
Vadim B. Mikheev ab36582a19 Check bufHdr->cntxDirty and call StartBufferIO in BufferSync()
*before* acquiring shlock on buffer context. This way we should be
protected against conflicts with FlushRelationBuffers.
(Seems we never do excl lock and then StartBufferIO for the same
buffer, so there should be no deadlock here, - but we'd better
check this very soon).
2001-03-21 10:13:29 +00:00
Bruce Momjian 85c0c73267 Fix 'ps' WAIT status display bug on setproctitle() platforms, cleared by
Tom Lane.
2001-03-20 22:31:54 +00:00
Tom Lane 68bc848766 Tweak out-of-memory error messages to include the request size, so that
it's easier to tell whether a bug report is talking about progressive
memory exhaustion or a wacko requested chunk size.
2001-03-19 22:29:39 +00:00
Tom Lane 184fb14b90 Make regular-expression error messages a tad less obscure,
per gripe from Josh Berkus.
2001-03-19 22:27:46 +00:00
Tom Lane af6e88a9cf Remove NEXTXID xlog record type to avoid three-way deadlock risk.
NEXTXID isn't really necessary, per previous discussion in pghackers,
but I mulishy insisted we should put it in anyway.  Mea culpa.
2001-03-18 20:18:59 +00:00
Tom Lane ddc5bc958a When we add 'waiting' to the ps_status display, there should be a
space in front of it.  Improve comments a little.
2001-03-18 20:13:13 +00:00
Tom Lane 934126b518 Considering the BeOS port didn't compile without IPC_STAT and shm_nattch,
I'm betting the QNX4 port does not either ...
2001-03-18 18:32:02 +00:00
Tom Lane 4bd983bf34 Patches from Cyril Velter to make shared-memory-conflict-detection code
work in BeOS port.
2001-03-18 18:22:08 +00:00
Tom Lane ae293d33cf Make sure ControlFile logId/logSeg don't go backwards (barely possible given a
slow backend, if we update unconditionally as the code did before).
2001-03-18 00:30:27 +00:00
Tom Lane 5a38af7fd8 Rearrange XLogFileInit so that control-file spinlock is not held while filling
the new log file with zeroes, only while renaming it into place.  This should
prevent problems with 'stuck spinlock' errors under heavy load.
2001-03-17 20:54:13 +00:00
Tom Lane 9d645fd84c Support syncing WAL log to disk using either fsync(), fdatasync(),
O_SYNC, or O_DSYNC (as available on a given platform).  Add GUC parameter
to control sync method.
Also, add defense to XLogWrite to prevent it from going nuts if passed
a target write position that's past the end of the buffers so far filled
by XLogInsert.
2001-03-16 05:44:33 +00:00
Tom Lane 7f02049137 Give a more reasonable error message for a bad attribute name applied
to a join or subselect alias ... cf. Oliver Elphick's complaint 13-Mar.
2001-03-14 23:55:33 +00:00
Tom Lane 7fdaf78ed0 Reduce amount of memory used per tuple for after-event triggers. This
is still a memory leak, but a little less bad than it was.
2001-03-14 21:50:32 +00:00
Tom Lane c9f26d7af6 COPY should handle after-insert triggers the same as execMain.c does.
I'm not sure that it's really necessary to save insert events when there
are only after update or delete triggers, but certainly it's wrong for
COPY to behave differently from an INSERT query.
2001-03-14 21:47:50 +00:00
Tom Lane cfab4f6541 Use SEP_CHAR consistently in forming XLOG pathnames. 2001-03-14 20:23:04 +00:00
Tom Lane 7ebbf20763 Remove obsolete PowerPC-specific hack for comparisons to DBL_MIN
(per recent discussion with Tatsuo).  Hopefully the compilers with
that old bug are all long gone.
2001-03-14 20:12:10 +00:00
Bruce Momjian 9de4b77cee 'waiting' status display had extra space, removed.
Change the administrator to 'an' administrator.
2001-03-14 18:24:34 +00:00
Tom Lane 5dd04603b9 Don't go belly-up if fork() fails for a routine checkpoint subprocess.
Just try again later.
2001-03-14 17:58:46 +00:00
Tom Lane 286d1fc382 Fix numeric modulo operator for case of fractional right argument. 2001-03-14 16:50:37 +00:00
Bruce Momjian 2e7835f7f8 New shutdown wording:
This connection has been terminated by the administrator
2001-03-14 15:14:35 +00:00
Hiroshi Inoue ebffbb42ac ifdef out reindex stuff in VACUUM for safety. 2001-03-14 08:40:57 +00:00
Tom Lane 1b87e24c4a Change xlog page-header format to include StartUpID. Use the SUI to
detect case that next page in log came from an older run than the prior
page.  This avoids the necessity to re-zero the log after recovery from
a crash, which is good because we need not risk destroying valuable log
information.
This forces another initdb since yesterday :-(.  Need to get that log
reset utility done...
2001-03-13 20:32:37 +00:00
Tom Lane 4d14fe0048 XLOG (and related) changes:
* Store two past checkpoint locations, not just one, in pg_control.
  On startup, we fall back to the older checkpoint if the newer one
  is unreadable.  Also, a physical copy of the newest checkpoint record
  is kept in pg_control for possible use in disaster recovery (ie,
  complete loss of pg_xlog).  Also add a version number for pg_control
  itself.  Remove archdir from pg_control; it ought to be a GUC
  parameter, not a special case (not that it's implemented yet anyway).

* Suppress successive checkpoint records when nothing has been entered
  in the WAL log since the last one.  This is not so much to avoid I/O
  as to make it actually useful to keep track of the last two
  checkpoints.  If the things are right next to each other then there's
  not a lot of redundancy gained...

* Change CRC scheme to a true 64-bit CRC, not a pair of 32-bit CRCs
  on alternate bytes.  Polynomial borrowed from ECMA DLT1 standard.

* Fix XLOG record length handling so that it will work at BLCKSZ = 32k.

* Change XID allocation to work more like OID allocation.  (This is of
  dubious necessity, but I think it's a good idea anyway.)

* Fix a number of minor bugs, such as off-by-one logic for XLOG file
  wraparound at the 4 gig mark.

* Add documentation and clean up some coding infelicities; move file
  format declarations out to include files where planned contrib
  utilities can get at them.

* Checkpoint will now occur every CHECKPOINT_SEGMENTS log segments or
  every CHECKPOINT_TIMEOUT seconds, whichever comes first.  It is also
  possible to force a checkpoint by sending SIGUSR1 to the postmaster
  (undocumented feature...)

* Defend against kill -9 postmaster by storing shmem block's key and ID
  in postmaster.pid lockfile, and checking at startup to ensure that no
  processes are still connected to old shmem block (if it still exists).

* Switch backends to accept SIGQUIT rather than SIGUSR1 for emergency
  stop, for symmetry with postmaster and xlog utilities.  Clean up signal
  handling in bootstrap.c so that xlog utilities launched by postmaster
  will react to signals better.

* Standalone bootstrap now grabs lockfile in target directory, as added
  insurance against running it in parallel with live postmaster.
2001-03-13 01:17:06 +00:00
Tom Lane b246510ccc Avoid O(N^2) behavior in deferredTriggerAddEvent() for large numbers of
tuples inserted/deleted/updated in a single transaction.  On my machine,
this reduced the time to delete 80000 tuples in a foreign-key-referencing
table from ~15min to ~8sec.
2001-03-12 23:02:00 +00:00
Tom Lane 2cfc8fcb5d FATAL errors should cause exit with nonzero status if we are not running
under the postmaster --- specifically, if we are a standalone backend
running under the initdb script, this is critical!
2001-03-10 04:21:51 +00:00
Hiroshi Inoue 8fff96f1cb hold interupts during LockWaitCancel(). 2001-03-09 06:36:32 +00:00
Tom Lane d73e9df087 A subplan invoked within an aggregate function's argument should
be allowed to receive ungrouped variables of the current query level.
Curious that no one reported this bug before...
2001-03-08 01:49:01 +00:00
Tom Lane 572fda2711 Modify wchar conversion routines to not fetch the next byte past the end
of a counted input string.  Marinos Yannikos' recent crash report turns
out to be due to applying pg_ascii2wchar_with_len to a TEXT object that
is smack up against the end of memory.  This is the second just-barely-
reproducible bug report I have seen that traces to some bit of code
fetching one more byte than it is allowed to.  Let's be more careful
out there, boys and girls.
While at it, I changed the code to not risk a similar crash when there
is a truncated multibyte character at the end of an input string.  The
output in this case might not be the most reasonable output possible;
if anyone wants to improve it further, step right up...
2001-03-08 00:24:34 +00:00
Tom Lane b109b03fea Repair a number of places that didn't bother to check whether PageAddItem
succeeds or not.  Revise rtree page split algorithm to take care about
making a feasible split --- ie, will the incoming tuple actually fit?
Failure to make a feasible split, combined with failure to notice the
failure, account for Jim Stone's recent bug report.  I suspect that
hash and gist indices may have the same type of bug, but at least now
we'll get error messages rather than silent failures if so.  Also clean
up rtree code to use Datum rather than char* where appropriate.
2001-03-07 21:20:26 +00:00
Peter Eisentraut f1ad18d49a Add missing include. 2001-03-01 19:03:44 +00:00
Tom Lane 778a21ca94 Tweak portal (cursor) code so that it will not call the executor again
when user does another FETCH after reaching end of data, or another
FETCH backwards after reaching start.  This is needed because some plan
nodes are not very robust about being called again after they've already
returned NULL; for example, MergeJoin will crash in some states but not
others.  While the ideal approach would be for them all to handle this
correctly, it seems foolish to assume that no such bugs would creep in
again once cleaned up.  Therefore, the most robust answer is to prevent
the situation from arising at all.
2001-02-27 22:07:34 +00:00
Tatsuo Ishii df247b821d Massive commits for SunOS4 port. 2001-02-27 08:13:31 +00:00
Tatsuo Ishii 919ace07d5 Fix vacuum analyze error.
vacuum analyze on pg_type fails if bogus entries remain in pg_operator.
Here is a sample script to reproduce the problem.

drop table t1;
create table t1(i int);
drop function foo(t1,t1);
create function foo(t1,t1) returns bool as 'select true' language 'sql';
create operator = (
	leftarg = t1,
	rightarg = t1,
	commutator = =,
	procedure = foo
	);
drop table t1;
vacuum analyze;
2001-02-27 07:07:00 +00:00
Tom Lane 9c9936587c Implement COMMIT_SIBLINGS parameter to allow pre-commit delay to occur
only if at least N other backends currently have open transactions.  This
is not a great deal of intelligence about whether a delay might be
profitable ... but it beats no intelligence at all.  Note that the default
COMMIT_DELAY is still zero --- this new code does nothing unless that
setting is changed.
Also, mark ENABLEFSYNC as a system-wide setting.  It's no longer safe to
allow that to be set per-backend, since we may be relying on some other
backend's fsync to have synced the WAL log.
2001-02-26 00:50:08 +00:00