Commit Graph

13332 Commits

Author SHA1 Message Date
Bruce Momjian 7b0f060d54 Use canonicalize_path for -D, GUC paths, and paths coming in from
environment variables.
2004-07-11 21:34:04 +00:00
Tom Lane 8801110b20 Move TablespaceCreateDbspace() call into smgrcreate(), which is where it
probably should have been to begin with; this is to cover cases like
needing to recreate the per-db directory during WAL replay.
Also, fix heap_create to force pg_class.reltablespace to be zero instead
of the database's default tablespace; this makes the world safe for
CREATE DATABASE to handle all tables in the default tablespace alike,
as per previous discussion.  And force pg_class.reltablespace to zero
when creating a relation without physical storage (eg, a view); this
avoids possibly having dangling references in this column after a
subsequent DROP TABLESPACE.
2004-07-11 19:52:52 +00:00
Tom Lane 94d4d240bb Rename XLOG_BTREE_NEWPAGE xlog record type into XLOG_HEAP_NEWPAGE, and
shift support code into heapam.c accordingly.  This is in service of
soon-to-be-committed ALTER TABLE SET TABLESPACE code that will want to
use this same record type for both heaps and indexes.

Theoretically I should have forced initdb for this, but in practice there
is no change in xlog contents because CVS tip will never really emit this
record type anyhow...
2004-07-11 18:01:45 +00:00
Bruce Momjian 98e9775a3a Use standard macro for psql binary file open. Add comment explaining
control-z requirement.
2004-07-11 13:29:16 +00:00
Tom Lane c8c40bbc9e Cause the format of BC timestamptz output to be 'datetime zone BC' rather
than 'datetime BC zone', because the former is accepted by the timestamptz
input converter while the latter may not be depending on spacing.  This
is not a loss of compatibility w.r.t. 7.4 and before, because until very
recently there was never a case where we'd output both zone and 'BC'.
2004-07-11 04:57:20 +00:00
Bruce Momjian ff2fbacc42 Fix trim_trailing_separator() to not trim c:\ nor \\network\ on Win32. 2004-07-11 02:59:42 +00:00
Bruce Momjian 330c6c42be Open files in binary mode on Win32 so control-z isn't seen as EOF. 2004-07-11 00:54:55 +00:00
Bruce Momjian 130f89e93f Allow configuration files to be placed outside the data directory.
Add new postgresql.conf variables to point to data, pg_hba.conf, and
pg_ident.conf files.

Needs more documentation.
2004-07-11 00:18:45 +00:00
Tom Lane 5dfd5063e2 Defend against overrun of ExtraOptions array --- strictly paranoia,
since the person or script starting the postmaster has to be trusted
anyway.
2004-07-10 23:29:16 +00:00
Tom Lane 99b225c528 Check more test points (in fact, every week in 1970..2004) to get a more
accurate matching of our time zone to the system's zone.  This method is
able to distinguish Antarctica/Casey from Australia/Perth, as in Chris
K-L's recent example; and it is not materially slower than before, because
the extra checks generally don't get done against very many time zones.

It seems possible that with this test we'd be able to correctly identify
Windows timezones without looking at the timezone name, but I do not
have the ability to try it.
2004-07-10 23:06:50 +00:00
Tom Lane b9f698eccb Fix BSD-only coding in port.c (passing a local variable to putenv).
Also a quick but half-baked attempt to make trim_trailing_separator
do the right thing with path consisting only of '/' --- still needs
work for Windows I think.
2004-07-10 22:58:42 +00:00
Tom Lane 82f755ec80 Test HAVING condition before computing targetlist of an Aggregate node.
This is required by SQL spec to avoid failures in cases like
  SELECT sum(win)/sum(lose) FROM ... GROUP BY ... HAVING sum(lose) > 0;
AFAICT we have gotten this wrong since day one.  Kudos to Holger Jakobs
for being the first to notice.
2004-07-10 18:39:23 +00:00
Bruce Momjian 28c4dd14cd Add comment describing ereport() NOTICE/WARNING distinction. 2004-07-06 19:51:59 +00:00
Tom Lane 07b4c48b6a Fix broken logic for pretty-printing parenthesis-suppression in UNION
et al.
2004-07-06 04:50:21 +00:00
Tom Lane a0e592141e Revert broken rpath addition. 2004-07-05 23:24:12 +00:00
Tom Lane ab50ed8f57 Fix unchecked mallocs/strdups added by recent placeholder-config-vars
patch.

Thomas Hallgren
2004-07-05 23:14:14 +00:00
Michael Meskes 1fcaceeae0 Added free() calls against memory leak in interval.c. 2004-07-05 18:51:51 +00:00
Michael Meskes 073f7312a4 - Fixed indicator in SET DESCRIPTOR.
- Added special handling of descriptor header information.
- Some code cleanup.
2004-07-05 09:45:54 +00:00
Bruce Momjian 9535ab9c85 Allow plperl to compile with Perl 5.05.
Andrew Dunstan
2004-07-05 02:18:31 +00:00
Michael Meskes 8715789928 Made sure SET DESCRIPTOR accepts all data types including constants. 2004-07-04 15:02:24 +00:00
Tom Lane a72dd7a9e4 Okay, I've had it with answering newbie questions about why plpgsql
FOR loops are giving weird syntax errors.  Restructure parsing of FOR
loops so that the integer-loop-vs-query-loop decision is driven off
the presence of '..' between IN and LOOP, rather than the presence
of a matching record/row variable name.  Hopefully this will make the
behavior a bit more transparent.
2004-07-04 02:49:04 +00:00
Tom Lane f5c798ee82 Fix no-longer-correct bit-pushing in TransactionIdSetStatus, per Alvaro. 2004-07-03 02:55:56 +00:00
Tom Lane e34082ee3b Add missing operators of the form interval-plus-datetime, as required for
better SQL compliance in this area, per recent discussion.  Mark related
operators as commutators where possible.  (The system doesn't actually care
about commutator marking for operators not returning boolean, at the moment,
but this seems forward-thinking and besides it made it easier to verify
that we hadn't missed any.)
Also, remove interval-minus-time and interval-minus-timetz operators.
I'm not sure how these got in, but they are nonstandard and had very
obviously broken behavior.  (minus is not commutative in anyone's book.)
I doubt anyone had ever used 'em, because we'd surely have gotten a bug
report about it if so.
2004-07-02 22:50:23 +00:00
Joe Conway 0b89d261c7 Andreas Pflug wrote:
From an idea of Bruce, the attached patch implements the function
 pg_tablespace_databases(oid) RETURNS SETOF oid
 which delivers as set of database oids having objects in the selected
 tablespace, enabling an admin to examine only the databases affecting
 the tablespace for objects instead of scanning all of them.

initdb forced
2004-07-02 18:59:25 +00:00
Peter Eisentraut 6d6c8b0d96 Translation update 2004-07-02 15:07:10 +00:00
Tom Lane 25ee160acd 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.
2004-07-01 21:17:13 +00:00
Joe Conway 1732cb0dbe 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'
2004-07-01 20:50:22 +00:00
Tom Lane b6197fe069 Further review of xact.c state machine for nested transactions. Fix
problems with starting subtransactions inside already-failed transactions.
Clean up some comments.
2004-07-01 20:11:03 +00:00
Michael Meskes e15d0bb8e8 Removed unused variable and added a typecast. 2004-07-01 18:32:58 +00:00
Tom Lane 77a436ba55 Fix seriously nasty memory leak in new TransactionIdIsInProgress code. 2004-07-01 03:13:05 +00:00
Tom Lane 573a71a5da 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.

Alvaro Herrera, with some help from Tom Lane.
2004-07-01 00:52:04 +00:00
Tom Lane 4c9aa572fa Revert mistaken #include change, per Merlin Moncure. 2004-06-30 15:30:41 +00:00
Michael Meskes 90326c01c9 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.
2004-06-30 15:01:58 +00:00
Michael Meskes e48cfacb84 Arrays can be read as arrays or as character strings now. 2004-06-28 11:47:42 +00:00
Tom Lane 04ab0cb5c1 Remove some no-longer-needed #includes. 2004-06-28 01:19:11 +00:00
Tom Lane adc507f242 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.
2004-06-28 00:18:47 +00:00
Michael Meskes 03ad5da8f8 - 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.
2004-06-27 12:28:42 +00:00
Dennis Bjorklund 4eb5f0a8e2 Translation updates 2004-06-27 09:35:14 +00:00
Tom Lane 0ceeb4cbbe 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.
2004-06-26 16:32:04 +00:00
Dennis Bjorklund b2ca707746 Translation updates 2004-06-26 07:19:16 +00:00
Dennis Bjorklund 03e1e6cad8 Translation updates: update-po 2004-06-26 07:11:31 +00:00
Dennis Bjorklund ac1cbcc961 Translation updates 2004-06-26 07:03:06 +00:00
Tom Lane ddf6518b95 Fix to work better with Exuberant's version of ctags.
Gavin Sherry
2004-06-25 22:00:40 +00:00
Tom Lane 0adfa2c39d 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.

Christopher Kings-Lynne
2004-06-25 21:55:59 +00:00
Dennis Bjorklund 1621192b11 Translation updates 2004-06-25 17:53:22 +00:00
Tom Lane a0e842d81b 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.

Christopher Kings-Lynne
2004-06-25 17:20:29 +00:00
Tom Lane ef2880263c #ifdef out file permissions check on SSL key file when on Windows, as
we also have done for the data directory permissions check.

Dave Page
2004-06-25 15:07:52 +00:00
Dennis Bjorklund 7d7806d0a2 Translation updates 2004-06-25 11:22:58 +00:00
Dennis Bjorklund bc4c2ac44f Swedish translation of pg_ctl. 2004-06-25 09:49:36 +00:00
Dennis Bjorklund fbe4b75515 Make pg_ctl possible to translate. Strings marked for
translation has to be complete sentences.
2004-06-25 08:49:28 +00:00
Dennis Bjorklund dcd97c01a2 Translation updates 2004-06-25 08:13:49 +00:00
Dennis Bjorklund 4e2801bcf5 Translation updates 2004-06-25 07:43:19 +00:00
Dennis Bjorklund c95246bd63 Translation updates 2004-06-24 22:21:22 +00:00
Dennis Bjorklund 0897eef095 Translation updates 2004-06-24 21:56:31 +00:00
Tom Lane b15f9b08ef 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.

Magnus Hagander
2004-06-24 21:03:42 +00:00
Tom Lane 1b80b6da6a Add --pwfile option to initdb, so that passwords can be set by GUI tools
that aren't able to feed the password to initdb's /dev/tty.

Magnus Hagander
2004-06-24 19:26:59 +00:00
Tom Lane a061a3f62f Avoid including <sys/time.h> on platforms that don't have it.
Per trouble report from Andreas Pflug.
2004-06-24 18:55:21 +00:00
Tom Lane fd786668ea Include c.h instead of postgres.h in files that need to be usable in
both frontend and backend.  Per Andreas Pflug.
2004-06-24 18:53:48 +00:00
Tom Lane f8dd00c3ef Extend pg_ctl to handle service management under WIN32. Lacks docs.
Claudio Natoli and Magnus Hagander
2004-06-24 18:23:26 +00:00
Tom Lane 1a76550b3b 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.
2004-06-22 22:30:32 +00:00
Tom Lane 5ca40c5d31 Add comment about rationale for continuing to use C library functions
instead of src/timezone for timestamping log entries.
2004-06-21 14:12:38 +00:00
Tom Lane ba6b87f330 Fix pg_dump and pg_dumpall for new names of built-in tablespaces,
per Chris K-L.
2004-06-21 13:36:42 +00:00
Tom Lane f5f448fb3e 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.
2004-06-21 04:06:07 +00:00
Bruce Momjian 483b7f8249 Rename pg_tablespaces directory to pg_tblspc, so it is more unique from
the pg_tablespace table.  Update catalog version.
2004-06-21 01:04:45 +00:00
Michael Meskes ac334e9551 Synced parser and keyword list. 2004-06-20 10:45:47 +00:00
Bruce Momjian 7864e0aa6a Add pgevent, with docs explaining out to install it on Win32. 2004-06-20 01:32:49 +00:00
Tom Lane 1098677482 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.
2004-06-19 23:02:32 +00:00
Tom Lane c1d9dec3e3 Looks like s_lock_test needs <time.h> on some platforms. 2004-06-19 20:31:55 +00:00
Tom Lane 1232878159 s_lock_test requires libpgport to build now. 2004-06-19 19:43:11 +00:00
Tom Lane f0cc132621 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.
2004-06-19 18:19:56 +00:00
Bruce Momjian 57d2665108 Fix Makefile syntax. Forgot to test this. 2004-06-19 15:14:17 +00:00
Bruce Momjian 3101181e9e Add changes to support threads on Win32 native port at some point in the future. 2004-06-19 04:43:18 +00:00
Bruce Momjian af70d57825 Enable thread safety for win32.mak build of PostgreSQL.
Andreas Pflug
2004-06-19 04:22:17 +00:00
Tom Lane f7ca71a76b 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 ...)
2004-06-18 21:47:24 +00:00
Tom Lane 984c8a48f4 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.)
2004-06-18 21:24:06 +00:00
Tom Lane 2467394ee1 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.

Gavin Sherry and Tom Lane.
2004-06-18 06:14:31 +00:00
Michael Meskes 5f3edded81 Added patch by ISHIDA Akio to allow indicators in execute statements. 2004-06-17 11:52:25 +00:00
Tom Lane d70a42e642 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.
2004-06-16 01:27:00 +00:00
Tom Lane bbe42a1514 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.
2004-06-14 18:08:19 +00:00
Tom Lane 950d047ec5 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.
2004-06-13 21:57:28 +00:00
Peter Eisentraut c0dff99dbc Translation update 2004-06-13 21:41:33 +00:00
Tom Lane ba0f9ff3ba Code review for recently-added network functions. Get it to work when
log_hostname is enabled, clean up documentation.
2004-06-13 19:56:52 +00:00
Bruce Momjian eebad1a74f ECPG preprocessor for PostgreSQL 7.4.1, 7.4.2 doubles const,
volatile, static, and register keywords before variables,
declared as VARCHAR.

Sergey N. Yatskevich
2004-06-11 17:32:39 +00:00
Tom Lane bbf0ebadaf 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.
2004-06-11 17:20:39 +00:00
Bruce Momjian 2597056cc3 Use sizeof() rather than strlen() in array size. 2004-06-11 17:09:13 +00:00
Tom Lane e6cba71503 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 ...
2004-06-11 16:43:24 +00:00
Bruce Momjian 8d64b56206 Cleanup use of Win32 START by using "" for title. No need for temp
batch files anymore.
2004-06-11 16:36:31 +00:00
Bruce Momjian 800910fe97 Add URL about Win32 quoting behavior. 2004-06-11 16:10:09 +00:00
Bruce Momjian eae2a7204f Another fix for Win32 START. 2004-06-11 04:17:21 +00:00
Bruce Momjian 1261fe18ff 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.

Andrew Dunstan
2004-06-11 03:56:46 +00:00
Bruce Momjian 3a8cdf33aa >> 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.

Magnus Hagander
2004-06-11 03:54:54 +00:00
Bruce Momjian a28d04e6ee 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)

Magnus Hagander
2004-06-11 03:48:35 +00:00
Tom Lane 7643bed58e When using extended-query protocol, postpone planning of unnamed statements
until Bind is received, so that actual parameter values are visible to the
planner.  Make use of the parameter values for estimation purposes (but
don't fold them into the actual plan).  This buys back most of the
potential loss of plan quality that ensues from using out-of-line
parameters instead of putting literal values right into the query text.

This patch creates a notion of constant-folding expressions 'for
estimation purposes only', in which case we can be more aggressive than
the normal eval_const_expressions() logic can be.  Right now the only
difference in behavior is inserting bound values for Params, but it will
be interesting to look at other possibilities.  One that we've seen
come up repeatedly is reducing now() and related functions to current
values, so that queries like ... WHERE timestampcol > now() - '1 day'
have some chance of being planned effectively.

Oliver Jowett, with some kibitzing from Tom Lane.
2004-06-11 01:09:22 +00:00
Bruce Momjian 5fe8c7d6e5 More restructuring to use Win32 START with paths needing quotes. 2004-06-11 00:57:25 +00:00
Bruce Momjian 6cc4175b25 Attached is a patch that takes care of the PATHSEP issue. I made a more
extensive change then what was suggested. I found the file path.c that
contained a lot of "Unix/Windows" agnostic functions so I added a function
there instead and removed the PATHSEP declaration in exec.c altogether. All
to keep things from scattering all over the code.

I also took the liberty of changing the name of the functions
"first_path_sep" and "last_path_sep". Where I come from (and I'm apparently
not alone given the former macro name PATHSEP), they should be called
"first_dir_sep" and "last_dir_sep". The new function I introduced, that
actually finds path separators, is now the "first_path_sep". The patch
contains changes on all affected places of course.

I also changed the documentation on dynamic_library_path to reflect the
chagnes.

Thomas Hallgren
2004-06-10 22:26:24 +00:00
Bruce Momjian d4117de50a More quoting cleanups for Win32's pg_ctl. 2004-06-10 22:20:53 +00:00
Tom Lane 3485cc3a7c Adjust cost_nonsequential_access() to have more reasonable behavior
when random_page_cost has a small value.  Per Manfred Koizar, though
I didn't use his equation exactly.
2004-06-10 21:02:00 +00:00
Tom Lane 36af1dd299 Make ALTER TABLE ADD SERIAL work reasonably in inheritance cases, too. 2004-06-10 18:34:45 +00:00
Tom Lane 6121aed8a5 Fix oversight in recent ALTER TABLE improvements. We now support
ALTER TABLE tab ADD COLUMN col SERIAL, but we forgot to install the
dependency between the column and the sequence, so the sequence
would not go away if you dropped the table later.
2004-06-10 18:25:02 +00:00
Bruce Momjian c9d327b866 Use /B to start so a new window isn't created, per Andrew Dunstan. 2004-06-10 18:02:36 +00:00
Tom Lane 45616f5bbb Clean up generation of default names for constraints, indexes, and serial
sequences, as per recent discussion.  All these names are now of the
form table_column_type, with digits added if needed to make them unique.
Default constraint names are chosen to be unique across their whole schema,
not just within the parent object, so as to be more SQL-spec-compatible
and make the information schema views more useful.
2004-06-10 17:56:03 +00:00
Bruce Momjian 75db5a665f Add START background code for another code path, per Andrew Dunstan. 2004-06-10 17:45:09 +00:00
Bruce Momjian 3a854af433 Use START for pg_ctl background runs on Win32, from Magnus. 2004-06-10 17:26:14 +00:00
Peter Eisentraut 6de9abc359 Translation update 2004-06-10 17:18:14 +00:00
Peter Eisentraut 1159c484b2 New translation 2004-06-10 17:10:24 +00:00
Bruce Momjian 10a3d19ad4 Handle multiple double-quoted strings using Win32's system() call.
Document limitations.
2004-06-10 16:35:18 +00:00
Bruce Momjian 6d1347b36f Add pg_ctl native language files for Russian.
Serguei A. Mokhov
2004-06-10 02:59:22 +00:00
Bruce Momjian 659660c116 Add regression tests for CSV COPY format. 2004-06-09 23:39:24 +00:00
Tom Lane 337f802460 Fix slightly-wrong syntax error messages from bootstrap parser, as per
report from Tom Cook.
2004-06-09 19:49:56 +00:00
Tom Lane 7e64dbc6b5 Support assignment to subfields of composite columns in UPDATE and INSERT.
As a side effect, cause subscripts in INSERT targetlists to do something
more or less sensible; previously we evaluated such subscripts and then
effectively ignored them.  Another side effect is that UPDATE-ing an
element or slice of an array value that is NULL now produces a non-null
result, namely an array containing just the assigned-to positions.
2004-06-09 19:08:20 +00:00
Bruce Momjian 3a0df651da Use single quotes around pg_dump call from pg_dumpall. 2004-06-09 17:37:28 +00:00
Bruce Momjian dc6c8c2d06 Use single quotes for pg_ctl system call. 2004-06-09 17:36:07 +00:00
Bruce Momjian 7ac67fd189 Add time.h to pg_dumpall. 2004-06-09 17:05:14 +00:00
Bruce Momjian 36b8654cb0 Use mkstemp instead of mktemp in thread test, per Jan. 2004-06-09 15:16:17 +00:00
Bruce Momjian a1ccbb9019 Previous code cleanup was for bufpage.c, not bufmgr.c.
This cleanup just cleans up a comment.
2004-06-09 13:11:34 +00:00
Tom Lane 32af13f03d Add missing check for too-few-inputs when replacing a zero-dimensional
array.
2004-06-08 20:28:21 +00:00
Bruce Momjian ce04221a1e Stylistic changes in bufmgr.c
Basically replaces (*a).b with a->b as it is everywhere else in
	Postgres.

Manfred Koizar
2004-06-08 14:00:35 +00:00
Bruce Momjian 5e926cbb6b vacuum.c refactoring
. rename variables
     . cur_buffer -> dst_buffer
     . ToPage -> dst_page
     . cur_page -> dst_vacpage
   . move variable declarations into block where variable is used
   . various Asserts instead of elog(ERROR, ...)
   . extract functionality from repair_frag() into new routines
     . move_chain_tuple()
     . move_plain_tuple()
     . update_hint_bits()
   . create type ExecContext
   . add comments

Manfred Koizar
2004-06-08 13:59:36 +00:00
Bruce Momjian cd8b0fc5f1 Change PGETC to PGSYSCONFDIR and PGLOCALE to PGLOCALEDIR, per Peter. 2004-06-08 13:49:23 +00:00
Bruce Momjian b2a17038d7 Have strerror_r return "Unknown error". 2004-06-08 01:45:50 +00:00
Bruce Momjian a63d2168e9 Fix strerror_r by checking return type from configure. 2004-06-07 22:39:45 +00:00
Bruce Momjian 9136613803 Add start/stop times for pg_dump/pg_dumpall when verbose output is used. 2004-06-07 20:35:57 +00:00
Tom Lane 7845bfc095 Dept of second thoughts: don't use the new wide-character upper/lower
code if we are running in a single-byte encoding.  No point in the
extra overhead in that case.
2004-06-06 22:17:01 +00:00
Tom Lane b8312c5fe7 Add some regression tests for composite-type operations. 2004-06-06 21:20:46 +00:00
Tom Lane bb3da43e3b Allow use of table rowtypes directly as column types of other tables.
Instead of prohibiting that, put code into ALTER TABLE to reject ALTERs
that would affect other tables' columns.  Eventually we will probably
want to extend ALTER TABLE to actually do something useful here, but
in the meantime it seems wrong to forbid the feature completely just
because ALTER isn't fully baked.
2004-06-06 20:30:07 +00:00
Tom Lane 19e3bdd6c7 Minor catalog cleanups for composite-type stuff. Adjust signatures shown
in pg_proc for record_in, record_out, etc to reflect that these routines
now make use of the second OID parameter.  Remove the ancient SET entry
in pg_type, which is now highly unlikely to ever become used again.
Adjust type_sanity regression test to match.
2004-06-06 19:07:02 +00:00
Tom Lane 62c3e61e50 Add binary I/O support for composite types. 2004-06-06 18:06:25 +00:00
Tom Lane f24c5098fd Remove finger from dike: composite types are now allowed as table columns.
Still a few things to do, like binary I/O and regression tests and docs,
but might as well let people play with the toy.
2004-06-06 04:52:55 +00:00
Tom Lane a3704d3dec Preliminary support for composite type I/O; just text for now,
no binary yet.
2004-06-06 04:50:28 +00:00
Tom Lane c541bb86e9 Infrastructure for I/O of composite types: arrange for the I/O routines
of a composite type to get that type's OID as their second parameter,
in place of typelem which is useless.  The actual changes are mostly
centralized in getTypeInputInfo and siblings, but I had to fix a few
places that were fetching pg_type.typelem for themselves instead of
using the lsyscache.c routines.  Also, I renamed all the related variables
from 'typelem' to 'typioparam' to discourage people from assuming that
they necessarily contain array element types.
2004-06-06 00:41:28 +00:00
Tom Lane c3a153afed Tweak palloc/repalloc to allow zero bytes to be requested, as per recent
proposal.  Eliminate several dozen now-unnecessary hacks to avoid palloc(0).
(It's likely there are more that I didn't find.)
2004-06-05 19:48:09 +00:00
Tom Lane 24a1e20f14 Adjust PageGetMaxOffsetNumber to ensure sane behavior on uninitialized
pages, even when the macro's result is stored into an unsigned variable.
2004-06-05 17:42:46 +00:00
Bruce Momjian 641c5b565b Slight code cleanup for printf's. 2004-06-05 04:27:48 +00:00
Tom Lane ae93e5fd6e Make the world very nearly safe for composite-type columns in tables.
1. Solve the problem of not having TOAST references hiding inside composite
values by establishing the rule that toasting only goes one level deep:
a tuple can contain toasted fields, but a composite-type datum that is
to be inserted into a tuple cannot.  Enforcing this in heap_formtuple
is relatively cheap and it avoids a large increase in the cost of running
the tuptoaster during final storage of a row.
2. Fix some interesting problems in expansion of inherited queries that
reference whole-row variables.  We never really did this correctly before,
but it's now relatively painless to solve by expanding the parent's
whole-row Var into a RowExpr() selecting the proper columns from the
child.
If you dike out the preventive check in CheckAttributeType(),
composite-type columns now seem to actually work.  However, we surely
cannot ship them like this --- without I/O for composite types, you
can't get pg_dump to dump tables containing them.  So a little more
work still to do.
2004-06-05 01:55:05 +00:00
Tom Lane 8f2ea8b7b5 Resurrect heap_deformtuple(), this time implemented as a singly nested
loop over the fields instead of a loop around heap_getattr.  This is
considerably faster (O(N) instead of O(N^2)) when there are nulls or
varlena fields, since those prevent use of attcacheoff.  Replace loops
over heap_getattr with heap_deformtuple in situations where all or most
of the fields have to be fetched, such as printtup and tuptoaster.
Profiling done more than a year ago shows that this should be a nice
win for situations involving many-column tables.
2004-06-04 20:35:21 +00:00
Bruce Momjian af44cac6ef The attached patch will create a dummy pg_config_paths.h. Additionally,
ENABLE_THREAD_SAFETY is supported by the makefile (but not by the
sources, which need some rework)

Andreas Pflug
2004-06-04 13:30:04 +00:00
Bruce Momjian bf2a115f2f Remove dash in pg_ctl signal name. It broke with getopt_long dash
reorganization processing, and it is clearer without the dash anyway.
2004-06-04 04:05:36 +00:00
Tom Lane 223b813d0e Remove some long-obsolete code that was causing a strange error message
when someone attempts to create a column of a composite datatype.  For
now, just make sure we produce a reasonable error at the 'right place'.
Not sure if this will be made to work before 7.5, but make it act
reasonably in case nothing more gets done.
2004-06-04 03:24:04 +00:00
Tom Lane 7eb2ff799e Support assignment to whole-row variables in plpgsql; also fix glitch
with using a trigger's NEW or OLD record as a whole-row variable in an
expression.  Fixes several long-standing complaints.
2004-06-04 02:37:06 +00:00
Tom Lane 0f059e1d13 Allow plpgsql to pass composite-type arguments (ie, whole-row variables)
into SQL expressions.  At present this only works usefully for variables
of named rowtypes, not RECORD variables, since the SQL parser can't infer
anything about datatypes from a RECORD Param.  Still, it's a step forward.
2004-06-04 00:07:52 +00:00
Tom Lane 724c706400 Restructure plpgsql's parsing of datatype declarations to unify the
scalar and composite (rowtype) cases a little better.  This commit is
just a code-beautification operation and shouldn't make any real
difference in behavior, but it's an important preliminary step for
trying to improve plgsql's handling of rowtypes.
2004-06-03 22:56:43 +00:00
Tom Lane 2a22750c96 Remove typeTypeFlag(), which was not only unused but entirely redundant
with typeTypType().
2004-06-03 19:41:46 +00:00
Tom Lane 238dc4634f plpgsql hasn't needed -Wno-error for a good long while. 2004-06-03 19:21:31 +00:00
Tom Lane 5e4dd864ec Add range-checking in timestamp_recv and timestamptz_recv, per
Stephen Frost.  Also tighten date range check in timestamp2tm.
2004-06-03 17:57:09 +00:00
Bruce Momjian 90015d40fe Remove SYSCONFDIR from win32 include file. 2004-06-03 14:55:21 +00:00
Tom Lane 921d749bd4 Adjust our timezone library to use pg_time_t (typedef'd as int64) in
place of time_t, as per prior discussion.  The behavior does not change
on machines without a 64-bit-int type, but on machines with one, which
is most, we are rid of the bizarre boundary behavior at the edges of
the 32-bit-time_t range (1901 and 2038).  The system will now treat
times over the full supported timestamp range as being in your local
time zone.  It may seem a little bizarre to consider that times in
4000 BC are PST or EST, but this is surely at least as reasonable as
propagating Gregorian calendar rules back that far.

I did not modify the format of the zic timezone database files, which
means that for the moment the system will not know about daylight-savings
periods outside the range 1901-2038.  Given the way the files are set up,
it's not a simple decision like 'widen to 64 bits'; we have to actually
think about the range of years that need to be supported.  We should
probably inquire what the plans of the upstream zic people are before
making any decisions of our own.
2004-06-03 02:08:07 +00:00
Bruce Momjian 473ac70aca Win32 regression fixes:
. only use the -W flag on pwd for $pkglibdir. All the other paths need
to be seen as MSys type paths, whereas $pkglibdir needs to be expressed
as a genuine windows path.
. run single tests in the background and explicitly wait for them -
solves the problem of the MSys shell not waiting properly for the copy
test to finish.
. use pg_ctl to shut down the test postmaster - no more use of ad hoc
kill programs or the task manager.

Andrew Dunstan
2004-06-03 00:25:47 +00:00
Bruce Momjian 3c45d348db init_ssl_system will return 0 on success and -1 on failure, which will
be interpreted just the other way round in initialize_SSL.

Andreas Pflug
2004-06-03 00:13:19 +00:00
Bruce Momjian 1881c8f3c5 Add new Win32 file with adjustments for recent code changes.
Andreas Pflug
2004-06-03 00:11:13 +00:00
Bruce Momjian 6870843339 Add PGETC (for pg_service.conf) and PGLOCALE (for locale dir)
environment variable processing to libpq.

The patch also adds code to our client apps so we set the environment
variable directly based on our binary location, unless it is already
set. This will allow our applications to emit proper locale messages
that are generated in libpq.
2004-06-03 00:07:38 +00:00
Bruce Momjian e8d9d68ca4 Per previous discussions, here are two functions to send INT and TERM
(cancel and terminate) signals to other backends.   They permit only INT
and TERM, and permits sending only to postgresql backends.

Magnus Hagander
2004-06-02 21:29:29 +00:00
Bruce Momjian de2c66539e Move -lpgport to the beginning of the library list for win32 linking. 2004-06-02 21:05:52 +00:00
Bruce Momjian 1cdc58722c OK, here's the final version of ALTER TABLE ... SET WITHOUT CLUSTER.
Has docs + regression test.

Christopher Kings-Lynne
2004-06-02 21:01:10 +00:00
Tom Lane 6f1aa94fd9 Fix breakage from GUC-extension-variables patch. 2004-06-02 18:09:32 +00:00
Tom Lane 2095206de1 Adjust btree index build to not use shared buffers, thereby avoiding the
locking conflict against concurrent CHECKPOINT that was discussed a few
weeks ago.  Also, if not using WAL archiving (which is always true ATM
but won't be if PITR makes it into this release), there's no need to
WAL-log the index build process; it's sufficient to force-fsync the
completed index before commit.  This seems to gain about a factor of 2
in my tests, which is consistent with writing half as much data.  I did
not try it with WAL on a separate drive though --- probably the gain would
be a lot less in that scenario.
2004-06-02 17:28:18 +00:00
Bruce Momjian 4d0e47d5a9 Add locale setting for pg_ctl. 2004-06-01 22:03:18 +00:00
Tom Lane 4b2dafcc0b Align GRANT/REVOKE behavior more closely with the SQL spec, per discussion
of bug report #1150.  Also, arrange that the object owner's irrevocable
grant-option permissions are handled implicitly by the system rather than
being listed in the ACL as self-granted rights (which was wrong anyway).
I did not take the further step of showing these permissions in an
explicit 'granted by _SYSTEM' ACL entry, as that seemed more likely to
bollix up existing clients than to do anything really useful.  It's still
a possible future direction, though.
2004-06-01 21:49:23 +00:00
Tom Lane ba0f38d601 FastList is history, yay. 2004-06-01 06:02:13 +00:00
Tom Lane e590ceecf1 Just about there on de-FastList-ification. 2004-06-01 04:47:46 +00:00
Bruce Momjian 962a94bb5a More locale fixes for pg_ctl. 2004-06-01 03:32:42 +00:00
Tom Lane a0d6e29ee7 Some more de-FastList-ification. 2004-06-01 03:28:48 +00:00
Tom Lane 80c6847cc5 Desultory de-FastList-ification. RelOptInfo.reltargetlist is back to
being a plain List.
2004-06-01 03:03:05 +00:00
Bruce Momjian 6c33054a0c Remove init_nls() functions, call set_pglocale() directly.
Add locale to pg_ctl.c.
2004-06-01 02:54:09 +00:00
Bruce Momjian 66fa6eba5a Add pgpid_t for use with pids. 2004-06-01 01:28:03 +00:00
Tom Lane 91d20ff7aa Additional mop-up for sync-to-fsync changes: avoid issuing fsyncs for
temp tables, and avoid WAL-logging truncations of temp tables.  Do issue
fsync on truncated files (not sure this is necessary but it seems like
a good idea).
2004-05-31 20:31:33 +00:00
Tom Lane e674707968 Minor code rationalization: FlushRelationBuffers just returns void,
rather than an error code, and does elog(ERROR) not elog(WARNING)
when it detects a problem.  All callers were simply elog(ERROR)'ing on
failure return anyway, and I find it hard to envision a caller that would
not, so we may as well simplify the callers and produce the more useful
error message directly.
2004-05-31 19:24:05 +00:00
Tom Lane a843053e2e Suppress compile warnings on machines where the INT64CONST() decoration
is actually needed.  Per Oliver Elphick.
2004-05-31 18:53:18 +00:00
Tom Lane 8b1ae8fa3f Too few parens for my taste in this macro. 2004-05-31 18:42:40 +00:00
Tom Lane 87de80e95a I think I've finally identified the cause of the off-by-one-second
issue in timestamp conversion that we hacked around for so long by
ignoring the seconds field from localtime().  It's simple: you have
to watch out for platform-specific roundoff error when reducing a
possibly-fractional timestamp to integral time_t form.  In particular
we should subtract off the already-determined fractional fsec field.
This should be enough to get an exact answer with int64 timestamps;
with float timestamps, throw in a rint() call just to be sure.
2004-05-31 18:31:51 +00:00
Bruce Momjian d534b9ee9e Have pg_ctl print pid and error on signal failure, per suggestion from Tom. 2004-05-31 17:57:31 +00:00
Tom Lane 9b178555fc Per previous discussions, get rid of use of sync(2) in favor of
explicitly fsync'ing every (non-temp) file we have written since the
last checkpoint.  In the vast majority of cases, the burden of the
fsyncs should fall on the bgwriter process not on backends.  (To this
end, we assume that an fsync issued by the bgwriter will force out
blocks written to the same file by other processes using other file
descriptors.  Anyone have a problem with that?)  This makes the world
safe for WIN32, which ain't even got sync(2), and really makes the world
safe for Unixen as well, because sync(2) never had the semantics we need:
it offers no way to wait for the requested I/O to finish.

Along the way, fix a bug I recently introduced in xlog recovery:
file truncation replay failed to clear bufmgr buffers for the dropped
blocks, which could result in 'PANIC:  heap_delete_redo: no block'
later on in xlog replay.
2004-05-31 03:48:10 +00:00
Neil Conway 72b6ad6313 Use the new List API function names throughout the backend, and disable the
list compatibility API by default. While doing this, I decided to keep
the llast() macro around and introduce llast_int() and llast_oid() variants.
2004-05-30 23:40:41 +00:00
Tom Lane ec0b1f2716 Paranoia: ensure MyBackendId is InvalidBackendId in a process that has
never executed SIBackendInit().
2004-05-30 17:58:12 +00:00
Bruce Momjian bf65d730de Add thread library to libpgport creation. 2004-05-30 14:07:47 +00:00
Tom Lane c6719a2784 Implement new PostmasterIsAlive() check for WIN32, per Claudio Natoli.
In passing, align a few error messages with the style guide.
2004-05-30 03:50:15 +00:00
Tom Lane 076a055acf Separate out bgwriter code into a logically separate module, rather
than being random pieces of other files.  Give bgwriter responsibility
for all checkpoint activity (other than a post-recovery checkpoint);
so this child process absorbs the functionality of the former transient
checkpoint and shutdown subprocesses.  While at it, create an actual
include file for postmaster.c, which for some reason never had its own
file before.
2004-05-29 22:48:23 +00:00
Peter Eisentraut d531fd2cdc Translation update 2004-05-29 06:28:58 +00:00
Peter Eisentraut c1010381ea Translation updates 2004-05-29 06:26:14 +00:00
Peter Eisentraut 55216724b2 Translation update 2004-05-29 06:22:56 +00:00
Tom Lane 41accb0e1a Fix another place that assumed 'x = lcons(y, z)' would not have any
side-effect on the original list z.  I fear we have a few more of these
to track down yet :-(.
2004-05-29 05:55:13 +00:00
Bruce Momjian 0163983330 When checking for thread safety with src/tools/thread/thread_test.c, the
mktemp function wants an argument that contains 6 X, while the current
version only supplies 5 X which will fail on my SuSE 8.1.

Andreas Pflug
2004-05-28 18:37:10 +00:00
Tom Lane 0f3f34f098 Fix minor error in comment. 2004-05-28 16:37:11 +00:00
Tom Lane d707495452 Fix thinko in recent patch to change temp-table permissions behavior:
this is an aclmask function and does not have the same return convention
as aclcheck functions.  Also adjust the behavior so that users without
CREATE TEMP permission still have USAGE permission on their session's
temp schema.  This allows privileged code to create a temp table and
make it accessible to code that's not got the same privilege.  (Since
the default permissions on a table are no-access, an explicit grant on
the table will still be needed; but I see no reason that the temp schema
itself should prohibit such access.)
2004-05-28 16:17:14 +00:00
Tom Lane 1b9ef0025d Fix some typos I introduced in WIN32-only code late last night.
Thanks to Thomas Hallgren.
2004-05-28 15:14:03 +00:00
Tom Lane 1a321f26d8 Code review for EXEC_BACKEND changes. Reduce the number of #ifdefs by
about a third, make it work on non-Windows platforms again.  (But perhaps
I broke the WIN32 code, since I have no way to test that.)  Fold all the
paths that fork postmaster child processes to go through the single
routine SubPostmasterMain, which takes care of resurrecting the state that
would normally be inherited from the postmaster (including GUC variables).
Clean up some places where there's no particularly good reason for the
EXEC and non-EXEC cases to work differently.  Take care of one or two
FIXMEs that remained in the code.
2004-05-28 05:13:32 +00:00
Tom Lane 37da0ba0e0 Seems we forgot the installdirs target in this makefile. 2004-05-28 03:53:33 +00:00
Tom Lane 2ac8c96ecb Make sure elog behaves sanely if invoked before GUC initializes. 2004-05-28 03:11:15 +00:00
Tom Lane d7013b0f15 On WIN32, don't choke when setlocale(LC_MESSAGES, "") returns NULL.
Per report from Magnus.
2004-05-27 19:19:05 +00:00
Tom Lane 16974ee910 Get rid of the former rather baroque mechanism for propagating the values
of ThisStartUpID and RedoRecPtr into new backends.  It's a lot easier just
to make them all grab the values out of shared memory during startup.
This helps to decouple the postmaster from checkpoint execution, which I
need since I'm intending to let the bgwriter do it instead, and it also
fixes a bug in the Win32 port: ThisStartUpID wasn't getting propagated at
all AFAICS.  (Doesn't give me a lot of faith in the amount of testing that
port has gotten.)
2004-05-27 17:12:57 +00:00
Bruce Momjian bb44a7c525 pgindent files for Tom. 2004-05-27 15:07:41 +00:00
Bruce Momjian 83526ccf06 Cleanup for Win32 pgkill. 2004-05-27 14:39:33 +00:00
Bruce Momjian 6f21f4adaa Move pgkill out into /port so pg_ctl can use it on Win32. 2004-05-27 13:08:57 +00:00
Bruce Momjian f3d6d948c7 Change pg_ctl to be in C. This was the final shell script and is
helpful for the Win32 port.

Andrew Dunstan, with additions by Bruce.
2004-05-27 03:37:55 +00:00
Tom Lane 4646a8f32f Reduce the minimum allocable chunk size to 8 bytes (from 16). Now that
ListCells are only 8 bytes instead of 12 (on 4-byte-pointer machines
anyway), it's worth maintaining a separate freelist for 8-byte objects.
Remembering that alloc chunks carry 8 bytes of overhead, this should
reduce the net storage requirement for a long List by about a third.
2004-05-26 19:44:15 +00:00
Tom Lane 0858ed20d2 A couple other cosmetic cleanups in new List stuff. 2004-05-26 19:30:17 +00:00
Bruce Momjian 437063bdc4 Move setlocale() outside of NLS-only defines. 2004-05-26 19:00:31 +00:00
Tom Lane d96c374648 Use new forboth() macro to make loop coding a bit clearer. 2004-05-26 18:54:08 +00:00
Bruce Momjian 1cf9d7bd24 Renumber to prevent duplicate oids. Update catalog version. 2004-05-26 18:37:33 +00:00
Bruce Momjian 97d625dd1c *) inet_(client|server)_(addr|port)() and necessary documentation for
the four functions.


> Also, please justify the temp-related changes.  I was not aware that we
> had any breakage there.

patch-tmp-schema.txt contains the following bits:

*) Changes pg_namespace_aclmask() so that the superuser is always able
to create objects in the temp namespace.
*) Changes pg_namespace_aclmask() so that if this is a temp namespace,
objects are only allowed to be created in the temp namespace if the
user has TEMP privs on the database.  This encompasses all object
creation, not just TEMP tables.
*) InitTempTableNamespace() checks to see if the current user, not the
session user, has access to create a temp namespace.

The first two changes are necessary to support the third change.  Now
it's possible to revoke all temp table privs from non-super users and
limiting all creation of temp tables/schemas via a function that's
executed with elevated privs (security definer).  Before this change,
it was not possible to have a setuid function to create a temp
table/schema if the session user had no TEMP privs.

patch-area-path.txt contains:

*) Can now determine the area of a closed path.


patch-dfmgr.txt contains:

*) Small tweak to add the library path that's being expanded.

I was using $lib/foo.so and couldn't easily figure out what the error
message, "invalid macro name in dynamic library path" meant without
looking through the source code.  With the path in there, at least I
know where to start looking in my config file.

Sean Chittenden
2004-05-26 18:35:51 +00:00
Tom Lane 51227f8d9d Use a cleaner substitute for the inability to apply length() to the tail
of a list.  Per private discussion with Neil.
2004-05-26 18:35:41 +00:00
Bruce Momjian 0d5364fd98 Fix problem with doing 7.0.X dumps on character varying[] fields.
Christopher Kings-Lynne
2004-05-26 18:24:22 +00:00
Bruce Momjian 4807619251 Renumber bit/boolean aggregates to remove duplicates. 2004-05-26 18:14:36 +00:00
Tom Lane fafd5640d1 Recent commits added created files that weren't getting deleted by
'make clean'.
2004-05-26 17:24:07 +00:00
Tom Lane f6c5da977c Add <limits.h>, per Magnus. 2004-05-26 16:16:03 +00:00
Bruce Momjian 8096fe45ce The added aggregates are:
(1) boolean-and and boolean-or aggregates named bool_and and bool_or.
    they (SHOULD;-) correspond to standard sql every and some/any aggregates.
    they do not have the right name as there is a problem with
    the standard and the parser for some/any. Tom also think that
    the standard name is misleading because NULL are ignored.
    Also add 'every' aggregate.

(2) bitwise integer aggregates named bit_and and bit_or for
    int2, int4, int8 and bit types. They are not standard, but I find
    them useful. I needed them once.


The patches adds:

- 2 new very short strict functions for boolean aggregates in
  src/backed/utils/adt/bool.c,
  src/include/utils/builtins.h and src/include/catalog/pg_proc.h

- the new aggregates declared in src/include/catalog/pg_proc.h and
  src/include/catalog/pg_aggregate.h

- some documentation and validation about these new aggregates.

Fabien COELHO
2004-05-26 15:26:28 +00:00
Bruce Momjian 3dc37cd8d6 The patch adresses the TODO list item "Allow external interfaces to
extend the GUC variable set".

Plugin modules like the pl<lang> modules needs a way to declare
configuration parameters. The postmaster has no knowledge of such
modules when it reads the postgresql.conf file. Rather than allowing
totally unknown configuration parameters, the concept of a variable
"class" is introduced. Variables that belongs to a declared classes will
create a placeholder value of string type and will not generate an
error. When a module is loaded, it will declare variables for such a
class and make those variables "consume" any placeholders that has been
defined. Finally, the module will generate warnings for unrecognized
placeholders defined for its class.

More detail:
The design is outlined after the suggestions made by Tom Lane and Joe
Conway in this thread:

http://archives.postgresql.org/pgsql-hackers/2004-02/msg00229.php

A new string variable 'custom_variable_classes' is introduced. This
variable is a comma separated string of identifiers. Each identifier
denots a 'class' that will allow its members to be added without error.
This variable must be defined in postmaster.conf.

The lexer (guc_file.l) is changed so that it can accept a qualified name
in the form <ID>.<ID> as the name of a variable. I also changed so that
the 'custom_variable_classes', if found, is added first of all variables
in order to remove the order of declaration issue.

The guc_variables table is made more dynamic. It is originally created
with 20% slack and can grow dynamically. A capacity is introduced to
avoid resizing every time a new variable is added. guc_variables and
num_guc_variables becomes static (hidden).

The GucInfoMain now uses the new function get_guc_variables() and
GetNumConfigOptions  instead or using the guc_variables directly.

The find_option() function, when passed a missing name, will check if
the name is qualified. If the name is qualified and if the qualifier
denotes a class included in the 'custom_variable_classes', a placeholder
variable will be created. Such a placeholder will not participate in a
list operation but will otherwise function as a normal string variable.

Define<type>GucVariable() functions will be added, one for each variable
type. They are inteded to be used by add-on modules like the pl<lang>
mappings. Example:

extern void DefineCustomBoolVariable(
         const char* name,
         const char* short_desc,
         const char* long_desc,
         bool* valueAddr,
         GucContext context,
         GucBoolAssignHook assign_hook,
         GucShowHook show_hook);

(I created typedefs for the assign-hook and show-hook functions). A call
to these functions will define a new GUC-variable. If a placeholder
exists it will be replaced but it's value will be used in place of the
default value. The valueAddr is assumed ot point at a default value when
the define function is called. The only constraint that is imposed on a
Custom variable is that its name is qualified.

Finally, a function:

void EmittWarningsOnPlacholders(const char* className)

was added. This function should be called when a module has completed
its variable definitions. At that time, no placeholders should remain
for the class that the module uses. If they do, elog(INFO, ...) messages
will be issued to inform the user that unrecognized variables are
present.

Thomas Hallgren
2004-05-26 15:07:41 +00:00
Bruce Momjian cfbfdc557d This patch implement the TODO [ALTER DATABASE foo OWNER TO bar].
It was necessary to touch in grammar and create a new node to make home
to the new syntax. The command is also supported in E
CPG. Doc updates are attached too. Only superusers can change the owner
of the database. New owners don't need any aditional
privileges.

Euler Taveira de Oliveira
2004-05-26 13:57:04 +00:00
Neil Conway d0b4399d81 Reimplement the linked list data structure used throughout the backend.
In the past, we used a 'Lispy' linked list implementation: a "list" was
merely a pointer to the head node of the list. The problem with that
design is that it makes lappend() and length() linear time. This patch
fixes that problem (and others) by maintaining a count of the list
length and a pointer to the tail node along with each head node pointer.
A "list" is now a pointer to a structure containing some meta-data
about the list; the head and tail pointers in that structure refer
to ListCell structures that maintain the actual linked list of nodes.

The function names of the list API have also been changed to, I hope,
be more logically consistent. By default, the old function names are
still available; they will be disabled-by-default once the rest of
the tree has been updated to use the new API names.
2004-05-26 04:41:50 +00:00
Bruce Momjian f240d37229 Add FRONTEND to ecpglib. 2004-05-25 21:20:44 +00:00
Bruce Momjian 2a70ec1bdf Allow relative paths as long as the hardcoded path matches the bin path
up to the last bin directory name.
2004-05-25 20:47:41 +00:00
Tom Lane bfb77c15ca Tweaks per discussion with Magnus: suppress chatter on unpatched MinGW
systems, add verbose logging (at DEBUG4) to help identify why a given
time zone is not matched.
2004-05-25 19:46:21 +00:00
Tom Lane 957b90ed6a Fix erroneous error message printout when a configuration file contains
an overlength token.  Printout was always garbage and could dump core
entirely :-(.  Per report from Martin Pitt.
2004-05-25 19:11:14 +00:00
Bruce Momjian c826991dd7 Fix set_pglocale to properly pass my_exec_path to get_locale_path instead of argv0. 2004-05-25 18:18:29 +00:00
Tom Lane 76c50c080b Add code to identify_system_timezone() to try all zones in the zic
database, not just ones that we cons up POSIX names for.  This looks
grim but it seems to take less than a second even on a relatively slow
machine, and since it only happens once during postmaster startup, that
seems acceptable.
2004-05-25 18:08:59 +00:00
Bruce Momjian 17ff18141c Add exec.c to ecpg library because path.c now uses it. 2004-05-25 17:35:51 +00:00
Bruce Momjian 88ca65d76b Skip settting LC_ALL in the backend. 2004-05-25 01:42:08 +00:00
Bruce Momjian 228897774c Make the locale location relocatable.
Adjust get_*_path functions to be limited to MAXPGPATH.
2004-05-25 01:00:30 +00:00
Bruce Momjian 244ee0c0f2 Remove pstrdup() call from exec.c because DLLIMPORT flag on
CurrentMemoryContext caused compile problems.

Recode to not make a copy of the PATH but copy parts out into MAXPGPATH
variables.
2004-05-24 22:35:37 +00:00
Bruce Momjian fcbc95b9a2 Make validate_exec take a const char *, for gcc 3.4, which is more
strict.
2004-05-24 20:23:50 +00:00
Bruce Momjian 3661d1d6e0 This patch fixes the find_my_exec code for pgstat backends. Required for
TZ stuff (and possibly others) to work in the pgstat backends.

Magnus Hagander
2004-05-24 02:47:47 +00:00
Tom Lane dc39937762 Rewrite identify_system_timezone() to give it better-than-chance odds
of correctly identifying the system's daylight-savings transition rules.
This still begs the question of how to look through the zic database to
find a matching zone definition, but at least now we'll have some chance
of recognizing the match when we find it.
2004-05-24 02:30:29 +00:00
Bruce Momjian 82695df3b7 Remove a few $filter() calls that were not needed. 2004-05-24 01:01:38 +00:00
Tom Lane 17edb84056 Seems we had the wrong sign convention for the default Etc/GMTx zone
names.  Per report from Alvaro.
2004-05-23 23:26:53 +00:00
Tom Lane 9e0fcc2ad5 Avoid calling select_default_timezone() when backing out an unwanted TZ
setting.  This is a temporary kluge to keep Alvaro happy; eventually we
should fix the TZ library API to make the problem really go away.
2004-05-23 23:12:11 +00:00
Tom Lane f9df1b28e8 Use case-insensitive comparison so that explicitly setting timezone=unknown
in postgresql.conf does the right thing.  variable.c got this right, but
not pgtz.c ...
2004-05-23 22:24:08 +00:00
Neil Conway 256d4639c9 A few cosmetic fixes and code cleanup. 2004-05-23 22:20:10 +00:00
Tom Lane 9d6570b8a4 New two-stage sampling method for ANALYZE, as per discussions a few weeks
ago.  This should give significantly better results when the density of
live tuples is not uniform throughout a table.  Manfred Koizar, with
minor kibitzing from Tom Lane.
2004-05-23 21:24:02 +00:00
Tom Lane 27edff700e Still another place to make the world safe for zero-column tables:
remove the ancient (and always pretty dodgy) assumption in parse_clause.c
that a query can't have an empty targetlist.
2004-05-23 17:10:54 +00:00
Tom Lane a712570880 Make --without-docdir configure option actually work, per Manfred. 2004-05-23 15:24:32 +00:00
Tom Lane ebfc56d3fb Handle impending sinval queue overflow by means of a separate signal
(SIGUSR1, which we have not been using recently) instead of piggybacking
on SIGUSR2-driven NOTIFY processing.  This has several good results:
the processing needed to drain the sinval queue is a lot less than the
processing needed to answer a NOTIFY; there's less contention since we
don't have a bunch of backends all trying to acquire exclusive lock on
pg_listener; backends that are sitting inside a transaction block can
still drain the queue, whereas NOTIFY processing can't run if there's
an open transaction block.  (This last is a fairly serious issue that
I don't think we ever recognized before --- with clients like JDBC that
tend to sit with open transaction blocks, the sinval queue draining
mechanism never really worked as intended, probably resulting in a lot
of useless cache-reset overhead.)  This is the last of several proposed
changes in response to Philip Warner's recent report of sinval-induced
performance problems.
2004-05-23 03:50:45 +00:00
Tom Lane 4d86ae4260 For multi-table ANALYZE, use per-table transactions when possible
(ie, when not inside a transaction block), so that we can avoid holding
locks longer than necessary.  Per trouble report from Philip Warner.
2004-05-22 23:14:38 +00:00
Tom Lane e26c403fd0 Reduce pg_listener lock taken by NOTIFY et al from AccessExclusiveLock
to ExclusiveLock.  This still serializes the operations of this module,
but doesn't conflict with concurrent ANALYZE operations.  Per trouble
report from Philip Warner a few weeks ago.
2004-05-22 21:58:24 +00:00
Tom Lane 323a45099a Fix to install correctly in vpath build case. 2004-05-22 21:02:32 +00:00
Tom Lane b1ea9811b3 Fix for vpath builds. 2004-05-22 02:15:08 +00:00
Tom Lane 4fb9aa43f6 Clean up failure to remove exec.o on 'make clean'. 2004-05-22 02:14:28 +00:00
Tom Lane 3983869439 Use wide-character library routines, if available, for upper/lower/initcap
functions.  This allows these functions to work correctly with Unicode and
other multibyte encodings.  Per prior discussion.

Also, revert my earlier change to move installation path mashing from
Makefile.global to configure.  Turns out not to work well because configure
script is working with unexpanded variables, and so fails to match in
cases where it should match.
2004-05-22 00:34:51 +00:00
Tom Lane add8b70dda Handle inclusion of port modules 'correctly', viz the same way libpq
does it.  Fixes OS X, which needs path.c.  It may be that Win32 needs
some more port modules, but they are easily added.
2004-05-21 21:56:02 +00:00
Tom Lane d584db6086 pgindent did a pretty awful job on the timezone code, particularly with
respect to doubly-starred comment blocks.  Do some manual cleanup.
2004-05-21 20:59:10 +00:00
Tom Lane 13f96c4b6b Put path configuration information into a .h file instead of cluttering
several different module Makefiles with it.  Also, do any adjustment
of installation paths during configure, rather than every time Makefile.global
is read.
2004-05-21 20:56:50 +00:00
Tom Lane 748a15a8ea Probably need sys/time.h here too to be safe. 2004-05-21 16:22:38 +00:00
Tom Lane e6319d1d28 Put back #include <sys/time.h> in files that seem to need it on Linux. 2004-05-21 16:08:47 +00:00
Tom Lane ff0b706b13 Fix random breakage in exec.c for platforms where strdup is a macro. 2004-05-21 16:06:23 +00:00
Michael Meskes 79c3bf4984 - Fixed DEALLOCATE PREPARE to use correct function call
- Made sure connect statement does not accept single char variable,
  but only strings.
2004-05-21 13:50:12 +00:00
Bruce Momjian 0a19fb42c2 Pgindent timezone file, per request from Tom. 2004-05-21 12:30:25 +00:00
Tom Lane 63bd0db121 Integrate src/timezone library for all platforms. There is more we can
and should do now that we control our own destiny for timezone handling,
but this commit gets the bulk of the picayune diffs in place.
Magnus Hagander and Tom Lane.
2004-05-21 05:08:06 +00:00
Bruce Momjian 260b513fc3 Add mention of why -lpgport is needed in ecpglib (dllwrap). 2004-05-21 03:12:03 +00:00
Bruce Momjian 928e73ea62 Add -lpgport to ecpglib link only on win32. Other platforms have
problems with it.
2004-05-21 03:10:47 +00:00
Tom Lane 9bfee3adee Revert addition of -lpgport, which breaks the build on platforms that
are sticky about non-PIC code in shared libraries.  Windows will have
to find another solution (probably similar to the way libpq does it).
2004-05-21 00:14:38 +00:00
Tom Lane 7d717f2471 Rename static variables to avoid possible name conflicts on systems with
dirty standard headers (eg AIX).
2004-05-20 17:13:52 +00:00
Bruce Momjian 3255851e6a Small variable rename in exec.c. 2004-05-20 15:38:11 +00:00
Bruce Momjian ceceeffe1e Clean up find_my_exec to work cleaner.
Add Win32 code to look in the current directory before the path.

Add code so memory is allocated using palloc in backend object files.
2004-05-20 15:35:41 +00:00
Tom Lane 868404b859 Fix speling. 2004-05-20 15:07:30 +00:00
Bruce Momjian 254df82b40 Add ctype.h include for new macro in port.h. 2004-05-20 01:47:01 +00:00
Bruce Momjian 163e72aa60 Add $libdir to mingw and cygwin for installcheck too. 2004-05-20 00:21:36 +00:00
Tom Lane 29fcd22080 Improve error reporting behavior in parse_hba(): give more complete
error report for getaddrinfo failures, point at correct token for syntax
errors in all cases, don't log redundant messages.
2004-05-19 22:06:16 +00:00
Bruce Momjian 178c08d0c7 Rename another irix file. 2004-05-19 21:39:16 +00:00
Bruce Momjian 14531e0c44 Rename irix5 port to irix. 2004-05-19 21:37:43 +00:00
Bruce Momjian bef228d1ee Add end-of-dump markers for pg_dump and pg_dumpall. 2004-05-19 21:21:26 +00:00
Bruce Momjian 8a91100379 Only do pkglib_path if needed. 2004-05-19 21:17:33 +00:00
Bruce Momjian 4056279958 Only do find_my_exec if it doesn't come from the postmaster. 2004-05-19 19:39:27 +00:00
Bruce Momjian 9ee3310768 Add get_pkglib_path to postmaster.c 2004-05-19 19:11:25 +00:00
Bruce Momjian 5a7e1a187c Move find_my_exec lower so elog() works, per Tom. 2004-05-19 18:58:44 +00:00
Bruce Momjian ecc198bd39 Re-add elog() to exec.c, per Tom. 2004-05-19 17:15:21 +00:00
Bruce Momjian ba71d824d5 Add MinGW to cases where libdir should be used for regression tests:
case $host_platform in
        *-*-cygwin*|*-*-mingw)
            PATH=$libdir:$PATH
            export PATH
            ;;
    esac
2004-05-19 05:20:27 +00:00
Bruce Momjian eb8c79a129 Win32 needs -lpgport for dll creation of ecpglib. 2004-05-19 05:14:58 +00:00
Bruce Momjian dbb9aa224e Supress verbose stderr messages while trying to find my exec path.
Per report from Christopher.
2004-05-19 04:36:33 +00:00
Neil Conway 132d09054e Minor correction for previous SQLSTATE patch: I changed dsqrt() to emit the
right error code previously, and this patch applies an analogous change
to numeric_sqrt().
2004-05-19 04:32:26 +00:00
Bruce Momjian f16874c23d Win32 can't have the same function coming from two library object files,
so we make is_absolute_path a macro so libpq doesn't use path.o.
2004-05-19 04:21:49 +00:00
Bruce Momjian 48eb73b556 Allow zic to compile by defining a "" value for my_exec_path. It isn't
used by zic anyway.
2004-05-19 01:17:42 +00:00
Tom Lane 07f2b767dc setRuleCheckAsUser has to be applied to any subqueries appearing in a
rule's event_qual, not only to the rule's action.  Per example from
Arturs Zoldners.
2004-05-18 22:49:51 +00:00
Bruce Momjian eb79aea9ed Move get_pkglib_path up into main.c too. 2004-05-18 20:27:25 +00:00
Bruce Momjian a9fad44372 Move find_my_exec() way up into main.c so it is available to the
timezone code and other places.

Remove elog() calls from find_my_exec;  do fprintf(stderr) instead.  We
can then remove the exec.c handling in the makefile because it doesn't
have to be built to suppress elog calls.
2004-05-18 20:18:59 +00:00
Bruce Momjian f3f8d36a57 Update Makefile dependencies for Win32 timezones, per Claudio. 2004-05-18 04:10:33 +00:00
Bruce Momjian 3b382d1ae3 Clean up some relative path install issues with Claudio's help. 2004-05-18 03:36:45 +00:00
Bruce Momjian 3febb477e6 Reorganize code to allow path-relative installs.
Create new get_* functions to access compiled-in paths and adjust if
relative installs are to be used.

Clean up substitute_libpath_macro() code.
2004-05-17 14:35:34 +00:00
Bruce Momjian 85383214ea Rename backendbin to backend_exec in initdb.c. 2004-05-17 13:17:29 +00:00
Neil Conway 2871f60f23 Change ln(), log(), power(), and sqrt() to emit the correct SQLSTATE
error codes for certain error conditions, as specified by SQL2003.
2004-05-16 23:18:55 +00:00
Neil Conway 52c82d590a Remove an unused (and empty) header file. 2004-05-14 22:21:43 +00:00
Neil Conway 0079547bcb Implement the width_bucket() function, per SQL2003. This commit only adds
a variant of the function for the 'numeric' datatype; it would be possible
to add additional variants for other datatypes, but I haven't done so yet.

This commit includes regression tests and minimal documentation; if we
want developers to actually use this function in applications, we'll
probably need to document what it does more fully.
2004-05-14 21:42:30 +00:00
Neil Conway 0cb27df5c6 Improve documentation for SQLSTATE error codes, per recent thread on
-patches.
2004-05-14 18:04:02 +00:00
Bruce Momjian 9f944f0443 Adjust find_my_exec/find_other_exec() so that the return parameter is
last, not first.  This fits our style better.
2004-05-14 17:04:48 +00:00
Bruce Momjian 550735cd73 Remove extra 'then'. 2004-05-14 16:29:12 +00:00
Tom Lane c53d6e927f Tighten parsing of boolean options to CREATE TYPE and related functions,
so as to deliver more useful error messages for mistakes like
'PASSEDBYVALUE = f'.  Per gripe from Gaetano Mendola.
2004-05-14 16:11:25 +00:00
Tom Lane 02409a4813 Propagate enlargeStringInfo() fixes into the equivalent code in
pqexpbuffer.c.  While a client-side failure doesn't seem like a
security issue, it's still a bug.
2004-05-14 00:20:38 +00:00
Bruce Momjian 0ec80be435 Properly quote variable for makefile use. 2004-05-14 00:10:52 +00:00
Bruce Momjian 3f41675f6a Move unixware thread stuff into Makefile.unixware. 2004-05-14 00:03:07 +00:00
Bruce Momjian 5e938d831a Force thread flags for all Unixware builds if threading is requested.
This is required because once you link with a library that uses threads,
all references to that library have to use thread flags.
2004-05-13 23:05:54 +00:00
Bruce Momjian f69ecb4f8c Reorganize backend code to more cleanly manage executable names and
backend startup.
2004-05-13 22:45:04 +00:00
Bruce Momjian 261eda55d3 No need for gcc thread stuff anymore, only cc. 2004-05-13 15:44:05 +00:00
Bruce Momjian 9f7283eb1b Remove warning about Unixware. 2004-05-13 14:07:19 +00:00
Bruce Momjian c2e8386440 Fix Win32 bug with missing errno for strerror(). 2004-05-13 01:47:12 +00:00
Tom Lane 4d924bdb46 Tighten up overflow check in path_recv, pursuant to code review inspired
by Ken Ashcraft's report.  I think there is no actual bug here since if
the int32 value does wrap a little bit, palloc will still reject it.
Still it's better that the code be obviously correct.
2004-05-12 22:38:44 +00:00
Bruce Momjian 0a54441cbf Here's a patch that will allow external modules like pl<lang> to set
additional flags for the dlltool and dllwrap commands. More info here:

	http://archives.postgresql.org/pgsql-hackers/2004-05/msg00350.php

Thomas Hallgren
2004-05-12 21:56:27 +00:00
Bruce Momjian b1ffacddfc Rename find_my_binary/find_other_binary to
find_my_exec/find_other_exec().  Remove passing of progname to these
functions as they can find that out from argv[0], which they already
have.

Make get_progname return const char *, and update all progname variables
to be const char *.
2004-05-12 13:38:49 +00:00
Bruce Momjian b9ba13a80e Fix bug by passing arg[0] to find_my_binary(). 2004-05-12 03:48:42 +00:00
Tom Lane 3a0d95d181 Yawn ... still another place not quite ready for zero-column tables. 2004-05-11 22:43:55 +00:00
Bruce Momjian fda15b351a As part of the work for making relocatable installs, I have re-factored
all the code that looks for other binaries.  I move FindExec into
port/exec.c (and renamed it to find_my_binary()).  I also added
find_other_binary that looks for another binary in the same directory as
the calling program, and checks the version string.

The only behavior change was that initdb and pg_dump would look in the
hard-coded bindir directory if it can't find the requested binary in the
same directory as the caller.  The new code throws an error.  The old
behavior seemed too error prone for version mismatches.
2004-05-11 21:57:15 +00:00
Tom Lane a2160c5eeb Add tests to enlargeStringInfo() to avoid possible buffer-overrun or
infinite-loop problems if a bogus data length is passed.
2004-05-11 20:07:26 +00:00
Tom Lane 5ddbe904c0 Refactor low-level aclcheck code to provide useful interfaces for multi-bit
permissions tests in about the same amount of code as before.  Exactly what
the GRANT/REVOKE code ought to be doing is still up for debate, but this
should be helpful in any case, and it already solves an efficiency problem
in executor startup.
2004-05-11 17:36:13 +00:00
Tom Lane bef764029b Fix oversights in processing of LIMIT expressions during planning. 2004-05-11 13:15:15 +00:00
Tom Lane 1697568d57 Repair recalculation failure for nested sub-SELECTs, per bug report from
Didier Moens.  Bug is new in 7.4, and was caused by not updating everyplace
I should've when replacing locParam markers by allParam.
Add a regression test to catch related errors in future.
2004-05-11 02:21:39 +00:00
Bruce Momjian 608b85a23c Clean up indenting of Makefile filenames. 2004-05-10 23:09:04 +00:00
Tom Lane 2f63232d30 Promote row expressions to full-fledged citizens of the expression syntax,
rather than allowing them only in a few special cases as before.  In
particular you can now pass a ROW() construct to a function that accepts
a rowtype parameter.  Internal generation of RowExprs fixes a number of
corner cases that used to not work very well, such as referencing the
whole-row result of a JOIN or subquery.  This represents a further step in
the work I started a month or so back to make rowtype values into
first-class citizens.
2004-05-10 22:44:49 +00:00
Bruce Momjian c50faf944d Add variables names to static prototypes in initdb.c. 2004-05-10 20:51:58 +00:00
Michael Meskes 491dc124bf - Argh, just another bug in adjust_informix.
- Added "extern C" flags for C++ compiler. Hopefully I got that one right.
2004-05-10 13:46:06 +00:00
Tom Lane 7a3977c08d Fix a couple of oversights in new ALTER TABLE code that broke
ALTER SET STATISTICS for functional indexes.
2004-05-08 22:46:29 +00:00
Tom Lane c00b309932 Alter string format used for integer and OID lists in stored rules.
This simplifies and speeds up the reader by letting it get the representation
right the first time, rather than correcting it after-the-fact.  Also,
after int and OID lists become separate node types per Neil's pending
patch, this will let us treat these lists as just plain Nodes instead
of requiring separate read/write macros the way we have now.
2004-05-08 21:21:18 +00:00
Tom Lane 4af3421161 Get rid of rd_nblocks field in relcache entries. Turns out this was
costing us lots more to maintain than it was worth.  On shared tables
it was of exactly zero benefit because we couldn't trust it to be
up to date.  On temp tables it sometimes saved an lseek, but not often
enough to be worth getting excited about.  And the real problem was that
we forced an lseek on every relcache flush in order to update the field.
So all in all it seems best to lose the complexity.
2004-05-08 19:09:25 +00:00
Bruce Momjian ef0ec907bd Improve style of new log_statement_stats error message, per Peter. 2004-05-08 02:11:46 +00:00
Tom Lane dd16b7aa9e Get rid of cluster.c's apparatus for rebuilding a relation's indexes
in favor of using the REINDEX TABLE apparatus, which does the same thing
simpler and faster.  Also, make TRUNCATE not use cluster.c at all, but
just assign a new relfilenode and REINDEX.  This partially addresses
Hartmut Raschick's complaint from last December that 7.4's TRUNCATE is
an order of magnitude slower than prior releases.  By getting rid of
a lot of unnecessary catalog updates, these changes buy back about a
factor of two (on my system).  The remaining overhead seems associated
with creating and deleting storage files, which we may not be able to
do much about without abandoning transaction safety for TRUNCATE.
2004-05-08 00:34:49 +00:00
Neil Conway 7c6baade7b Refactor CheckDropPermissions() to move some initialization code for
printing the proper error message out of the common path.
2004-05-07 19:12:26 +00:00
Tom Lane d905057853 The timezone() family of functions (a/k/a AT TIME ZONE construct) can
safely be marked immutable, since their results don't depend on the
TimeZone GUC variable.  Per recent discussion.
2004-05-07 16:57:16 +00:00
Michael Meskes 2b55612645 - Added additional test case.
- Fixed bug that reversed string length in typedefs.
- Added portability file to pgtypeslib.
2004-05-07 13:42:49 +00:00
Tom Lane 573aaa52bc NATURAL CROSS JOIN is a contradiction in terms, not to mention disallowed
by the SQL spec and by our parser.  Thanks to Jonathan Scott for finding
this longstanding error.
2004-05-07 03:19:44 +00:00
Bruce Momjian 63d0139061 Remove crude test for log_statement_stats in startup code now that we
have a more proper GUC based test.

Also change error return code to ERRCODE_INVALID_PARAMETER_VALUE so it
matches the old error return code.
2004-05-07 01:53:41 +00:00
Bruce Momjian ae96e629b8 Throw error if log_statement_stats is used with confliction options for
per-query stage stats.
2004-05-07 01:34:08 +00:00
Tom Lane 0bd61548ab Solve the 'Turkish problem' with undesirable locale behavior for case
conversion of basic ASCII letters.  Remove all uses of strcasecmp and
strncasecmp in favor of new functions pg_strcasecmp and pg_strncasecmp;
remove most but not all direct uses of toupper and tolower in favor of
pg_toupper and pg_tolower.  These functions use the same notions of
case folding already developed for identifier case conversion.  I left
the straight locale-based folding in place for situations where we are
just manipulating user data and not trying to match it to built-in
strings --- for example, the SQL upper() function is still locale
dependent.  Perhaps this will prove not to be what's wanted, but at
the moment we can initdb and pass regression tests in Turkish locale.
2004-05-07 00:24:59 +00:00
Bruce Momjian 38b85b15c1 sysv_shmem.c patch is to correct a bug that prevents the postmaster
recovering from an unexpected backend termination.

The remaining patches are to allow whitespace in db/install directory
names.

Claudio Natoli
2004-05-06 19:23:25 +00:00
Bruce Momjian 22a2c4b576 Erase MD5 user passwords when a user is renamed because the username is
used as salt for the MD5 password.
2004-05-06 16:59:16 +00:00
Tom Lane 8325a8d69e Make ALTER COLUMN TYPE preserve clustered status for indexes it doesn't
modify.  Also fix a passel of problems with ALTER TABLE CLUSTER ON:
failure to check that the index is safe to cluster on (or even belongs
to the indicated rel, or even exists), and failure to broadcast a relcache
flush event when changing an index's state.
2004-05-06 16:10:57 +00:00
Tom Lane eee6f9d5c2 Rewrite nodeRead() in a less obfuscated fashion, per discussion with
Neil Conway.
2004-05-06 14:01:33 +00:00
Neil Conway 839be02ee1 Fix grammatical error in comment. 2004-05-06 06:11:01 +00:00
Tom Lane 9e16195f3f Second try at a portable unsetenv(). 2004-05-05 21:18:29 +00:00
Tom Lane dadce6509a Don't assume that struct timeval's tv_sec field is the same datatype as
time_t; on some platforms they are not the same width.  Per Manfred Koizar.
2004-05-05 17:28:46 +00:00
Tom Lane 1899203f3d Fix get_rels_with_domain to not do the wrong thing with views and
composite types that use a domain.
2004-05-05 17:06:56 +00:00
Tom Lane c7007d1848 Use a more portable technique for unsetting environment variables,
and unset PGCLIENTENCODING to prevent backend from dying if it's set
to something incompatible with the -E option.
2004-05-05 16:09:31 +00:00
Michael Meskes e845adf31f - Fixed bug in adjust_informix that treated arrays as simple variables.
- Synced parser again.
- Synced lexer.
2004-05-05 15:03:04 +00:00
Tom Lane 077db40fa1 ALTER TABLE rewrite. New cool stuff:
* ALTER ... ADD COLUMN with defaults and NOT NULL constraints works per SQL
spec.  A default is implemented by rewriting the table with the new value
stored in each row.

* ALTER COLUMN TYPE.  You can change a column's datatype to anything you
want, so long as you can specify how to convert the old value.  Rewrites
the table.  (Possible future improvement: optimize no-op conversions such
as varchar(N) to varchar(N+1).)

* Multiple ALTER actions in a single ALTER TABLE command.  You can perform
any number of column additions, type changes, and constraint additions with
only one pass over the table contents.

Basic documentation provided in ALTER TABLE ref page, but some more docs
work is needed.

Original patch from Rod Taylor, additional work from Tom Lane.
2004-05-05 04:48:48 +00:00
Bruce Momjian 3e3cb0a14a More PWD adjustments for win32. 2004-05-03 13:25:23 +00:00
Bruce Momjian 0142c00180 Use $build_platform for PWD flag test, per suggestion from Peter. 2004-05-02 21:30:08 +00:00
Bruce Momjian 5d7aec483c Update catalog version for acl removal changes. 2004-05-02 13:39:51 +00:00
Bruce Momjian a9d3c2cb18 Revert patch --- needs more generalized solution.
> Please find a attached a small patch that adds accessor functions
> for "aclitem" so that it is not an opaque datatype.
>
> I needed these functions to browse aclitems from user land. I can load
> them when necessary, but it seems to me that these accessors for a
> backend type belong to the backend, so I submit them.
>
> Fabien Coelho
2004-05-02 13:38:28 +00:00
Bruce Momjian e4a03f9e75 Set PWDFLAGS based on test platform, not target platform.
Andrew Dunstan
2004-05-02 10:24:51 +00:00
Bruce Momjian 14a5330806 this patch makes sure that:
* correct platform specific regression files are used under ming
 * pwd prints out a usable win32 pathname

Claudio Natoli
2004-05-02 04:27:37 +00:00
Bruce Momjian 3363b847ec Set std error to no buffering on Win32. 2004-05-02 04:25:45 +00:00
Bruce Momjian deb78dd833 More win32 adjustment for timezone directory. 2004-05-02 03:12:12 +00:00
Bruce Momjian f4c69c8205 Fix timezone data path for Unix and win32. 2004-05-01 22:07:03 +00:00
Bruce Momjian d7ee665089 Align prototype in C code. 2004-05-01 19:25:08 +00:00
Bruce Momjian ddfc4d1681 Remove debug output line. 2004-05-01 01:38:53 +00:00
Bruce Momjian 0a2b9f9cde Rename function to be less win32 specific. 2004-05-01 01:34:47 +00:00
Bruce Momjian e572246565 Suppress use of timezone library by ecpg. 2004-04-30 20:47:33 +00:00
Bruce Momjian 85b7e8351f Fix zic compiler to use pg version.
Move timezone database to share/timezone.
2004-04-30 20:23:28 +00:00
Bruce Momjian 04d426ba70 Allow build of timezone database on unix. 2004-04-30 20:01:39 +00:00
Bruce Momjian 1360fe4096 More timezone build adjustments. 2004-04-30 17:52:07 +00:00
Bruce Momjian 46050a3b75 Timezone code checks for HAVE_SYMLINK of zero, so use in pgtz.h:
#ifndef HAVE_SYMLINK
#define HAVE_SYMLINK 0
#endif
2004-04-30 16:58:48 +00:00
Bruce Momjian 82700281d0 More cleanups for USE_PGTZ. 2004-04-30 16:08:01 +00:00
Bruce Momjian b99a3a7541 Rename to USE_PGTZ to match code. 2004-04-30 15:01:25 +00:00
Bruce Momjian a640845c88 Allow timezone to compile under Unix by blocking 'timezone' conflict with
system headers.

Allow system to find timezone database by pasing pkglibdir into the
binary via a define.
2004-04-30 14:24:14 +00:00
Bruce Momjian e9a028f81f Convert DOS newlines to Unix newlines. 2004-04-30 04:44:06 +00:00
Bruce Momjian 7146eb0bc3 Integrate timezone library to be called only from Win32.
Timezone code backend integration done by Magnus Hagander.
2004-04-30 04:31:52 +00:00