Joe Conway [Fri, 2 Jul 2004 00:58:09 +0000 (00:58 +0000)]
Attached is a 1 line bug fix for dbmirror that was submitted.
It fixes a bug where some transactions could be dropped when writing
mirrored SQL statements to files.
-- Steven Singer
Tom Lane [Thu, 1 Jul 2004 21:17:13 +0000 (21:17 +0000)]
More paranoia in AtEOSubXact_SPI: don't assume we can safely use SPI_finish
for cleaning up. It seems possible that the memory contexts SPI_finish
would try to touch are already gone; and there's no need for SPI itself
to delete them, since the containing contexts will surely be going away
anyway at transaction end.
Joe Conway [Thu, 1 Jul 2004 20:50:22 +0000 (20:50 +0000)]
plperl update from Andrew Dunstan, deriving (I believe) from Command Prompt's
plperlNG. Review and minor cleanup/improvements by Joe Conway.
Summary of new functionality:
- Shared data space and namespace. There is a new global variable %_SHARED
that functions can use to store and save data between invocations of a
function, or between different functions. Also, all trusted plperl function
now share a common Safe container (this is an optimization, also), which
they can use for storing non-lexical variables, functions, etc.
- Triggers are now supported
- Records can now be returned (as a hash reference)
- Sets of records can now be returned (as a reference to an array of hash
references).
- New function spi_exec_query() provided for performing db functions or
getting data from db.
- Optimization for counting hash keys (Abhijit Menon-Sen)
- Allow return of 'record' and 'setof record'
Tom Lane [Thu, 1 Jul 2004 20:11:03 +0000 (20:11 +0000)]
Further review of xact.c state machine for nested transactions. Fix
problems with starting subtransactions inside already-failed transactions.
Clean up some comments.
Joe Conway [Thu, 1 Jul 2004 03:25:48 +0000 (03:25 +0000)]
Add double metaphone code from Andrew Dunstan. Also change metaphone so that
an empty input string causes an empty output string to be returned, instead of
throwing an ERROR -- per complaint from Aaron Hillegass, and consistent with
double metaphone. Fix examples in README.soundex pointed out by James Robinson.
Tom Lane [Thu, 1 Jul 2004 00:52:04 +0000 (00:52 +0000)]
Nested transactions. There is still much left to do, especially on the
performance front, but with feature freeze upon us I think it's time to
drive a stake in the ground and say that this will be in 7.5.
Michael Meskes [Wed, 30 Jun 2004 15:01:58 +0000 (15:01 +0000)]
Added SET DESCRIPTOR command.
Note that this still has some bugs. The functionality is there though, it's just a matter of fixing the bugs now.
Cleaned up error handling in preprocessor.
Teodor Sigaev [Mon, 28 Jun 2004 16:19:09 +0000 (16:19 +0000)]
1 Eliminate duplicate field HLWORD->skip
2 Rework support for html tags in parser
3 add HighlightAll to headline function for generating highlighted
whole text with saved html tags
Tom Lane [Mon, 28 Jun 2004 00:18:47 +0000 (00:18 +0000)]
Fix some bogus code in ConstBit production --- it managed to work, but
only because 14627 still contained the same node that BitWithoutLength had
just produced. Make it more transparent. Also adjust ConstCharacter
to be coded the same way for consistency.
Michael Meskes [Sun, 27 Jun 2004 12:28:42 +0000 (12:28 +0000)]
- Only use typedefs inside their scope.
- Variables that are out of scope, were not removed all the time.
- Make a varchar NULL set everything to 0 when not using indicators.
- Synced parser.
Tom Lane [Sat, 26 Jun 2004 16:32:04 +0000 (16:32 +0000)]
Adjust pgstat message definitions so that the target message size is
specified in just one place and adhered to exactly, rather than just more
or less. A side effect is to increase PGSTAT_ACTIVITY_SIZE (maximum
reported query length) from 256 to nearly 1000.
Tom Lane [Fri, 25 Jun 2004 21:55:59 +0000 (21:55 +0000)]
Support renaming of tablespaces, and changing the owners of
aggregates, conversions, functions, operators, operator classes,
schemas, types, and tablespaces. Fold the existing implementations
of alter domain owner and alter database owner in with these.
Tom Lane [Fri, 25 Jun 2004 17:20:29 +0000 (17:20 +0000)]
Add pg_get_serial_sequence() function, and cause pg_dump to use it.
This eliminates the assumption that a serial column's sequence will
have the same name on reload that it was given in the original database.
Tom Lane [Thu, 24 Jun 2004 21:03:42 +0000 (21:03 +0000)]
Replace direct fprintf(stderr) calls by write_stderr(), and cause this
routine to do something appropriate on Win32. Also, add a security check
on Win32 that parallels the can't-run-as-root check on Unix.
Tom Lane [Tue, 22 Jun 2004 22:30:32 +0000 (22:30 +0000)]
Fix information schema views to return NULL for precision and scale of
an unconstrained numeric column. Also, factor out some duplicate code
into functions, to ease future maintenance.
Tom Lane [Mon, 21 Jun 2004 04:06:07 +0000 (04:06 +0000)]
Rename the built-in tablespaces to pg_default and pg_global, and prohibit
creation of user-defined tablespaces with names starting with 'pg_', as
per suggestion of Chris K-L. Also install admin-guide tablespace
documentation from Gavin.
Tom Lane [Sat, 19 Jun 2004 23:02:32 +0000 (23:02 +0000)]
Adjust TAS assembly as per recent discussions: use "+m"(*lock) everywhere
to reference the spinlock variable, and specify "memory" as a clobber
operand to be sure gcc does not try to keep shared-memory values in
registers across a spinlock acquisition. Also tighten the S/390 asm
sequence, which was apparently written with only minimal study of the
gcc asm documentation. I have personally tested i386, ia64, ppc, hppa,
and s390 variants --- there is some small chance that I broke the others,
but I doubt it.
Tom Lane [Sat, 19 Jun 2004 18:19:56 +0000 (18:19 +0000)]
Fix oversight in recent rowtype-handling improvements: transformTargetList
should recognize 'foo.*' when the star appears in A_Indirection, not only
in ColumnRef. This allows 'SELECT something.*' to do what the user
expects when the something is an expression yielding a row.
Tom Lane [Fri, 18 Jun 2004 21:47:24 +0000 (21:47 +0000)]
Replace createdb's obsolete --location switch with --tablespace.
I kept the same abbreviated letter -D, in hopes of maintaining some
modicum of backwards compatibility (though it's doubtful whether anyone
is really using scripts that invoke createdb -D ...)
Tom Lane [Fri, 18 Jun 2004 21:24:06 +0000 (21:24 +0000)]
initlocation is history. (It's still mentioned in manage-ag.sgml,
but I'll leave that file alone so as not to mess up the doc patch
I trust Gavin is working on.)
Bruce Momjian [Fri, 18 Jun 2004 18:35:53 +0000 (18:35 +0000)]
Add:
> * Allow reporting of which objects are in which tablespaces
> * Allow database recovery where tablespaces can't be created 211a213,214
> o Add ALTER TABLESPACE to change location, name, owner
> o Allow objects to be moved between tablespaces
Tom Lane [Fri, 18 Jun 2004 06:14:31 +0000 (06:14 +0000)]
Tablespaces. Alternate database locations are dead, long live tablespaces.
There are various things left to do: contrib dbsize and oid2name modules
need work, and so does the documentation. Also someone should think about
COMMENT ON TABLESPACE and maybe RENAME TABLESPACE. Also initlocation is
dead, it just doesn't know it yet.
Bruce Momjian [Wed, 16 Jun 2004 02:58:28 +0000 (02:58 +0000)]
Do PGAC_FUNC_GETPWUID_R_5ARG and PGAC_FUNC_STRERROR_R_INT tests with the
same thread flags that will be used to compile thread.c. Add comment to
make sure no one breaks it.
Tom Lane [Wed, 16 Jun 2004 01:27:00 +0000 (01:27 +0000)]
Represent type-specific length coercion functions as pg_cast entries,
eliminating the former hard-wired convention about their names. Allow
pg_cast entries to represent both type coercion and length coercion in
a single step --- this is represented by a function that takes an
extra typmod argument, just like a length coercion function. This
nicely merges the type and length coercion mechanisms into something
at least a little cleaner than we had before. Make use of the single-
coercion-step behavior to fix integer-to-bit coercion so that coercing
to bit(n) yields the rightmost n bits of the integer instead of the
leftmost n bits. This should fix recurrent complaints about the odd
behavior of this coercion. Clean up the documentation of the bit string
functions, and try to put it where people might actually find it.
Also, get rid of the unreliable heuristics in ruleutils.c about whether
to display nested coercion steps; instead require parse_coerce.c to
label them properly in the first place.
Tom Lane [Mon, 14 Jun 2004 18:08:19 +0000 (18:08 +0000)]
Arrange to explicitly stop the pgstat processes at the same time we
begin the shutdown checkpoint; there isn't anything left for them to do,
so we may as well ensure that they shut down sooner rather than later.
Per discussion.
Bruce Momjian [Sun, 13 Jun 2004 23:42:59 +0000 (23:42 +0000)]
Updated wording:
< * Remove unreferenced table files and temp tables during database vacuum
< or postmaster startup (Bruce)
> * Remove unreferenced table files created by transactions that were
> in-progress when the server crashed
>
Tom Lane [Sun, 13 Jun 2004 21:57:28 +0000 (21:57 +0000)]
Give inet/cidr datatypes their own hash function that ignores the inet vs
cidr type bit, the same as network_eq does. This is needed for hash joins
and hash aggregation to work correctly on these types. Per bug report
from Michael Fuhr, 2004-04-13.
Also, improve hash function for int8 as suggested by Greg Stark.
Tom Lane [Fri, 11 Jun 2004 17:20:39 +0000 (17:20 +0000)]
StrategyDirtyBufferList wasn't being careful to honor max_buffers limit.
Bug is only latent given that sole caller is passing NBuffers, but it
could bite someone in the rear someday.
Tom Lane [Fri, 11 Jun 2004 16:43:24 +0000 (16:43 +0000)]
Add some code to Assert that when we release pin on a buffer, we are
not holding the buffer's cntx_lock or io_in_progress_lock. A recent
report from Litao Wu makes me wonder whether it is ever possible for
us to drop a buffer and forget to release its cntx_lock. The Assert
does not fire in the regression tests, but that proves little ...
Bruce Momjian [Fri, 11 Jun 2004 03:56:46 +0000 (03:56 +0000)]
The attached tiny patch removes spurious carriage returns that might be
copied by the script that generates psql's help. (You can get the
spurious CRs if you use a CVS client on Windows that does line end
translation.) Elsewhere, the patch should be totally benign.
This removes quite a number of the compile warnings I posted the other
day.
Bruce Momjian [Fri, 11 Jun 2004 03:54:54 +0000 (03:54 +0000)]
>> It certainly doesn't. There still was a bug with the locale stuff,
>> though - the GUC variable was not set in the child
>processes. So "show
>> lc_collate" would *always* return "C", for example. attached
>patch fixes
>> this.
>
>Hm. Why were these vars not propagated by the regular
>mechanism for GUC
>variables (write_nondefault_variables or whatever it's called)? If the
>problem is that it's not accepting PGC_INTERNAL values, then we need to
>fix it there not here, because otherwise we'll have to pass all the
>PGC_INTERNAL variables through the backend_variables file, which seems
>like a recipe for more of the same sort of bug.
Good point :-(
I think the problem is not only that it specifically does not deal with
PGC_INTERNAL variables. The problem is in the fact that
write_nondefault_variables is called *before* the locale is read
(because the locale is read from pg_control and not from any of the
"usual" ways to read it).
Attached patch is another stab at fixing it. It makes postmaster dump a
new copy of the file once it has started the database (before it accepts
any connections), which is when it will know about these parameters.
Also updates the reading code to set the context to the one where the
variable was originally set (PGC_POSTMASTER won't work for PGC_INTERNAL,
and the other way around).
We still pass lc_collate through the special file, because
set_config_option on lc_collate will speficially *not* call setlocale(),
and we need that call. But we no longer call set_config_option from
there.
Bruce Momjian [Fri, 11 Jun 2004 03:48:35 +0000 (03:48 +0000)]
This patch updates pgpipe() on win32 to log exactly which part of the
call fails when it does. (As it is now, there is no way to figure out
the point of error). Shouldn't be a problem since it's most defintily
not a performance-critical path (only called on pgstat startup ATM).
This should help us debug the pipe error message that's on the win32
status page (which I myself have never been able to reproduce, and thus
haven't figured out a better way to debug yet)