OSDN Git Service

pg-rex/syncrep.git
18 years agoI think that NUMERIC datatype has a problem in the performance that
Bruce Momjian [Tue, 7 Feb 2006 16:03:50 +0000 (16:03 +0000)]
I think that NUMERIC datatype has a problem in the performance that
the format on Tuple(Numeric) and the format to calculate(NumericVar)
are different. I understood that to reduce I/O. However, when many
comparisons or calculations of NUMERIC are executed, the conversion
of Numeric and NumericVar becomes a bottleneck.

It is profile result when "create index on NUMERIC column" is executed:

  %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
 17.61     10.27    10.27 34542006     0.00     0.00  cmp_numerics
 11.90     17.21     6.94 34542006     0.00     0.00  comparetup_index
  7.42     21.54     4.33 71102587     0.00     0.00  AllocSetAlloc
  7.02     25.64     4.09 69084012     0.00     0.00  set_var_from_num
  4.87     28.48     2.84 69084012     0.00     0.00  alloc_var
  4.79     31.27     2.79 142205745     0.00     0.00  AllocSetFreeIndex
  4.55     33.92     2.65 34542004     0.00     0.00  cmp_abs
  4.07     36.30     2.38 71101189     0.00     0.00  AllocSetFree
  3.83     38.53     2.23 69084012     0.00     0.00  free_var

The create index command executes many comparisons of Numeric values.
Functions other than comparetup_index spent a lot of cycles for
conversion from Numeric to NumericVar.

An attached patch enables the comparison of Numeric values without
executing conversion to NumericVar. The execution time of that SQL
becomes half.

o Test SQL (index_test table has 1,000,000 tuples)
 create index index_test_idx on index_test(num_col);

o Test results (executed the test five times)
(1)PentiumIII
 original: 39.789s  36.823s  36.737s  37.752s  37.019s
 patched : 18.560s  19.103s  18.830s  18.408s  18.853s
  4.07     36.30     2.38 71101189     0.00     0.00  AllocSetFree
  3.83     38.53     2.23 69084012     0.00     0.00  free_var

The create index command executes many comparisons of Numeric values.
Functions other than comparetup_index spent a lot of cycles for
conversion from Numeric to NumericVar.

An attached patch enables the comparison of Numeric values without
executing conversion to NumericVar. The execution time of that SQL
becomes half.

o Test SQL (index_test table has 1,000,000 tuples)
 create index index_test_idx on index_test(num_col);

o Test results (executed the test five times)
(1)PentiumIII
 original: 39.789s  36.823s  36.737s  37.752s  37.019s
 patched : 18.560s  19.103s  18.830s  18.408s  18.853s

(2)Pentium4
 original: 16.349s  14.997s  12.979s  13.169s  12.955s
 patched :  7.005s   6.594s   6.770s   6.740s   6.828s

(3)Itanium2
 original: 15.392s  15.447s  15.350s  15.370s  15.417s
 patched :  7.413s   7.330s   7.334s   7.339s   7.339s

(4)Ultra Sparc
 original: 64.435s  59.336s  59.332s  58.455s  59.781s
 patched : 28.630s  28.666s  28.983s  28.744s  28.595s

Atsushi Ogawa

18 years agoRemove question mark:
Bruce Momjian [Tue, 7 Feb 2006 14:49:17 +0000 (14:49 +0000)]
Remove question mark:

< * %Disallow changing default expression of a SERIAL column?
> * %Disallow changing default expression of a SERIAL column

18 years agoMake --version option print fixed program name.
Peter Eisentraut [Tue, 7 Feb 2006 11:36:36 +0000 (11:36 +0000)]
Make --version option print fixed program name.

18 years agoRemove some checks for libraries that no one can identify. We'll see how
Peter Eisentraut [Tue, 7 Feb 2006 11:22:41 +0000 (11:22 +0000)]
Remove some checks for libraries that no one can identify.  We'll see how
that works out...

18 years agoSplit up wal-logging items:
Bruce Momjian [Tue, 7 Feb 2006 02:08:08 +0000 (02:08 +0000)]
Split up wal-logging items:

< * Allow control over which tables are WAL-logged [walcontrol]
> * Allow WAL logging to be turned off for a table, but the table
>   might be dropped or truncated during crash recovery [walcontrol]
<   commit.  To do this, only a single writer can modify the table, and
<   writes must happen only on new pages.  Readers can continue accessing
<   the table.  This would affect COPY, and perhaps INSERT/UPDATE too.
<   Another option is to avoid transaction logging entirely and truncate
<   or drop the table on crash recovery.  These should be implemented
<   using ALTER TABLE, e.g. ALTER TABLE PERSISTENCE [ DROP | TRUNCATE |
<   STABLE | DEFAULT ].  Tables using non-default logging should not use
<   referential integrity with default-logging tables, and tables using
<   stable logging probably can not have indexes.  One complexity is
<   the handling of indexes on TOAST tables.
>   commit.  This should be implemented using ALTER TABLE, e.g. ALTER
>   TABLE PERSISTENCE [ DROP | TRUNCATE | DEFAULT ].  Tables using
>   non-default logging should not use referential integrity with
>   default-logging tables.  A table without dirty buffers during a
>   crash could perhaps avoid the drop/truncate.
>
> * Allow WAL logging to be turned off for a table, but the table would
>   avoid being truncated/dropped [walcontrol]
>
>   To do this, only a single writer can modify the table, and writes
>   must happen only on new pages so the new pages can be removed during
>   crash recovery.  Readers can continue accessing the table.  Such
>   tables probably cannot have indexes.  One complexity is the handling
>   of indexes on TOAST tables.

18 years agoFix HTML alignment in PQprint.
Bruce Momjian [Tue, 7 Feb 2006 00:26:15 +0000 (00:26 +0000)]
Fix HTML alignment in PQprint.

Christoph Zwerschke

18 years agoImprove the tests to see if ScalarArrayOpExpr is strict. Original coding
Tom Lane [Mon, 6 Feb 2006 22:21:12 +0000 (22:21 +0000)]
Improve the tests to see if ScalarArrayOpExpr is strict.  Original coding
would basically punt in all cases for 'foo <> ALL (array)', which resulted
in a performance regression for NOT IN compared to what we were doing in
8.1 and before.  Per report from Pavel Stehule.

18 years agoCheck number of affixes to prevent core dump with zero number of affixes
Teodor Sigaev [Mon, 6 Feb 2006 15:45:34 +0000 (15:45 +0000)]
Check number of affixes to prevent core dump with zero number of affixes

18 years agoFix PQprint HTML tag, "centre" -> "center".
Bruce Momjian [Mon, 6 Feb 2006 02:23:07 +0000 (02:23 +0000)]
Fix PQprint HTML tag, "centre" -> "center".

18 years agoFix pg_restore to properly discard COPY data when trying to continue
Tom Lane [Sun, 5 Feb 2006 20:58:47 +0000 (20:58 +0000)]
Fix pg_restore to properly discard COPY data when trying to continue
after an error in a COPY statement.  Formerly it thought the COPY data
was SQL commands, and got quite confused.

Stephen Frost

18 years agoFix typo in configuration docs.
Bruce Momjian [Sun, 5 Feb 2006 18:19:14 +0000 (18:19 +0000)]
Fix typo in configuration docs.

Devrim GUNDUZ

18 years agoImprove my initial, rather hacky implementation of joins to append
Tom Lane [Sun, 5 Feb 2006 02:59:17 +0000 (02:59 +0000)]
Improve my initial, rather hacky implementation of joins to append
relations: fix the executor so that we can have an Append plan on the
inside of a nestloop and still pass down outer index keys to index scans
within the Append, then generate such plans as if they were regular
inner indexscans.  This avoids the need to evaluate the outer relation
multiple times.

18 years agoUpdate PL/pgSQL trigger example to be clearer about how to "merge" data
Bruce Momjian [Sun, 5 Feb 2006 02:47:53 +0000 (02:47 +0000)]
Update PL/pgSQL trigger example to be clearer about how to "merge" data
into a table.

Jim C. Nasby

18 years agoFix constraint exclusion to work in inherited UPDATE/DELETE queries
Tom Lane [Sat, 4 Feb 2006 23:03:20 +0000 (23:03 +0000)]
Fix constraint exclusion to work in inherited UPDATE/DELETE queries
... in fact, it will be applied now in any query whatsoever.  I'm still
a bit concerned about the cycles that might be expended in failed proof
attempts, but given that CE is turned off by default, it's the user's
choice whether to expend those cycles or not.  (Possibly we should
change the simple bool constraint_exclusion parameter to something
more fine-grained?)

18 years agoFix broken markup.
Tom Lane [Sat, 4 Feb 2006 22:38:39 +0000 (22:38 +0000)]
Fix broken markup.

18 years agoAdded C bit fields to ecpg parser
Michael Meskes [Sat, 4 Feb 2006 20:54:44 +0000 (20:54 +0000)]
Added C bit fields to ecpg parser
Added some default rules to lexer
Added log output to prepare statement
Added some more stuff to a test case

18 years agoDROP IF EXISTS for ROLE/USER/GROUP
Andrew Dunstan [Sat, 4 Feb 2006 19:06:47 +0000 (19:06 +0000)]
DROP IF EXISTS for ROLE/USER/GROUP

18 years agoIssue a warning if a change-on-restart-only postgresql.conf value is
Peter Eisentraut [Sat, 4 Feb 2006 12:50:47 +0000 (12:50 +0000)]
Issue a warning if a change-on-restart-only postgresql.conf value is
modified  and the server config files are reloaded

18 years agoUpdate walcontrol item:
Bruce Momjian [Sat, 4 Feb 2006 03:23:21 +0000 (03:23 +0000)]
Update walcontrol item:

< * Allow control over which tables are WAL-logged
> * Allow control over which tables are WAL-logged [walcontrol]
1038c1038,1039
<   stable logging probably can not have indexes.  [walcontrol]
>   stable logging probably can not have indexes.  One complexity is
>   the handling of indexes on TOAST tables.

18 years agoAdd to TODO.detail/walcontrol.
Bruce Momjian [Sat, 4 Feb 2006 03:22:36 +0000 (03:22 +0000)]
Add to TODO.detail/walcontrol.

18 years agoIn ecpg, automatically double single quotes in $$ strings because
Bruce Momjian [Sat, 4 Feb 2006 02:32:38 +0000 (02:32 +0000)]
In ecpg, automatically double single quotes in $$ strings because
internally $$ strings are converted to single-quote strings.

In ecpg, output newlines in commands using standard C escapes, rather
than using literal newlines, which is not portable.

18 years agoUpdate Makefile for new thread_test location.
Bruce Momjian [Sat, 4 Feb 2006 01:04:20 +0000 (01:04 +0000)]
Update Makefile for new thread_test location.

18 years agoMove thread_test directory from /tools to /test so source-only tarballs
Bruce Momjian [Sat, 4 Feb 2006 01:00:02 +0000 (01:00 +0000)]
Move thread_test directory from /tools to /test so source-only tarballs
have the directory for the configure test.

18 years agoFirst attempt at removing some AC_CHECK_LIB(foo, main) calls.
Peter Eisentraut [Sat, 4 Feb 2006 00:42:54 +0000 (00:42 +0000)]
First attempt at removing some AC_CHECK_LIB(foo, main) calls.

18 years agoTeach planner to convert simple UNION ALL subqueries into append relations,
Tom Lane [Fri, 3 Feb 2006 21:08:49 +0000 (21:08 +0000)]
Teach planner to convert simple UNION ALL subqueries into append relations,
thereby sharing code with the inheritance case.  This puts the UNION-ALL-view
approach to partitioned tables on par with inheritance, so far as constraint
exclusion is concerned: it works either way.  (Still need to update the docs
to say so.)  The definition of "simple UNION ALL" is a little simpler than
I would like --- basically the union arms can only be SELECT * FROM foo
--- but it's good enough for partitioned-table cases.

18 years agoUpdate tested AIX memset platforms.
Bruce Momjian [Fri, 3 Feb 2006 13:56:20 +0000 (13:56 +0000)]
Update tested AIX memset platforms.

18 years agoAllow MEMSET_LOOP_LIMIT to be set on a per-platform basis, and turn off
Bruce Momjian [Fri, 3 Feb 2006 13:53:15 +0000 (13:53 +0000)]
Allow MEMSET_LOOP_LIMIT to be set on a per-platform basis, and turn off
MemSet on AIX by setting MEMSET_LOOP_LIMIT to zero.

Add optimization to skip MemSet tests in MEMSET_LOOP_LIMIT == 0 case and
just call memset() directly.

18 years agoUpdate random() usage so ranges are inclusive/exclusive as required.
Bruce Momjian [Fri, 3 Feb 2006 12:45:47 +0000 (12:45 +0000)]
Update random() usage so ranges are inclusive/exclusive as required.

18 years agoPrevent COPY from using newline or carriage return as delimiter or null.
Bruce Momjian [Fri, 3 Feb 2006 12:41:07 +0000 (12:41 +0000)]
Prevent COPY from using newline or carriage return as delimiter or null.
Disallow backslash as the delimiter in non-CVS mode.

David Fetter

18 years agoImprove tab whitespace in file.
Bruce Momjian [Fri, 3 Feb 2006 05:38:35 +0000 (05:38 +0000)]
Improve tab whitespace in file.

Add comment about $$ and '' SCONST strings.

18 years agoMore spacing cleanups.
Bruce Momjian [Thu, 2 Feb 2006 03:51:41 +0000 (03:51 +0000)]
More spacing cleanups.

18 years agoSource code alignment fixes for preproc.y.
Bruce Momjian [Wed, 1 Feb 2006 22:16:36 +0000 (22:16 +0000)]
Source code alignment fixes for preproc.y.

18 years agoMore alignment improvements.
Bruce Momjian [Wed, 1 Feb 2006 20:57:39 +0000 (20:57 +0000)]
More alignment improvements.

18 years agoMake pgc.l source code alignment consistent.
Bruce Momjian [Wed, 1 Feb 2006 20:56:44 +0000 (20:56 +0000)]
Make pgc.l source code alignment consistent.

18 years agoAdd:
Bruce Momjian [Wed, 1 Feb 2006 17:32:45 +0000 (17:32 +0000)]
Add:

> * Allow statistics collector information to be pulled from the collector
>   process directly, rather than requiring the collector to write a
>   filesystem file twice a second?

18 years agoAdd code comment about Linux stack randomization and shared memory.
Bruce Momjian [Wed, 1 Feb 2006 16:00:06 +0000 (16:00 +0000)]
Add code comment about Linux stack randomization and shared memory.

18 years agoFix const cast in get_progname().
Bruce Momjian [Wed, 1 Feb 2006 12:41:45 +0000 (12:41 +0000)]
Fix const cast in get_progname().

Backpatch.

18 years agoSet progname early in the postmaster/postgres binary, rather than doing
Bruce Momjian [Wed, 1 Feb 2006 00:31:59 +0000 (00:31 +0000)]
Set progname early in the postmaster/postgres binary, rather than doing
it later.  This fixes a problem where EXEC_BACKEND didn't have progname
set, causing a segfault if log_min_messages was set below debug2 and our
own snprintf.c was being used.

Also alway strdup() progname.

Backpatch to 8.1.X and 8.0.X.

18 years agoMove items:
Bruce Momjian [Wed, 1 Feb 2006 00:07:26 +0000 (00:07 +0000)]
Move items:

> * Add SQL99 WITH clause to SELECT
> * Add SQL99 WITH RECURSIVE to SELECT
< * Add SQL99 WITH clause to SELECT
< * Add SQL99 WITH RECURSIVE to SELECT

18 years agoAdd:
Bruce Momjian [Wed, 1 Feb 2006 00:03:09 +0000 (00:03 +0000)]
Add:

>
>  o Prevent tab completion of SET TRANSACTION from querying the
>    database and therefore preventing the transaction isolation
>    level from being set.
>
>    Currently, SET <tab> causes a database lookup to check all
>    supported session variables.  This query causes problems
>    because setting the transaction isolation level must be the
>    first statement of a transaction.

18 years agoAllow %TYPE to be used with SETOF, per gripe from Murat Tasan.
Tom Lane [Tue, 31 Jan 2006 22:40:03 +0000 (22:40 +0000)]
Allow %TYPE to be used with SETOF, per gripe from Murat Tasan.

18 years agoRestructure planner's handling of inheritance. Rather than processing
Tom Lane [Tue, 31 Jan 2006 21:39:25 +0000 (21:39 +0000)]
Restructure planner's handling of inheritance.  Rather than processing
inheritance trees on-the-fly, which pretty well constrained us to considering
only one way of planning inheritance, expand inheritance sets during the
planner prep phase, and build a side data structure that can be consulted
later to find which RTEs are members of which inheritance sets.  As proof of
concept, use the data structure to plan joins against inheritance sets more
efficiently: we can now use indexes on the set members in inner-indexscan
joins.  (The generated plans could be improved further, but it'll take some
executor changes.)  This data structure will also support handling UNION ALL
subqueries in the same way as inheritance sets, but that aspect of it isn't
finished yet.

18 years agoRemoved single quotes from connect to example.
Michael Meskes [Tue, 31 Jan 2006 13:32:20 +0000 (13:32 +0000)]
Removed single quotes from connect to example.

18 years agoFix ALTER COLUMN TYPE bug: it sometimes tried to drop UNIQUE or PRIMARY KEY
Tom Lane [Mon, 30 Jan 2006 16:18:58 +0000 (16:18 +0000)]
Fix ALTER COLUMN TYPE bug: it sometimes tried to drop UNIQUE or PRIMARY KEY
constraints before FOREIGN KEY constraints that depended on them.  Originally
reported by Neil Conway on 29-Jun-2005.  Patch by Nakano Yoshihisa.

18 years agoWhen building a bitmap scan, must copy the bitmapqualorig expression tree
Tom Lane [Sun, 29 Jan 2006 18:55:48 +0000 (18:55 +0000)]
When building a bitmap scan, must copy the bitmapqualorig expression tree
to avoid sharing substructure with the lower-level indexquals.  This is
currently only an issue if there are SubPlans in the indexquals, which is
uncommon but not impossible --- see bug #2218 reported by Nicholas Vinen.
We use the same kluge for indexqual vs indexqualorig in the index scans
themselves ... would be nice to clean this up someday.

18 years agoFix Assert that's no longer correct now that RowCompareExpr is indexable.
Tom Lane [Sun, 29 Jan 2006 17:40:00 +0000 (17:40 +0000)]
Fix Assert that's no longer correct now that RowCompareExpr is indexable.

18 years agoFix code that checks to see if an index can be considered to match the query's
Tom Lane [Sun, 29 Jan 2006 17:27:42 +0000 (17:27 +0000)]
Fix code that checks to see if an index can be considered to match the query's
requested sort order.  It was assuming that build_index_pathkeys always
generates a pathkey per index column, which was not true if implied equality
deduction had determined that two index columns were effectively equated to
each other.  Simplest fix seems to be to install an option that causes
build_index_pathkeys to support this behavior as well as the original one.
Per report from Brian Hirt.

18 years agoUndo perl's nasty locale setting on Windows. Since we can't do that as
Andrew Dunstan [Sat, 28 Jan 2006 16:20:31 +0000 (16:20 +0000)]
Undo perl's nasty locale setting on Windows. Since we can't do that as
elsewhere by setting the environment appropriately, we make perl do it
right after interpreter startup by calling its POSIX::setlocale().

18 years agoPer a bug report from Theo Schlossnagle, plperl_return_next() leaks
Neil Conway [Sat, 28 Jan 2006 03:28:15 +0000 (03:28 +0000)]
Per a bug report from Theo Schlossnagle, plperl_return_next() leaks
memory in the executor's per-query memory context. It also inefficient:
it invokes get_call_result_type() and TupleDescGetAttInMetadata() for
every call to return_next, rather than invoking them once (per PL/Perl
function call) and memoizing the result.

This patch makes the following changes:

- refactor the code to include all the "per PL/Perl function call" data
inside a single struct, "current_call_data". This means we don't need to
save and restore N pointers for every recursive call into PL/Perl, we
can just save and restore one.

- lookup the return type metadata needed by plperl_return_next() once,
and then stash it in "current_call_data", so as to avoid doing the
lookup for every call to return_next.

- create a temporary memory context in which to evaluate the return
type's input functions. This memory context is reset for each call to
return_next.

The patch appears to fix the memory leak, and substantially reduces
the overhead imposed by return_next.

18 years agoTweak initdb to reduce verbosity of progress messages, by printing just
Tom Lane [Fri, 27 Jan 2006 19:01:15 +0000 (19:01 +0000)]
Tweak initdb to reduce verbosity of progress messages, by printing just
one 'creating subdirectories' message instead of one per subdirectory.
The original decision to print something for each subdirectory was made
when there were only one or two of 'em; we have way too many now.
Per discussion.

18 years agoSnowball multibyte. It's a pity, but snowball sources is very diferent for multibyte and
Teodor Sigaev [Fri, 27 Jan 2006 16:32:31 +0000 (16:32 +0000)]
Snowball multibyte. It's a pity, but snowball sources is very diferent for multibyte and
singlebyte encodings, so we should have snowball for every encodings.

I hope that finalize multibyte support work in tsearch2, but testing is needed...

18 years agoSuppress signed-vs-unsigned-char warning.
Tom Lane [Thu, 26 Jan 2006 18:08:10 +0000 (18:08 +0000)]
Suppress signed-vs-unsigned-char warning.

18 years agoFix display of whole-row Var appearing at the top level of a SELECT list.
Tom Lane [Thu, 26 Jan 2006 17:08:19 +0000 (17:08 +0000)]
Fix display of whole-row Var appearing at the top level of a SELECT list.
While we normally prefer the notation "foo.*" for a whole-row Var, that does
not work at SELECT top level, because in that context the parser will assume
that what is wanted is to expand the "*" into a list of separate target
columns, yielding behavior different from a whole-row Var.  We have to emit
just "foo" instead in that context.  Per report from Sokolov Yura.

18 years agoUpdate btree_gist for CIDR/INET changes --- there's really no need to
Tom Lane [Thu, 26 Jan 2006 04:22:36 +0000 (04:22 +0000)]
Update btree_gist for CIDR/INET changes --- there's really no need to
have a separate set of CIDR code here, either.

18 years agoDone:
Bruce Momjian [Thu, 26 Jan 2006 02:50:11 +0000 (02:50 +0000)]
Done:

< * %Prevent INET cast to CIDR if the unmasked bits are not zero, or
<   zero the bits
< * %Prevent INET cast to CIDR from dropping netmask, SELECT '1.1.1.1'::inet::cidr
> * -Zero umasked bits in conversion from INET cast to CIDR
> * -Prevent INET cast to CIDR from dropping netmask, SELECT '1.1.1.1'::inet::cidr

18 years agoClean up the INET-vs-CIDR situation. Get rid of the internal is_cidr flag
Tom Lane [Thu, 26 Jan 2006 02:35:51 +0000 (02:35 +0000)]
Clean up the INET-vs-CIDR situation.  Get rid of the internal is_cidr flag
and rely exclusively on the SQL type system to tell the difference between
the types.  Prevent creation of invalid CIDR values via casting from INET
or set_masklen() --- both of these operations now silently zero any bits
to the right of the netmask.  Remove duplicate CIDR comparison operators,
letting the type rely on the INET operators instead.

18 years agoRemove the no-longer-useful HashItem/HashItemData level of structure.
Tom Lane [Wed, 25 Jan 2006 23:26:11 +0000 (23:26 +0000)]
Remove the no-longer-useful HashItem/HashItemData level of structure.
Same motivation as for BTItem.

18 years agoRemove the no-longer-useful BTItem/BTItemData level of structure, and
Tom Lane [Wed, 25 Jan 2006 23:04:21 +0000 (23:04 +0000)]
Remove the no-longer-useful BTItem/BTItemData level of structure, and
just refer to btree index entries as plain IndexTuples, which is what
they have been for a very long time.  This is mostly just an exercise
in removing extraneous notation, but it does save a palloc/pfree cycle
per index insertion.

18 years agoRemove unnecessary PQconsumeInput call from PQputCopyData; it's redundant
Tom Lane [Wed, 25 Jan 2006 20:44:32 +0000 (20:44 +0000)]
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

18 years agoAllow row comparisons to be used as indexscan qualifications.
Tom Lane [Wed, 25 Jan 2006 20:29:24 +0000 (20:29 +0000)]
Allow row comparisons to be used as indexscan qualifications.
This completes the project to upgrade our handling of row comparisons.

18 years agoUpdate regression error message for NUMERIC range overflow. Display "1"
Bruce Momjian [Wed, 25 Jan 2006 18:20:22 +0000 (18:20 +0000)]
Update regression error message for NUMERIC range overflow.  Display "1"
instead of "10^0".

18 years agoUpdate regression error message for NUMERIC range overflow. Display "1"
Bruce Momjian [Wed, 25 Jan 2006 18:15:03 +0000 (18:15 +0000)]
Update regression error message for NUMERIC range overflow.  Display "1"
instead of 10^0.

18 years agoImprove error message when NUMERIC precision is exceeded.
Bruce Momjian [Wed, 25 Jan 2006 17:54:14 +0000 (17:54 +0000)]
Improve error message when NUMERIC precision is exceeded.

18 years agoFix unportable usage of socklen_t: should use ACCEPT_TYPE_ARG3 macro
Tom Lane [Tue, 24 Jan 2006 16:38:42 +0000 (16:38 +0000)]
Fix unportable usage of socklen_t: should use ACCEPT_TYPE_ARG3 macro
provided by configure, instead.  Per bug #2205.

18 years ago- Synced parser and keyword list.
Michael Meskes [Tue, 24 Jan 2006 11:01:38 +0000 (11:01 +0000)]
- Synced parser and keyword list.
- Added another test case.

18 years agoInstead of using a numberOfRequiredKeys count to distinguish required
Tom Lane [Mon, 23 Jan 2006 22:31:41 +0000 (22:31 +0000)]
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.

18 years agoPrototype fix for typo.
Bruce Momjian [Mon, 23 Jan 2006 21:49:39 +0000 (21:49 +0000)]
Prototype fix for typo.

18 years agoUse is_cidr in INET/CIDR structure, rather than the generic 'type'.
Bruce Momjian [Mon, 23 Jan 2006 21:45:47 +0000 (21:45 +0000)]
Use is_cidr in INET/CIDR structure, rather than the generic 'type'.

18 years agoImprove wording of descriptions of SIGHUP GUC parameters, as per my
Tom Lane [Mon, 23 Jan 2006 18:16:41 +0000 (18:16 +0000)]
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.

18 years agoFix typeing as Tom suggest
Teodor Sigaev [Mon, 23 Jan 2006 14:24:06 +0000 (14:24 +0000)]
Fix typeing as Tom suggest

18 years agoDone:
Bruce Momjian [Mon, 23 Jan 2006 02:59:27 +0000 (02:59 +0000)]
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)

18 years agoImprove note about not using the target table name in the SET clause.
Tom Lane [Sun, 22 Jan 2006 20:34:11 +0000 (20:34 +0000)]
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.

18 years agoFix alias-for-target-table-of-UPDATE-or-DELETE patch so that alias can
Tom Lane [Sun, 22 Jan 2006 20:03:16 +0000 (20:03 +0000)]
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.

18 years agoAllow an optional alias for the target table to be specified for UPDATE
Neil Conway [Sun, 22 Jan 2006 05:20:35 +0000 (05:20 +0000)]
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.

18 years agoMinor improvements to GEQO documentation.
Neil Conway [Sun, 22 Jan 2006 03:56:58 +0000 (03:56 +0000)]
Minor improvements to GEQO documentation.

18 years agoMarginal improvements in the wording of the autovacuum documentation:
Tom Lane [Sat, 21 Jan 2006 19:34:42 +0000 (19:34 +0000)]
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.

18 years agoFix broken markup.
Tom Lane [Sat, 21 Jan 2006 19:05:59 +0000 (19:05 +0000)]
Fix broken markup.

18 years agoRepair longstanding bug in slru/clog logic: it is possible for two backends
Tom Lane [Sat, 21 Jan 2006 04:38:21 +0000 (04:38 +0000)]
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.

18 years agoAdd GRANT ON SEQUENCE syntax to support sequence-only permissions.
Bruce Momjian [Sat, 21 Jan 2006 02:16:21 +0000 (02:16 +0000)]
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.

18 years agoReplace bitwise looping with bytewise looping in hemdistsign and
Tom Lane [Fri, 20 Jan 2006 22:46:16 +0000 (22:46 +0000)]
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.

18 years agoUpdate EXPLAIN wording for GEQO usage.
Bruce Momjian [Fri, 20 Jan 2006 16:41:55 +0000 (16:41 +0000)]
Update EXPLAIN wording for GEQO usage.

18 years agoFix thinko in autovacuum's test to skip temp tables: want to skip any
Tom Lane [Fri, 20 Jan 2006 15:16:56 +0000 (15:16 +0000)]
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.

18 years agoDoc patch that adds an example of a correllated UPDATE.
Bruce Momjian [Thu, 19 Jan 2006 23:09:42 +0000 (23:09 +0000)]
Doc patch that adds an example of a correllated UPDATE.

David Fetter

18 years agoClarify STABLE function documentation to highlight how such functions
Bruce Momjian [Thu, 19 Jan 2006 22:52:08 +0000 (22:52 +0000)]
Clarify STABLE function documentation to highlight how such functions
can be optimized.

18 years agoAdd some test scaffolding to allow cache-flush stress testing (and I do
Tom Lane [Thu, 19 Jan 2006 21:49:21 +0000 (21:49 +0000)]
Add some test scaffolding to allow cache-flush stress testing (and I do
mean stress ... system is orders of magnitude slower with this enabled).

18 years agoRemove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path for AIX and Darwin.
Bruce Momjian [Thu, 19 Jan 2006 21:19:12 +0000 (21:19 +0000)]
Remove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path for AIX and Darwin.

18 years agoRemove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path.
Bruce Momjian [Thu, 19 Jan 2006 20:45:29 +0000 (20:45 +0000)]
Remove $(DESTDIR) from the pgxs BE_DLLLIBS= -L path.

18 years agoAvoid crashing if relcache flush occurs while trying to load data into an
Tom Lane [Thu, 19 Jan 2006 20:28:43 +0000 (20:28 +0000)]
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.

18 years agoFix pgxs -L library path specification for Win32 and Cygwin, was /bin,
Bruce Momjian [Thu, 19 Jan 2006 20:00:54 +0000 (20:00 +0000)]
Fix pgxs -L library path specification for Win32 and Cygwin, was /bin,
now /lib.

18 years agoIt turns out that TablespaceCreateDbspace fails badly if a relcache flush
Tom Lane [Thu, 19 Jan 2006 04:45:38 +0000 (04:45 +0000)]
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.

18 years agoFix a tiny memory leak (one List header) in RelationCacheInvalidate().
Tom Lane [Thu, 19 Jan 2006 00:27:08 +0000 (00:27 +0000)]
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?

18 years agoClarify use of btree indexes for ILIKE and ~*.
Bruce Momjian [Wed, 18 Jan 2006 21:29:45 +0000 (21:29 +0000)]
Clarify use of btree indexes for ILIKE and ~*.

18 years agoYou'll find attached a patch for a fixed explanation on parameter_mode
Bruce Momjian [Wed, 18 Jan 2006 21:02:55 +0000 (21:02 +0000)]
You'll find attached a patch for a fixed explanation on parameter_mode
column, OUT and INOUT added.

Guillaume LELARGE

18 years agoModify pgstats code to reduce performance penalties from oversized stats data
Tom Lane [Wed, 18 Jan 2006 20:35:06 +0000 (20:35 +0000)]
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.

18 years agoDone:
Bruce Momjian [Wed, 18 Jan 2006 14:20:22 +0000 (14:20 +0000)]
Done:

>  o -Allow pooled connections to list all open WITH HOLD cursors

18 years agoAdd a new system view, pg_cursors, that displays the currently available
Neil Conway [Wed, 18 Jan 2006 06:49:30 +0000 (06:49 +0000)]
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.

18 years agoFix fsync code to test whether F_FULLFSYNC is available, instead of
Tom Lane [Tue, 17 Jan 2006 23:52:31 +0000 (23:52 +0000)]
Fix fsync code to test whether F_FULLFSYNC is available, instead of
assuming it always is on Darwin.  Per report from Neil Brandt.

18 years agoData transferred binary is now put into the variables verbatim.
Michael Meskes [Tue, 17 Jan 2006 19:49:23 +0000 (19:49 +0000)]
Data transferred binary is now put into the variables verbatim.
Also added a test case for a binary cursor.

18 years agoImprove comments about btree's use of ScanKey data structures: there
Tom Lane [Tue, 17 Jan 2006 00:09:01 +0000 (00:09 +0000)]
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".

18 years agoImprove constraint_name wording.
Bruce Momjian [Mon, 16 Jan 2006 20:48:49 +0000 (20:48 +0000)]
Improve constraint_name wording.