summaryrefslogtreecommitdiff
path: root/src/backend
AgeCommit message (Collapse)Author
2013-10-25Suppress -0 in the C field of lines computed by line_construct_pts().Tom Lane
It's not entirely clear why some PPC machines are generating -0 here, since the underlying computation should be exactly 0 - 0. Perhaps there's some wider-than-nominal-precision calculations happening? Anyway, the best way to avoid platform-dependent results seems to be to explicitly reset -0 to regular zero.
2013-10-24Use improved vsnprintf calling logic in more places.Tom Lane
When we are using a C99-compliant vsnprintf implementation (which should be most places, these days) it is worth the trouble to make use of its report of how large the buffer needs to be to succeed. This patch adjusts stringinfo.c and some miscellaneous usages in pg_dump to do that, relying on the logic recently added in libpgcommon's psprintf.c. Since these places want to know the number of bytes written once we succeed, modify the API of pvsnprintf() to report that. There remains near-duplicate logic in pqexpbuffer.c, but since that code is in libpq, psprintf.c's approach of exit()-on-error isn't appropriate for use there. Also note that I didn't bother touching the multitude of places that call (v)snprintf without any attempt to provide a resizable buffer. Release-note-worthy incompatibility: the API of appendStringInfoVA() changed. If there's any third-party code that's calling that directly, it will need tweaking along the same lines as in this patch. David Rowley and Tom Lane
2013-10-24Increase the number of different values used when seeding random().Heikki Linnakangas
When a backend process is forked, we initialize the system's random number generator with srandom(). The seed used is derived from the backend's pid and the timestamp. However, we only used the microseconds part of the timestamp, and it was XORed with the pid, so the total range of different seed values chosen was 0-999999. That's quite limited. Change the code to also use the seconds part of the timestamp in the seed, and shift the microseconds so that all 32 bits of the seed are used. Honza Horak
2013-10-24Plug memory leak when reloading config file.Heikki Linnakangas
The absolute path to config file was not pfreed. There are probably more small leaks here and there in the config file reload code and assign hooks, and in practice no-one reloads the config files frequently enough for it to be a problem, but this one is trivial enough that might as well fix it. Backpatch to 9.3 where the leak was introduced.
2013-10-24Fix memory leak when an empty ident file is reloaded.Heikki Linnakangas
Hari Babu
2013-10-24Fix typos in comments.Heikki Linnakangas
2013-10-23Fix two bugs in setting the vm bit of empty pages.Heikki Linnakangas
Use a critical section when setting the all-visible flag on an empty page, and WAL-logging it. log_newpage_buffer() contains an assertion that it must be called inside a critical section, and it's the right thing to do when modifying a buffer anyway. Also, the page should be marked dirty before calling log_newpage_buffer(), per the comment in log_newpage_buffer() and src/backend/access/transam/README. Patch by Andres Freund, in response to my report. Backpatch to 9.2, like the patch that introduced these bugs (a6370fd9).
2013-10-22Suppress a couple of compiler warnings seen with older gcc versions.Tom Lane
To wit, bgworker.c: In function `RegisterDynamicBackgroundWorker': bgworker.c:761: warning: `generation' might be used uninitialized in this function dsm_impl.c: In function `dsm_impl_op': dsm_impl.c:197: warning: control reaches end of non-void function Neither of these represent actual bugs, but we may as well tweak the code so that more compilers can tell that. This won't change the generated code on compilers that do recognize that the cases are unreachable.
2013-10-22Replace pg_asprintf() with psprintf().Tom Lane
This eliminates an awkward coding pattern that's also unnecessarily inconsistent with backend coding. psprintf() is now the thing to use everywhere.
2013-10-22Get rid of use of asprintf() in favor of a more portable implementation.Tom Lane
asprintf(), aside from not being particularly portable, has a fundamentally badly-designed API; the psprintf() function that was added in passing in the previous patch has a much better API choice. Moreover, the NetBSD implementation that was borrowed for the previous patch doesn't work with non-C99-compliant vsnprintf, which is something we still have to cope with on some platforms; and it depends on va_copy which isn't all that portable either. Get rid of that code in favor of an implementation similar to what we've used for many years in stringinfo.c. Also, move it into libpgcommon since it's not really libpgport material. I think this patch will be enough to turn the buildfarm green again, but there's still cosmetic work left to do, namely get rid of pg_asprintf() in favor of using psprintf(). That will come in a followon patch.
2013-10-22Make use of psprintf() in recent changesPeter Eisentraut
2013-10-22Fix blatantly broken record_image_cmp() logic for pass-by-value fields.Tom Lane
Doesn't anybody here pay attention to compiler warnings?
2013-10-20Consistently use unsigned arithmetic for alignment calculations.Noah Misch
This avoids an assumption about the signed number representation. It is anticipated to have no functional changes on supported configurations; many two's complement assumptions remain elsewhere. Per a suggestion from Andres Freund.
2013-10-19Add libpgcommon to backend gettext source filesPeter Eisentraut
This ought to have been done when libpgcommon was split off from libpgport.
2013-10-18Allow only some columns of a view to be auto-updateable.Robert Haas
Previously, unless all columns were auto-updateable, we wouldn't inserts, updates, or deletes, or at least not without a rule or trigger; now, we'll allow inserts and updates that target only the auto-updateable columns, and deletes even if there are no auto-updateable columns at all provided the view definition is otherwise suitable. Dean Rasheed, reviewed by Marko Tiikkaja
2013-10-18Provide a reliable mechanism for terminating a background worker.Robert Haas
Although previously-introduced APIs allow the process that registers a background worker to obtain the worker's PID, there's no way to prevent a worker that is not currently running from being restarted. This patch introduces a new API TerminateBackgroundWorker() that prevents the background worker from being restarted, terminates it if it is currently running, and causes it to be unregistered if or when it is not running. Patch by me. Review by Michael Paquier and KaiGai Kohei.
2013-10-18Remove IRIX port.Robert Haas
Development of IRIX has been discontinued, and support is scheduled to end in December of 2013. Therefore, there will be no supported versions of this operating system by the time PostgreSQL 9.4 is released. Furthermore, we have no maintainer for this platform.
2013-10-17Remove spinlock support for SINIX, Sun3, and NS32K.Robert Haas
All of these platforms are very much obsolete. As far as I can determine, the last version of SINIX, later renamed Reliant, occurred some time between 2002 and 2005. The last release of SunOS that would run on a sun3 was released in November of 1991; the last release of OpenBSD which supported that platform was in 2001. The highest clock speed of any processor in the family was 25MHz. The NS32K (national semiconductor 320xx) architecture was retired in 1990. Support can be re-added if a maintainer emerges for any of these platforms, but it seems unlikely. Reviewed by Andres Freund.
2013-10-17Silence compiler warning when SSL not in useAlvaro Herrera
Per Jaime Casanova and Vik Fearing
2013-10-16Allow 5+ digit years for non-ISO timestamp/date strings, where appropriateBruce Momjian
Report from Haribabu Kommi
2013-10-14In dsm_impl_windows, don't error out when the segment already exists.Robert Haas
This is the behavior of the other implementations, and the behavior expected by the callers of this function. Amit Kapila
2013-10-14Fix details missed by dynamic shared memory patch.Robert Haas
Additional documentation update, and a comment fix. Both issues reported by Amit Kapila.
2013-10-13Add use of asprintf()Peter Eisentraut
Add asprintf(), pg_asprintf(), and psprintf() to simplify string allocation and composition. Replacement implementations taken from NetBSD. Reviewed-by: Álvaro Herrera <alvherre@2ndquadrant.com> Reviewed-by: Asif Naeem <anaeem.it@gmail.com>
2013-10-11Fix several possibly non-portable gaffs in record_image_ops.Kevin Grittner
Sparc machines in the buildfarm were made happy by the previous fix, but PowerPC machines still are still failing. Hopefully this will cure that.
2013-10-10Use $(PERL) to invoke duplicate_oidsAlvaro Herrera
Per buildfarm failure reported by smilodon
2013-10-10Rework SSL renegotiation codeAlvaro Herrera
The existing renegotiation code was home for several bugs: it might erroneously report that renegotiation had failed; it might try to execute another renegotiation while the previous one was pending; it failed to terminate the connection if the renegotiation never actually took place; if a renegotiation was started, the byte count was reset, even if the renegotiation wasn't completed (this isn't good from a security perspective because it means continuing to use a session that should be considered compromised due to volume of data transferred.) The new code is structured to avoid these pitfalls: renegotiation is started a little earlier than the limit has expired; the handshake sequence is retried until it has actually returned successfully, and no more than that, but if it fails too many times, the connection is closed. The byte count is reset only when the renegotiation has succeeded, and if the renegotiation byte count limit expires, the connection is terminated. This commit only touches the master branch, because some of the changes are controversial. If everything goes well, a back-patch might be considered. Per discussion started by message 20130710212017.GB4941@eldon.alvh.no-ip.org
2013-10-10Remove maintainer-check target, fold into normal buildPeter Eisentraut
make maintainer-check was obscure and rarely called in practice, and many breakages were missed. Fold everything that make maintainer-check used to do into the normal build. Specifically: - Call duplicate_oids when genbki.pl is called. - Check for tabs in SGML files when the documentation is built. - Run msgfmt with the -c option during the regular build. Add an additional configure check to see whether we are using the GNU version. (make maintainer-check probably used to fail with non-GNU msgfmt.) Keep maintainer-check as around as phony target for the time being in case anyone is calling it. But it won't do anything anymore.
2013-10-10Fix bug in record_image_ops on big endian machines.Kevin Grittner
The buildfarm pointed out the problem. Fix based on suggestion by Robert Haas.
2013-10-10json_typeof function.Andrew Dunstan
Andrew Tipton.
2013-10-10Fix incorrect use of shm_unlink where unlink should be used.Robert Haas
Per buildfarm.
2013-10-09Revive line typePeter Eisentraut
Change the input/output format to {A,B,C}, to match the internal representation. Complete the implementations of line_in, line_out, line_recv, line_send. Remove comments and error messages about the line type not being implemented. Add regression tests for existing line operators and functions. Reviewed-by: rui hua <365507506hua@gmail.com> Reviewed-by: Álvaro Herrera <alvherre@2ndquadrant.com> Reviewed-by: Jeevan Chalke <jeevan.chalke@enterprisedb.com>
2013-10-09Allow dynamic allocation of shared memory segments.Robert Haas
Patch by myself and Amit Kapila. Design help from Noah Misch. Review by Andres Freund.
2013-10-09Add record_image_ops opclass for matview concurrent refresh.Kevin Grittner
REFRESH MATERIALIZED VIEW CONCURRENTLY was broken for any matview containing a column of a type without a default btree operator class. It also did not produce results consistent with a non- concurrent REFRESH or a normal view if any column was of a type which allowed user-visible differences between values which compared as equal according to the type's default btree opclass. Concurrent matview refresh was modified to use the new operators to solve these problems. Documentation was added for record comparison, both for the default btree operator class for record, and the newly added operators. Regression tests now check for proper behavior both for a matview with a box column and a matview containing a citext column. Reviewed by Steve Singer, who suggested some of the doc language.
2013-10-09Centralize effective_cache_size default settingBruce Momjian
2013-10-08Adjust the effective_cache_size default for standalone backendsBruce Momjian
2013-10-08Again move function where we set effective_cache_size's defaultBruce Momjian
2013-10-08Move new effective_cache_size functionBruce Momjian
Previously set_default_effective_cache_size() could not handle fork, non-fork, and bootstrap cases.
2013-10-08Fix C comment in check_effective_cache_size()Bruce Momjian
2013-10-08Update postgres.conf.sample for effective_cache_size's new defaultBruce Momjian
2013-10-08Auto-tune effective_cache size to be 4x shared buffersBruce Momjian
2013-10-08TYPEALIGN doesn't work on int64 on 32-bit platforms.Heikki Linnakangas
The TYPEALIGN macro, and the related ones like MAXALIGN, don't work with values larger than intptr_t, because TYPEALIGN casts the argument to intptr_t to do the arithmetic. That's not a problem when dealing with pointers or lengths or offsets related to pointers, but the XLogInsert scaling patch added a call to MAXALIGN with an XLogRecPtr argument. To fix, add wider variants of the macros, called TYPEALIGN64 and MAXALIGN64, which are just like the existing variants but work with uint64 instead of intptr_t. Report and patch by David Rowley, analysis by Andres Freund.
2013-10-08Fix bugs in SSI tuple locking.Heikki Linnakangas
1. In heap_hot_search_buffer(), the PredicateLockTuple() call is passed wrong offset number. heapTuple->t_self is set to the tid of the first tuple in the chain that's visited, not the one actually being read. 2. CheckForSerializableConflictIn() uses the tuple's t_ctid field instead of t_self to check for exiting predicate locks on the tuple. If the tuple was updated, but the updater rolled back, t_ctid points to the aborted dead tuple. Reported by Hannu Krosing. Backpatch to 9.1.
2013-10-07Translation updatesPeter Eisentraut
2013-10-07Make DISCARD SEQUENCES also discard the last used sequence.Robert Haas
Otherwise, we access already-freed memory. Oops. Report by Michael Paquier. Fix by me.
2013-10-07Eliminate xmin from hash tag for predicate locks on heap tuples.Kevin Grittner
If a tuple was frozen while its predicate locks mattered, read-write dependencies could be missed, resulting in failure to detect conflicts which could lead to anomalies in committed serializable transactions. This field was added to the tag when we still thought that it was necessary to carry locks forward to a new version of an updated row. That was later proven to be unnecessary, which allowed simplification of the code, but elimination of xmin from the tag was missed at the time. Per report and analysis by Heikki Linnakangas. Backpatch to 9.1.
2013-10-05Fix various bugs in postmaster SIGKILL processingAlvaro Herrera
Clamp the minimum sleep time during immediate shutdown or crash to a minimum of zero, not a maximum of one second. The previous code could result in a negative sleep time, leading to failure in select() calls. Also, on crash recovery, reset AbortStartTime as soon as SIGKILL is sent or abort processing has commenced instead of waiting until the startup process completes. Reset AbortStartTime as soon as SIGKILL is sent, too, to avoid doing that repeatedly. Per trouble report from Jeff Janes on CAMkU=1xd3=wFqZwwuXPWe4BQs3h1seYo8LV9JtSjW5RodoPxMg@mail.gmail.com Author: MauMau
2013-10-04Issue error on SET outside transaction block in some casesBruce Momjian
Issue error for SET LOCAL/CONSTRAINTS/TRANSACTION outside a transaction block, as they have no effect. Per suggestion from Morten Hustveit
2013-10-03Fix silly thinko in ResetSequenceCaches.Robert Haas
Report from Kevin Hale Boyes.
2013-10-03Add DISCARD SEQUENCES command.Robert Haas
DISCARD ALL will now discard cached sequence information, as well. Fabrízio de Royes Mello, reviewed by Zoltán Böszörményi, with some further tweaks by me.
2013-10-03Minor GIN code refactoring.Heikki Linnakangas
It makes for cleaner code to have separate Get/Add functions for PostingItems and ItemPointers. A few callsites that have to deal with both types need to be duplicated because of this, but all the callers have to know which one they're dealing with anyway. Overall, this reduces the amount of casting required. Extracted from Alexander Korotkov's larger patch to change the data page format.