Commit Graph

18484 Commits

Author SHA1 Message Date
Tom Lane
787eba734b When creating a large hash index, pre-sort the index entries by estimated
bucket number, so as to ensure locality of access to the index during the
insertion step.  Without this, building an index significantly larger than
available RAM takes a very long time because of thrashing.  On the other
hand, sorting is just useless overhead when the index does fit in RAM.
We choose to sort when the initial index size exceeds effective_cache_size.

This is a revised version of work by Tom Raney and Shreya Bhargava.
2008-03-16 23:15:08 +00:00
Alvaro Herrera
ec6550c6c0 Modify interactions between sinval.c and sinvaladt.c. The code that actually
deals with the queue, including locking etc, is all in sinvaladt.c.  This means
that the struct definition of the queue, and the queue pointer, are now
internal "implementation details" inside sinvaladt.c.

Per my proposal dated 25-Jun-2007 and followup discussion.
2008-03-16 19:47:34 +00:00
Magnus Hagander
a3f66eac01 Some cleanups of enum-guc code, per comments from Tom. 2008-03-16 16:42:44 +00:00
Tom Lane
c9a1cc694a Change hash index creation so that rather than always establishing exactly
two buckets at the start, we create a number of buckets appropriate for the
estimated size of the table.  This avoids a lot of expensive bucket-split
actions during initial index build on an already-populated table.

This is one of the two core ideas of Tom Raney and Shreya Bhargava's patch
to reduce hash index build time.  I'm committing it separately to make it
easier for people to test the effects of this separately from the effects
of their other core idea (pre-sorting the index entries by bucket number).
2008-03-15 20:46:31 +00:00
Tom Lane
4873c96ff3 Fix inappropriately-timed memory context switch in autovacuum_do_vac_analyze.
This accidentally failed to fail before 8.3, because the context we were
switching back to was long-lived anyway; but it sure looks risky as can be
now.  Well spotted by Pavan Deolasee.
2008-03-14 23:49:28 +00:00
Alvaro Herrera
adc4e1e635 Fix vacuum so that autovacuum is really not cancelled when doing an emergency
job (i.e. to prevent Xid wraparound problems.)  Bug reported by ITAGAKI
Takahiro in 20080314103837.63D3.52131E4D@oss.ntt.co.jp, though I didn't use his
patch.
2008-03-14 17:25:59 +00:00
Tom Lane
d31fb0e6b5 Update to tzdata 2008a distribution (Chilean DST law change). 2008-03-13 19:21:43 +00:00
Tom Lane
5e00913daf Fix varstr_cmp's special case for UTF8 encoding on Windows so that strings
that are reported as "equal" by wcscoll() are checked to see if they really
are bitwise equal, and are sorted per strcmp() if not.  We made this happen
a couple of years ago in the regular code path, but it unaccountably got
left out of the Windows/UTF8 case (probably brain fade on my part at the
time).  As in the prior set of changes, affected users may need to reindex
indexes on textual columns.

Backpatch as far as 8.2, which is the oldest release we are still supporting
on Windows.
2008-03-13 18:31:56 +00:00
Tom Lane
3e701a04fe Fix heap_page_prune's problem with failing to send cache invalidation
messages if the calling transaction aborts later on.  Collapsing out line
pointer redirects is a done deal as soon as we complete the page update,
so syscache *must* be notified even if the VACUUM FULL as a whole doesn't
complete.  To fix, add some functionality to inval.c to allow the pending
inval messages to be sent immediately while heap_page_prune is still
running.  The implementation is a bit chintzy: it will only work in the
context of VACUUM FULL.  But that's all we need now, and it can always be
extended later if needed.  Per my trouble report of a week ago.
2008-03-13 18:00:32 +00:00
Tom Lane
da6a707c29 Fix pg_plan_queries() to restore the previous setting of ActiveSnapshot
(probably NULL) before exiting.  Up to now it's just left the variable as it
set it, which means that after we're done processing the current client
message, ActiveSnapshot is probably pointing at garbage (because this function
is typically run in MessageContext which will get reset).  There doesn't seem
to have been any code path in which that mattered before 8.3, but now the
plancache module might try to use the stale value if the next client message
is a Bind for a prepared statement that is in need of replanning.  Per report
from Alex Hunsaker.
2008-03-12 23:58:27 +00:00
Tom Lane
033eb1581b Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by postponing
pg_listener modifications commanded by LISTEN and UNLISTEN until the end
of the current transaction.  This allows us to hold the ExclusiveLock on
pg_listener until after commit, with no greater risk of deadlock than there
was before.  Aside from fixing the race condition, this gets rid of a
truly ugly kludge that was there before, namely having to ignore
HeapTupleBeingUpdated failures during NOTIFY.  There is a small potential
incompatibility, which is that if a transaction issues LISTEN or UNLISTEN
and then looks into pg_listener before committing, it won't see any resulting
row insertion or deletion, where before it would have.  It seems unlikely
that anyone would be depending on that, though.

This patch also disallows LISTEN and UNLISTEN inside a prepared transaction.
That case had some pretty undesirable properties already, such as possibly
allowing pg_listener entries to be made for PIDs no longer present, so
disallowing it seems like a better idea than trying to maintain the behavior.
2008-03-12 20:11:46 +00:00
Bruce Momjian
def329d165 Prevent psql \copy from accepting multiple string parameters, e.g.
test=> \copy billing_data from ../BillingSamplePricerFile.csv with csv
	   header quote as '"' null as 'abc' null as '123'
	\copy: parse error at "null"

Per report from Stephen Frost
2008-03-11 23:30:56 +00:00
Tom Lane
611b4393f2 Make TransactionIdIsInProgress check transam.c's single-item XID status cache
before it goes groveling through the ProcArray.  In situations where the same
recently-committed transaction ID is checked repeatedly by tqual.c, this saves
a lot of shared-memory searches.  And it's cheap enough that it shouldn't
hurt noticeably when it doesn't help.
Concept and patch by Simon, some minor tweaking and comment-cleanup by Tom.
2008-03-11 20:20:35 +00:00
Tom Lane
f0828b2fc3 Provide a build-time option to store large relations as single files, rather
than dividing them into 1GB segments as has been our longtime practice.  This
requires working support for large files in the operating system; at least for
the time being, it won't be the default.

Zdenek Kotala
2008-03-10 20:06:27 +00:00
Magnus Hagander
0a66303781 Bump catversion from guc enum patch, which I forgot. Sorry! 2008-03-10 13:53:35 +00:00
Tom Lane
9d966c2e32 Fix unportable coding of new error message, per Kris Jurka. 2008-03-10 12:57:05 +00:00
Magnus Hagander
52a8d4f8f7 Implement enum type for guc parameters, and convert a couple of existing
variables to it. More need to be converted, but I wanted to get this in
before it conflicts with too much...

Other than just centralising the text-to-int conversion for parameters,
this allows the pg_settings view to contain a list of available options
and allows an error hint to show what values are allowed.
2008-03-10 12:55:13 +00:00
Tom Lane
23c356ccec Document and enforce that the usable range of setseed() arguments is
-1 to 1, not 0 to 1.  The actual behavior for values within this range
does not change.  Kris Jurka
2008-03-10 12:39:23 +00:00
Tom Lane
bfce56eea4 Throw an error for negative LIMIT or OFFSET values, instead of silently
treating them as zero.  Simon Riggs
2008-03-10 03:37:59 +00:00
Tom Lane
2abf130a4e Increase the default value of log_min_messages to WARNING, so that
NOTICE-grade messages are not logged by default.  Per pgsql-hackers
discussion back on 21-Nov-2007.
2008-03-10 03:22:29 +00:00
Tom Lane
7953fdcd9e Add a CaseSensitive parameter to synonym dictionaries.
Simon Riggs
2008-03-10 03:01:28 +00:00
Tom Lane
2fc2795456 Remove no-longer-used XLogCacheByte field of XLogCtl.
Itagaki Takahiro
2008-03-10 02:13:22 +00:00
Tom Lane
3fcc7e8e18 Reduce memory consumption during VACUUM of large relations, by using
FSMPageData (6 bytes) instead of PageFreeSpaceInfo (8 or 16 bytes)
for the temporary array of page-free-space information.

Itagaki Takahiro
2008-03-10 02:04:10 +00:00
Tom Lane
d9384a4b73 Remove postmaster.c's check that NBuffers is at least twice MaxBackends.
With the addition of multiple autovacuum workers, our choices were to delete
the check, document the interaction with autovacuum_max_workers, or complicate
the check to try to hide that interaction.  Since this restriction has never
been adequate to ensure backends can't run out of pinnable buffers, it doesn't
really have enough excuse to live to justify the second or third choices.
Per discussion of a complaint from Andreas Kling (see also bug #3888).

This commit also removes several documentation references to this restriction,
but I'm not sure I got them all.
2008-03-09 04:56:28 +00:00
Tom Lane
f4230d2937 Change patternsel() so that instead of switching from a pure
pattern-examination heuristic method to purely histogram-driven selectivity at
histogram size 100, we compute both estimates and use a weighted average.
The weight put on the heuristic estimate decreases linearly with histogram
size, dropping to zero for 100 or more histogram entries.
Likewise in ltreeparentsel().  After a patch by Greg Stark, though I
reorganized the logic a bit to give the caller of histogram_selectivity()
more control.
2008-03-09 00:32:09 +00:00
Tom Lane
422495d0da Modify prefix_selectivity() so that it will never estimate the selectivity
of the generated range condition var >= 'foo' AND var < 'fop' as being less
than what eqsel() would estimate for var = 'foo'.  This is intuitively
reasonable and it gets rid of the need for some entirely ad-hoc coding we
formerly used to reject bogus estimates.  The basic problem here is that
if the prefix is more than a few characters long, the two boundary values
are too close together to be distinguishable by comparison to the column
histogram, resulting in a selectivity estimate of zero, which is often
not very sane.  Change motivated by an example from Peter Eisentraut.

Arguably this is a bug fix, but I'll refrain from back-patching it
for the moment.
2008-03-08 22:41:38 +00:00
Tom Lane
6f10eb2111 Refactor heap_page_prune so that instead of changing item states on-the-fly,
it accumulates the set of changes to be made and then applies them.  It had
to accumulate the set of changes anyway to prepare a WAL record for the
pruning action, so this isn't an enormous change; the only new complexity is
to not doubly mark tuples that are visited twice in the scan.  The main
advantage is that we can substantially reduce the scope of the critical
section in which the changes are applied, thus avoiding PANIC in foreseeable
cases like running out of memory in inval.c.  A nice secondary advantage is
that it is now far clearer that WAL replay will actually do the same thing
that the original pruning did.

This commit doesn't do anything about the open problem that
CacheInvalidateHeapTuple doesn't have the right semantics for a CTID change
caused by collapsing out a redirect pointer.  But whatever we do about that,
it'll be a good idea to not do it inside a critical section.
2008-03-08 21:57:59 +00:00
Andrew Dunstan
95c238d941 Improve efficiency of attribute scanning in CopyReadAttributesCSV.
The loop is split into two parts, inside quotes, and outside quotes, saving some instructions in both parts.

Heikki Linnakangas
2008-03-08 01:16:26 +00:00
Tom Lane
9c767ad57b Improve pglz_decompress() so that it cannot clobber memory beyond the
available output buffer when presented with corrupt input.  Some testing
suggests that this slows the decompression loop about 1%, which seems an
acceptable price to pay for more robustness.  (Curiously, the penalty
seems to be *less* on not-very-compressible data, which I didn't expect
since the overhead per output byte ought to be more in the literal-bytes
path.)

Patch from Zdenek Kotala.  I fixed a corner case and did some renaming
of variables to make the routine more readable.
2008-03-08 01:09:36 +00:00
Tom Lane
ad434473eb This patch addresses some issues in TOAST compression strategy that
were discussed last year, but we felt it was too late in the 8.3 cycle to
change the code immediately.  Specifically, the patch:

* Reduces the minimum datum size to be considered for compression from
256 to 32 bytes, as suggested by Greg Stark.

* Increases the required compression rate for compressed storage from
20% to 25%, again per Greg's suggestion.

* Replaces force_input_size (size above which compression is forced)
with a maximum size to be considered for compression.  It was agreed
that allowing large inputs to escape the minimum-compression-rate
requirement was not bright, and that indeed we'd rather have a knob
that acted in the other direction.  I set this value to 1MB for the
moment, but it could use some performance studies to tune it.

* Adds an early-failure path to the compressor as suggested by Jan:
if it's been unable to find even one compressible substring in the
first 1KB (parameterizable), assume we're looking at incompressible
input and give up.  (Possibly this logic can be improved, but I'll
commit it as-is for now.)

* Improves the toasting heuristics so that when we have very large
fields with attstorage 'x' or 'e', we will push those out to toast
storage before considering inline compression of shorter fields.
This also responds to a suggestion of Greg's, though my original
proposal for a solution was a bit off base because it didn't fix
the problem for large 'e' fields.

There was some discussion in the earlier threads of exposing some
of the compression knobs to users, perhaps even on a per-column
basis.  I have not done anything about that here.  It seems to me
that if we are changing around the parameters, we'd better get some
experience and be sure we are happy with the design before we set
things in stone by providing user-visible knobs.
2008-03-07 23:20:21 +00:00
Tom Lane
6a17826621 Change hashscan.c to keep its list of active hash index scans in
TopMemoryContext, rather than scattered through executor per-query contexts.
This poses no danger of memory leak since the ResourceOwner mechanism
guarantees release of no-longer-needed items.  It is needed because the
per-query context might already be released by the time we try to clean up
the hash scan list.  Report by ykhuang, diagnosis by Heikki.

Back-patch to 8.0, where the ResourceOwner-based cleanup was introduced.
The given test case does not fail before 8.2, probably because we rearranged
transaction abort processing somehow; but this coding is undoubtedly risky
so I'll patch 8.0 and 8.1 anyway.
2008-03-07 15:59:03 +00:00
Teodor Sigaev
3b8bca335d Fix memory arrangement of tsquery after removing stop words. It causes
a unused memory holes in tsquery.

Per report by Richard Huxton <dev@archonet.com>.

It was working well because in fact tsquery->size is not used for any
kind of operation except comparing tsqueries. So, in HEAD it's enough to
fix to_tsquery function, but for previous version it's needed to
remove optimization in CompareTSQ to prevent requirement of renew all
stored tsquery.
2008-03-07 14:30:20 +00:00
Bruce Momjian
7ec66eab88 Improve "bgwriter_lru_multiplier" GUC description. 2008-03-06 16:31:42 +00:00
Alvaro Herrera
4d436efca8 Clean up double negative, per Tom Lane. 2008-03-05 21:14:10 +00:00
Alvaro Herrera
8eb629aec6 Add support for dlopen on recent NetBSD/MIPS, per Rémi Zara. 2008-03-05 19:42:11 +00:00
Tom Lane
649e856c33 In PrepareToInvalidateCacheTuple, don't force initialization of catalog
caches that we don't actually need to touch.  This saves some trivial
number of cycles and avoids certain cases of deadlock when doing concurrent
VACUUM FULL on system catalogs.  Per report from Gavin Roy.

Backpatch to 8.2.  In earlier versions, CatalogCacheInitializeCache didn't
lock the relation so there's no deadlock risk (though that certainly had
plenty of risks of its own).
2008-03-05 17:01:26 +00:00
Bruce Momjian
910bc51862 When text search string is too long, in error message report actual and
maximum number of bytes allowed.
2008-03-05 15:50:37 +00:00
Tom Lane
0e50b080fa Include -lgss in libpq link, if available. Bjorn Munch 2008-03-05 05:39:11 +00:00
Tom Lane
7d6e6e2e97 Fix PREPARE TRANSACTION to reject the case where the transaction has dropped a
temporary table; we can't support that because there's no way to clean up the
source backend's internal state if the eventual COMMIT PREPARED is done by
another backend.  This was checked correctly in 8.1 but I broke it in 8.2 :-(.
Patch by Heikki Linnakangas, original trouble report by John Smith.
2008-03-04 19:54:06 +00:00
Magnus Hagander
9b8a93baa4 Use windows DACL fix for pg_regress as well.
Dave Page
2008-03-04 15:38:31 +00:00
Michael Meskes
fb7b1df083 Fixed bug that caused arrays of varchar to be output with incomplete name.
In the process expanded one test case,
2008-03-02 10:54:11 +00:00
Tom Lane
0f855d621b Venezuela Time now means UTC-4:30, not UTC-4:00. Adjust our treatment
of "VET" accordingly.  Per bug #3997 from Aaron Mizrachi.
2008-03-02 00:10:22 +00:00
Tom Lane
d50e256b67 Fix another place that was assuming that a local variable declared as
"struct varlena" would be at least word-aligned.  Per buildfarm results
from gypsy_moth.  I did a little bit of trawling for other instances of
this coding pattern, and didn't find any; but if we turn up any more
of them I think we'd better revert the "char [4]" patch and find another
way of making tuptoaster.c alignment-safe.
2008-03-01 19:26:22 +00:00
Tom Lane
e04fa58dcd Fix unportable usages of tolower(). On signed-char machines, it is necessary
to explicitly cast the output back to char before comparing it to a char
value, else we get the wrong result for high-bit-set characters.  Found by
Rolf Jentsch.  Also, fix several places where <ctype.h> functions were being
called without casting the argument to unsigned char; this is likewise
unportable, but we keep making that mistake :-(.  These found by buildfarm
member salamander, which I will desperately miss if it ever goes belly-up.
2008-03-01 03:26:35 +00:00
Tom Lane
3bf822c4d7 Disable the undocumented xmlvalidate() function, which was unintentionally
left in the code though it was not meant to be provided.  It represents a
security hole because unprivileged users could use it to look at (at least the
first line of) any file readable by the backend.  Fortunately, this is only
possible if the backend was built with XML support, so the damage is at least
mitigated; and 8.3 probably hasn't propagated into any security-critical uses
yet anyway.  Per report from Sergey Burladyan.
2008-03-01 02:46:49 +00:00
Andrew Dunstan
64f30bb206 Don't call AddUserToDacl on Cygwin 2008-02-29 23:31:20 +00:00
Alvaro Herrera
7157114d54 Remove long-unused and broken TCL_ARRAYS. 2008-02-29 20:58:33 +00:00
Tom Lane
c67f6f2f57 Reducing the assumed alignment of struct varlena means that the compiler
is also licensed to put a local variable declared that way at an unaligned
address.  Which will not work if the variable is then manipulated with
SET_VARSIZE or other macros that assume alignment.  So the previous patch
is not an unalloyed good, but on balance I think it's still a win, since
we have very few places that do that sort of thing.  Fix the one place in
tuptoaster.c that does it.  Per buildfarm results from gypsy_moth
(I'm a bit surprised that only one machine showed a failure).
2008-02-29 17:47:41 +00:00
Magnus Hagander
2d2b022267 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:33 +00:00
Peter Eisentraut
02504dfd0a Write the objfiles.txt rules in a way that is compatible with GNU make 3.78,
and simpler, too.
2008-02-29 10:34:51 +00:00
Neil Conway
ff428cdeda Fix several memory leaks when rescanning SRFs. Arrange for an SRF's
"multi_call_ctx" to be a distinct sub-context of the EState's per-query
context, and delete the multi_call_ctx as soon as the SRF finishes
execution. This avoids leaking SRF memory until the end of the current
query, which is particularly egregious when the SRF is scanned
multiple times. This change also fixes a leak of the fields of the
AttInMetadata struct in shutdown_MultiFuncCall().

Also fix a leak of the SRF result TupleDesc when rescanning a
FunctionScan node. The TupleDesc is allocated in the per-query context
for every call to ExecMakeTableFunctionResult(), so we should free it
after calling that function. Since the SRF might choose to return
a non-expendable TupleDesc, we only free the TupleDesc if it is
not being reference-counted.

Backpatch to 8.3 and 8.2 stable branches.
2008-02-29 02:49:39 +00:00
Magnus Hagander
b13635ce59 Support for building contrib/uuid-ossp with MSVC.
Original patch from Hiroshi Saito, modified by me.
2008-02-28 12:17:59 +00:00
Peter Eisentraut
b8eef28353 Change expand_subsys function so that it preserves the relative order of
the files passed as argument.  This is desirable so that the dtrace rule
in src/backend/Makefile works.
2008-02-27 20:31:01 +00:00
Tom Lane
1743778d04 If RelationBuildDesc() fails to open a critical system index, PANIC with
a relevant error message instead of just dumping core.  Odd that nobody
reported this before Darren Reed.
2008-02-27 17:44:19 +00:00
Peter Eisentraut
bd929b4909 Fixed dtrace build
found by Magne Mæhre
2008-02-26 14:42:27 +00:00
Peter Eisentraut
9623b727da Don't build the win32 support files in the all target, only in distprep and
when they are actually needed as prerequisites.
2008-02-26 14:26:16 +00:00
Peter Eisentraut
f6f8d61a47 Fix uninstall target. 2008-02-26 13:48:57 +00:00
Peter Eisentraut
0e04ee41d0 Create two separate libpq.rc's: One that is built at build time, and one
that is shipped in the distribution, named libpq-dist.rc.  This way the
build system doesn't get upset when a distributed file is forcibly
overwritten by during a normal build.
2008-02-26 13:31:40 +00:00
Peter Eisentraut
bdaf90b70f Reorganize some of the exports list generation code. It seems that this
has been reinvented about four different times throughout history (aix,
cygwin, win32, darwin/linux) and a lot of the concepts are actually shared,
which the code now shows better.
2008-02-26 10:45:24 +00:00
Peter Eisentraut
734a56ca2e Escape # character in variable assignment 2008-02-26 10:30:06 +00:00
Peter Eisentraut
d391bdac50 Need more dependencies to get the build order right when objfiles.txt
doesn't exist yet.
2008-02-26 08:23:31 +00:00
Peter Eisentraut
3690019da8 We don't need to rebuild objfiles.txt every time an object file changes.
So only rebuild when a makefile changes (which presumably defines the
file list somewhere), and only touch the file if an object changed. The
touch is necessary so the parent make knows something changed and
ultimately rebuilds postgres.
2008-02-26 07:20:38 +00:00
Peter Eisentraut
a1d5d85747 Refactor the code that creates the shared library export files to appear
only once in Makefile.shlib and not in four copies.
2008-02-26 06:41:24 +00:00
Tom Lane
fd15dba543 Fix encode(...bytea..., 'escape') so that it converts all high-bit-set byte
values into \nnn octal escape sequences.  When the database encoding is
multibyte this is *necessary* to avoid generating invalidly encoded text.
Even in a single-byte encoding, the old behavior seems very hazardous ---
consider for example what happens if the text is transferred to another
database with a different encoding.  Decoding would then yield some other
bytea value than what was encoded, which is surely undesirable.  Per gripe
from Hernan Gonzalez.

Backpatch to 8.3, but not further.  This is a bit of a judgment call, but I
make it on these grounds: pre-8.3 we don't really have much encoding safety
anyway because of the convert() function family, and we would also have much
higher risk of breaking existing apps that may not be expecting this behavior.
8.3 is still new enough that we can probably get away with making this change
in the function's behavior.
2008-02-26 02:54:08 +00:00
Tom Lane
bc93919be7 Reject year zero during datetime input, except when it's a 2-digit year
(then it means 2000 AD).  Formerly we silently interpreted this as 1 BC,
which at best is unwarranted familiarity with the implementation.
It's barely possible that some app somewhere expects the old behavior,
though, so we won't back-patch this into existing release branches.
2008-02-25 23:36:28 +00:00
Tom Lane
05506fc4af Fix datetime input to behave correctly for Feb 29 in years BC.
Formerly, DecodeDate attempted to verify the day-of-the-month exactly, but
it was under the misapprehension that it would know whether we were looking
at a BC year or not.  In reality this check can't be made until the calling
function (eg DecodeDateTime) has processed all the fields.  So, split the
BC adjustment and validity checks out into a new function ValidateDate that
is called only after processing all the fields.  In passing, this patch
makes DecodeTimeOnly work for BC inputs, which it never did before.

(The historical veracity of all this is nonexistent, of course, but if
we're going to say we support proleptic Gregorian calendar then we should
do it correctly.  In any case the unpatched code is broken because it could
emit dates that it would then reject on re-inputting.)

Per report from Bernd Helmle.  Back-patch as far as 8.0; in 7.x we were
not using our own calendar support and so this seems a bit too risky
to put into 7.4.
2008-02-25 23:21:01 +00:00
Peter Eisentraut
9956ddc191 Link postgres from all object files at once, to avoid the error-prone
SUBSYS.o step and allow for better optimization by the linker.

Instead of partial linking into SUBSYS.o, the list of object files is
assembled in objfiles.txt files that are expanded when the final
linking is done.

Because we are not yet sure how long command lines different platforms
can handle, the old way of linking is still available, by defining the
make variable PARTIAL_LINKING (e.g., make all PARTIAL_LINKING=1).  If
we determine that this is necessary for some platforms, then we will
document this in a more prominent place.
2008-02-25 17:55:42 +00:00
Tom Lane
2e0e563124 Avoid trying to print a NULL char pointer in --describe-config. On some
platforms this works, but on some it crashes.  Zdenek Kotala
2008-02-23 19:23:33 +00:00
Tom Lane
9713c06319 Change the declaration of struct varlena so that the length word is
represented as "char ...[4]" not "int32".  Since the length word is never
supposed to be accessed via this struct member anyway, this won't break
any existing code that is following the rules.  The advantage is that C
compilers will no longer assume that a pointer to struct varlena is
word-aligned, which prevents incorrect optimizations in TOAST-pointer
access and perhaps other places.  gcc doesn't seem to do this (at least
not at -O2), but the problem is demonstrable on some other compilers.

I changed struct inet as well, but didn't bother to touch a lot of other
struct definitions in which it wouldn't make any difference because there
were other fields forcing int alignment anyway.  Hopefully none of those
struct definitions are used for accessing unaligned Datums.
2008-02-23 19:11:45 +00:00
Tom Lane
870993e871 Rename miscadmin.h's PG_VERSIONSTR macro to PG_BACKEND_VERSIONSTR to
make it a bit clearer what it is, and get rid of duplicate definitions
in initdb and pg_ctl.
2008-02-20 22:46:24 +00:00
Tom Lane
8dd6c4b4be Make pg_regress -V consistent with the corresponding code in other
programs: use puts with a compile-time-constant string.
2008-02-20 22:44:16 +00:00
Tom Lane
7454515e12 Fix mistakes in pg_ctl's code for "start -w" that tries to cope with
non-default settings for the postmaster's port number.  The code to parse
command line options and postgresql.conf entries wasn't quite right about
whitespace or quotes, and it was coded in a not-very-readable way too.
Per bug #3969 from Itagaki Takahiro, though this is more extensive than his
proposed patch (which fixed only the whitespace problem).
This code has been broken since it was put in in 8.0, so patch all the way
back.
2008-02-20 22:18:15 +00:00
Tom Lane
5ce6829b73 Put a CHECK_FOR_INTERRUPTS call into the loops that try to find a unique new
OID or new relfilenode.  If the existing OIDs are sufficiently densely
populated, this could take a long time (perhaps even be an infinite loop),
so it seems wise to allow the system to respond to a cancel interrupt here.
Per a gripe from Jacky Leng.

Backpatch as far as 8.1.  Older versions just fail on OID collision,
instead of looping.
2008-02-20 17:44:09 +00:00
Alvaro Herrera
f78611bba4 Improve error messages emitted when VACUUM and ANALYZE skip a table.
Per gripe from Clodoaldo Pinto Neto on
Message-ID: <a595de7a0801060326qbfc790ax2a60573043c2e2be@mail.gmail.com>
2008-02-20 14:31:35 +00:00
Alvaro Herrera
bccc8e3608 Change error message to be able to differentiate the two cases. Per suggestion
from Jaime Casanova.
2008-02-20 14:01:45 +00:00
Magnus Hagander
66c80bfd98 Un-break msvc port yet again (it started pulling in the Darwin
port files, which obviously didn't compile)
2008-02-19 16:15:14 +00:00
Peter Eisentraut
c7054a6c14 More refactoring, so that the SUBSYS.o rules are now all in one place. 2008-02-19 15:29:58 +00:00
Peter Eisentraut
e2f16cd0ef This subdirectory has been unused, dead, and broken for 10 years. 2008-02-19 13:08:56 +00:00
Magnus Hagander
592487823d Fix function prototype to silence compiler warnings. 2008-02-19 12:06:35 +00:00
Magnus Hagander
fae032c9fc Unbreak MSVC build after recent addition of HTMLDIR. 2008-02-19 12:00:03 +00:00
Peter Eisentraut
1f4a587fc3 Remove another target I forgot during the refactoring 2008-02-19 11:49:12 +00:00
Peter Eisentraut
0474dcb608 Refactor backend makefiles to remove lots of duplicate code 2008-02-19 10:30:09 +00:00
Tom Lane
cf59277ac9 Remove unnecessary opening of other relation in RI_FKey_keyequal_upd_pk
and RI_FKey_keyequal_upd_fk, as well as no-longer-needed calls of
ri_BuildQueryKeyFull.  Aside from saving a few cycles, this avoids needless
deadlock risks when an update is not changing the columns that participate
in an RI constraint.  Per a gripe from Alexey Nalbat.

Back-patch to 8.3.  Earlier releases did have a need to open the other
relation due to the way in which they retrieved information about the RI
constraint, so this problem unfortunately can't easily be improved pre-8.3.

Tom Lane and Stephan Szabo
2008-02-18 23:00:32 +00:00
Peter Eisentraut
a345dcd2f7 Observe errors in makefile 2008-02-18 16:04:32 +00:00
Peter Eisentraut
84ce707ba8 Added --htmldir option to pg_config, equivalent to the new configure option. 2008-02-18 14:51:48 +00:00
Michael Meskes
a9bc069c0b - Removed duplicate include of ecpgtype.h which meant I had to adapt all expected results.
- Changed INFORMIX mode symbol definition yet again because the old way didn't work on NetBSD. Hopefully this one does.
2008-02-17 18:14:29 +00:00
Peter Eisentraut
b120382353 Upgrade to Autoconf 2.61:
- Change configure.in to use Autoconf 2.61 and update generated files.
- Update build system and documentation to support now directory variables
  offered by Autoconf 2.61.
- Replace usages of PGAC_CHECK_ALIGNOF by AC_CHECK_ALIGNOF, now available
  in Autoconf 2.61.
- Drop our patched version of AC_C_INLINE, as Autoconf now has the change.
2008-02-17 16:36:43 +00:00
Tom Lane
8b63aa1ffc Add back #include <time.h> in a couple of files that seem to need it
on Linux.
2008-02-17 04:21:05 +00:00
Tom Lane
cd00406774 Replace time_t with pg_time_t (same values, but always int64) in on-disk
data structures and backend internal APIs.  This solves problems we've seen
recently with inconsistent layout of pg_control between machines that have
32-bit time_t and those that have already migrated to 64-bit time_t.  Also,
we can get out from under the problem that Windows' Unix-API emulation is not
consistent about the width of time_t.

There are a few remaining places where local time_t variables are used to hold
the current or recent result of time(NULL).  I didn't bother changing these
since they do not affect any cross-module APIs and surely all platforms will
have 64-bit time_t before overflow becomes an actual risk.  time_t should
be avoided for anything visible to extension modules, however.
2008-02-17 02:09:32 +00:00
Tom Lane
0171e72d4d Update timezone code to track the upstream changes since 2003. In particular
this adds support for 64-bit tzdata files, which is needed to support DST
calculations beyond 2038.  Add a regression test case to give some minimal
confidence that that really works.

Heikki Linnakangas
2008-02-16 21:16:04 +00:00
Bruce Momjian
d4fa0b4e0a Rename a libpq NOT_USED SSL function to
verify_peer_name_matches_certificate(), clarify some of the function's
variables and logic, and update a comment.  This should make SSL
improvements easier in the future.
2008-02-16 21:03:30 +00:00
Tom Lane
e67867b26c Allow AS to be omitted when specifying an output column name in SELECT
(or RETURNING), but only when the output name is not any SQL keyword.
This seems as close as we can get to the standard's syntax without a
great deal of thrashing.  Original patch by Hiroshi Saito, amended by me.
2008-02-15 22:17:06 +00:00
Tom Lane
cc80f0a340 Remove ancient restriction that LIMIT/OFFSET can't contain a sub-select.
This was probably protecting some implementation limitation when it was
put in, but as far as I can tell the planner and executor have no such
assumption anymore; the case seems to work fine.  Per a gripe from
Grzegorz Jaskiewicz.
2008-02-15 17:19:46 +00:00
Michael Meskes
efac2796e6 Changed the way symbols are defined in C in INFORMIX mode. 2008-02-15 11:20:21 +00:00
Tom Lane
df1e965e12 Sync our regex code with upstream changes since last time we did this, which
was Tcl 8.4.8.  The main changes are to remove the never-fully-implemented
code for multi-character collating elements, and to const-ify some stuff a
bit more fully.  In combination with the recent security patch, this commit
brings us into line with Tcl 8.5.0.

Note that I didn't make any effort to duplicate a lot of cosmetic changes
that they made to bring their copy into line with their own style
guidelines, such as adding braces around single-line IF bodies.  Most of
those we either had done already (such as ANSI-fication of function headers)
or there is no point because pgindent would undo the change anyway.
2008-02-14 17:33:37 +00:00
Michael Meskes
423abf4d6a - EXECUTE can return NOT FOUND so it should be checked here too.
- Changed regression test accordingly.
2008-02-14 14:54:48 +00:00
Michael Meskes
a3a648ecc9 Sorry, accidently committed a patch I'm working on. Reverting it.
The only correct change was:
- Added SQLSTATE macro closing bug #3961.
2008-02-14 12:27:26 +00:00
Michael Meskes
78772dc018 *** empty log message *** 2008-02-14 12:22:36 +00:00
Alvaro Herrera
3a1bd025ba Update minor version bumping policy. 2008-02-13 21:09:24 +00:00
Bruce Momjian
4588fc47c1 As sub-bullet decoration. 2008-02-13 18:30:21 +00:00
Bruce Momjian
812716e35b Update wording for minor library bumping. 2008-02-13 18:29:08 +00:00
Bruce Momjian
87cc5af75e Bump minor library version numbers for 8.4. 2008-02-13 18:14:46 +00:00
Bruce Momjian
c28d1b9eb9 No longer necessary:
o update ecpg regression expected files for new library number
2008-02-13 18:10:23 +00:00
Tom Lane
cf9e156156 Stamp HEAD as 8.4devel. 2008-02-13 03:40:38 +00:00
Tom Lane
745e6edaae Fix SPI_cursor_open() and SPI_is_cursor_plan() to push the SPI stack before
doing anything interesting, such as calling RevalidateCachedPlan().  The
necessity of this is demonstrated by an example from Willem Buitendyk:
during a replan, the planner might try to evaluate SPI-using functions,
and so we'd better be in a clean SPI context.

A small downside of this fix is that these two functions will now fail
outright if called when not inside a SPI-using procedure (ie, a
SPI_connect/SPI_finish pair).  The documentation never promised or suggested
that that would work, though; and they are normally used in concert with
other functions, mainly SPI_prepare, that always have failed in such a case.
So the odds of breaking something seem pretty low.

In passing, make SPI_is_cursor_plan's error handling convention clearer,
and fix documentation's erroneous claim that SPI_cursor_open would
return NULL on error.

Before 8.3 these functions could not invoke replanning, so there is probably
no need for back-patching.
2008-02-12 04:09:44 +00:00
Magnus Hagander
953c2c9b71 Update timezone mapping for Windows with new timezones added
in windows servicepacks.
Fix timezone mapping for "Mexico 2"
2008-02-11 19:55:11 +00:00
Tom Lane
c931c07124 Repair VACUUM FULL bug introduced by HOT patch: the original way of
calculating a page's initial free space was fine, and should not have been
"improved" by letting PageGetHeapFreeSpace do it.  VACUUM FULL is going to
reclaim LP_DEAD line pointers later, so there is no need for a guard
against the page being too full of line pointers, and having one risks
rejecting pages that are perfectly good move destinations.

This also exposed a second bug, which is that the empty_end_pages logic
assumed that any page with no live tuples would get entered into the
fraged_pages list automatically (by virtue of having more free space than
the threshold in the do_frag calculation).  This assumption certainly
seems risky when a low fillfactor has been chosen, and even without
tunable fillfactor I think it could conceivably fail on a page with many
unused line pointers.  So fix the code to force do_frag true when notup
is true, and patch this part of the fix all the way back.

Per report from Tomas Szepe.
2008-02-11 19:14:30 +00:00
Tom Lane
082aca9ec2 Fix PageGetExactFreeSpace() so that it actually behaves sensibly
if pd_lower > pd_upper, rather than merely claiming to.  This would
only matter if the page header were corrupt, which shouldn't occur,
but ...
2008-02-10 20:39:08 +00:00
Tom Lane
81e770857d Since GSSAPI and SSPI authentication don't work in protocol version 2,
issue a helpful error message instead of sending unparsable garbage.
(It is clearly a design error that this doesn't work, but fixing it
is not worth the trouble at this point.)  Per discussion.
2008-02-08 17:58:46 +00:00
Tom Lane
9b43c245e3 Avoid misbehavior in foreign key checks when casting to a datatype for which
the parser supplies a default typmod that can result in data loss (ie,
truncation).  Currently that appears to be only CHARACTER and BIT.
We can avoid the problem by specifying the type's internal name instead
of using SQL-spec syntax.  Since the queries generated here are only used
internally, there's no need to worry about portability.  This problem is
new in 8.3; before we just let the parser do whatever it wanted to resolve
the operator, but 8.3 is trying to be sure that the semantics of FK checks
are consistent.  Per report from Harald Fuchs.
2008-02-07 22:58:35 +00:00
Tom Lane
1ab19a36a5 Some variants of ALTER OWNER tried to make the "object" field of the
statement be a list of bare C strings, rather than String nodes, which is
what they need to be for copyfuncs/equalfuncs to work.  Fortunately these
node types never go out to disk (if they did, we'd likely have noticed the
problem sooner), so we can just fix it without creating a need for initdb.
This bug has been there since 8.0, but 8.3 exposes it in a more common
code path (Parse messages) than prior releases did.  Per bug #3940 from
Vladimir Kokovic.
2008-02-07 21:07:55 +00:00
Tom Lane
49a730128c Add missing copyfuncs/equalfuncs support for AlterTSDictionaryStmt and
AlterTSConfigurationStmt.  All utility statement node types are expected
to be supported here, though they do not have to have outfuncs/readfuncs
support.  Found by running regression tests with COPY_PARSE_PLAN_TREES
enabled.
2008-02-07 20:19:47 +00:00
Magnus Hagander
1f6fc49ce3 Fix msvc install for cases where msgfmt (from gettext) is in a directory
that contains spaces.

Per complaint from Gevik Babakhani, like the last one.
2008-02-07 17:58:16 +00:00
Tom Lane
09bb6f6ed0 Fix silly mistake in expand_indexqual_rowcompare --- in converting a forboth()
into an iteration over three parallel lists, I had accidentally put the lnext
steps outside the loop.  Sigh.  Per bug #3938.
2008-02-07 17:53:53 +00:00
Tom Lane
b7fe5f70d3 Fix CREATE TABLE ... LIKE ... INCLUDING INDEXES to not cause unwanted
tablespace permissions failures when copying an index that is in the
database's default tablespace.  A side-effect of the change is that explicitly
specifying the default tablespace no longer triggers a permissions check;
this is not how it was done in pre-8.3 releases but is argued to be more
consistent.  Per bug #3921 from Andrew Gilligan.  (Note: I argued in the
subsequent discussion that maybe LIKE shouldn't copy index tablespaces
at all, but since no one indicated agreement with that idea, I've refrained
from doing it.)
2008-02-07 17:09:51 +00:00
Magnus Hagander
26351d1c74 Fix msvc install script to properly install NLS files when built with
gettext.
2008-02-07 13:49:00 +00:00
Michael Meskes
fa0dc92fd8 - Fixed segfault in ecpg when using an array element.
- Free all memory in auto-prepare mode.
2008-02-07 11:09:13 +00:00
Magnus Hagander
8d363727f4 Fix very broken clean.bat for msvc install. The way we used subroutines
in .bat simply did not work, and it called them in the wrong order,
some several times, and some not at all. So this unrolls all subroutine
calls.

This should fix the issues with clean deleting the wrong files reported
by Dave Page.

While at it, add the "clean dist" option to act like "make distclean",
and no longer remove the flex/bison output files by default. This shuold
fix the problem reported by Pavel Golub in bug #3909.
2008-02-06 15:13:25 +00:00
Magnus Hagander
03e4dc9ef2 Handle libraries in directories with spaces in them.
Gevik Babakhani
2008-02-05 14:17:23 +00:00
Tom Lane
6f906905b1 Fix WaitOnLock() to ensure that the process's "waiting" flag is reset after
erroring out of a wait.  We can use a PG_TRY block for this, but add a comment
explaining why it'd be a bad idea to use it for any other state cleanup.

Back-patch to 8.2.  Prior releases had the same issue, but only with respect
to the process title, which is likely to get reset almost immediately anyway
after the transaction aborts, so it seems not worth changing them.  In 8.2
and HEAD, the pg_stat_activity "waiting" flag could remain set incorrectly
for a long time.

Per report from Gurjeet Singh.
2008-02-02 22:26:17 +00:00
Bruce Momjian
aad140b7ff Stamp 8.3 in CVS. _No_ update of configure/configure.in. 2008-02-01 02:59:02 +00:00
Tom Lane
cf82aee7ea Fix pg_GSS_error to use conn->errorMessage more sanely, ie, actually
work with the PQExpBuffer code instead of fighting it.  This avoids an
unnecessary limit on message length and fixes the latent bug that
errorMessage.len wasn't getting set.
2008-01-31 18:58:30 +00:00
Peter Eisentraut
3c9ae7300d Translation updates 2008-01-31 18:04:52 +00:00
Andrew Dunstan
7ae43187ee Remove 3 hex digit limit on symbol number in recent fix. 2008-01-31 16:30:24 +00:00
Magnus Hagander
0ace923ce8 Add pid to the pgident event name on win32.
Should fix a problem where two clusters are running under
two different service accounts and get colliding names,
causing only the first cluster to contain the pgident
event description.

Per report from Stephen Denne.
2008-01-31 09:21:17 +00:00
Andrew Dunstan
0a4ef62bf8 Fix test that wrongly excluded some dumpbin symbols.
Keep the intermediate symbol file rather then blowing it away, for easier debugging.
2008-01-31 03:26:14 +00:00
Tom Lane
0688d84041 Add checks to TRUNCATE, CLUSTER, and REINDEX to prevent performing these
operations when the current transaction has any open references to the
target relation or index (implying it has an active query using the relation).
The need for this was previously recognized in connection with ALTER TABLE,
but anything that summarily eliminates tuples or moves them around would
confuse an active scan.

While this patch does not in itself fix bug #3883 (the deadlock would happen
before the new check fires), it will discourage people from attempting the
sequence of operations that creates a deadlock risk, so it's at least a
partial response to that problem.

In passing, add a previously-missing check to REINDEX to prevent trying to
reindex another backend's temp table.  This isn't a security problem since
only a superuser would get past the schema permission checks, but if we are
testing for this in other utility commands then surely REINDEX should too.
2008-01-30 19:46:48 +00:00
Tom Lane
47df4f6688 Add a GUC variable "synchronize_seqscans" to allow clients to disable the new
synchronized-scanning behavior, and make pg_dump disable sync scans so that
it will reliably preserve row ordering.  Per recent discussions.
2008-01-30 18:35:55 +00:00
Peter Eisentraut
6dfa40d69f Translation updates 2008-01-30 11:05:41 +00:00
Tom Lane
b58d8c9a53 Don't putenv() a string that is allocated in a context that will go away
soon.  I suspect this explains bug #3902, though I'm still not able to
reproduce that.
2008-01-30 04:11:19 +00:00
Tom Lane
5037ed834d Fix up closePGconn() so that PQreset() will work on GSSAPI/SSPI connections;
the patch for those features put its cleanup code into freePGconn() which is
really the wrong place.  Remove redundant code from freePGconn() and add
comments in hopes of preventing similar mistakes in future.
Noticed while trying (futilely) to reproduce bug #3902.
2008-01-29 02:06:30 +00:00
Tom Lane
fad2b99523 Arrange to ignore SIGPIPE during SSL_read() and SSL_shutdown(), as these
are known to write on the socket sometimes and thus we are vulnerable to
being killed by the signal if the server happens to go away unexpectedly.
Noticed while trying (futilely) to reproduce bug #3902.

This bug has been there all along, but since the situation is usually
only of interest to developers, I chose not to back-patch the changes.
2008-01-29 02:03:39 +00:00
Tom Lane
b5518c8e88 Minor editorial improvements in documentation of session_replication_role;
in particular correct the obsolete claim that it can't be changed once
any plans have been cached.
2008-01-27 19:12:28 +00:00
Tom Lane
6322e84430 Change StatementCancelHandler() to check the DoingCommandRead flag to decide
whether to execute an immediate interrupt, rather than testing whether
LockWaitCancel() cancelled a lock wait.  The old way misclassified the case
where we were blocked in ProcWaitForSignal(), and arguably would misclassify
any other future additions of new ImmediateInterruptOK states too.  This
allows reverting the old kluge that gave LockWaitCancel() a return value,
since no callers care anymore.  Improve comments in the various
implementations of PGSemaphoreLock() to explain that on some platforms, the
assumption that semop() exits after a signal is wrong, and so we must ensure
that the signal handler itself throws elog if we want cancel or die interrupts
to be effective.  Per testing related to bug #3883, though this patch doesn't
solve those problems fully.

Perhaps this change should be back-patched, but since pre-8.3 branches aren't
really relying on autovacuum to respond to SIGINT, it doesn't seem critical
for them.
2008-01-26 19:55:08 +00:00
Tom Lane
ace1b29b04 Fix two different copy-and-paste-os in CSV log rotation logic; one that led to
a double-pfree crash and another that effectively disabled size-based rotation
for CSV logs.  Also suppress a memory leak and make some trivial cosmetic
improvements.  Per bug #3901 from Chris Hoover and additional code-reading.
2008-01-25 20:42:10 +00:00
Tom Lane
353a1cca9f Release any detoasted copies of arrays that are made temporarily in
ri_FetchConstraintInfo, to avoid a query-duration memory leak when that
routine is called by RI_FKey_keyequal_upd_fk (which isn't executed in a
short-lived context).  This problem was latent when the routine was added
in February, but it didn't become serious until the varvarlena patch made
it quite likely that the fields being examined would be "toasted" (ie, have
short headers).  Per report from Stephen Denne.
2008-01-25 04:46:07 +00:00
Peter Eisentraut
79a323ab49 Change /contrib to contrib for consistency. 2008-01-24 06:23:33 +00:00
Tom Lane
b9ff7443e6 Prevent integer overflow within the integer-datetimes version of
TimestampTzPlusMilliseconds.  An integer argument of more than INT_MAX/1000
milliseconds (ie, about 35 minutes) would provoke a wrong result, resulting
in incorrect enforcement of statement_timestamp values larger than that.
Bug was introduced in my rewrite of 2006-06-20, which fixed some other
overflow risks, but missed this one :-(  Per report from Elein.
2008-01-23 21:26:13 +00:00
Alvaro Herrera
8984c8bbe2 Improve lock level choices in pg_shdepend.c. Noticed by Tom Lane. 2008-01-23 15:36:38 +00:00
Andrew Dunstan
cd76ad6a2e Document the fix for perl 5.10 with this comment:
* The temporary enabling of the caller opcode here is to work around a
 * bug in perl 5.10, which unkindly changed the way its Safe.pm works, without
 * notice. It is quite safe, as caller is informational only, and in any case
 * we only enable it while we load the 'strict' module.
2008-01-23 00:55:47 +00:00
Andrew Dunstan
ac11d9dc4b Work around for perl 5.10 bug - fix due to perl hacker Simon Cozens. 2008-01-22 20:17:37 +00:00
Peter Eisentraut
6f8f8d2daa Provide a clearer error message if the pg_control version number looks
wrong because of mismatched byte ordering.
2008-01-21 11:17:46 +00:00
Tom Lane
716e8b8374 Fix RS_isRegis() to agree exactly with RS_compile()'s idea of what's a valid
regis.  Correct the latter's oversight that a bracket-expression needs to be
terminated.  Reduce the ereports to elogs, since they are now not expected to
ever be hit (thus addressing Alvaro's original complaint).
In passing, const-ify the string argument to RS_compile.
2008-01-21 02:46:11 +00:00
Tom Lane
f7108ce06b Fix psql \h output for case of no parameters (ie, list all the known commands)
to format properly for the actually needed column width, instead of having
a hard-wired assumption about the longest command name length.  Also make it
respond to the current screen width.  In passing, const-ify the constant
table.
2008-01-20 21:13:55 +00:00
Alvaro Herrera
000666bbfe Split error message. 2008-01-20 17:50:41 +00:00
Tom Lane
f10589e5f7 Make pg_regress clean out the testtablespace directory only on Windows.
On other platforms it's better to let the Makefile handle it, but we want
the regression tests to be invokable without make on Windows.  A batch
file would be a better solution, but no time for that before 8.3.
Per my discovery that this breaks testing under SELinux, and subsequent
discussion.
2008-01-19 17:43:42 +00:00
Bruce Momjian
7b4be2ba2f Stamp release for 8.3RC2; configure will be stamped by packager. 2008-01-18 00:13:50 +00:00
Tom Lane
70066eb1a1 Insert into getCopyDataMessage() the same logic that already existed in the
main code path for enlarging libpq's input buffer in one swoop when needing to
read a long data message.  Without this, the code will double the buffer size,
read more data, notice it still hasn't got the whole message, and repeat till
it finally has a large enough buffer.  Which wastes a lot of data-moving
effort and also memory (since malloc probably can't do anything very useful
with the freed-up smaller buffers).  Not sure why this wasn't there already;
certainly the COPY data path is a place where we're quite likely to see long
data messages.  I'm not backpatching though, since this is just a marginal
performance issue rather than a real bug.
2008-01-17 21:21:50 +00:00
Tom Lane
a44174cf90 Fix subselect.c to avoid assuming that a SubLink's testexpr references each
subquery output column exactly once left-to-right.  Although this is the case
in the original parser output, it might not be so after rewriting and
constant-folding, as illustrated by bug #3882 from Jan Mate.  Instead
scan the subquery's target list to obtain needed per-column information;
this is duplicative of what the parser did, but only a couple dozen lines
need be copied, and we can clean up a couple of notational uglinesses.
Bug was introduced in 8.2 as part of revision of SubLink representation.
2008-01-17 20:35:27 +00:00
Tom Lane
0df7717faa Fix ALTER INDEX RENAME so that if the index belongs to a unique or primary key
constraint, the constraint is renamed as well.  This avoids inconsistent
situations that could confuse pg_dump (not to mention humans).  We might at
some point provide ALTER TABLE RENAME CONSTRAINT as a more general solution,
but there seems no reason not to allow doing it this way too.  Per bug #3854
and related discussions.
2008-01-17 18:56:54 +00:00
Bruce Momjian
bfde21a1a8 Improve usage message for pgindent. 2008-01-16 20:13:44 +00:00
Teodor Sigaev
cd42dd5a17 Fix core dump with buffer-overrun by too long infinitive. Add checking of using
fixed length arrays to prevent array's overrun. Per report by
Hannes Dorbath <light@theendofthetunnel.de> and comments by Tom.
2008-01-16 13:01:03 +00:00
Tom Lane
0153c4c466 Be less wishy-washy in the documentation and comments about whether a
ParameterStatus message can be sent during COPY OUT: it's definitely
possible, since COPY from a SELECT subquery can trigger any user-defined
function.
2008-01-15 22:18:20 +00:00
Tom Lane
14e2a260a5 Prevent CLUSTER from decreasing a relation's relfrozenxid. Bug
introduced in rewrite to make CLUSTER MVCC-safe.
2008-01-15 21:20:28 +00:00
Tom Lane
ac12412ede Revise memory management for libxml calls. Instead of keeping libxml's data
in whichever context happens to be current during a call of an xml.c function,
use a dedicated context that will not go away until we explicitly delete it
(which we do at transaction end or subtransaction abort).  This makes recovery
after an error much simpler --- we don't have to individually delete the data
structures created by libxml.  Also, we need to initialize and cleanup libxml
only once per transaction (if there's no error) instead of once per function
call, so it should be a bit faster.  We'll need to keep an eye out for
intra-transaction memory leaks, though.  Alvaro and Tom.
2008-01-15 18:57:00 +00:00
Tom Lane
deb7deda26 Tweak new error message to conform to style guidelines. 2008-01-15 18:22:47 +00:00
Teodor Sigaev
f7807f1de8 Add check of headline method presence. Per report by Yoshiyuki Asaba <y-asaba@sraoss.co.jp> 2008-01-15 17:16:01 +00:00
Michael Meskes
dbdc2e52a0 Re-enabled variables in fetch/move command. 2008-01-15 10:31:47 +00:00
Tom Lane
abab776b3c Somebody forgot to add this ERRCODE everywhere it should go ... 2008-01-15 01:36:53 +00:00
Tom Lane
ea00ab8d64 Prevent pg_dump from dumping the comment (if any) on the 'public' schema.
This is to avoid uselessly requiring superuser permissions to restore
the dump without errors.  Pretty grotty, but no better alternative seems
available, at least not in the near term.
2008-01-14 19:27:41 +00:00
Tom Lane
98c0ebca80 Avoid cluttering the postmaster log with bogus complaints
during transaction abort, per my note from a couple days ago.
2008-01-14 19:18:53 +00:00
Tom Lane
5c7671425f Fix an ancient oversight in libpq's handling of V3-protocol COPY OUT mode:
we need to be able to swallow NOTICE messages, and potentially also
ParameterStatus messages (although the latter would be a bit weird),
without exiting COPY OUT state.  Fix it, and adjust the protocol documentation
to emphasize the need for this.  Per off-list report from Alexander Galler.
2008-01-14 18:46:17 +00:00
Alvaro Herrera
7aa4164363 Mark autovacuum entries in pg_stat_activity so that they can be easily
distinguished from user-invoked commands.  Per suggestion from Tom Lane.
2008-01-14 13:39:25 +00:00
Michael Meskes
1460c82151 Set valid return values even in case of an error to prevent segfaults. 2008-01-14 09:43:42 +00:00
Tom Lane
d3b1b1f9d8 Fix CREATE INDEX CONCURRENTLY so that it won't use synchronized scan for
its second pass over the table.  It has to start at block zero, else the
"merge join" logic for detecting which TIDs are already in the index
doesn't work.  Hence, extend heapam.c's API so that callers can enable or
disable syncscan.  (I put in an option to disable buffer access strategy,
too, just in case somebody needs it.)  Per report from Hannes Dorbath.
2008-01-14 01:39:09 +00:00
Tom Lane
689d02a2e9 Fix a regression test that fails if default_text_search_config isn't
'english'.
2008-01-13 21:17:46 +00:00
Michael Meskes
149db6b6b7 Changed prototype for ECPGdo because some compilers don't like int/enum aliasing in there. 2008-01-13 11:53:16 +00:00
Tom Lane
1bbf8706ae It turns out the LIBXML_TEST_VERSION macro calls xmlInitParser().
Therefore we must xmlCleanupParser(), or we risk leaving behind
dangling pointers to whatever memory context is current when xml_init()
is called.  This seems to fix bug #3860, though we might still want
the more invasive solution being worked on by Alvaro.
2008-01-12 21:14:08 +00:00
Neil Conway
5217663372 Fix two places in xml.c that neglected to check the return values of
SPI_prepare() and SPI_cursor_open(), to silence a Coverity warning.
2008-01-12 10:50:03 +00:00
Neil Conway
25b7583f67 Minor perf tweak for _SPI_strdup(): if we're going to call strlen()
anyway, it is faster to memcpy() than to strcpy().
2008-01-12 10:38:32 +00:00
Tom Lane
208d0a2321 Fix logical errors in constraint exclusion: we cannot assume that a CHECK
constraint yields TRUE for every row of its table, only that it does not
yield FALSE (a NULL result isn't disallowed).  This breaks a couple of
implications that would be true in two-valued logic.  I had put in one such
mistake in an 8.2.5 patch: foo IS NULL doesn't refute a strict operator
on foo.  But there was another in the original 8.2 release: NOT foo doesn't
refute an expression whose truth would imply the truth of foo.
Per report from Rajesh Kumar Mallah.

To preserve the ability to do constraint exclusion with one partition
holding NULL values, extend relation_excluded_by_constraints() to check
for attnotnull flags, and add col IS NOT NULL expressions to the set of
constraints we hope to refute.
2008-01-12 00:11:39 +00:00
Tom Lane
89c0a87fda The original implementation of polymorphic aggregates didn't really get the
checking of argument compatibility right; although the problem is only exposed
with multiple-input aggregates in which some arguments are polymorphic and
some are not.  Per bug #3852 from Sokolov Yura.
2008-01-11 18:39:41 +00:00
Tom Lane
df62977d00 Fix an old error in clause_selectivity: the default selectivity estimate
for unhandled clause types ought to be 0.5, not 1.0.  I fear I introduced
this silliness due to misreading the intent of the very-poorly-structured
code that was there when we inherited the file from Berkeley.  The lack
of sanity in this behavior was exposed by an example from Sim Zacks.
(Arguably this is a bug fix and should be back-patched, but I'm a bit
hesitant to introduce a possible planner behavior change in the back
branches; it might detune queries that worked acceptably in the past.)

While at it, make estimation for DistinctExpr do something marginally
realistic, rather than just defaulting.
2008-01-11 17:00:45 +00:00
Michael Meskes
da758c266c Fixed lexer to correctly parse C quotes. 2008-01-11 15:19:16 +00:00
Tom Lane
59fc64acee Fix a conceptual error in my patch of 2007-10-26 that avoided considering
clauseless joins of relations that have unexploited join clauses.  Rather
than looking at every other base relation in the query, the correct thing is
to examine the other relations in the "initial_rels" list of the current
make_rel_from_joinlist() invocation, because those are what we actually have
the ability to join against.  This might be a subset of the whole query in
cases where join_collapse_limit or from_collapse_limit or full joins have
prevented merging the whole query into a single join problem.  This is a bit
untidy because we have to pass those rels down through a new PlannerInfo
field, but it's necessary.  Per bug #3865 from Oleg Kharin.
2008-01-11 04:02:18 +00:00
Tom Lane
e6a442c71b Restructure the shutdown procedure for the archiver process to allow it to
finish archiving everything (when there's no error), and to eliminate various
hazards as best we can.  This fixes a previous 8.3 patch that caused the
postmaster to kill and then restart the archiver during shutdown (!?).

The new behavior is that the archiver is allowed to run unmolested until
the bgwriter has exited; then it is sent SIGUSR2 to tell it to do a final
archiving cycle and quit.  We only SIGQUIT the archiver if we want a panic
stop; this is important since SIGQUIT will also be sent to any active
archive_command.  The postmaster also now doesn't SIGQUIT the stats collector
until the bgwriter is done, since the bgwriter can send stats messages in 8.3.
The postmaster will not exit until both the archiver and stats collector are
gone; this provides some defense (not too bulletproof) against conflicting
archiver or stats collector processes being started by a new postmaster
instance.  We continue the prior practice that the archiver will check
for postmaster death immediately before issuing any archive_command; that
gives some additional protection against conflicting archivers.

Also, modify the archiver process to notice SIGTERM and refuse to issue any
more archive commands if it gets it.  The postmaster doesn't ever send it
SIGTERM; we assume that any such signal came from init and is a notice of
impending whole-system shutdown.  In this situation it seems imprudent to try
to start new archive commands --- if they aren't extremely quick they're
likely to get SIGKILL'd by init.

All per discussion.
2008-01-11 00:54:09 +00:00
Magnus Hagander
21a00dc6fd Generate and include manifest in standalone libpq build on Windows.
Hiroshi Saito
2008-01-10 16:03:00 +00:00
Bruce Momjian
77015b59aa vacuum_cost_limit has a minimum value of 1, not zero; update
postgresql.conf comment to match.
2008-01-10 02:50:01 +00:00
Tom Lane
a9742f123c Remove incorrect (and ill-advised anyway) pfree's in pg_convert_from and
pg_convert_to.  Per bug #3866 from Andrew Gilligan.
2008-01-09 23:43:54 +00:00
Tom Lane
ceb9360067 Fix CREATE INDEX CONCURRENTLY to not deadlock against an automatic or manual
VACUUM that is blocked waiting to get lock on the table being indexed.
Per report and fix suggestion from Greg Stark.
2008-01-09 21:52:36 +00:00
Tom Lane
6a6522529f Fix some planner issues found while investigating Kevin Grittner's report
of poorer planning in 8.3 than 8.2:

1. After pushing a constant across an outer join --- ie, given
"a LEFT JOIN b ON (a.x = b.y) WHERE a.x = 42", we can deduce that b.y is
sort of equal to 42, in the sense that we needn't fetch any b rows where
it isn't 42 --- loop to see if any additional deductions can be made.
Previous releases did that by recursing, but I had mistakenly thought that
this was no longer necessary given the EquivalenceClass machinery.

2. Allow pushing constants across outer join conditions even if the
condition is outerjoin_delayed due to a lower outer join.  This is safe
as long as the condition is strict and we re-test it at the upper join.

3. Keep the outer-join clause even if we successfully push a constant
across it.  This is *necessary* in the outerjoin_delayed case, but
even in the simple case, it seems better to do this to ensure that the
join search order heuristics will consider the join as reasonable to
make.  Mark such a clause as having selectivity 1.0, though, since it's
not going to eliminate very many rows after application of the constant
condition.

4. Tweak have_relevant_eclass_joinclause to report that two relations
are joinable when they have vars that are equated to the same constant.
We won't actually generate any joinclause from such an EquivalenceClass,
but again it seems that in such a case it's a good idea to consider
the join as worth costing out.

5. Fix a bug in select_mergejoin_clauses that was exposed by these
changes: we have to reject candidate mergejoin clauses if either side was
equated to a constant, because we can't construct a canonical pathkey list
for such a clause.  This is an implementation restriction that might be
worth fixing someday, but it doesn't seem critical to get it done for 8.3.
2008-01-09 20:42:29 +00:00
Magnus Hagander
8d546c7170 Don't enforce 32-bit time_t for FRONTEND apps. Fixes standalone
builds of libpq in both 32 and 64-bit. Per gripe from Hiroshi Saito.
2008-01-09 09:16:43 +00:00
Neil Conway
bbee1c5da8 Fix an omission in the outfuncs.c support for Agg nodes: the grpColIdx
and grpOperators fields were not emitted by _outAgg().
2008-01-09 08:46:44 +00:00
Tom Lane
da3df47c84 lmgr.c:DescribeLockTag was never taught about virtual xids, per Greg Stark.
Also a couple of minor tweaks to try to future-proof the code a bit better
against future locktag additions.
2008-01-08 23:18:51 +00:00
Tom Lane
867ff0727f informix.c was violating the coding rule about not including any
system headers before c.h.  Per report from J6M.
2008-01-08 01:14:52 +00:00
Tom Lane
8c71752ae4 Remove unnecessary comma in enum definition ... some C compilers don't
like that.  Per report from J6M.
2008-01-08 01:04:08 +00:00
Bruce Momjian
f7d22658e6 Mention use of src/tools/major_release_split for creating back-branch
release notes.
2008-01-07 22:05:27 +00:00
Neil Conway
6d389bfd26 Fix a minor bug in outfuncs support for SetOp: dupOperators is an array
of Oid, and therefore should use the "%u" escape sequence rather than "%d".
2008-01-07 21:33:10 +00:00
Tom Lane
5935890775 A long time ago, Peter pointed out that ruleutils.c didn't dump simple
constant ORDER/GROUP BY entries properly:
http://archives.postgresql.org/pgsql-hackers/2001-04/msg00457.php
The original solution to that was in fact no good, as demonstrated by
today's report from Martin Pitt:
http://archives.postgresql.org/pgsql-bugs/2008-01/msg00027.php
We can't use the column-number-reference format for a constant that is
a resjunk targetlist entry, a case that was unfortunately not thought of
in the original discussion.  What we can do instead (which did not work
at the time, but does work in 7.3 and up) is to emit the constant with
explicit ::typename decoration, even if it otherwise wouldn't need it.
This is sufficient to keep the parser from thinking it's a column number
reference, and indeed is probably what the user must have done to get
such a thing into the querytree in the first place.
2008-01-06 01:03:16 +00:00
Tom Lane
2bf121e40b Stamp release 8.3RC1.
Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067, CVE-2007-6600, CVE-2007-6601
2008-01-03 21:40:12 +00:00
Tom Lane
eedb068c0a Make standard maintenance operations (including VACUUM, ANALYZE, REINDEX,
and CLUSTER) execute as the table owner rather than the calling user, using
the same privilege-switching mechanism already used for SECURITY DEFINER
functions.  The purpose of this change is to ensure that user-defined
functions used in index definitions cannot acquire the privileges of a
superuser account that is performing routine maintenance.  While a function
used in an index is supposed to be IMMUTABLE and thus not able to do anything
very interesting, there are several easy ways around that restriction; and
even if we could plug them all, there would remain a risk of reading sensitive
information and broadcasting it through a covert channel such as CPU usage.

To prevent bypassing this security measure, execution of SET SESSION
AUTHORIZATION and SET ROLE is now forbidden within a SECURITY DEFINER context.

Thanks to Itagaki Takahiro for reporting this vulnerability.

Security: CVE-2007-6600
2008-01-03 21:23:15 +00:00
Tom Lane
98f27aaef3 Fix assorted security-grade bugs in the regex engine. All of these problems
are shared with Tcl, since it's their code to begin with, and the patches
have been copied from Tcl 8.5.0.  Problems:

CVE-2007-4769: Inadequate check on the range of backref numbers allows
crash due to out-of-bounds read.
CVE-2007-4772: Infinite loop in regex optimizer for pattern '($|^)*'.
CVE-2007-6067: Very slow optimizer cleanup for regex with a large NFA
representation, as well as crash if we encounter an out-of-memory condition
during NFA construction.

Part of the response to CVE-2007-6067 is to put a limit on the number of
states in the NFA representation of a regex.  This seems needed even though
the within-the-code problems have been corrected, since otherwise the code
could try to use very large amounts of memory for a suitably-crafted regex,
leading to potential DOS by driving the system into swap, activating a kernel
OOM killer, etc.

Although there are certainly plenty of ways to drive the system into effective
DOS with poorly-written SQL queries, these problems seem worth treating as
security issues because many applications might accept regex search patterns
from untrustworthy sources.

Thanks to Will Drewry of Google for reporting these problems.  Patches by Will
Drewry and Tom Lane.

Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067
2008-01-03 20:47:55 +00:00
Tom Lane
20e862155f Forbid ALTER TABLE and CLUSTER when there are pending AFTER-trigger events
in the current backend for the target table.  These operations move tuples
around and would thus invalidate the TIDs stored in the trigger event records.
(We need not worry about events in other backends, since acquiring exclusive
lock should be enough to ensure there aren't any.)  It might be sufficient
to forbid only the table-rewriting variants of ALTER TABLE, but in the absence
of any compelling use-case, let's just be safe and simple.  Per follow-on
investigation of bug #3847, though this is not actually the same problem
reported therein.

Possibly this should be back-patched, but since the case has never been
reported from the field, I didn't bother.
2008-01-02 23:34:42 +00:00
Tom Lane
69528aefbb Insert ARST into the list of known timezone abbreviations. 2008-01-02 21:42:00 +00:00
Tom Lane
baecbb9165 Fix plpython's overoptimistic caching of information about the rowtype of
a trigger's target table.  The rowtype could change from one call to the
next, so cope in such cases, while avoiding doing repetitive catalog lookups.
Per bug #3847 from Mark Reid.

Backpatch to 8.2.x.  Likely this fix should go further back, but I can't test
it because I no longer have a machine with a pre-2.5 Python installation.
(Maybe we should rethink that idea about not supporting Python 2.5 in the
older branches.)
2008-01-02 03:10:27 +00:00
Bruce Momjian
14b5eaa236 Correct two more copyrights found by updated script. 2008-01-02 02:42:06 +00:00
Bruce Momjian
be6c3b5c2b Modify copyright script to handle cases where there is only one year
in the copyright
2008-01-02 02:36:18 +00:00
Tom Lane
1af45f1d35 Update time zone data files to tzdata release 2007k. 2008-01-01 20:45:10 +00:00
Tom Lane
ce9baa06f0 Fix some missed copyright updates. 2008-01-01 20:31:21 +00:00
Bruce Momjian
9098ab9e32 Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
Tom Lane
ac1ae9f2fa Improve a number of elog messages for not-supposed-to-happen cases in btrees,
since these seem to happen after all in corrupted indexes.  Make sure we
supply the index name in all cases, and provide relevant block numbers where
available.  Also consistently identify the index name as such.

Back-patch to 8.2, in hopes that this might help Mason Hale figure out his
problem.
2007-12-31 04:52:05 +00:00
Andrew Dunstan
7284dfe42c Add sanity check to ensure delimiter and quote are different in CSV mode 2007-12-30 14:46:52 +00:00
Peter Eisentraut
eea8efe50d may -> might 2007-12-28 12:32:56 +00:00
Michael Meskes
332bed8c6b Sorry, hit the wrong button with my last commit. Here's the correct changelog:
Applied patch send by ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp> to fix bug in connect statement if user name is a variable.
Also fixed test case that didn't detect this.
2007-12-28 11:30:54 +00:00
Michael Meskes
2f86ab7733 *** empty log message *** 2007-12-28 11:25:21 +00:00
Tom Lane
5233dc15cf Improve consistency of error reporting in GUC assign_hook routines. Some
were reporting ERROR for interactive assignments and LOG for other cases,
some were saying nothing for non-interactive cases, and a few did yet other
things.  Make them use a new function GUC_complaint_elevel() to establish
a reasonably uniform policy about how to report.  There are still a few
edge cases such as assign_search_path(), but it's much better than before.
Per gripe from Devrim Gunduz and subsequent discussion.

As noted by Alvaro, it'd be better to fold these custom messages into the
standard "invalid parameter value" complaint from guc.c, perhaps as the DETAIL
field.  However that will require more redesign than seems prudent for 8.3.
This is a relatively safe, low-impact change that we can afford to risk now.
2007-12-28 00:23:23 +00:00
Tom Lane
2e4cb7082c Disallow digits and lower-case ASCII letters as the delimiter in non-CSV
COPY.  We need a restriction here because when the delimiter occurs as a
data character, it is emitted with a backslash, and that will only work
as desired if CopyReadAttributesText() will interpret the backslash sequence
as representing the second character literally.  This is currently untrue
for 'b', 'f', 'n', 'r', 't', 'v', 'x', and octal digits.  For future-proofing
and simplicity of explanation, it seems best to disallow a-z and 0-9.
We must also disallow dot, since "\." by itself would look like copy EOF.
Note: "\N" is by default the null print string, so N would also cause a
problem, but that is already tested for.
2007-12-27 18:28:58 +00:00
Tom Lane
f1d1ca9a26 Fix ill-advised usage of x?y:z expressions in errmsg() and errhint() calls.
This prevented gettext from recognizing the strings that need to be
translated.
2007-12-27 17:00:56 +00:00
Tom Lane
16adaf1b80 Swap the order of testing for control characters and for column delimiter in
CopyAttributeOutText(), so that control characters are converted to the
C-style escape sequences even if they happen to be equal to the column
delimiter (as is true by default for tab, for example).  Oversight in my
previous patch to restore pre-8.3 behavior of COPY OUT escaping.  Per report
from Tomas Szepe.
2007-12-27 16:45:22 +00:00
Peter Eisentraut
f5f1355dc4 Wording improvements 2007-12-27 13:02:48 +00:00
Bruce Momjian
012786aa1e Update find_typedefs to handle simple 'typedef X' cases, per request
from Tom.
2007-12-21 21:02:41 +00:00
Michael Meskes
51a5921dcc Fixed a few minor glitches pointed out by splint. 2007-12-21 14:33:20 +00:00
Bruce Momjian
7b009a2a9d Modify pgindent to use an external typedefs file rather than included
list.

Remove pgjindent.
2007-12-21 14:20:36 +00:00
Magnus Hagander
3f7f9f594b libpq needs pgsleep on win32 because of the changes to port/open.c. 2007-12-21 09:03:31 +00:00
Magnus Hagander
120d7e18e7 On win32, loop when opening files if sharing- och lock-violation errors
occur. Hopefully, this will make it possible to recover from broken
antivirus and/or backup software that locks our files.
2007-12-20 20:27:53 +00:00
Tom Lane
ef6bac3323 When given a nonzero column number, pg_get_indexdef() is only supposed to
print the index key variable or expression for that column.  It was mistakenly
printing ASC/DESC/NULLS FIRST/NULLS LAST decoration too --- and not only for
the target column, but all columns.  Someday we should have an option to
extract that info (and the opclass decoration as well) for a single index
column ... but today is not that day.  Per bug #3829 and subsequent
discussion.
2007-12-20 00:23:19 +00:00
Magnus Hagander
1b1f7e977b Remove unnecessary logo output from msbuild when cleaning ecpg regression
test outputs.
2007-12-19 12:31:35 +00:00
Magnus Hagander
0a6ac0085c Make all msvc build scripts use buildenv.pl, not buildenv.bat.
Andrew Dunstan
2007-12-19 12:29:36 +00:00
Andrew Dunstan
3f2b1db240 Fix thinko in encoding check for chr() 2007-12-18 18:01:48 +00:00
Tom Lane
5335fabe8c Make archiver process report its progress in PS display. Per
proposal by Simon Riggs, though not exactly his patch.
2007-12-18 00:49:34 +00:00
Tom Lane
dbc632eb37 Make path_recv() and poly_recv() reject paths/polygons containing no points.
The zero-point case is sensible so far as the data structure is concerned,
so maybe we ought to allow it sometime; but right now the textual input
routines for these types don't allow it, and it seems that not all the
functions for the types are prepared to cope.
Report and patch by Merlin Moncure.
2007-12-18 00:04:08 +00:00
Bruce Momjian
812bf6984b Mention use all configure options when getting pgindent typedefs. 2007-12-17 02:02:48 +00:00
Bruce Momjian
55cfdd4400 Mention installing /contrib libraries for pgindent. 2007-12-17 01:56:43 +00:00
Magnus Hagander
8621c2f6e8 Get dllwrap name from variable instead of hardcoded.
Per complaint from Richard Evans
2007-12-15 16:21:35 +00:00
Peter Eisentraut
5ca3d50db7 Clarify log messages 2007-12-13 11:55:44 +00:00
Bruce Momjian
cede2491b8 Mark items needing updating for beta stamping. 2007-12-13 02:02:20 +00:00
Tom Lane
df4271fedd Improve the method of localizing column names and other fixed strings in
psql's \d commands and other uses of printQuery().  Previously we would pass
these strings through gettext() and then send them to the server as literals
in the SQL query.  But the code was not set up to handle doubling of quotes in
the strings, causing failure if a translation attempted to use the wrong kind
of quote marks, as indeed is now the case for (at least) the French
translation of \dFp.  Another hazard was that gettext() would translate to
whatever encoding was implied by the client's LC_CTYPE setting, which might be
different from the client_encoding setting, which would probably cause the
server to reject the query as mis-encoded.  The new arrangement is to send the
untranslated ASCII strings to the server, and do the translations inside
printQuery() after the query results come back.  Per report from Guillaume
Lelarge and subsequent discussion.
2007-12-12 21:41:47 +00:00
Tom Lane
286049dbe4 Clean up unportable attempt to use #if inside a macro call, also
faulty code in third arm of #if.  Per buildfarm reports.
2007-12-12 16:53:14 +00:00
Peter Eisentraut
a3382de954 Provide a more accurate, detailed log message when the archive command fails. 2007-12-12 09:39:54 +00:00
Alvaro Herrera
230e8962f3 Make CSV column ordering a bit more logical. 2007-12-11 20:07:31 +00:00
Tom Lane
1ebff9ba81 Make documentation of -W options more accurate and uniform. 2007-12-11 19:57:32 +00:00
Tom Lane
1161f1ae14 Remove the long-deprecated -u option from psql, since it does nothing very
useful and confuses people who think it is the same as -U.  (Eventually
we might want to re-introduce it as being an alias for -U, but that should
not happen until the switch has actually not been there for a few releases.)
Likewise in pg_dump and pg_restore.  Per gripe from Robert Treat and
subsequent discussion.
2007-12-11 19:01:06 +00:00
Alvaro Herrera
3bf66d6f1c Extend the format of CSV logs to include the additional information supplied
with the logged event.  CSV logs are now a first-class citizen along plain
text logs in that they carry much of the same information.

Per complaint from depesz on bug #3799.
2007-12-11 15:19:05 +00:00
Magnus Hagander
22867ab986 Use _USE_32BIT_TIME_T when building with MSVC. Also, enforce that it's
used when building addons.

Dave Page
2007-12-11 14:34:43 +00:00
Tom Lane
82ca4d0210 Fix attribution for Rime of the Ancient Mariner (obviously it's been
too long since freshman English :-()
2007-12-10 00:12:31 +00:00
Tom Lane
71e90b0df2 The E. J. Pratt verse used as a tsearch test case is unfortunately still
under copyright in the US and many other places.  Substitute a little
something from a poet who's more safely dead.  Per gripe from Bjorn Munch.
2007-12-09 21:01:18 +00:00
Tom Lane
e8191d9f23 Fix bogus prompt for password in -u case. Per gripe from Robert Treat. 2007-12-09 19:04:47 +00:00
Tom Lane
4f9bf7fc5a Fix up the PQconnectionUsedPassword mess: create a separate
PQconnectionNeedsPassword function that tells the right thing for whether to
prompt for a password, and improve PQconnectionUsedPassword so that it checks
whether the password used by the connection was actually supplied as a
connection argument, instead of coming from environment or a password file.
Per bug report from Mark Cave-Ayland and subsequent discussion.
2007-12-09 19:01:40 +00:00
Tom Lane
9fd8843647 Fix mergejoin cost estimation so that we consider the statistical ranges of
the two join variables at both ends: not only trailing rows that need not be
scanned because there cannot be a match on the other side, but initial rows
that will be scanned without possibly having a match.  This allows a more
realistic estimate of startup cost to be made, per recent pgsql-performance
discussion.  In passing, fix a couple of bugs that had crept into
mergejoinscansel: it was not quite up to speed for the task of estimating
descending-order scans, which is a new requirement in 8.3.
2007-12-08 21:05:11 +00:00
Peter Eisentraut
cac82bb20c Realign the running text in this file to 79 characters wide. Some other
copy-editing.
2007-12-07 16:44:56 +00:00
Magnus Hagander
a0c4ac77ad Disable asserts by default on msvc build (to make it the same
as in unix)
2007-12-06 17:07:37 +00:00
Alvaro Herrera
59c841506c Change wording of logged message when cancelling an autovacuum task, using
american speling (unlike this commit message).  Per complaint from Mike C. on
bug #3790 and subsequent discussion.
2007-12-06 14:32:54 +00:00
Magnus Hagander
024014a448 Don't send an empty SSPI negotiation packet at the end of the negotiation.
Fixes bug #3750
2007-12-04 13:02:53 +00:00
Tom Lane
f538329f9d Fix build_minmax_path() to cope if an IS NULL clause turns up in the
indexable-clauses list for a btree index.  Formerly it just Asserted that
all such clauses were opclauses, but that's no longer true in 8.3.
Per bug #3796 from Matthias Schoeneich.
2007-12-03 22:37:17 +00:00
Magnus Hagander
739338e88a Default to integer timestamps being off until 8.4, to correspond
to the settings used for other platforms.
2007-12-03 17:17:05 +00:00
Magnus Hagander
8aa318c631 Don't try to install README.spi
Hannes Eder
2007-12-03 15:42:58 +00:00
Tom Lane
01434d41d4 Stamp 8.3beta4. 2007-12-03 00:11:01 +00:00
Tom Lane
a63b63ff96 Revert COPY OUT to follow the pre-8.3 handling of ASCII control characters,
namely that \r, \n, \t, \b, \f, \v are dumped as those two-character
representations rather than a backslash and the literal control character.
I had made it do the other to save some code, but this was ill-advised,
because dump files in which these characters appear literally are prone to
newline mangling.  Fortunately, doing it the old way should only cost a few
more lines of code, and not slow down the copy loop materially.
Per bug #3795 from Lou Duchez.
2007-12-03 00:03:05 +00:00
Tom Lane
265f904d8f Code review for LIKE ... INCLUDING INDEXES patch. Fix failure to propagate
constraint status of copied indexes (bug #3774), as well as various other
small bugs such as failure to pstrdup when needed.  Allow INCLUDING INDEXES
indexes to be merged with identical declared indexes (perhaps not real useful,
but the code is there and having it not apply to LIKE indexes seems pretty
unorthogonal).  Avoid useless work in generateClonedIndexStmt().  Undo some
poorly chosen API changes, and put a couple of routines in modules that seem
to be better places for them.
2007-12-01 23:44:44 +00:00
Tom Lane
ba9da684b5 Suppress compiler warnings in recent plperl patch. Avoid uselessly expensive
lookup of the well-known OID of textout().
2007-12-01 17:58:42 +00:00
Andrew Dunstan
b8f28759d4 Revert inadvertantly committed change. 2007-12-01 15:30:09 +00:00
Andrew Dunstan
6e73b50449 Workaround for perl problem where evaluating UTF8 regexes can cause
implicit loading of modules, thereby breaking Safe rules.
We compile and call a tiny perl function on trusted interpreter init, after which
the problem does not occur.
2007-12-01 15:20:34 +00:00
Tom Lane
895a94de6d Avoid incrementing the CommandCounter when CommandCounterIncrement is called
but no database changes have been made since the last CommandCounterIncrement.
This should result in a significant improvement in the number of "commands"
that can typically be performed within a transaction before hitting the 2^32
CommandId size limit.  In particular this buys back (and more) the possible
adverse consequences of my previous patch to fix plan caching behavior.

The implementation requires tracking whether the current CommandCounter
value has been "used" to mark any tuples.  CommandCounter values stored into
snapshots are presumed not to be used for this purpose.  This requires some
small executor changes, since the executor used to conflate the curcid of
the snapshot it was using with the command ID to mark output tuples with.
Separating these concepts allows some small simplifications in executor APIs.

Something for the TODO list: look into having CommandCounterIncrement not do
AcceptInvalidationMessages.  It seems fairly bogus to be doing it there,
but exactly where to do it instead isn't clear, and I'm disinclined to mess
with asynchronous behavior during late beta.
2007-11-30 21:22:54 +00:00
Tom Lane
f0f18c7087 Repair bug that allowed RevalidateCachedPlan to attempt to rebuild a cached
plan before the effects of DDL executed in an immediately prior SPI operation
had been absorbed.  Per report from Chris Wood.

This patch has an unpleasant side effect of causing the number of
CommandCounterIncrement()s done by a typical plpgsql function to
approximately double.  Amelioration of the consequences of that
will be undertaken in a separate patch.
2007-11-30 18:38:34 +00:00
Magnus Hagander
7c43106db2 Add win32error.c to libpq, needed to resolve _dosmaperr. 2007-11-30 16:21:19 +00:00
Magnus Hagander
35736874f9 Use _dosmaperr() to deal with errors opening files in pgwin32_open().
Per complaint from Alvaro and subsequent discussion.
2007-11-30 11:16:43 +00:00
Peter Eisentraut
42a0c88ead Translation updates 2007-11-29 08:50:36 +00:00
Tom Lane
bb0e3011f8 Make a cleanup pass over error reports in tsearch code. Use ereport
for user-facing errors, fix some poor choices of errcode, adhere to
message style guide.
2007-11-28 21:56:30 +00:00
Tom Lane
03ffc4d6d5 Improve test coverage of CLOBBER_CACHE_ALWAYS by having it also force
reloading of operator class information on each use of LookupOpclassInfo.
Had this been in place a year ago, it would have helped me find a bug
in the then-new 'operator family' code.  Now that we have a build farm
member testing CLOBBER_CACHE_ALWAYS on a regular basis, it seems worth
expending a little bit of effort here.
2007-11-28 20:44:26 +00:00
Tom Lane
11fccbeaeb Adjust the names of a couple of tsearch index support functions that had
inappropriately generic-sounding names.  This is more or less free since
we already forced initdb for the next beta, and it may prevent confusion or
name conflicts (particularly at the C-global-symbol level) down the road.
Per my proposal yesterday.
2007-11-28 19:33:05 +00:00
Tom Lane
d54ca56743 Install a lookaside cache to speed up repeated lookups of the same operator
by short-circuiting schema search path and ambiguous-operator resolution
computations.  Remarkably, this buys as much as 45% speedup of repetitive
simple queries that involve operators that are not an exact match to the
input datatypes.  It should be marginally faster even for exact-match
cases, though I've not had success in proving an improvement in benchmark
tests.  Per report from Guillame Smet and subsequent discussion.
2007-11-28 18:47:56 +00:00
Peter Eisentraut
a238bd146d Proper capitalization of Ispell 2007-11-28 15:42:46 +00:00
Peter Eisentraut
96ee6ff502 Fix XML Schema structure for char types without length (bug #3782) 2007-11-28 14:01:51 +00:00
Peter Eisentraut
2609345c85 Improve terminology 2007-11-28 13:30:36 +00:00
Peter Eisentraut
178c78c79f Fix typo 2007-11-28 13:30:16 +00:00
Peter Eisentraut
3f9ef2bf8c Properly recognize and announce input errors. 2007-11-28 09:17:46 +00:00
Bruce Momjian
43e082fc98 Change a stop word on the right-hand-side in the thesaurus file to be an
ERROR, not NOTICE.
2007-11-28 04:24:38 +00:00
Tom Lane
a54d3fb2e6 Fix plpgsql to not lookup block labels except in contexts where a block label
is sane (eg, EXIT argument or first part of a qualified identifier), and cause
more-closely-nested record variables to take precedence over outer block
labels.  This cures the breakage exhibited by Marko Kreen that 8.3 no longer
allowed a function's name to be used for a variable within the function, and
makes plpgsql's handling of block labels more like Oracle's.  It's important
to fix this now because we are documenting the use of block labels as variable
qualifiers for the first time in 8.3.
2007-11-27 19:58:44 +00:00
Tom Lane
42fd80de53 Fix pg_regress to check the directory it is actually reading files from,
not the image that (theoretically) should exist in the current directory.

Jørgen Austvik
2007-11-27 19:13:30 +00:00
Tom Lane
3f89964234 Add quote_literal(anyelement) to preserve (and, in fact, extend) a
useful consequence of the former liberal implicit casting to text;
namely that you can feed non-string values to quote_literal() and get
unsurprising results.  Per discussion.
2007-11-27 18:29:11 +00:00
Tom Lane
66d7bbf674 Suppress compiler warning. 2007-11-27 18:13:01 +00:00
Peter Eisentraut
7888b52076 Make casts from xml to text independent of the XML option setting, thus
immutable and indexable.  Also fix the volatility settings of some other
XML-related functions.
2007-11-27 12:21:05 +00:00
Peter Eisentraut
542d04e179 correct capitalization 2007-11-27 12:17:27 +00:00
Tom Lane
07daff63c5 Fix select_common_type() so that it can select a domain type, if all inputs
to a UNION, CASE, or related construct are of the same domain type.  The
main part of this routine smashes domains to their base types, which seems
necessary because the logic involves TypeCategory() and IsPreferredType(),
neither of which work usefully on domains.  However, we can add a first
pass that just detects whether all the inputs are exactly the same type,
and if so accept that without question (so long as it's not UNKNOWN).
Per recent gripe from Dean Rasheed.

In passing, remove some tests for InvalidOid, which have clearly been dead
code for quite some time now, because getBaseType() would fail on that input.

Also, clarify the manual's not-very-precise description of the existing
algorithm's behavior.
2007-11-26 16:46:51 +00:00
Andrew Dunstan
5575826b70 Allow for X as well as x to be the prefix for hexadecimal character ref entity numbers,
as in HTML.
2007-11-25 19:35:41 +00:00
Andrew Dunstan
3de1f0daac Fix XML tag namespace change inadvertantly missed from previous fix. Add
regression test for XML names and numeric entities.
2007-11-25 15:37:11 +00:00
Peter Eisentraut
a999ff63ff Use double quotes for quoting xml attributes. 2007-11-25 12:08:11 +00:00
Tom Lane
66b1f4daa8 Fix thinko in comment. 2007-11-25 02:09:46 +00:00
Tom Lane
86be19bf70 Reduce routine successful-archiving message from LOG to DEBUG1 grade,
to reduce chattiness of logs.  Per discussion.
Simon Riggs
2007-11-24 21:37:04 +00:00
Tom Lane
ae3ff7adf7 Fix (I think) broken usage of MultiByteToWideChar. I had missed the
subtlety that this function only returns a null terminator if it's
fed input that includes one; which, in the usage here, it's not.
This probably fixes bugs reported by Thomas Haegi.
2007-11-24 21:20:07 +00:00
Tom Lane
0f20e7a83e Slightly more paranoia and slightly better comments for use of
Windows-specific MultiByteToWideChar/WideCharToMultiByte calls.
2007-11-24 21:16:55 +00:00
Tom Lane
ffd8721228 Add missed entry for new money regression test. 2007-11-24 20:41:35 +00:00
Tom Lane
229d406a9b Move resetting of currSchema to a spot where it's not vulnerable to getting
missed in possible future partial-drop scenarios.  Improve comment.
Per report from Zoltan Boszormenyi.
2007-11-24 20:26:49 +00:00
D'Arcy J.M. Cain
03debe19a7 Add regression tests for MONEY type. 2007-11-24 19:49:23 +00:00
Tom Lane
aca467b9b3 Save another little bit of planner overhead on simple queries, by having
clauselist_selectivity skip some analysis that's useless when there's only
one clause in the given list.  Actually this can win even for not-so-simple
queries, because we also apply clauselist_selectivity to sublists such as the
quals matching an index; which are likely to have only a single entry even
when the total query is quite complicated.
2007-11-24 19:08:51 +00:00
Bruce Momjian
7ebbc815d9 If pg_dump drops a schema, make sure 'search_path' it SET the next time
it is needed --- basically don't remember the previous 'search_path'
after a drop schema because it might have failed but be created later.
2007-11-24 17:45:32 +00:00
Bruce Momjian
8a52d0c94d Clarify how MONEY trims off trailing thousands separator. 2007-11-24 16:18:48 +00:00
Bruce Momjian
5f128d5fe8 Make the MONEY data type have a thousands separator != decimal symbol,
if the locale has the thousands separator as "".  This now matches the
to_char and psql numericlocale behavior.  (Previously this data type was
basically useless for such setups.)
2007-11-24 15:28:02 +00:00
Bruce Momjian
0d072761d3 Borland BCC does not support SSPI, per cnliou9@fastmail.fm. 2007-11-24 01:55:26 +00:00
Bruce Momjian
7a1b72f6ef Borland CC 5.5.1 needs ssize_t, per cnliou9@fastmail.fm. 2007-11-24 01:32:48 +00:00
Tom Lane
a36436ea3f Change fix_scan_expr() to avoid copying the input node tree in the common case
where rtoffset == 0.  In that case there is no need to change Var nodes,
and since filling in unset opfuncid fields is always safe, scribbling on the
input tree to that extent is not objectionable.  This brings the cost of this
operation back down to what it was in 8.2 for simple queries.  Per
investigation of performance gripe from Guillaume Smet.
2007-11-24 00:39:44 +00:00
Tom Lane
92c0bf0960 Avoid uselessly building a duplicate of the original clause in trivial cases
where the EquivalenceClass machinery is unable to deduce anything more from a
simple "var = const" qual clause.  There are probably some more cases where
this could be done, but this seems to take care of most of the added overhead
for simple queries.  Per gripe from Guillaume Smet.

In passing, fix a problem that was exposed by this change:
reconsider_outer_join_clause and friends were passing the wrong relids to
build_implied_join_equality, resulting in RestrictInfos with the wrong
required_relids.  This mistake was masked in typical cases since the bogus
RestrictInfos would never have escaped from the EquivalenceClass machinery,
but I think there might be corner cases involving "broken" ECs where there
would have been a visible failure even without the new optimization.  In any
case the code was certainly not operating as intended.
2007-11-23 19:57:44 +00:00
Bruce Momjian
335d9aff6f Fix white space in MONEY type code. Rename 'comma' to more generic
'ssymbol' as used in previous function.
2007-11-23 19:54:39 +00:00
Alvaro Herrera
558c9270c4 Fix buggy usage of vsnprintf in PL/Python by removing it altogether, instead
relying on stringinfo.c.  This fixes a problem reported by Marko Kreen, but I
didn't use his patch, per subsequent discussion.
2007-11-23 01:46:34 +00:00
Tom Lane
ef48ed4c86 Actually ... it's pretty silly that parse_oper.c doesn't set up the
opfuncid of an OpExpr initially, considering that it has the information
at hand already.  We'll still treat opfuncid as a cache rather than a
guaranteed-valid value, but this change saves one more syscache lookup
in the normal code path.
2007-11-22 19:40:25 +00:00
Tom Lane
6342f36d87 Save one syscache lookup when examining volatility or strictness of
OpExpr and related nodes.  We're going to have to set the opfuncid of
such nodes eventually (if we haven't already), so we might as well
exploit the opportunity to cache the function OID.  Buys back some
of the extra planner overhead noted by Guillaume Smet, though I still
need to fool with equivclass.c to really respond to that.
2007-11-22 19:09:23 +00:00
Bruce Momjian
b85cf684f7 Add more comments about thousands separator handling. 2007-11-22 17:51:39 +00:00
Tom Lane
f608f3b87b Prevent Perl from introducing a possibly-incompatible definition of type
"bool" into plperl.c.  This has always been a hazard since Perl allows a
platform-specific choice to define bool as int rather than char, but
evidently this didn't happen on any platform we support ... until OS X 10.5.
Per report from Brandon Maust.

Back-patch as far as 8.0 --- a bit arbitrary, but it seems unlikely anyone
will be trying to port 7.x onto new platforms.
2007-11-22 17:47:28 +00:00
Bruce Momjian
d9bc7a3946 Add comments about thousands separator logic. 2007-11-22 15:10:05 +00:00
Bruce Momjian
64e0d32133 WSATYPE_NOT_FOUND was already defined for BCC so don't redefine it
(conflicting values).
2007-11-21 23:13:36 +00:00
Bruce Momjian
d65b42b85b Fix build of libpq for Borland CC. 2007-11-21 23:03:44 +00:00
Bruce Momjian
3894e7cc55 When setting default thousands separator when locale has "", use logic
so new thousands separator doesn't match decimal symbol.
2007-11-21 22:28:18 +00:00
Bruce Momjian
6f3149e464 Fix typo in comment. 2007-11-21 21:49:22 +00:00
Tom Lane
d23ba77a44 Fix bogus length calculation that could lead to crash if the string
happened to be right up against the end of memory, per report from
Matt Magoffin.  While at it, avoid useless multiple copying of string
by not depending on xmlStrncatNew.
2007-11-20 23:14:41 +00:00
Bruce Momjian
09a98e61c3 Fix pg_ctl -t to register -t value, per Alvaro. 2007-11-20 19:24:26 +00:00
Andrew Dunstan
1157f3cc81 Change descriptions of entity and tag objects to "XML entity" and "XML tag".
Allow tag and entity names that follow XML rules. Provide for hexadecimal
as well as decimal numeric entities. Adjust code names to coincide with
new descriptions.
2007-11-20 02:25:22 +00:00
Bruce Momjian
eeb8677761 Update comment. 2007-11-19 23:48:33 +00:00
Bruce Momjian
3b65c3b2e7 Add comment about COMMENT ON DATABASE failing for differently-named
databases.
2007-11-19 18:44:06 +00:00
Tom Lane
6f4cfe48ac Improve GIN index build's tracking of memory usage by using
GetMemoryChunkSpace, not just the palloc request size.  This brings the
allocatedMemory counter close enough to reality (as measured by
MemoryContextStats printouts) that I think we can get rid of the arbitrary
factor-of-2 adjustment that was put into the code initially.  Given the
sensitivity of GIN build to work memory size, not using as much of work
memory as we're allowed to seems a pretty bad idea.
2007-11-16 21:55:59 +00:00
Tom Lane
16dcd5e5ce GIN index build's allocatedMemory counter needs to be long, not uint32.
Else, in a 64-bit machine with maintenance_work_mem set to above 4Gb,
the counter overflows and we never recognize having reached the
maintenance_work_mem limit.  I believe this explains out-of-memory
failure recently reported by Sean Davis.

This is a bug, so backpatch to 8.2.
2007-11-16 21:50:06 +00:00
Alvaro Herrera
015794541d Fix inconsistent message wording, and split off a couple of duplicated strings. 2007-11-16 21:47:32 +00:00
Tom Lane
93190c3098 Repair still another bug in the btree page split WAL reduction patch:
it failed for splits of non-leaf pages because in such pages the first
data key on a page is suppressed, and so we can't just copy the first
key from the right page to reconstitute the left page's high key.
Problem found by Koichi Suzuki, patch by Heikki.
2007-11-16 19:53:50 +00:00
Teodor Sigaev
a867b40cf4 Fix tsvectorout() and tsqueryout() to escape backslesh, add test of that.
Patch by Bruce Momjian <bruce@momjian.us>

Backpatch is needed, but it's impossible to apply it directly
2007-11-16 15:05:59 +00:00
Marc G. Fournier
2a174e45dd update files for beta3 2007-11-16 04:29:45 +00:00
Bruce Momjian
f639df0d61 Small comment spacing improvement. 2007-11-16 01:51:22 +00:00
Bruce Momjian
d6fda1b0bb Better guard token used by pgindent. 2007-11-16 01:25:15 +00:00
Bruce Momjian
5f0bf6cb0d Run pgindent on remaining files now that LOOPBYTE is a usable macro. 2007-11-16 01:12:24 +00:00
Bruce Momjian
0c2c061eb0 Cleanup for new else/comment handling. 2007-11-16 01:11:04 +00:00
Tom Lane
eae7e00f1f Fix stupid typo in recently-added code :-( 2007-11-16 00:57:55 +00:00
Bruce Momjian
224f91f66d Modify LOOPBYTE/LOOPBIT macros to be more logical; rather than have the
for() body passed as a parameter, make the macros act as simple headers
to code blocks.

This allows pgindent to be run on these files.
2007-11-16 00:13:02 +00:00
Bruce Momjian
7d4c99b414 Fix pgindent to properly handle 'else' and single-line comments on the
same line;  previous fix was only partial.  Re-run pgindent on files
that need it.
2007-11-15 23:23:44 +00:00
Bruce Momjian
f6e8730d11 Re-run pgindent with updated list of typedefs. (Updated README should
avoid this problem in the future.)
2007-11-15 22:25:18 +00:00
Bruce Momjian
da0b2cdff8 Beef up README instructions, again. 2007-11-15 22:15:46 +00:00
Bruce Momjian
6c8f69cd58 CUpdate README to suggest 'gmake distclean'. Add library typedefs. 2007-11-15 22:12:09 +00:00
Bruce Momjian
2a754d70d7 Update pgtools README to be clearer about typdefs. 2007-11-15 22:09:07 +00:00
Bruce Momjian
ab895f3b40 Update pgindent with current typedefs. 2007-11-15 22:06:07 +00:00
Peter Eisentraut
b30769ee54 When logging the recovery.conf parameters, show them quoted as they would
appear in the configuration file.
2007-11-15 22:02:12 +00:00
Bruce Momjian
1f735c32b2 Add blank lines to pgindent. 2007-11-15 21:52:39 +00:00
Tom Lane
591b9b091c Use ftruncate() not truncate() in mdunlink. Seems Windows doesn't
support the latter.
2007-11-15 21:49:47 +00:00
Tom Lane
d788c922d7 Update timezone data files to release 2007i of the zic database. 2007-11-15 21:21:14 +00:00
Bruce Momjian
fdf5a5efb7 pgindent run for 8.3. 2007-11-15 21:14:46 +00:00
Peter Eisentraut
3adc760fb9 Translation updates 2007-11-15 20:38:15 +00:00
Tom Lane
6cc4451b5c Prevent re-use of a deleted relation's relfilenode until after the next
checkpoint.  This guards against an unlikely data-loss scenario in which
we re-use the relfilenode, then crash, then replay the deletion and
recreation of the file.  Even then we'd be OK if all insertions into the
new relation had been WAL-logged ... but that's not guaranteed given all
the no-WAL-logging optimizations that have recently been added.

Patch by Heikki Linnakangas, per a discussion last month.
2007-11-15 20:36:40 +00:00
Peter Eisentraut
166f67cebe Message improvements 2007-11-15 20:04:38 +00:00
Peter Eisentraut
e2776a0820 Add to synopsis that timeout option also applies to stop mode 2007-11-15 19:40:31 +00:00
Peter Eisentraut
e4c26b03bf Make help synopsis consistent 2007-11-15 19:35:26 +00:00
Peter Eisentraut
c938a4ea8d Make synopses of -t option consistent 2007-11-15 18:37:23 +00:00
Tom Lane
866bad9543 Add a rank/(rank+1) normalization option to ts_rank(). While the usefulness
of this seems a bit marginal, if it's useful enough to be shown in the manual
then we probably ought to support doing it without double evaluation of the
ts_rank function.  Per my proposal earlier today.
2007-11-14 23:43:27 +00:00
Tom Lane
5858990f87 Fix incorrect calculation of elapsed_xlogs. Itagaki Takahiro 2007-11-14 21:19:18 +00:00
Tom Lane
ca450a07ee Add an Accept parameter to "simple" dictionaries. The default of true
gives the old behavior; selecting false allows the dictionary to be used
as a filter ahead of other dictionaries, because it will pass on rather
than accept words that aren't in its stopword list.
Jan Urbanski
2007-11-14 18:36:37 +00:00
Tom Lane
b40c0a4bb0 Clean up some stray references to tsearch2. 2007-11-13 23:36:26 +00:00
Tom Lane
07c23731f2 contrib/tsearch2 need not be special-cased any longer. 2007-11-13 22:49:47 +00:00
Tom Lane
4394c1b09c Resurrect the code for the rewrite(ARRAY[...]) aggregate function,
and put it into contrib/tsearch2 compatibility module.
2007-11-13 22:14:50 +00:00
Tom Lane
1ef648cfbc I find that an out-of-the-box installation of OSSP uuid 1.6.0 installs
itself as libuuid, not libossp-uuid which was the only case expected by
our build support.  Install a configure test to determine which name
to use (and to check that the library is present at all).
2007-11-13 00:13:19 +00:00
Tom Lane
0bd4da23a4 Ensure that typmod decoration on a datatype name is validated in all cases,
even in code paths where we don't pay any subsequent attention to the typmod
value.  This seems needed in view of the fact that 8.3's generalized typmod
support will accept a lot of bogus syntax, such as "timestamp(foo)" or
"record(int, 42)" --- if we allow such things to pass without comment,
users will get confused.  Per a recent example from Greg Stark.

To implement this in a way that's not very vulnerable to future
bugs-of-omission, refactor the API of parse_type.c's TypeName lookup routines
so that typmod validation is folded into the base lookup operation.  Callers
can still choose not to receive the encoded typmod, but we'll check the
decoration anyway if it's present.
2007-11-11 19:22:49 +00:00
Bruce Momjian
6e414a171e Add pg_ctl -t/timeout parameter to control amount of time to wait for
start/shutdown.
2007-11-10 21:48:51 +00:00
Tom Lane
2b477a2c73 Add missing closing / in xsd:restriction, and remove some unnecessary
spaces for consistency.  Per bug #3734 from Ben Leslie; fix by
Euler Taveira de Oliveira.
2007-11-10 19:29:54 +00:00
Tom Lane
d2d52bbb55 xmlGetUTF8Char()'s second argument is both input and output. Fix
uninitialized value, and avoid invoking the function nine separate
times in the pg_xmlIsNameChar macro.  Should resolve buildfarm failures.
Per report from Ben Leslie.
2007-11-10 18:51:20 +00:00
Bruce Momjian
d009992ba3 Have text search thesaurus files use "?" for stop words.
Throw an error for actual stop words, rather than a warning.  This fixes
problems with cache reloading causing warning messages.

Re-enable stop words in regression tests;  was disabled by Tom.

Document "?" as API change.
2007-11-10 15:39:34 +00:00
Bruce Momjian
82748bc253 Reduce error level of ROLLBACK outside a transaction from WARNING to
NOTICE.
2007-11-10 14:36:44 +00:00
Tom Lane
e5fe2e84d7 Recognize RETURN QUERY via a textual test, so that QUERY doesn't need to be
a plpgsql keyword.  This avoids springing a new reserved word on plpgsql
programmers.
For consistency, handle RETURN NEXT the same way.
2007-11-09 23:58:32 +00:00
Tom Lane
0833081125 Add an expected-results file to get regression to pass cleanly in sv_SE
locale, which sorts a bit differently.  Per recent gripe from Magnus.
2007-11-09 22:52:08 +00:00
Tom Lane
654dcfb9e4 Clean up ts_locale.h/.c. Fix broken and not-consistent-across-platforms
behavior of wchar2char/char2wchar; this should resolve bug #3730.  Avoid
excess computations of pg_mblen in t_isalpha and friends.  Const-ify
APIs where possible.
2007-11-09 22:37:35 +00:00
Tom Lane
a96fa85025 Second pass at improving LIKE/regex estimation in non-C locales. It turns
out that it's actually quite likely that a string that is an extension of
the given prefix will sort as larger than the "greater" string our previous
code created.  To provide some defense against that, do the comparisons
against a modified string instead of just the bare prefix.  We tack on
"Z", "z", "y", or "9", whichever is seen as largest in the current locale.
Testing suggests that this is sufficient at least for cases involving
ASCII data.
2007-11-09 20:10:02 +00:00
Magnus Hagander
4b606ee444 Add parameter krb_realm used by GSSAPI, SSPI and Kerberos
to validate the realm of the connecting user. By default
it's empty meaning no verification, which is the way
Kerberos authentication has traditionally worked in
PostgreSQL.
2007-11-09 17:31:07 +00:00
Peter Eisentraut
8db43db01e Allow XML processing instructions starting with "xml" while prohibiting
those being exactly "xml".  Bug #3735 from Ben Leslie
2007-11-09 15:52:51 +00:00
Bruce Momjian
3991c3fb2b In tsearch code, remove !(A && B) via restructuring, for clarity 2007-11-09 01:32:22 +00:00
Tom Lane
c293ba9eff If an index depends on no columns of its table, give it a dependency on the
whole table instead, to ensure that it goes away when the table is dropped.
Per bug #3723 from Sam Mason.

Backpatch as far as 7.4; AFAICT 7.3 does not have the issue, because it doesn't
have general-purpose expression indexes and so there must be at least one
column referenced by an index.
2007-11-08 23:22:54 +00:00
Tom Lane
c291203ca3 Fix EquivalenceClass code to handle volatile sort expressions in a more
predictable manner; in particular that if you say ORDER BY output-column-ref,
it will in fact sort by that specific column even if there are multiple
syntactic matches.  An example is
	SELECT random() AS a, random() AS b FROM ... ORDER BY b, a;
While the use-case for this might be a bit debatable, it worked as expected
in earlier releases, so we should preserve the behavior for 8.3.  Per my
recent proposal.

While at it, fix convert_subquery_pathkeys() to handle RelabelType stripping
in both directions; it needs this for the same reasons make_sort_from_pathkeys
does.
2007-11-08 21:49:48 +00:00
Tom Lane
1be0601681 Last week's patch for make_sort_from_pathkeys wasn't good enough: it has
to be able to discard top-level RelabelType nodes on *both* sides of the
equivalence-class-to-target-list comparison, since make_pathkey_from_sortinfo
might either add or remove a RelabelType.  Also fix the latter to do the
removal case cleanly.  Per example from Peter.
2007-11-08 19:25:37 +00:00
Peter Eisentraut
4c726d5c11 After conferencing again with Bruce, put in more accurate XML error message. 2007-11-08 15:16:45 +00:00
Peter Eisentraut
5412c728b9 Adjust test results for message changes. Darn. 2007-11-08 14:56:37 +00:00
Peter Eisentraut
b5a47f245f Wording changes 2007-11-08 14:47:51 +00:00
Peter Eisentraut
156d648025 Add sentence-ending periods. 2007-11-08 14:47:41 +00:00
Peter Eisentraut
79cff6bc7e Improve error message 2007-11-08 13:12:56 +00:00
Peter Eisentraut
56f9ff72b2 Add missing newlines to error messages, and normalize wording a bit. 2007-11-08 10:37:54 +00:00
Tom Lane
2de946be6a Improve the performance of LIKE/regex estimation in non-C locales, by making
make_greater_string() try harder to generate a string that's actually greater
than its input string.  Before we just assumed that making a string that was
memcmp-greater was enough, but it is easy to generate examples where this is
not so when the locale is not C.  Instead, loop until the relevant comparison
function agrees that the generated string is greater than the input.

Unfortunately this is probably not enough to guarantee that the generated
string is greater than all extensions of the input, so we cannot relax the
restriction to C locale for the LIKE/regex index optimization.  But it should
at least improve the odds of getting a useful selectivity estimate in
prefix_selectivity().  Per example from Guillaume Smet.

Backpatch to 8.1, mainly because that's what the complainant is using...
2007-11-07 22:37:24 +00:00
Tom Lane
9542287123 Fix patternsel() and callers to do the right thing for NOT LIKE and the other
negated-match operators.  patternsel had been using the supplied operator as
though it were a positive-match operator, and thus obtaining a wrong result,
which was even more wrong after the caller subtracted it from 1.  Seems
cleanest to give patternsel an explicit "negate" argument so that it knows
what's going on.  Also install the same factorization scheme for pattern
join selectivity estimators; even though they are just stubs at the
moment, this may keep someone from making the same type of mistake when
they get filled out.  Per report from Greg Mullane.

Backpatch to 8.2 --- previous releases do not show the problem because
patternsel() doesn't actually use the operator directly.
2007-11-07 21:00:37 +00:00
Peter Eisentraut
46c099ce71 Consistent capitalization 2007-11-07 14:07:21 +00:00
Peter Eisentraut
e8c4f4e887 Improve wording 2007-11-07 13:23:20 +00:00
Peter Eisentraut
27d18ffcc0 Error message cleanup 2007-11-07 13:11:05 +00:00
Peter Eisentraut
5f9869d0ee Use "alternative" instead of "alternate" where it is clearer. 2007-11-07 12:24:24 +00:00
Michael Meskes
e9d7bd2650 Fixed two parser bugs. 2007-11-06 08:32:08 +00:00
Tom Lane
5e51297104 Some code review for xml.c:
Add some more xml_init() calls that might not be necessary, but seem like a
good idea to avoid possible problems like we saw in xmlelement().
Fix unsafe assumption that you can keep using the tupledesc of a relcache
entry you don't have open.
Add missing error checks for SearchSysCache failure.
Get rid of handwritten array traversal in xpath() and O(N^2), broken-for-nulls
array access code in map_sql_value_to_xml_value(), in favor of using
deconstruct_array.
Manually adjust a lot of line breaks in places where the code is otherwise
gonna look pretty awful after pg_indent hacks it up (original author seems to
have liked to lay out code for a 200-column window).
2007-11-06 03:06:28 +00:00
Tom Lane
85f807d782 Fix xmlelement() to initialize libxml correctly before using it, and to avoid
assuming that evaluation of its input expressions won't change the state of
libxml.  This requires refactoring xml_init() to not call xmlInitParser(),
since now not all of its callers want that.  I also tweaked things to avoid
repeated execution of one-time-only tests inside xml_init(), though this is
mostly for clarity rather than in hopes of saving any noticeable amount of
runtime.  Per report from Sheikh Amjad and subsequent discussion.
In passing, fix a couple of inadequately schema-qualified queries.
2007-11-05 22:23:07 +00:00
Tom Lane
bcb3852c33 Fix deprecated-by-C-spec usage: storage class should come before const
decoration.  Zdenek Kotala
2007-11-05 20:57:24 +00:00
Tom Lane
df87074092 Improve conversion of legacy CREATE CONSTRAINT TRIGGER representation of
foreign keys, one more time.  Insist on matching up all three triggers before
we create a constraint; this will avoid creation of duplicate constraints
in scenarios where a broken FK constraint was repaired by re-adding the
constraint without removing the old partial trigger set.  Basically, this will
work nicely in all cases where the FK was actually functioning correctly in
the database that was dumped.  It will fail to restore an FK in just one case
where we theoretically could restore it: where we find the referenced table's
triggers and not the referencing table's trigger.  However, in such a scenario
it's likely that the user doesn't even realize he still has an FK at all
(since the more-likely-to-fail cases aren't enforced), and we'd probably not
accomplish much except to cause the reload to fail because the data doesn't
meet the FK constraint.  Also make the NOTICE logging still more verbose, by
adding detail about which of the triggers were found.  This seems about all
we can do without solving the problem of getting the user's attention at
session end.
2007-11-05 19:00:25 +00:00
Bruce Momjian
c1a03bee08 Document that configure option only affects contrib:
--with-ossp-uuid        use OSSP UUID library when building /contrib/uuid-ossp
2007-11-05 17:43:20 +00:00
Bruce Momjian
049f6b9baa Properly pass third argument to open() in fsync test program.
Hiroshi Saito
2007-11-05 17:10:26 +00:00
Tom Lane
a06ce21c72 Add a note about another issue that needs to be considered before
changing the TOAST size thresholds.
2007-11-05 14:11:17 +00:00
Neil Conway
9a48d22ef5 Use LOG instead of DEBUG2 for logging invalid cancel requests. (That is,
cancel requests with an incorrect key, or with a non-existent PID). Per
recent discussion on -hackers.
2007-11-05 00:00:34 +00:00
Tom Lane
5e0377ae7e Minor improvements to code for converting legacy CREATE CONSTRAINT TRIGGER
commands into proper foreign-key constraints.  Believe the constraint name
given in the trigger arguments in preference to the trigger name --- to judge
from Olivier Prenant's example, pg_dump must at some time have used the
autogenerated trigger name there, though AFAICT no current release branch tip
does.  Improve the emitted NOTICEs to provide more detail (PK table's name and
column names).  Handle the case where pg_dump forgot to provide the FROM table
(a bug that never did get fixed in 7.0.x apparently).  This commit doesn't
do anything about the question of what to do with incomplete trigger groups.
2007-11-04 21:25:55 +00:00
Tom Lane
69500b05d6 Prevent continuing disk-space bloat when profiling (with PROFILE_PID_DIR
enabled) and autovacuum is on.  Since there will be a steady stream of autovac
worker processes exiting and dropping gmon.out files, allowing them to make
separate subdirectories results in serious bloat; and it seems unlikely that
anyone will care about those profiles anyway.  Limit the damage by forcing all
autovac workers to dump in one subdirectory, PGDATA/gprof/avworker/.

Per report from Jšrg Beyer and subsequent discussion.
2007-11-04 17:55:15 +00:00
Tom Lane
a2899ebdc2 Teach CREATE CONSTRAINT TRIGGER to convert old-style foreign key
trigger definitions into regular foreign key constraints.  This seems
necessary given that some people evidently never did get around to
running adddepend on their schemas, and without some sort of hack the
old definitions will no longer work.  Per report from Olivier Prenant
and subsequent investigation.
2007-11-04 01:16:19 +00:00
Tom Lane
97ddfc9607 Ensure that EquivalenceClasses generated from ORDER BY keys contain proper
RelabelType nodes when the sort key is binary-compatible with the sort
operator rather than having exactly its input type.  We did this correctly
for index columns but not sort keys, leading to failure to notice that
a varchar index matches an ORDER BY request.  This requires a bit more work
in make_sort_from_pathkeys, but not anyplace else that I can find.
Per bug report and subsequent discussion.
2007-11-02 18:54:15 +00:00
Peter Eisentraut
e6a5c0aa2c More precise error message 2007-10-31 10:55:25 +00:00
Marc G. Fournier
2a34c1f288 removed from CVS 2007-10-30 23:38:23 +00:00
Marc G. Fournier
b973530737 simple script to pull together a very small (<500k) tar file that builds
*just* libpq ... its not perfect, as it pulls in more files then is
necessarily required to build, but as it is, it requires one simple patch
to configure.in in order to work ...

Tested on FreeBSD ... patch for configure.in hasn't been applied, but
putting the script in place so that it doesn't get lost ...
2007-10-30 02:34:48 +00:00
Alvaro Herrera
92be6991ad In the previous commit message, I forgot to credit Simon Riggs who provided
the patch, which I modified only slightly before applying.
2007-10-29 22:17:41 +00:00
Tom Lane
2aae35d049 Mention the index name in 'could not create unique index' errors,
per suggestion from Rene Gollent.
2007-10-29 21:31:28 +00:00
Tom Lane
b17b7fae8c Remove the hack in the grammar that "optimized away" DEFAULT NULL clauses.
Instead put in a test to drop a NULL default at the last moment before
storing the catalog entry.  This changes the behavior in a couple of ways:
* Specifying DEFAULT NULL when creating an inheritance child table will
  successfully suppress inheritance of any default expression from the
  parent's column, where formerly it failed to do so.
* Specifying DEFAULT NULL for a column of a domain type will correctly
  override any default belonging to the domain; likewise for a sub-domain.
The latter change happens because by the time the clause is checked,
it won't be a simple null Const but a CoerceToDomain expression.

Personally I think this should be back-patched, but there doesn't seem to
be consensus for that on pgsql-hackers, so refraining.
2007-10-29 19:40:40 +00:00
Teodor Sigaev
bf5ccf382c - Add check of already changed page while replay WAL. This touches only
ginRedoInsert(), because other ginRedo* functions rewrite whole page or
make changes which could be applied several times without consistent's loss

- Remove check of identifying of corresponding split record:
it's possible that replaying of WAL starts after actual page split, but before
removing of that split from incomplete splits list. In this case, that check
cause FATAL error.

Per stress test which reproduces bug reported by Craig McElroy
<craig.mcelroy@contegix.com>
2007-10-29 19:26:57 +00:00
Magnus Hagander
5140058071 Make variable static, per Tom. 2007-10-29 14:04:42 +00:00
Teodor Sigaev
85376c6f7d Fix coredump during replay WAL after crash. Change entrySplitPage() to prevent
usage of any information from system catalog, because it could be called during
replay of WAL.

Per bug report from Craig McElroy <craig.mcelroy@contegix.com>. Patch doesn't
change on-disk storage.
2007-10-29 13:49:21 +00:00
Magnus Hagander
811be893fa Add compat file for dynamically loading the functions that MinGW is missing
the imports for. Add RegisterWaitForSingleObject() to the list of such
functions, which should take care of the current buildfarm breakage.
2007-10-29 12:35:41 +00:00
Magnus Hagander
6f14effbf9 New versions of mingw have gettimeofday(), so add an autoconf test
for this.
2007-10-29 11:25:42 +00:00
Tom Lane
27c033ed98 Make pg_dump and friends consistently report both the filename and the
errno string when complaining of fopen failures.  Per gripe from Bob
Pawley, it's not always instantly obvious to the user which name we
tried to open.
2007-10-28 21:55:52 +00:00
Tom Lane
006f42c74d Fix a couple of issues with pg_dump's handling of inheritance child tables
that have default expressions different from their parent.  First, if the
parent table's default expression has to be split out as a separate
ALTER TABLE command, we need a dependency constraint to ensure that the
child's command is given second.  This is because the ALTER TABLE on the
parent will propagate to the child.  (We can't prevent that by using ONLY on
the parent's command, since it's possible that other children exist that
should receive the inherited default.)  Second, if the child has a NULL
default where the parent does not, we have to explicitly say DEFAULT NULL on
the child in order for this state to be preserved after reload.  (The latter
actually doesn't work right because of a backend bug, but that is a separate
issue.)

Backpatch as far as 8.0.  7.x pg_dump has enough issues with altered tables
(due to lack of dependency analysis) that trying to fix this one doesn't seem
very productive.
2007-10-28 19:08:02 +00:00
Tom Lane
73e6f9d3b6 Change text search parsing rules for hyphenated words so that digit strings
containing decimal points aren't considered part of a hyphenated word.
Sync the hyphenated-word lookahead states with the subsequent part-by-part
reparsing states so that we don't get different answers about how much text
is part of the hyphenated word.  Per my gripe of a few days ago.
2007-10-27 19:03:45 +00:00
Tom Lane
1aaf39bd20 Add some rudimentary tracing code to the default text search parser, to help
in debugging its state-machine rules.  Const-ify all the constant tables.
Minor other code cleanup, including using "token" rather than "lexeme" to
describe the output strings.
2007-10-27 17:53:15 +00:00
Tom Lane
d015d08b43 Rename default text search parser's "uri" token type to "url_path",
per recommendation from Alvaro.  This doesn't force initdb since the
numeric token type in the catalogs doesn't change; but note that
the expected regression test output changed.
2007-10-27 16:01:09 +00:00
Tom Lane
834ddc6272 Avoid considering both sort directions as equally useful for merging.
This doubles the planning workload for mergejoins while not actually
accomplishing much.  The only useful case is where one of the directions
matches the query's ORDER BY request; therefore, put a thumb on the scales
in that direction, and otherwise arbitrarily consider only the ASC direction.
(This is a lot easier now than it would've been before 8.3, since we have
more semantic knowledge embedded in PathKeys now.)
2007-10-27 05:45:43 +00:00
Tom Lane
5b5a70aedf Stamp 8.3beta2. 2007-10-27 00:22:42 +00:00
Peter Eisentraut
8a8bcb447a Translation updates 2007-10-27 00:13:43 +00:00
Magnus Hagander
bb98b2e27e Change win32 child-death tracking code to use a threadpool to wait for
childprocess deaths instead of using one thread per child. This drastastically
reduces the address space usage and should allow for more backends running.

Also change the win32_waitpid functionality to use an IO Completion Port for
queueing child death notices instead of using a fixed-size array.
2007-10-26 21:50:10 +00:00
Alvaro Herrera
acac68b2bc Allow an autovacuum worker to be interrupted automatically when it is found
to be locking another process (except when it's working to prevent Xid
wraparound problems).
2007-10-26 20:45:10 +00:00
Tom Lane
cd2a2ce904 Change have_join_order_restriction() so that we do not force a clauseless join
if either of the input relations can legally be joined to any other rels using
join clauses.  This avoids uselessly (and expensively) considering a lot of
really stupid join paths when there is a join restriction with a large
footprint, that is, lots of relations inside its LHS or RHS.  My patch of
15-Feb-2007 had been causing the code to consider joining *every* combination
of rels inside such a group, which is exponentially bad :-(.  With this
behavior, clauseless bushy joins will be done if necessary, but they'll be
put off as long as possible.  Per report from Jakub Ouhrabka.

Backpatch to 8.2.  We might someday want to backpatch to 8.1 as well, but 8.1
does not have the problem for OUTER JOIN nests, only for IN-clauses, so it's
not clear anyone's very likely to hit it in practice; and the current patch
doesn't apply cleanly to 8.1.
2007-10-26 18:10:50 +00:00
Tom Lane
462227dc00 Avoid having backend-only code compiled into ecpg. Per Zdenek Kotala 2007-10-26 14:17:53 +00:00
Tom Lane
8164fb8887 Avoid including any backend-only stuff in the zic utility program.
Per gripe from Zdenek Kotala, though not exactly his patch.
2007-10-26 13:30:10 +00:00
Tom Lane
48c16e14f5 Make initdb's selection of default text search configuration depend
only on the 'language' part of the locale name, ignoring the country code.
We may need to be smarter later when there are more built-in configurations,
but for now this is good enough and avoids having to bloat the table.
2007-10-25 20:22:53 +00:00
Alvaro Herrera
dd7444cfe2 Fix memory management for new variables -- they must actually survive
transaction end, in case we decide to do a vacuum analyze (which is done in two
xacts).
2007-10-25 19:13:37 +00:00
Tom Lane
9ddfe034c7 Fix ALTER SEQUENCE so that it does not affect the value of currval() for
the sequence.  Also, make setval() with is_called = false not affect the
currval state, either.  Per report from Kris Jurka that an implicit
ALTER SEQUENCE OWNED BY unexpectedly caused currval() to become valid.
Since this isn't 100% backwards compatible, it will go into HEAD only;
I'll put a more limited patch into 8.2.
2007-10-25 18:54:03 +00:00
Alvaro Herrera
dbe48765cd Extract catalog info for error reporting before an error actually happens.
Also, remove redundant reset of for-wraparound PGPROC flag.

Thanks to Tom Lane for noticing both bogosities.
2007-10-25 14:45:55 +00:00
Tom Lane
fcc20bd4ba Tweak new error messages to match the actual syntax of DECLARE CURSOR.
(Last night I copied-and-pasted from the WITH HOLD case, but that's
wrong because of the bizarrely irregular syntax specified by the standard.)
2007-10-25 13:48:57 +00:00
Alvaro Herrera
f8c9ef9069 Add new encoding aliases for Solaris, per Zdenek Kotala. 2007-10-25 12:29:17 +00:00
Tom Lane
048efc25e4 Disallow scrolling of FOR UPDATE/FOR SHARE cursors, so as to avoid problems
in corner cases such as re-fetching a just-deleted row.  We may be able to
relax this someday, but let's find out how many people really care before
we invest a lot of work in it.  Per report from Heikki and subsequent
discussion.

While in the neighborhood, make the combination of INSENSITIVE and FOR UPDATE
throw an error, since they are semantically incompatible.  (Up to now we've
accepted but just ignored the INSENSITIVE option of DECLARE CURSOR.)
2007-10-24 23:27:08 +00:00
Alvaro Herrera
745c1b2c2a Rearrange vacuum-related bits in PGPROC as a bitmask, to better support
having several of them.  Add two more flags: whether the process is
executing an ANALYZE, and whether a vacuum is for Xid wraparound (which
is obviously only set by autovacuum).

Sneakily move the worker's recently-acquired PostAuthDelay to a more useful
place.
2007-10-24 20:55:36 +00:00
Tom Lane
3ef18797b8 Fix an error in make_outerjoininfo introduced by my patch of 30-Aug: the code
neglected to test whether an outer join's join-condition actually refers to
the lower outer join it is looking at.  (The comment correctly described what
was supposed to happen, but the code didn't do it...)  This often resulted in
adding an unnecessary constraint on the join order of the two outer joins,
which was bad enough.  However, it also seems to expose a performance
problem in an older patch (from 15-Feb): once we've decided that there is a
join ordering constraint, we will start trying clauseless joins between every
combination of rels within the constraint, which pointlessly eats up lots of
time and space if there are numerous rels below the outer join.  That probably
needs to be revisited :-(.  Per gripe from Jakub Ouhrabka.
2007-10-24 20:54:27 +00:00
Alvaro Herrera
5c4249c353 Danish_Danmark -> Danish_Denmark 2007-10-24 20:11:00 +00:00
Alvaro Herrera
2627c83561 Minor changes to autovacuum worker: change error handling so that it continues
with the next table on schedule instead of exiting, in all cases instead of
just on query cancel.

Add a errcontext() line indicating the activity of the worker to the error
message when it is cancelled.

Change the WorkerInfo struct to contain a pointer to the worker's PGPROC
instead of just the PID.

Add forgotten post-auth delays, per Simon Riggs.  Also to autovac launcher.
2007-10-24 19:08:25 +00:00
Tom Lane
c29a9c37bf Fix UPDATE/DELETE WHERE CURRENT OF to support repeated update and update-
then-delete on the current cursor row.  The basic fix is that nodeTidscan.c
has to apply heap_get_latest_tid() to the current-scan-TID obtained from the
cursor query; this ensures we get the latest row version to work with.
However, since that only works if the query plan is a TID scan, we also have
to hack the planner to make sure only that type of plan will be selected.
(Formerly, the planner might decide to apply a seqscan if the table is very
small.  This change is probably a Good Thing anyway, since it's hard to see
how a seqscan could really win.)  That means the execQual.c code to support
CurrentOfExpr as a regular expression type is dead code, so replace it with
just an elog().  Also, add regression tests covering these cases.  Note
that the added tests expose the fact that re-fetching an updated row
misbehaves if the cursor used FOR UPDATE.  That's an independent bug that
should be fixed later.  Per report from Dharmendra Goyal.
2007-10-24 18:37:09 +00:00
Tom Lane
9226ba817b Keep heap_page_prune from marking the buffer dirty when it didn't
really change anything.  Per report from Itagaki Takahiro.  Fix by
Pavan Deolasee.
2007-10-24 13:05:57 +00:00
Tom Lane
1c92724985 Set read_only = TRUE while evaluating input queries for ts_rewrite()
and ts_stat(), per my recent suggestion.  Also add a possibly-not-needed-
but-can't-hurt check for NULL SPI_tuptable, before we try to dereference
same.
2007-10-24 03:30:03 +00:00
Tom Lane
592c88a0d2 Remove the aggregate form of ts_rewrite(), since it doesn't work as desired
if there are zero rows to aggregate over, and the API seems both conceptually
and notationally ugly anyway.  We should look for something that improves
on the tsquery-and-text-SELECT version (which is also pretty ugly but at
least it works...), but it seems that will take query infrastructure that
doesn't exist today.  (Hm, I wonder if there's anything in or near SQL2003
window functions that would help?)  Per discussion.
2007-10-24 02:24:49 +00:00
Tom Lane
07d0a370c1 Make configure probe for the location of the <uuid.h> header file.
Needed to accommodate different layout on some platforms (Debian for
one).  Heikki Linnakangas
2007-10-23 21:38:16 +00:00
Tom Lane
dbaec70c15 Rename and slightly redefine the default text search parser's "word"
categories, as per discussion.  asciiword (formerly lword) is still
ASCII-letters-only, and numword (formerly word) is still the most general
mixed-alpha-and-digits case.  But word (formerly nlword) is now
any-group-of-letters-with-at-least-one-non-ASCII, rather than all-non-ASCII as
before.  This is no worse than before for parsing mixed Russian/English text,
which seems to have been the design center for the original coding; and it
should simplify matters for parsing most European languages.  In particular
it will not be necessary for any language to accept strings containing digits
as being regular "words".  The hyphenated-word categories are adjusted
similarly.
2007-10-23 20:46:12 +00:00
Magnus Hagander
344d0cae64 Use snprintf instead of wsprintf, and use getenv("APPDATA") instead of
SHGetFolderPath.

This removes the direct dependency on shell32.dll and user32.dll, which
eats a lot of "desktop heap" for each backend that's started. The
desktop heap is a very limited resource, causing backends to no
longer start once it's been exhausted.

We still have indirect depdendencies on user32.dll through third party
libraries, but those can't easily be removed.

Dave Page
2007-10-23 17:58:01 +00:00
Tom Lane
12f25e70a6 Fix two-argument form of ts_rewrite() so it actually works for cases where
a later rewrite rule should change a subtree modified by an earlier one.
Per my gripe of a few days ago.
2007-10-23 01:44:40 +00:00
Tom Lane
bb36c51fcd Fix several bugs in tsvectorin, including crash due to uninitialized field and
miscomputation of required palloc size.  The crash could only occur if the
input contained lexemes both with and without positions, which is probably not
common in practice.  The miscomputation would definitely result in wasted
space.  Also fix some inconsistent coding around alignment of strings and
positions in a tsvector value; these errors could also lead to crashes given
mixed with/without position data and a machine that's picky about alignment.
And be more careful about checking for overflow of string offsets.

Patch is only against HEAD --- I have not looked to see if same bugs are
in back-branch contrib/tsearch2 code.
2007-10-23 00:51:23 +00:00
Tom Lane
3e17ef1cfa Adjust ts_debug's output as per my proposal of yesterday: show the
active dictionary and its output lexemes as separate columns, instead
of smashing them into one text column, and lowercase the column names.
Also, define the output rowtype using OUT parameters instead of a
composite type, to be consistent with the other built-in functions.
2007-10-22 20:13:37 +00:00
Tom Lane
88ae1bd3f2 Remove an Assert that's been obsoleted by recent changes in the parsetree
representation of DECLARE CURSOR.  Report and fix by Heikki.
2007-10-22 17:04:35 +00:00
Tom Lane
f1c87830b5 Add a useless return statement to suppress a warning seen with some
versions of gcc (I'm seeing it with Apple's gcc 4.0.1).  I think the
reason we did not see this before was that the assert() macros in the
regex code were all no-ops till recently.
2007-10-22 01:02:22 +00:00
Tom Lane
1ea47dd8cb Fix shared tsvector/tsquery input code so that we don't say "syntax error in
tsvector" when we are really parsing a tsquery.  Report the bogus input,
too.  Make styles of some related error messages more consistent.
2007-10-21 22:29:56 +00:00
Tom Lane
531ead8ab4 Adjust error message to agree with documentation. The tsearch documentation
uniformly calls these things weights, not classes.
2007-10-20 21:06:20 +00:00
Tom Lane
638bd34f89 Found another small glitch in tsearch API: the two versions of ts_lexize()
are really redundant, since we invented a regdictionary alias type.
We can have just one function, declared as taking regdictionary, and
it will handle both behaviors.  Noted while working on documentation.
2007-10-19 22:01:45 +00:00
Tom Lane
ba6b0bfd63 ts_rewrite() does not return a set, only one row; fix mislabeling in
pg_proc.h.
2007-10-19 19:48:34 +00:00
Tom Lane
26cbf791ec Add missing entry for PG_WIN1250 encoding, per gripe from Pavel Stehule.
Also enable translation of PG_WIN874, which certainly seems to have an
obvious translation now, though maybe it did not at the time this table's
ancestor was created.
2007-10-17 15:24:04 +00:00
Tom Lane
2011bebc89 Use 'token' not 'lexeme' to describe the output of a parser. 2007-10-16 18:02:26 +00:00
Tom Lane
56303abff0 Tweak toast-related logic in heapam.c so that the toaster is only invoked
when relkind = RELKIND_RELATION.  This syncs these tests with the Asserts
in tuptoaster.c, and ensures that we won't ever try to, for example,
compress a sequence's tuple.  Problem found by Greg Stark while stress-testing
with much-smaller-than-normal page sizes.
2007-10-16 17:05:26 +00:00
Tom Lane
9a4b29d832 Teach pgxs.mk and Install.pm how to install files from a contrib module
into SHAREDIR/tsearch_data.  Use this instead of ad-hoc coding in
dict_xsyn/Makefile.  Should fix current ContribCheck failures on MSVC.
2007-10-16 16:00:00 +00:00
Magnus Hagander
699a0ef7bb Re-allow UTF8 encodings on win32. Since UTF8 is converted to
UTF16 before being used, all (valid) locales will work for this.
2007-10-16 11:30:16 +00:00
Peter Eisentraut
2d5b16bb10 Remove quotes around locale names in some places for consistency. 2007-10-16 09:09:11 +00:00
Tom Lane
febd60bf5d Fix pg_wchar_table[] to match revised ordering of the encoding ID enum.
Add some comments so hopefully the next poor sod doesn't fall into the
same trap.  (Wrong comments are worse than none at all...)
2007-10-15 22:46:27 +00:00
Tom Lane
fb631dba2a Include NOLOGIN roles in the 'flat' password file. In the original
coding this was seen as useless, but the problem with not including them
is that the error message will often be something about authentication
failure, rather than the more helpful one about 'role is not permitted
to log in'.  Per discussion.
2007-10-15 15:11:29 +00:00
Tom Lane
7cf3ff109d make install is supposed to install everything under src/include/,
but it was missing a bunch of recently-added subdirectories.
2007-10-14 17:07:51 +00:00
Tom Lane
cd8e1f50dd Ooops, forgot about adding -DFRONTEND. 2007-10-13 23:22:46 +00:00
Tom Lane
18e3fcc31e Migrate the former contrib/txid module into core. This will make it easier
for Slony and Skytools to depend on it.  Per discussion.
2007-10-13 23:06:28 +00:00
Tom Lane
041a8b37f5 Try to fix msvc build for recent initdb changes. 2007-10-13 22:55:38 +00:00
Tom Lane
2ffc0e8849 Strengthen type_sanity's check on pg_type.typarray. It failed to
complain about types that didn't have typarray set.  Noted while
working on txid patch.
2007-10-13 22:33:38 +00:00
Tom Lane
ff1de5cef6 Guard against possible double free during error escape from XML
functions.  Patch for the reported issue from Kris Jurka, some
other potential trouble spots plugged by Tom.
2007-10-13 20:46:47 +00:00