Commit graph

368 commits

Author SHA1 Message Date
Marc G. Fournier
9fbbb5e21e tag 8.2.16 2010-03-12 03:44:14 +00:00
Greg Stark
f9aa8763e2 revert prior patch to fsync directories until portability problems exposed by build farm can be sorted out 2010-02-16 00:01:11 +00:00
Greg Stark
1534023ff0 Make CREATE DATABASE safe against losing whole files by fsyncing the
directory and not just the individual files.

Back-patch to 8.1 -- before that we just called "cp -r" and never
fsynced anything anyways.
2010-02-14 17:50:39 +00:00
Marc G. Fournier
0cea93188e tag 8.2.15 2009-12-10 03:09:47 +00:00
Magnus Hagander
22452fa96f Revert backpatch of inheritable-ACE patch for Win32, since it broke
compatibility with pre-Windows 2000 versions.
2009-11-20 01:28:18 +00:00
Magnus Hagander
1ac1e463e6 Backpatch the inheritable-ACE patch for Win32 to 8.2 as well, except
for the pg_regress part which did not support admin execution in 8.2.
2009-11-15 09:08:46 +00:00
Heikki Linnakangas
227771d10e Don't error out if recycling or removing an old WAL segment fails at the end
of checkpoint. Although the checkpoint has been written to WAL at that point
already, so that all data is safe, and we'll retry removing the WAL segment at
the next checkpoint, if such a failure persists we won't be able to remove any
other old WAL segments either and will eventually run out of disk space. It's
better to treat the failure as non-fatal, and move on to clean any other WAL
segment and continue with any other end-of-checkpoint cleanup.

We don't normally expect any such failures, but on Windows it can happen with
some anti-virus or backup software that lock files without FILE_SHARE_DELETE
flag.

Also, the loop in pgrename() to retry when the file is locked was broken. If a
file is locked on Windows, you get ERROR_SHARE_VIOLATION, not
ERROR_ACCESS_DENIED, at least on modern versions. Fix that, although I left
the check for ERROR_ACCESS_DENIED in there as well (presumably it was correct
in some environment), and added ERROR_LOCK_VIOLATION to be consistent with
similar checks in pgwin32_open(). Reduce the timeout on the loop from 30s to
10s, on the grounds that since it's been broken, we've effectively had a
timeout of 0s and no-one has complained, so a smaller timeout is actually
closer to the old behavior. A longer timeout would mean that if recycling a
WAL file fails because it's locked for some reason, InstallXLogFileSegment()
will hold ControlFileLock for longer, potentially blocking other backends, so
a long timeout isn't totally harmless.

While we're at it, set errno correctly in pgrename().

Backpatch to 8.2, which is the oldest version supported on Windows. The xlog.c
changes would make sense on other platforms and thus on older versions as
well, but since there's no such locking issues on other platforms, it's not
worth it.
2009-09-13 18:32:35 +00:00
Marc G. Fournier
9b0a50e61c Tag 8.2.14 2009-09-04 01:16:34 +00:00
Tom Lane
df3a497603 Use (unsigned char) cast in argument of pg_tolower(). Maybe it works on
Windows without that, but we shouldn't put bad examples where people might
copy them.  Also, reformat slightly to improve the odds that pgindent
won't go nuts on this.
2009-04-03 23:27:28 +00:00
Magnus Hagander
4e440e97b1 Make directory name comparisons on Win32 case insensitive.
This method will not catch all different ways since the locale
handling in NTFS doesn't provide an easy way to do that, but it
will hopefully solve the most common cases causing startup
problems when the backend is found in the system PATH.

Attempts to fix bug #4694.
2009-04-03 11:52:10 +00:00
Marc G. Fournier
7e23229904 tag 8.2.13 2009-03-13 02:16:43 +00:00
Magnus Hagander
37a8cc3240 Loop calling CallNamedPipe() several times in case it fails,
since it can be transient failures, causing kill() to not
properly send signals.

Original patch from Steve Marshall, modified by me.
2009-02-15 13:58:20 +00:00
Marc G. Fournier
fbb70ccd60 tag 8.2.12 2009-01-30 03:13:35 +00:00
Marc G. Fournier
400e915c62 tag 8.2.11 2008-10-31 02:44:09 +00:00
Marc G. Fournier
6967e894fd tag for 8.2.10 2008-09-19 03:12:08 +00:00
Tom Lane
ea83cc1f98 Stamp 8.2.9 (except for configure.in/configure) 2008-06-08 22:14:31 +00:00
Tom Lane
f0f335eddb Stamp 8.2.8 (except for configure.in/configure) 2008-06-05 23:55:50 +00:00
Tom Lane
74f05fcf07 A quick try at un-breaking the Cygwin build. Whether it needs the
pgwin32_safestat remains to be determined, but in any case the current
code is not tolerable.
2008-04-12 00:00:08 +00:00
Magnus Hagander
6c1dbc5ec1 Create wrapper pgwin32_safestat() and redefine stat() to it
on win32, because the stat() function in the runtime cannot
be trusted to always update the st_size field.

Per report and research by Sergey Zubkovsky.
2008-04-10 16:59:42 +00:00
Tom Lane
cca48e1cf2 Fix a number of places that were making file-type tests infelicitously.
The places that did, eg,
	(statbuf.st_mode & S_IFMT) == S_IFDIR
were correct, but there is no good reason not to use S_ISDIR() instead,
especially when that's what the other 90% of our code does.  The places
that did, eg,
	(statbuf.st_mode & S_IFDIR)
were flat out *wrong* and would fail in various platform-specific ways,
eg a symlink could be mistaken for a regular file on most Unixen.

The actual impact of this is probably small, since the problem cases
seem to always involve symlinks or sockets, which are unlikely to be
found in the directories that PG code might be scanning.  But it's
clearly trouble waiting to happen, so patch all the way back anyway.
(There seem to be no occurrences of the mistake in 7.4.)
2008-03-31 01:32:17 +00:00
Tom Lane
3dbe7e40ee Stamp version 8.2.7, except for configure.in/configure. 2008-03-13 23:58:25 +00:00
Magnus Hagander
0f7b2753f5 Fix handling of restricted processes for Windows Vista (mainly),
by explicitly adding back the user to the DACL of the new process.
This fixes the failure case when executing as the Administrator
user, which had no permissions left at all after we dropped the
Administrators group.

Dave Page with some modifications from me
2008-02-29 15:31:37 +00:00
Tom Lane
e29972bb56 Stamp release 8.2.6.
Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067, CVE-2007-6600, CVE-2007-6601
2008-01-03 21:40:50 +00:00
Magnus Hagander
0e6ec4b471 Use _dosmaperr() to deal with errors opening files in pgwin32_open().
Per complaint from Alvaro and subsequent discussion.
2007-11-30 11:16:46 +00:00
Bruce Momjian
5dc3723781 Stamp releases 8.2.5, 8.1.10, 8.0.14, 7.4.18, 7.3.20.
Update FAQs for 8.2.5.
2007-09-11 17:37:30 +00:00
Bruce Momjian
90e4b46998 Stamp releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19. 2007-04-19 03:07:32 +00:00
Bruce Momjian
98e08d1aa0 Stamp releases 8.2.3, 8.1.8, 8.0.12. No release notes yet. 2007-02-07 03:48:58 +00:00
Tom Lane
d06a16c589 Stamp release 8.2.2.
Security: CVE-2007-0555, CVE-2007-0556
2007-02-02 00:14:22 +00:00
Bruce Momjian
4290bb4e0f Stamp release 8.2.1. Update FAQs. 2007-01-05 20:55:29 +00:00
Bruce Momjian
e1bfa1869f Patch of Win32 Encoding problem for server messages using
FormatMessage() (This should have been in 8.2.0, patched to 8.2.X and
HEAD):

I think this problem to be complex....
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00042.php

FormatMessage of windows cannot consider the encoding of the database.
However, I should try the solution now. It is necessary to clear the
problem.

Multi character-code exists together in message and log. It doesn't
consider
the data base encoding that the user intended....

The user in multi-byte country can try this.
http://inet.winpg.jp/~saito/pg_bug/MessageCheck.c

That is, it is likely to become it in this manner.(Japanese)
http://inet.winpg.jp/~saito/pg_bug/FormatMessage998.png

Hiroshi Saito
2006-12-04 22:24:04 +00:00
Andrew Dunstan
796a3f373a protect vfprintf from hijacking by Windows gettext just like other members of the *printf family. 2006-11-28 01:12:34 +00:00
Tom Lane
dcbdf9b1d4 Change Windows rename and unlink substitutes so that they time out after
30 seconds instead of retrying forever.  Also modify xlog.c so that if
it fails to rename an old xlog segment up to a future slot, it will
unlink the segment instead.  Per discussion of bug #2712, in which it
became apparent that Windows can handle unlinking a file that's being
held open, but not renaming it.
2006-11-08 20:12:05 +00:00
Tom Lane
4887f5f979 Rename our substitute qsort to pg_qsort at the link-symbol level (but
provide a macro so code can still just say qsort).  Avoids linker warnings
on pickier platforms such as Darwin, and outright failure on MSVC.
2006-10-19 20:56:22 +00:00
Tom Lane
b38900c767 Use Min() instead of min() in qsort, for consistency and to avoid
redefined-macro warnings on some platforms.  Per gripe from Hiroshi Saito.
2006-10-12 15:04:55 +00:00
Tom Lane
953893822b Fix thinko in comment. 2006-10-07 21:48:43 +00:00
Bruce Momjian
f99a569a2e pgindent run for 8.2. 2006-10-04 00:30:14 +00:00
Tom Lane
6edd2b4a91 Switch over to using our own qsort() all the time, as has been proposed
repeatedly.  Now that we don't have to worry about memory leaks from
glibc's qsort, we can safely put CHECK_FOR_INTERRUPTS into the tuplesort
comparators, as was requested a couple months ago.  Also, get rid of
non-reentrancy and an extra level of function call in tuplesort.c by
providing a variant qsort_arg() API that passes an extra void * argument
through to the comparison routine.  (We might want to use that in other
places too, I didn't look yet.)
2006-10-03 22:18:23 +00:00
Bruce Momjian
e15ce612b5 Cleanup pgwin32_open() 'if' test, and avoid possible error. 2006-10-03 20:44:18 +00:00
Bruce Momjian
b65b2cead5 Add URL about strlcpy() creation history. 2006-10-02 23:58:59 +00:00
Tom Lane
c92f7e258e Replace strncpy with strlcpy in selected places that seem possibly relevant
to performance.  (A wholesale effort to get rid of strncpy should be
undertaken sometime, but not during beta.)  This commit also fixes dynahash.c
to correctly truncate overlength string keys for hashtables, so that its
callers don't have to anymore.
2006-09-27 18:40:10 +00:00
Tom Lane
996b203e62 Add strlcpy() to the set of functions supported by src/port/ when not
available directly on the platform.  Per discussion, this function is
sufficiently widely recognized to be treated as standard.
2006-09-27 16:29:46 +00:00
Tom Lane
9ba4065312 Remove separate strdup.h header file; it's redundant with port.h. 2006-09-27 15:41:24 +00:00
Tom Lane
1d0969041e Fix incorrect mapping of fopen mode 'a' in recently-added code to
make fopen work safely on Windows.  Magnus
2006-09-24 17:19:53 +00:00
Tom Lane
beca984e5f Fix bugs in plpgsql and ecpg caused by assuming that isspace() would only
return true for exactly the characters treated as whitespace by their flex
scanners.  Per report from Victor Snezhko and subsequent investigation.

Also fix a passel of unsafe usages of <ctype.h> functions, that is, ye olde
char-vs-unsigned-char issue.  I won't miss <ctype.h> when we are finally
able to stop using it.
2006-09-22 21:39:58 +00:00
Tom Lane
568b80168f Move set_pglocale_pgservice() from path.c to exec.c, so that pulling in
path.c does not in itself force linking of both exec.c and libintl.
Should fix current ecpglib build failure on pickier platforms.
2006-09-11 20:10:30 +00:00
Tom Lane
3a6e2ff08a Fix things so that fopen's, not only open's, pass FILE_SHARE_DELETE
and other special flags on Windows.  May fix intermittent 'Permission
denied' errors.  Magnus Hagander
2006-08-30 18:06:27 +00:00
Tom Lane
88295244be copydir() and rmtree() need to use lstat, not stat, to behave as expected
with symlinks.  Noted while trying to use rmtree in new C-code pg_regress.
2006-07-18 22:36:46 +00:00
Tom Lane
5c75ff2af4 Include libpq/pqcomm.h to ensure we have correct knowledge of
HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN.  Per results of pgcheckdefines.
2006-07-16 20:28:01 +00:00
Tom Lane
93120f3501 In a Windows backend, don't build src/port/pgsleep.c's version of
pg_usleep at all.  Instead call the replacement function in
port/win32/signal.c by that name.  Avoids tricky macro-redefinition
logic and suppresses a compiler warning; furthermore it ensures that
no one can accidentally use the non-signal-aware version of pg_usleep
in a Windows backend.
2006-07-16 20:17:04 +00:00
Tom Lane
c743cc2ee4 Add dependency to fix parallel-make race condition. Alexander Dupuy 2006-07-14 16:45:43 +00:00