Commit Graph

21865 Commits

Author SHA1 Message Date
Tom Lane
9b012311f8 Remove unnecessary PQconsumeInput call from PQputCopyData; it's redundant
because pqSendSome will absorb input data anytime it'd be forced to block.
Avoiding a kernel call per PQputCopyData call helps COPY speed materially.

Alon Goldshuv
2006-01-25 20:44:32 +00:00
Tom Lane
3a0a16cb7e Allow row comparisons to be used as indexscan qualifications.
This completes the project to upgrade our handling of row comparisons.
2006-01-25 20:29:24 +00:00
Bruce Momjian
06d45e485d Update regression error message for NUMERIC range overflow. Display "1"
instead of "10^0".
2006-01-25 18:20:22 +00:00
Bruce Momjian
514d0f4db6 Update regression error message for NUMERIC range overflow. Display "1"
instead of 10^0.
2006-01-25 18:15:03 +00:00
Bruce Momjian
cdc15b24be Improve error message when NUMERIC precision is exceeded. 2006-01-25 17:54:14 +00:00
Tom Lane
7a9d197fda Fix unportable usage of socklen_t: should use ACCEPT_TYPE_ARG3 macro
provided by configure, instead.  Per bug #2205.
2006-01-24 16:38:42 +00:00
Michael Meskes
69f9fab197 - Synced parser and keyword list.
- Added another test case.
2006-01-24 11:01:38 +00:00
Tom Lane
7ccaf13a06 Instead of using a numberOfRequiredKeys count to distinguish required
and non-required keys in a btree index scan, mark the required scankeys
with private flag bits SK_BT_REQFWD and/or SK_BT_REQBKWD.  This seems
at least marginally clearer to me, and it eliminates a wired-into-the-
data-structure assumption that required keys are consecutive.  Even though
that assumption will remain true for the foreseeable future, having it
in there makes the code seem more complex than necessary.
2006-01-23 22:31:41 +00:00
Bruce Momjian
f6f43e7ee3 Prototype fix for typo. 2006-01-23 21:49:39 +00:00
Bruce Momjian
19b1c76f0d Use is_cidr in INET/CIDR structure, rather than the generic 'type'. 2006-01-23 21:45:47 +00:00
Tom Lane
726b42abd0 Improve wording of descriptions of SIGHUP GUC parameters, as per my
suggestion a couple days ago.  Fix some cases in which the documentation
neglected to mention any restriction on when a parameter can be set.
Try to be consistent about calling parameters parameters; use the term
option only for command-line switches.
2006-01-23 18:16:41 +00:00
Teodor Sigaev
80324fb1e3 Fix typeing as Tom suggest 2006-01-23 14:24:06 +00:00
Bruce Momjian
1bdc5ab2da Done:
< 	o Allow an alias to be provided for the target table in
< 	  UPDATE/DELETE
<
< 	  This is not SQL-spec but many DBMSs allow it.
<
> 	o -Allow an alias to be provided for the target table in
> 	  UPDATE/DELETE (Neil)
2006-01-23 02:59:27 +00:00
Tom Lane
16c5a471a3 Improve note about not using the target table name in the SET clause.
It's not related to whether an alias is used or not.
2006-01-22 20:34:11 +00:00
Tom Lane
2647ad6583 Fix alias-for-target-table-of-UPDATE-or-DELETE patch so that alias can
be any ColId other than 'SET', rather than only IDENT as originally.
Per discussion.
2006-01-22 20:03:16 +00:00
Neil Conway
1d763d9107 Allow an optional alias for the target table to be specified for UPDATE
and DELETE. If specified, the alias must be used instead of the full
table name. Also, the alias currently cannot be used in the SET clause
of UPDATE.

Patch from Atsushi Ogawa, various editorialization by Neil Conway.
Along the way, make the rowtypes regression test pass if add_missing_from
is enabled, and add a new (skeletal) regression test for DELETE.
2006-01-22 05:20:35 +00:00
Neil Conway
57a84ca48e Minor improvements to GEQO documentation. 2006-01-22 03:56:58 +00:00
Tom Lane
b42f307340 Marginal improvements in the wording of the autovacuum documentation:
be consistent about whether it's called a daemon or a subprocess, and
don't describe the autovacuum setting in exactly the same way as the
stats_start_collector setting, because that leaves people thinking (if
they aren't paying close attention) that autovacuum can't be changed
on the fly.
2006-01-21 19:34:42 +00:00
Tom Lane
27959dd746 Fix broken markup. 2006-01-21 19:05:59 +00:00
Tom Lane
c89a0dd3bb Repair longstanding bug in slru/clog logic: it is possible for two backends
to try to create a log segment file concurrently, but the code erroneously
specified O_EXCL to open(), resulting in a needless failure.  Before 7.4,
it was even a PANIC condition :-(.  Correct code is actually simpler than
what we had, because we can just say O_CREAT to start with and not need a
second open() call.  I believe this accounts for several recent reports of
hard-to-reproduce "could not create file ...: File exists" errors in both
pg_clog and pg_subtrans.
2006-01-21 04:38:21 +00:00
Bruce Momjian
4789e98801 Add GRANT ON SEQUENCE syntax to support sequence-only permissions.
Continue to support GRANT ON [TABLE] for sequences for backward
compatibility;  issue warning for invalid sequence permissions.

[Backward compatibility warning message.]

Add USAGE permission for sequences that allows only currval() and
nextval(), not setval().

Mention object name in grant/revoke warnings because of possible
multi-object operations.
2006-01-21 02:16:21 +00:00
Tom Lane
33feb55c47 Replace bitwise looping with bytewise looping in hemdistsign and
sizebitvec of tsearch2, as well as identical code in several other
contrib modules.  This provided about a 20X speedup in building a
large tsearch2 index ... didn't try to measure its effects for other
operations.  Thanks to Stephan Vollmer for providing a test case.
2006-01-20 22:46:16 +00:00
Bruce Momjian
138fdf32bb Update EXPLAIN wording for GEQO usage. 2006-01-20 16:41:55 +00:00
Tom Lane
413d492d32 Fix thinko in autovacuum's test to skip temp tables: want to skip any
temp table not only our own process' tables.  It's not real important
since vacuum.c will skip temp tables anyway, but might as well make the
code do what it claims to do.
2006-01-20 15:16:56 +00:00
Bruce Momjian
cd5d464e9f Doc patch that adds an example of a correllated UPDATE.
David Fetter
2006-01-19 23:09:42 +00:00
Bruce Momjian
807cb000f6 Clarify STABLE function documentation to highlight how such functions
can be optimized.
2006-01-19 22:52:08 +00:00
Tom Lane
efbe674e4e Add some test scaffolding to allow cache-flush stress testing (and I do
mean stress ... system is orders of magnitude slower with this enabled).
2006-01-19 21:49:21 +00:00
Bruce Momjian
248c9bdfcb Remove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path for AIX and Darwin. 2006-01-19 21:19:12 +00:00
Bruce Momjian
c52bafca45 Remove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path. 2006-01-19 20:45:29 +00:00
Tom Lane
ed69cf5d23 Avoid crashing if relcache flush occurs while trying to load data into an
index's support-function cache (in index_getprocinfo).  Since none of that
data can change for an index that's in active use, it seems sufficient to
treat all open indexes the same way we were treating "nailed" system indexes
--- that is, just re-read the pg_class row and leave the rest of the relcache
entry strictly alone.  The pg_class re-read might not be strictly necessary
either, but since the reltablespace and relfilenode can change in normal
operation it seems safest to do it.  (We don't support changing any of the
other info about an index at all, at the moment.)

Back-patch as far as 8.0.  It might be possible to adapt the patch to 7.4,
but it would take more work than I care to expend for such a low-probability
problem.  7.3 is out of luck for sure.
2006-01-19 20:28:43 +00:00
Bruce Momjian
99e0c54290 Fix pgxs -L library path specification for Win32 and Cygwin, was /bin,
now /lib.
2006-01-19 20:00:54 +00:00
Tom Lane
4513d9deda It turns out that TablespaceCreateDbspace fails badly if a relcache flush
occurs when it tries to heap_open pg_tablespace.  When control returns to
smgrcreate, that routine will be holding a dangling pointer to a closed
SMgrRelation, resulting in mayhem.  This is of course a consequence of
the violation of proper module layering inherent in having smgr.c call
a tablespace command routine, but the simplest fix seems to be to change
the locking mechanism.  There's no real need for TablespaceCreateDbspace
to touch pg_tablespace at all --- it's only opening it as a way of locking
against a parallel DROP TABLESPACE command.  A much better answer is to
create a special-purpose LWLock to interlock these two operations.
This drops TablespaceCreateDbspace quite a few layers down the food chain
and makes it something reasonably safe for smgr to call.
2006-01-19 04:45:38 +00:00
Tom Lane
b0be247e38 Fix a tiny memory leak (one List header) in RelationCacheInvalidate().
This is utterly insignificant in normal operation, but it becomes a
problem during cache inval stress testing.  The original coding in fact
had no leak --- the 8.0 List rewrite created the issue.  I wonder whether
list_concat should pfree the discarded header?
2006-01-19 00:27:08 +00:00
Bruce Momjian
7259cc1e7e Clarify use of btree indexes for ILIKE and ~*. 2006-01-18 21:29:45 +00:00
Bruce Momjian
ccebb6745e You'll find attached a patch for a fixed explanation on parameter_mode
column, OUT and INOUT added.

Guillaume LELARGE
2006-01-18 21:02:55 +00:00
Tom Lane
d5db3abfb6 Modify pgstats code to reduce performance penalties from oversized stats data
files: avoid creating stats hashtable entries for tables that aren't being
touched except by vacuum/analyze, ensure that entries for dropped tables are
removed promptly, and tweak the data layout to avoid storing useless struct
padding.  Also improve the performance of pgstat_vacuum_tabstat(), and make
sure that autovacuum invokes it exactly once per autovac cycle rather than
multiple times or not at all.  This should cure recent complaints about 8.1
showing much higher stats I/O volume than was seen in 8.0.  It'd still be a
good idea to revisit the design with an eye to not re-writing the entire
stats dataset every half second ... but that would be too much to backpatch,
I fear.
2006-01-18 20:35:06 +00:00
Bruce Momjian
e1af35afac Done:
> 	o -Allow pooled connections to list all open WITH HOLD cursors
2006-01-18 14:20:22 +00:00
Neil Conway
33e06ebccb Add a new system view, pg_cursors, that displays the currently available
cursors. Patch from Joachim Wieland, review and ediorialization by Neil
Conway. The view lists cursors defined by DECLARE CURSOR, using SPI, or
via the Bind message of the frontend/backend protocol. This means the
view does not list the unnamed portal or the portal created to implement
EXECUTE. Because we do list SPI portals, there might be more rows in
this view than you might expect if you are using SPI implicitly (e.g.
via a procedural language).

Per recent discussion on -hackers, the query string included in the
view for cursors defined by DECLARE CURSOR is based on
debug_query_string. That means it is not accurate if multiple queries
separated by semicolons are submitted as one query string. However,
there doesn't seem a trivial fix for that: debug_query_string
is better than nothing. I also changed SPI_cursor_open() to include
the source text for the portal it creates: AFAICS there is no reason
not to do this.

Update the documentation and regression tests, bump the catversion.
2006-01-18 06:49:30 +00:00
Tom Lane
558bc2584d Fix fsync code to test whether F_FULLFSYNC is available, instead of
assuming it always is on Darwin.  Per report from Neil Brandt.
2006-01-17 23:52:31 +00:00
Michael Meskes
f3dda5be89 Data transferred binary is now put into the variables verbatim.
Also added a test case for a binary cursor.
2006-01-17 19:49:23 +00:00
Tom Lane
73e3566078 Improve comments about btree's use of ScanKey data structures: there
are two basically different kinds of scankeys, and we ought to try harder
to indicate which is used in each place in the code.  I've chosen the names
"search scankey" and "insertion scankey", though you could make about
as good an argument for "operator scankey" and "comparison function
scankey".
2006-01-17 00:09:01 +00:00
Bruce Momjian
e38217d1ec Improve constraint_name wording. 2006-01-16 20:48:49 +00:00
Bruce Momjian
a0ae3dbacb Add markup for new constraint_name mention. 2006-01-16 19:53:12 +00:00
Bruce Momjian
9200318972 Add documentaiotn mention that constraint names can be sentences that
can convey information to clients on constraint violation.
2006-01-16 19:50:03 +00:00
Neil Conway
b06e6f1a9a Change the parameter_types column of the pg_prepared_statements to be
an array of regtype, rather than an array of OIDs. This is likely to
be more useful to user, and the type OID can easily be obtained by
casting a regtype value to OID. Per suggestion from Tom.

Update the documentation and regression tests, and bump the catversion.
2006-01-16 18:15:31 +00:00
Neil Conway
1ce4c9e9b4 When using GCC on AMD64 and PPC, ECPGget_variable() takes a va_list *, not
a va_list. Christof Petig's previous patch made this change, but neglected
to update ecpglib/descriptor.c, resulting in a compiler warning (and a
likely runtime crash) on AMD64 and PPC.
2006-01-15 22:46:53 +00:00
Neil Conway
4dcc82ac7e Add regression tests to verify that domain constraints on parameters
to prepared statements with unknown type are correctly enforced, per
recent bug report.
2006-01-15 22:34:49 +00:00
Neil Conway
106a3695f5 Allow the types of parameters to PREPARE to be inferred. If a parameter's
data type is unspecified or is declared to be "unknown", the type will
be inferred from the context in which the parameter is used. This was
already possible for protocol-level prepared statements.
2006-01-15 22:18:47 +00:00
Tom Lane
f7ea931287 Some minor code cleanup, falling out from the removal of rtree. SK_NEGATE
isn't being used anywhere anymore, and there seems no point in a generic
index_keytest() routine when two out of three remaining access methods
aren't using it.  Also, add a comment documenting a convention for
letting access methods define private flag bits in ScanKey sk_flags.
There are no such flags at the moment but I'm thinking about changing
btree's handling of "required keys" to use flag bits in the keys
rather than a count of required key positions.  Also, if some AM did
still want SK_NEGATE then it would be reasonable to treat it as a private
flag bit.
2006-01-14 22:03:35 +00:00
Peter Eisentraut
7930e627d8 Fix pg_ctl crash on "unregister" when a data directory is not specified.
by Magnus Hagander
2006-01-14 15:41:28 +00:00