1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-19 13:42:17 +03:00
Commit Graph

8734 Commits

Author SHA1 Message Date
Bruce Momjian
0843ec088c Add "idle in transaction" status message 2001-01-24 15:53:59 +00:00
Bruce Momjian
ab37224426 Fix formatting of db crash. 2001-01-24 14:32:32 +00:00
Bruce Momjian
3f0f30d1a1 Add comment for getpwid() safety. 2001-01-24 05:24:43 +00:00
Bruce Momjian
843657b066 attached is take-2 of a patch which fixes a bug related
to the use of getpwuid when running in standalone mode.
this patch allocates some persistent storage (using
strdup) to store the username obtained with getpwuid
in src/backend/main/main.c.  this is necessary because
later on, getpwuid is called again (in ValidateBinary).

the man pages for getpwuid on SCO OpenServer, FreeBSD,
and Darwin all have words to this effect (this is from
the SCO OpenServer man page):

  Note
  ====
  All information is contained in a static area, so it must
  be copied if it is to be saved. Otherwise, it may be
  overwritten on subsequent calls to these routines.

in particular, on my platform, the storage used to hold
the pw_name from the first call is overwritten such that
it looks like an empty username.  this causes a problem
later on in SetSessionUserIdFromUserName.

i'd assume this isn't a problem on most platforms because
getpwuid is called with the same UID both times, and the
same thing ends up happening to that static storage each
time.  however, that's not guaranteed, and is _not_ what
happens on my platform (at least :).

this is for the version of 7.1 available via anon cvs as
of Tue Jan 23 15:14:00 2001 PST:
  .../src/backend/main/main.c,v 1.37 2000/12/31 18:04:35 tgl Exp

-michael thornburgh, zenomt@armory.com
2001-01-24 03:50:06 +00:00
Hiroshi Inoue
a8b275e76d Removed a dangerours DropRelationBuffers() call. 2001-01-24 00:36:17 +00:00
Tom Lane
997ee51631 Make functional index copy attstorage from the column data type, rather
than forcing 'plain'.  This probably does not matter right now, but I
think it needs to be consistent with the regular (not-functional) index
case, where attstorage is copied from the underlying table.  Clean up
some other dead and infelicitous code too.
2001-01-24 00:06:07 +00:00
Tom Lane
c654c69c05 Narrow scope of critical section, per discussion 1/19/01. 2001-01-23 23:32:45 +00:00
Tom Lane
4e27b308e2 Do _bt_wrtbuf() outside critical section, per discussion with Vadim 1/19. 2001-01-23 23:29:22 +00:00
Tom Lane
f69ff0c4bd Give 'a_expr ::= a_expr Op' production a slightly lower precedence than
Op, so that the sequence 'a_expr Op Op a_expr' will be parsed as
a_expr Op (Op a_expr) not (a_expr Op) Op a_expr as formerly.  In other
words, prefer treating user-defined operators as prefix operators to
treating them as postfix operators, when there is an ambiguity.
Also clean up a couple of other infelicities in production priority
assignment --- for example, BETWEEN wasn't being given the intended
priority, but that of AND.
2001-01-23 22:39:08 +00:00
Peter Eisentraut
3de8407ea7 Remove useless leftover global variable Ps_status_buffer. 2001-01-23 20:33:29 +00:00
Tom Lane
786f1a59cd Fix all the places that called heap_update() and heap_delete() without
bothering to check the return value --- which meant that in case the
update or delete failed because of a concurrent update, you'd not find
out about it, except by observing later that the transaction produced
the wrong outcome.  There are now subroutines simple_heap_update and
simple_heap_delete that should be used anyplace that you're not prepared
to do the full nine yards of coping with concurrent updates.  In
practice, that seems to mean absolutely everywhere but the executor,
because *noplace* else was checking.
2001-01-23 04:32:23 +00:00
Tom Lane
b686fb5bf1 Remove no-longer-needed restriction against referencing system
attributes in a FieldSelect node --- all the places that manipulate
these work just fine with system attribute numbers.  OK, it's a new
feature, so shoot me ...
2001-01-23 02:32:26 +00:00
Bruce Momjian
7e533da492 Rename int4 to int32 in a few places. 2001-01-23 01:48:17 +00:00
Tom Lane
728b0aa290 Improve realloc() per idea from Karel Zak --- if chunk to be enlarged is
at end of its block, maybe we can enlarge it in-place.
2001-01-23 01:01:36 +00:00
Tom Lane
e9c936ff38 Remove rangechecks on errno; just call strerror unconditionally. This
eliminates a raft of portability issues, including whether sys_nerr
exists, whether the platform has any valid negative errnos, etc.  The
downside is minimal: errno shouldn't ever contain an invalid value anyway,
and if it does, reasonably modern versions of strerror will not choke.
This rangecheck idea seemed good at the time, but it's clearly a net loss,
and I apologize to all concerned for having ever put it in.
2001-01-22 23:28:52 +00:00
Tom Lane
e84c429062 Clean up lockmanager data structures some more, in preparation for planned
rewrite of deadlock checking.  Lock holder objects are now reachable from
the associated LOCK as well as from the owning PROC.  This makes it
practical to find all the processes holding a lock, as well as all those
waiting on the lock.  Also, clean up some of the grottier aspects of the
SHMQueue API, and cause the waitProcs list to be stored in the intuitive
direction instead of the nonintuitive one.  (Bet you didn't know that
the code followed the 'prev' link to get to the next waiting process,
instead of the 'next' link.  It doesn't do that anymore.)
2001-01-22 22:30:06 +00:00
Tom Lane
c9fe128316 Clean up per-tuple memory leaks in trigger firing and plpgsql
expression evaluation.
2001-01-22 00:50:07 +00:00
Bruce Momjian
b8f23aff82 Back out patch for BLOB operations until approval. 2001-01-21 03:50:25 +00:00
Bruce Momjian
c655935217 Hello,
here is the patch attached which do check in each BLOB operation, if we are
in transaction, and raise an error otherwise. This will prevent such mistakes.

--
Sincerely Yours,
Denis Perchine
2001-01-21 03:49:14 +00:00
Tom Lane
023a48b811 Deal with C++ incompatibility of sys_nerr declaration by taking it out
of c.h altogether, and putting it into the only places that use it
(elog.c and exc.c), instead.  Modify these routines to check for a
NULL or empty-string return from strerror, too, since some platforms
define strerror to return empty string for unknown errors (what a useless
definition that is ...).  Clean up some cruft in ExcPrint while at it.
2001-01-21 00:59:26 +00:00
Tom Lane
1a02edae60 Give a good error message for what's likely to be a common syntax error,
namely omitting the alias clause for a sub-SELECT in FROM.
2001-01-20 17:37:52 +00:00
Peter Eisentraut
19cba0cc1b Add missing piece of BitString support to node output functions. Expand
and remove IsA_Value macro.
2001-01-20 00:15:59 +00:00
Tom Lane
6ce0ed2813 Make critical sections (elog->crash) and interrupt holdoff sections
into distinct concepts, per recent discussion on pghackers.
2001-01-19 22:08:47 +00:00
Bruce Momjian
75815c3100 cleanup. 2001-01-19 21:09:57 +00:00
Bruce Momjian
27aaf9df7e Remove ; and add \n to ASM code. 2001-01-19 20:39:16 +00:00
Tom Lane
86a2c2595b Suppress compiler warning in MULTIBYTE code. 2001-01-19 06:57:25 +00:00
Tom Lane
bdb72d8765 Suppress compiler warning in MULTIBYTE case. 2001-01-19 06:54:57 +00:00
Tom Lane
c78e19544e Suppress unused-variable warning in non-Assert compilations. 2001-01-19 06:50:23 +00:00
Vadim B. Mikheev
0a12767004 Comment out xlrec in xact_redo - no support for file unlinking on
commit yet.
2001-01-18 18:33:45 +00:00
Hiroshi Inoue
89ac643964 Fix some leaks(was my fault). 2001-01-18 07:29:04 +00:00
Thomas G. Lockhart
6acdebbd3a Fix up "Postgres-style" time interval representation when fields have
mixed-signs. Previous effort left way too many minus signs, and was at
 least as broken as the one before that :(
Clean up "ISO-style" time interval representation to omit zero fields if
 there is at least one non-zero field. Supress some leading plus signs
 when not necessary for clarity.
Replace every #ifdef __CYGWIN__ block with a cleaner TIMEZONE_GLOBAL macro
 defined in datetime.h.
2001-01-18 07:22:43 +00:00
Tom Lane
b06fbc7ad2 Fix performance issue with qualifications on VIEWs: outer query should
try to push restrictions on the view down into the view subquery,
so that they can become indexscan quals or what-have-you rather than
being applied at the top level of the subquery.  7.0 and before were
able to do this, though in a much klugier way, and I'd hate to have
anyone complaining that 7.1 is stupider than 7.0 ...
2001-01-18 07:12:37 +00:00
Hiroshi Inoue
53ebb2286d Change LockClassinfoForUpdate() to retry mark4update() in case
the tuple is already uodated. (If LockClassinfoForUpdate() is
thought to be useful).
2001-01-18 04:01:42 +00:00
Bruce Momjian
978c03f9cf attached is a patch that makes SysV semaphore emulation
using POSIX semaphores more robust on Darwin 1.2/Mac OS X
Public Beta.  this is for the version of 7.1 available
via anon cvs as of Jan 14 2001 14:00 PST.

since the semaphores and shared memory created by this
emulator are shared with the backends via fork(), their
persistent names are not necessary.  removing their
names with shm_unlink() and sem_unlink() after creation
obviates the need for any "ipcclean" function.  further,
without these changes, the shared memory (and, therefore,
the semaphores) will not be re-initialized/re-created after
the first execution of the postmaster, until reboot
or until some (non-existent) ipcclean function is executed.

this patch does the following:

   1) if the shared memory segment "SysV_Sem_Info" already
      existed, it is cleaned up.  it shouldn't be there anyways.

   2) the real indicator for whether the shared memory/semaphore
      emulator has been initialized is if "SemInfo" has been
      initialized.  the shared memory and semaphores must be
      initialized regardless of whether there was a garbage shared
      memory segment lying around.

   3) the shared memory segment "SysV_Sem_Info" is created with "O_EXCL"
      to catch the case where two postmasters might be starting
      simultaneously, so they don't both end up with the same shared
      memory (one will fail).  note that this can't be done with the
      semaphores because Darwin 1.2 has a bug where attempting to
      open an existing semaphore with "O_EXCL" set will ruin the
      semaphore until the next reboot.

   4) the shared memory segment "SysV_Sem_Info" is unlinked after
      it is created.  it will then exist without a name until the
      postmaster and all backend children exit.
   5) all semaphores are unlinked after they are created.  they'll
      then exist without names until the postmaster and all backend
      children exit.

-michael thornburgh, zenomt@armory.com
2001-01-17 22:11:19 +00:00
Bruce Momjian
5088f0748a Change lcons(x, NIL) to makeList(x) where appropriate. 2001-01-17 17:26:45 +00:00
Thomas G. Lockhart
8e9840383c Change comparisons of tm->tm_isdst from "nonzero" to "greater than zero".
Not sure why some were this way, and others were already correct, but it
 seems to have been like this for several years.
This caused problems on a few damaged platforms like AIX and IRIX which do
 not support DST calculations for years before 1970.
Thanks to Andreas Zeugswetter <ZeugswetterA@wien.spardat.at> for finding
 the problem.
2001-01-17 16:46:56 +00:00
Bruce Momjian
26e0321191 Move structure comments from the top block down to the line entries for
this file to match all the other files, and to be clearer.
2001-01-17 06:41:31 +00:00
Tom Lane
4c4f305b15 Remove bogus backslashes in sed command. 2001-01-16 22:48:34 +00:00
Tom Lane
dae52bf3ec Oops, I had managed to break query-cancel-while-waiting-for-lock. 2001-01-16 20:59:34 +00:00
Tom Lane
64e6c60897 Rename fields of lock and lockholder structures to something a tad less
confusing, and clean up documentation.
2001-01-16 06:11:34 +00:00
Tom Lane
3db4056e22 Fix problems with parentheses around sub-SELECT --- for the last time,
I hope.  I finally realized that we were going at it backwards: when
there are excess parentheses, they need to be treated as part of the
sub-SELECT, not as part of the surrounding expression.  Although either
choice yields an unambiguous grammar, only this way produces a grammar
that is LALR(1).  With the old approach we were guaranteed to fail on
either 'SELECT (((SELECT 2)) + 3)' or
'SELECT (((SELECT 2)) UNION SELECT 2)' depending on which way we
resolve the initial shift/reduce conflict.  With the new way, the same
reduction track can be followed in both cases until we have advanced
far enough to know whether we are done with the sub-SELECT or not.
2001-01-15 20:36:36 +00:00
Tom Lane
efd6cade83 Tweak heap_update/delete so that we do not hold the buffer context lock
on the old tuple's page while we are doing TOAST pushups.
2001-01-15 05:29:19 +00:00
Tom Lane
0b5d194aaa Minor coding cleanups. 2001-01-14 22:21:54 +00:00
Tom Lane
a904181a46 Another go-round on making GetRawDatabaseInfo behave as well as it can,
given the fundamental restriction of not looking at transaction commit
data in pg_log.  Use code that is actually based on tqual.c rather than
ad-hoc tests.  Also write the tuple fetch loop using standard access
macros rather than ad-hoc code.
2001-01-14 22:21:05 +00:00
Tom Lane
a3cac3a03b Need to do BufferSync at end of DROP DATABASE as well as CREATE DATABASE.
Otherwise, newly connecting backends will still think the deleted DB is
valid, and will generate unexpected error messages.
2001-01-14 22:14:10 +00:00
Tom Lane
c0f069944f Make aclcontains() do something that's at least vaguely reasonable:
it now returns true if the aclitem argument exactly matches any one of
the elements of the aclitem[] argument.  Per complaint from Wolff 1/10/01.
2001-01-14 19:23:27 +00:00
Tom Lane
36839c1927 Restructure backend SIGINT/SIGTERM handling so that 'die' interrupts
are treated more like 'cancel' interrupts: the signal handler sets a
flag that is examined at well-defined spots, rather than trying to cope
with an interrupt that might happen anywhere.  See pghackers discussion
of 1/12/01.
2001-01-14 05:08:17 +00:00
Tom Lane
160675ecee Relax test on typmod matching between a table and its proposed ON SELECT
rule.  Needed to avoid failure when reloading a 7.0 pg_dump of a view
that has a NUMERIC column.
2001-01-13 03:58:28 +00:00
Tom Lane
6162432de9 Add more critical-section calls: all code sections that hold spinlocks
are now critical sections, so as to ensure die() won't interrupt us while
we are munging shared-memory data structures.  Avoid insecure intermediate
states in some code that proc_exit will call, like palloc/pfree.  Rename
START/END_CRIT_CODE to START/END_CRIT_SECTION, since that seems to be
what people tend to call them anyway, and make them be called with () like
a function call, in hopes of not confusing pg_indent.
I doubt that this is sufficient to make SIGTERM safe anywhere; there's
just too much code that could get invoked during proc_exit().
2001-01-12 21:54:01 +00:00
Tom Lane
565639cde0 Preserve constraints and column defaults during CLUSTER.
Wish they were all this easy ...
2001-01-12 01:22:21 +00:00