OSDN Git Service

pg-rex/syncrep.git
19 years agothe following patch makes the filename used to store the readline
Bruce Momjian [Fri, 10 Jun 2005 15:34:26 +0000 (15:34 +0000)]
the following patch makes the filename used to store the readline
history customizable through a variable named HISTFILE, analogous to
psql's already implemented HISTCONTROL and HISTSIZE variables, and
bash's HISTFILE-Variable.

The motivation was to be able to get psql to maintain separate
histories for separate databases.  This is now easily achievable
through a line like the following in ~/.psqlrc:

\set HISTFILE ~/.psql_history-:DBNAME

Andreas Seltenreich

19 years agoMore Win32 tilde code comments.
Bruce Momjian [Fri, 10 Jun 2005 14:49:31 +0000 (14:49 +0000)]
More Win32 tilde code comments.

19 years agoAdd comment on tilde expansion.
Bruce Momjian [Fri, 10 Jun 2005 14:41:32 +0000 (14:41 +0000)]
Add comment on tilde expansion.

19 years agoRemove unneeded variable test, per Tom.
Bruce Momjian [Fri, 10 Jun 2005 04:01:36 +0000 (04:01 +0000)]
Remove unneeded variable test, per Tom.

19 years agoQuick hack to allow the outer query's tuple_fraction to be passed down
Tom Lane [Fri, 10 Jun 2005 03:32:25 +0000 (03:32 +0000)]
Quick hack to allow the outer query's tuple_fraction to be passed down
to a subquery if the outer query is simple enough that the LIMIT can
be reflected directly to the subquery.  This didn't use to be very
interesting, because a subquery that couldn't have been flattened into
the upper query was usually not going to be very responsive to
tuple_fraction anyway.  But with new code that allows UNION ALL subqueries
to pay attention to tuple_fraction, this is useful to do.  In particular
this lets the optimization occur when the UNION ALL is directly inside
a view.

19 years agoAdd the "PGPASSFILE" environment variable to specify to the password
Bruce Momjian [Fri, 10 Jun 2005 03:02:30 +0000 (03:02 +0000)]
Add the "PGPASSFILE" environment variable to specify to the password
file.

Andrew Dunstan

19 years agoIf a LIMIT is applied to a UNION ALL query, plan each UNION arm as
Tom Lane [Fri, 10 Jun 2005 02:21:05 +0000 (02:21 +0000)]
If a LIMIT is applied to a UNION ALL query, plan each UNION arm as
if the limit were directly applied to it.  This does not actually
add a LIMIT plan node to the generated subqueries --- that would be
useless overhead --- but it does cause the planner to prefer fast-
start plans when the limit is small.  After an idea from Phil Endecott.

19 years agoRevise searching of subplan target lists to use something more efficient
Tom Lane [Fri, 10 Jun 2005 00:28:54 +0000 (00:28 +0000)]
Revise searching of subplan target lists to use something more efficient
than tlist_member calls.  Building a large join tlist is still O(N^2),
but with a much smaller constant factor than before.

19 years agoThis patch shows the full path name when doing a \s in psql,
Bruce Momjian [Thu, 9 Jun 2005 23:28:10 +0000 (23:28 +0000)]
This patch shows the full path name when doing a \s in psql,
if you have previously issued a \cd command.

Greg Sabino Mullane

19 years agoFree buffer allocated via malloc (process is short-lived, but fix it anyway).
Bruce Momjian [Thu, 9 Jun 2005 22:36:27 +0000 (22:36 +0000)]
Free buffer allocated via malloc (process is short-lived, but fix it anyway).

19 years agoMention prefix %t has no milliseconds.
Bruce Momjian [Thu, 9 Jun 2005 22:35:23 +0000 (22:35 +0000)]
Mention prefix %t has no milliseconds.

19 years agoRestructure log_line_prefix options to be clearer:
Bruce Momjian [Thu, 9 Jun 2005 22:33:05 +0000 (22:33 +0000)]
Restructure log_line_prefix options to be clearer:

#log_line_prefix = ''   # %u = user name
                                # %d = database name
                                # %r = remote host and port
                                # %h = remote host
                                # %p = PID
                                # %t = timestamp
                                # %m = timestamp with milliseconds
                                # %i = command tag
                                # %c = session id
                                # %l = session line number
                                # %s = session start timestamp
                                # %x = transaction id
                                # %q = stop here in non-session processes
                                # %% = '%'
                                # e.g. '<%u%%%d> '

19 years agoThis patch against 8.0.0beta1 source adds log_line_prefix options for
Bruce Momjian [Thu, 9 Jun 2005 22:29:52 +0000 (22:29 +0000)]
This patch against 8.0.0beta1 source adds log_line_prefix options for
millisecond timestamps (%m) and remote host (%h). The milliseconds are
useful for QPS measurements.

Ed L.

19 years agoFix typo in comment, per Alvaro.
Tom Lane [Thu, 9 Jun 2005 22:01:12 +0000 (22:01 +0000)]
Fix typo in comment, per Alvaro.

19 years agoFix assign_datestyle() so that it doesn't misleadingly complain about
Tom Lane [Thu, 9 Jun 2005 21:52:07 +0000 (21:52 +0000)]
Fix assign_datestyle() so that it doesn't misleadingly complain about
'conflicting datestyle specifications' for input that's actually only
redundant, such as SET DATESTYLE = MDY, MDY.  Per recent gripe.

19 years agoMake SPI set SPI_processed for CREATE TABLE AS / SELECT INTO commands;
Tom Lane [Thu, 9 Jun 2005 21:25:22 +0000 (21:25 +0000)]
Make SPI set SPI_processed for CREATE TABLE AS / SELECT INTO commands;
this in turn causes CREATE TABLE AS in plpgsql to set ROW_COUNT.
This is how it behaved before 7.4; I had unintentionally changed the
behavior in a bit of sloppy micro-optimization.

19 years agoAdd missing #include -- mea culpa.
Tom Lane [Thu, 9 Jun 2005 21:01:25 +0000 (21:01 +0000)]
Add missing #include -- mea culpa.

19 years agoDefend against omitted paramLengths[] array in PQsendQueryParams.
Tom Lane [Thu, 9 Jun 2005 20:01:16 +0000 (20:01 +0000)]
Defend against omitted paramLengths[] array in PQsendQueryParams.
Per Volkan Yazici.

19 years agoRepair error in description of nonblocking usage of PQgetCopyData().
Tom Lane [Thu, 9 Jun 2005 19:08:28 +0000 (19:08 +0000)]
Repair error in description of nonblocking usage of PQgetCopyData().
Per Volkan Yazici.

19 years agoAvoid bare 'struct Node;' declaration --- provokes annoying warnings
Tom Lane [Thu, 9 Jun 2005 18:44:05 +0000 (18:44 +0000)]
Avoid bare 'struct Node;' declaration --- provokes annoying warnings
on some compilers.

19 years ago\(rs should be \\(rs, per Tom.
Bruce Momjian [Thu, 9 Jun 2005 18:40:06 +0000 (18:40 +0000)]
\(rs should be \\(rs, per Tom.

19 years agoPut a critical section around update of hash index metapage. Per
Tom Lane [Thu, 9 Jun 2005 18:23:50 +0000 (18:23 +0000)]
Put a critical section around update of hash index metapage.  Per
discussion with Qingqing Zhou.

19 years agoAdd example for pg_config --configure.
Peter Eisentraut [Thu, 9 Jun 2005 18:15:05 +0000 (18:15 +0000)]
Add example for pg_config --configure.

19 years agoSince I needed this feature badly, I added the -n / --schema switch to
Bruce Momjian [Thu, 9 Jun 2005 17:56:51 +0000 (17:56 +0000)]
Since I needed this feature badly, I added the -n / --schema switch to
pg_restore. It restores the given schemaname only. It can be used in
conjunction with the -t and other switches to make the selection very
fine grained.

Richard van den Bergg, CISSP

19 years agoPlease find attached a patch (diff -c against cvs HEAD) to add a
Bruce Momjian [Thu, 9 Jun 2005 16:35:09 +0000 (16:35 +0000)]
Please find attached a patch (diff -c against cvs HEAD) to add a
function that accepts a double precision argument assumed to be a Unix
epoch timestamp and returns timestamp with time zone, and accompanying
documentation.

Usage:

test=# select to_timestamp(200120400);
       to_timestamp
------------------------
  1976-05-05 14:00:00+09
(1 row)

Michael Glaesemann

19 years agoI've created a patch which adds support for troff "-ms" output to
Bruce Momjian [Thu, 9 Jun 2005 15:27:27 +0000 (15:27 +0000)]
I've created a patch which adds support for troff "-ms" output to
psql.  i.e. "\pset format troff-ms".  The patch also corrects some
problems with the "latex" format, notably defining an extra column in
the output table, and correcting some alignment issues; it also
changes the output to match the border setting as documented in the
manual page and as shown with the "aligned" format.

The troff-ms output is mostly identical to the latex output allowing
for the differences between the two typesetters.

The output should be saved in a file and piped as follows:

  cat file | tbl | troff -T ps -ms > file.ps
or
  tbl file | troff -T ps -ms > file.ps

Because it contains tabs, you'll need to redirect psql output or use
"script", rather than pasting from a terminal window, due to the tabs
which can be replaced with spaces.

Roger Leigh

19 years agoSimplify the planner's join clause management by storing join clauses
Tom Lane [Thu, 9 Jun 2005 04:19:00 +0000 (04:19 +0000)]
Simplify the planner's join clause management by storing join clauses
of a relation in a flat 'joininfo' list.  The former arrangement grouped
the join clauses according to the set of unjoined relids used in each;
however, profiling on test cases involving lots of joins proves that
that data structure is a net loss.  It takes more time to group the
join clauses together than is saved by avoiding duplicate tests later.
It doesn't help any that there are usually not more than one or two
clauses per group ...

19 years agoRemove idea of schema tablespaces:
Bruce Momjian [Thu, 9 Jun 2005 03:00:43 +0000 (03:00 +0000)]
Remove idea of schema tablespaces:

<  o Allow databases and schemas to be moved to different tablespaces
<
<    One complexity is whether moving a schema should move all existing
<    schema objects or just define the location for future object creation.
<
>  o Allow databases to be moved to different tablespaces
484c480
<    schema. Global system tables can never be moved.
>    tablespace. Global system tables can never be moved.

19 years agoMarginal hack to avoid spending a lot of time in find_join_rel during
Tom Lane [Wed, 8 Jun 2005 23:02:05 +0000 (23:02 +0000)]
Marginal hack to avoid spending a lot of time in find_join_rel during
large planning problems: when the list of join rels gets too long, make
an auxiliary hash table that hashes on the identifying Bitmapset.

19 years agoRemove grammar productions for prefix and postfix % and ^ operators,
Tom Lane [Wed, 8 Jun 2005 21:15:29 +0000 (21:15 +0000)]
Remove grammar productions for prefix and postfix % and ^ operators,
as well as the existing pg_catalog entries for prefix and postfix %.
These have never been documented, though they did appear in one old
regression test.  This avoids surprising behavior in cases like
"SELECT -25 % -10".  Per recent discussion.
Note: although there is a catalog change here, I did not force initdb
since there's no harm in leaving the inaccessible entries in one's
copy of pg_operator.

19 years agoChange WAL-logging scheme for multixacts to be more like regular
Tom Lane [Wed, 8 Jun 2005 15:50:28 +0000 (15:50 +0000)]
Change WAL-logging scheme for multixacts to be more like regular
transaction IDs, rather than like subtrans; in particular, the information
now survives a database restart.  Per previous discussion, this is
essential for PITR log shipping and for 2PC.

19 years agoCorrect an omission in the syntax error message emitted by EXECUTE INTO
Neil Conway [Wed, 8 Jun 2005 00:49:36 +0000 (00:49 +0000)]
Correct an omission in the syntax error message emitted by EXECUTE INTO
in pl/pgsql.

19 years agoMention ipcrm and ipcclean in error message.
Bruce Momjian [Tue, 7 Jun 2005 16:54:18 +0000 (16:54 +0000)]
Mention ipcrm and ipcclean in error message.

19 years agoFix word wrap:
Bruce Momjian [Tue, 7 Jun 2005 14:12:07 +0000 (14:12 +0000)]
Fix word wrap:

<   changes made by the interface driver for its internal use.  One idea is
<   for this to be a protocol-only feature.  Another approach is to notify
<   the protocol when a RESET CONNECTION command is used.
>   changes made by the interface driver for its internal use.  One idea
>   is for this to be a protocol-only feature.  Another approach is to
>   notify the protocol when a RESET CONNECTION command is used.

19 years agoUse just NULL not NULL::TEXT --- the latter coding is unnecessary and
Tom Lane [Tue, 7 Jun 2005 14:04:48 +0000 (14:04 +0000)]
Use just NULL not NULL::TEXT --- the latter coding is unnecessary and
not schema-safe.  Per report from Jochem van Dieten.

19 years agoAdd a function lastval(), which returns the value returned by the
Neil Conway [Tue, 7 Jun 2005 07:08:35 +0000 (07:08 +0000)]
Add a function lastval(), which returns the value returned by the
last nextval() or setval() performed by the current session. Update the
docs, add regression tests, and bump the catalog version. Patch from
Dennis Björklund, various improvements by Neil Conway.

19 years agoAdd support for an optional INTO clause to PL/PgSQL's EXECUTE command.
Neil Conway [Tue, 7 Jun 2005 02:47:23 +0000 (02:47 +0000)]
Add support for an optional INTO clause to PL/PgSQL's EXECUTE command.
This allows the result of executing a SELECT to be assigned to a row
variable, record variable, or list of scalars. Docs and regression tests
updated. Per Pavel Stehule, improvements and cleanup by Neil Conway.

19 years agoUpdate text for RESET CONNECTION:
Bruce Momjian [Tue, 7 Jun 2005 01:59:39 +0000 (01:59 +0000)]
Update text for RESET CONNECTION:

<   all temporary tables, removal of any NOTIFYs, cursors, prepared
<   queries(?), currval()s, etc.  This could be used for connection pooling.
<   We could also change RESET ALL to have this functionality.
>   temporary tables, removing any NOTIFYs, cursors, open transactions,
>   prepared queries, currval()s, etc.  This could be used  for connection
>   pooling.  We could also change RESET ALL to have this functionality.
>   The difficult of this features is allowing RESET ALL to not affect
>   changes made by the interface driver for its internal use.  One idea is
>   for this to be a protocol-only feature.  Another approach is to notify
>   the protocol when a RESET CONNECTION command is used.

19 years agoIpcrm -> ipcclean in error message:
Bruce Momjian [Tue, 7 Jun 2005 01:36:40 +0000 (01:36 +0000)]
Ipcrm -> ipcclean in error message:

---------------------------------------------------------------------------

While playing around, I got the following error message:

--
FATAL:  pre-existing shared memory block (key 5432001, ID 90898435) is
still in use
HINT:  If you're sure there are no old server processes still running,
remove the shared memory block with the command "ipcrm", or just delete
the file "/home/hlinnaka/pgsql/data/postmaster.pid".
---

Thats normal because I used "kill -9 postmaster" to shut down.

The hint advises me to use "ipcrm", but there's the "ipcclean" script in
bin for just this purpose. The hint should probably advise to use
ipcclean.

The attached patch replaces all occurances of "ipcrm" with "ipcclean" in
src/backend/utils/init/miscinit.c and all the translations in
src/backend/po.

While reviewing the patch, I noticed a likely typo in hr.po. While I
don't
speak Croatian, the translation seems to advise to use the "icpm(1)"
command. I changed that to "ipcclean" too.

Heikki Linnakangas

19 years agoAdd rtee box index discussion.
Bruce Momjian [Mon, 6 Jun 2005 22:12:00 +0000 (22:12 +0000)]
Add rtee box index discussion.

19 years agoAdd:
Bruce Momjian [Mon, 6 Jun 2005 22:03:44 +0000 (22:03 +0000)]
Add:

> * Fix incorrect rtree results due to wrong assumptions about "over"
>   operator semantics [rtree]

19 years agoModify XLogInsert API to make callers specify whether pages to be backed
Tom Lane [Mon, 6 Jun 2005 20:22:58 +0000 (20:22 +0000)]
Modify XLogInsert API to make callers specify whether pages to be backed
up have the standard layout with unused space between pd_lower and pd_upper.
When this is set, XLogInsert will omit the unused space without bothering
to scan it to see if it's zero.  That saves time in XLogInsert, and also
allows reversion of my earlier patch to make PageRepairFragmentation et al
explicitly re-zero freed space.  Per suggestion by Heikki Linnakangas.

19 years agoRemove the mostly-stubbed-out-anyway support routines for WAL UNDO.
Tom Lane [Mon, 6 Jun 2005 17:01:25 +0000 (17:01 +0000)]
Remove the mostly-stubbed-out-anyway support routines for WAL UNDO.
That code is never going to be used in the foreseeable future, and
where it's more than a stub it's making the redo routines harder to
read.

19 years agoUpdate Hungarian FAQ and add an HTML version.
Bruce Momjian [Mon, 6 Jun 2005 16:30:42 +0000 (16:30 +0000)]
Update Hungarian FAQ and add an HTML version.

Laszlo Hornyak

19 years agoTrivial markup improvement.
Tom Lane [Mon, 6 Jun 2005 16:29:01 +0000 (16:29 +0000)]
Trivial markup improvement.

19 years agoNab some low-hanging fruit: replace the planner's base_rel_list and
Tom Lane [Mon, 6 Jun 2005 04:13:36 +0000 (04:13 +0000)]
Nab some low-hanging fruit: replace the planner's base_rel_list and
other_rel_list with a single array indexed by rangetable index.
This reduces find_base_rel from O(N) to O(1) without any real penalty.
While find_base_rel isn't one of the major bottlenecks in any profile
I've seen so far, it was starting to creep up on the radar screen
for complex queries --- so might as well fix it.

19 years agoRemove planner's private fields from Query struct, and put them into
Tom Lane [Sun, 5 Jun 2005 22:32:58 +0000 (22:32 +0000)]
Remove planner's private fields from Query struct, and put them into
a new PlannerInfo struct, which is passed around instead of the bare
Query in all the planning code.  This commit is essentially just a
code-beautification exercise, but it does open the door to making
larger changes to the planner data structures without having to muck
with the widely-known Query struct.

19 years agoAdd description for backend termination:
Bruce Momjian [Sun, 5 Jun 2005 03:39:54 +0000 (03:39 +0000)]
Add description for backend termination:

<   cleaned up properly.  A new signal is needed for safe termination.
>   cleaned up properly.  A new signal is needed for safe termination
>   because backends must first do a query cancel, then exit once they
>   have run the query cancel cleanup routine.

19 years agoHere's a patch to do the following:
Bruce Momjian [Sun, 5 Jun 2005 03:16:42 +0000 (03:16 +0000)]
Here's a patch to do the following:

1. Rename spi_return_next to return_next.
2. Add a new test for return_next.
3. Update the expected output.
4. Update the documentation.

Abhijit Menon-Sen

19 years agoCode for SET/SHOW TIME ZONE with a fixed-interval timezone was not
Tom Lane [Sun, 5 Jun 2005 01:48:34 +0000 (01:48 +0000)]
Code for SET/SHOW TIME ZONE with a fixed-interval timezone was not
prepared for HAVE_INT64_TIMESTAMP.  Per report from Guillaume Beaudoin.

19 years agoAdd 2phase TODO.detail.
Bruce Momjian [Sun, 5 Jun 2005 00:46:13 +0000 (00:46 +0000)]
Add 2phase TODO.detail.

19 years agoAdd TODO.detail for 2phase commit:
Bruce Momjian [Sun, 5 Jun 2005 00:45:22 +0000 (00:45 +0000)]
Add TODO.detail for 2phase commit:
> * Add two-phase commit [2phase]

19 years agoReplace the parser's namespace tree (which formerly had the same
Tom Lane [Sun, 5 Jun 2005 00:38:11 +0000 (00:38 +0000)]
Replace the parser's namespace tree (which formerly had the same
representation as the jointree) with two lists of RTEs, one showing
the RTEs accessible by qualified names, and the other showing the RTEs
accessible by unqualified names.  I think this is conceptually simpler
than what we did before, and it's sure a whole lot easier to search.
This seems to eliminate the parse-time bottleneck for deeply nested
JOIN structures that was exhibited by phil@vodafone.

19 years agoAdd TODO.detail.
Bruce Momjian [Sun, 5 Jun 2005 00:28:36 +0000 (00:28 +0000)]
Add TODO.detail.

<   logs
>   logs [pitr]
130c130
< * Allow a warm standby system to also allow read-only queries
> * Allow a warm standby system to also allow read-only queries [pitr]

19 years agoRemove duplicate emails.
Bruce Momjian [Sun, 5 Jun 2005 00:22:35 +0000 (00:22 +0000)]
Remove duplicate emails.

19 years agoAdd TODO.detail for timezone:
Bruce Momjian [Sun, 5 Jun 2005 00:20:02 +0000 (00:20 +0000)]
Add TODO.detail for timezone:

<   information, either zone name or offset from UTC
>   information, either zone name or offset from UTC [timezone]

19 years agoAdd TODO.detail of standard timezone data type.
Bruce Momjian [Sun, 5 Jun 2005 00:18:42 +0000 (00:18 +0000)]
Add TODO.detail of standard timezone data type.

19 years agoAdd pg_upgrade TODO.detail.
Bruce Momjian [Sat, 4 Jun 2005 23:33:17 +0000 (23:33 +0000)]
Add pg_upgrade TODO.detail.

19 years agoAdd TODO.detail:
Bruce Momjian [Sat, 4 Jun 2005 23:32:34 +0000 (23:32 +0000)]
Add TODO.detail:

> * Allow major upgrades without dump/reload, perhaps using pg_upgrade
>   [pg_upgrade]

19 years agoAdd pg_dump TODO.detail for multiple -t / -n flags.
Bruce Momjian [Sat, 4 Jun 2005 23:07:15 +0000 (23:07 +0000)]
Add pg_dump TODO.detail for multiple -t / -n flags.

19 years agoAdd pg_dump to TODO.detail.
Bruce Momjian [Sat, 4 Jun 2005 23:06:29 +0000 (23:06 +0000)]
Add pg_dump to TODO.detail.

19 years agoBack out patch:
Bruce Momjian [Sat, 4 Jun 2005 22:57:22 +0000 (22:57 +0000)]
Back out patch:

---------------------------------------------------------------------------

Tom Lane <tgl@sss.pgh.pa.us> writes:
> a_ogawa <a_ogawa@hi-ho.ne.jp> writes:
> > It is a reasonable idea. However, the majority part of MemSet was not
> > able to be avoided by this idea. Because the per-tuple contexts are used
> > at the early stage of executor.
>
> Drat.  Well, what about changing that?  We could introduce additional
> contexts or change the startup behavior so that the ones that are
> frequently reset don't have any data in them unless you are working
> with pass-by-ref values inside the inner loop.

That might be possible. However, I think that we should change only
aset.c about this article.
I thought further: We can check whether context was used from the last
reset even when blocks list is not empty. Please see attached patch.

19 years agoAdd comment for multi-byte computation.
Bruce Momjian [Sat, 4 Jun 2005 20:56:13 +0000 (20:56 +0000)]
Add comment for multi-byte computation.

19 years agoAllow kerberos name and username case sensitivity to be specified from
Bruce Momjian [Sat, 4 Jun 2005 20:42:43 +0000 (20:42 +0000)]
Allow kerberos name and username case sensitivity to be specified from
postgresql.conf.

---------------------------------------------------------------------------

Here's an updated version of the patch, with the following changes:

1) No longer uses "service name" as "application version". It's instead
hardcoded as "postgres". It could be argued that this part should be
backpatched to 8.0, but it doesn't make a big difference until you can
start changing it with GUC / connection parameters. This change only
affects kerberos 5, not 4.

2) Now downcases kerberos usernames when the client is running on win32.

3) Adds guc option for "krb_caseins_users" to make the server ignore
case mismatch which is required by some KDCs such as Active Directory.
Off by default, per discussion with Tom. This change only affects
kerberos 5, not 4.

4) Updated so it doesn't conflict with the rendevouz/bonjour patch
already in ;-)

Magnus Hagander

19 years agoAt 2005-05-21 20:18:50 +0530, ams@oryx.com wrote:
Bruce Momjian [Sat, 4 Jun 2005 20:33:06 +0000 (20:33 +0000)]
At 2005-05-21 20:18:50 +0530, ams@oryx.com wrote:
>
> > The second issue is where plperl returns a large result set.

I have attached the following seven patches to address this problem:

1. Trivial. Replaces some errant spaces with tabs.

2. Trivial. Fixes the spelling of Jan's name, and gets rid of many
   inane, useless, annoying, and often misleading comments. Here's
   a sample: "plperl_init_all() - Initialize all".

   (I have tried to add some useful comments here and there, and will
   continue to do so now and again.)

3. Trivial. Splits up some long lines.

4. Converts SRFs in PL/Perl to use a Tuplestore and SFRM_Materialize
   to return the result set, based on the PL/PgSQL model.

   There are two major consequences: result sets will spill to disk when
   they can no longer fit in work_mem; and "select foo_srf()" no longer
   works. (I didn't lose sleep over the latter, since that form is not
   valid in PL/PgSQL, and it's not documented in PL/Perl.)

5. Trivial, but important. Fixes use of "undef" instead of undef. This
   would cause empty functions to fail in bizarre ways. I suspect that
   there's still another (old) bug here. I'll investigate further.

6. Moves the majority of (4) out into a new plperl_return_next()
   function, to make it possible to expose the functionality to
   Perl; cleans up some of the code besides.

7. Add an spi_return_next function for use in Perl code.

If you want to apply the patches and try them out, 8-composite.diff is
what you should use. (Note: my patches depend upon Andrew's use-strict
and %_SHARED patches being applied.)

Here's something to try:

    create or replace function foo() returns setof record as $$
    $i = 0;
    for ("World", "PostgreSQL", "PL/Perl") {
        spi_return_next({f1=>++$i, f2=>'Hello', f3=>$_});
    }
    return;
    $$ language plperl;
    select * from foo() as (f1 integer, f2 text, f3 text);

(Many thanks to Andrews Dunstan and Supernews for their help.)

Abhijit Menon-Sen

19 years agoTom Lane <tgl@sss.pgh.pa.us> writes:
Bruce Momjian [Sat, 4 Jun 2005 20:14:12 +0000 (20:14 +0000)]
Tom Lane <tgl@sss.pgh.pa.us> writes:
> a_ogawa <a_ogawa@hi-ho.ne.jp> writes:
> > It is a reasonable idea. However, the majority part of MemSet was not
> > able to be avoided by this idea. Because the per-tuple contexts are used
> > at the early stage of executor.
>
> Drat.  Well, what about changing that?  We could introduce additional
> contexts or change the startup behavior so that the ones that are
> frequently reset don't have any data in them unless you are working
> with pass-by-ref values inside the inner loop.

That might be possible. However, I think that we should change only
aset.c about this article.
I thought further: We can check whether context was used from the last
reset even when blocks list is not empty. Please see attached patch.

The effect of the patch that I measured is as follows:

o Execution time that executed the SQL ten times.
(1)Linux(CPU: Pentium III, Compiler option: -O2)
 - original: 24.960s
 - patched : 23.114s

(2)Linux(CPU: Pentium 4, Compiler option: -O2)
 - original: 8.730s
 - patched : 7.962s

(3)Solaris(CPU: Ultra SPARC III, Compiler option: -O2)
 - original: 37.0s
 - patched : 33.7s

Atsushi Ogawa (a_ogawa)

19 years agoChange expandRTE() and ResolveNew() back to taking just the single
Tom Lane [Sat, 4 Jun 2005 19:19:42 +0000 (19:19 +0000)]
Change expandRTE() and ResolveNew() back to taking just the single
RTE of interest, rather than the whole rangetable list.  This makes
the API more understandable and avoids duplicate RTE lookups.  This
patch reverts no-longer-needed portions of my patch of 2004-08-19.

19 years agoBack out make_mkid change.
Bruce Momjian [Sat, 4 Jun 2005 18:20:43 +0000 (18:20 +0000)]
Back out make_mkid change.

19 years agoImprove readability of config location params by adding newline.
Bruce Momjian [Sat, 4 Jun 2005 18:13:59 +0000 (18:13 +0000)]
Improve readability of config location params by adding newline.

19 years agoAdd:
Bruce Momjian [Sat, 4 Jun 2005 18:12:38 +0000 (18:12 +0000)]
Add:

> * Allow pg_ctl to work properly with configuration files located outside
>   the PGDATA directory
>
>   pg_ctl can not read the pid file because it isn't located in the
>   config directory but in the PGDATA directory.  The solution is to
>   allow pg_ctl to read and understand postgresql.conf to find the
>   data_directory value.
>

19 years agoAdd description:
Bruce Momjian [Sat, 4 Jun 2005 16:53:48 +0000 (16:53 +0000)]
Add description:
>
>   O_DIRECT doesn't have the same media write guarantees as fsync, so it
>   is in addition to the fsync method, not in place of it.
>

19 years agoFix NUMERIC modulus to properly truncate division in computation.
Bruce Momjian [Sat, 4 Jun 2005 14:12:50 +0000 (14:12 +0000)]
Fix NUMERIC modulus to properly truncate division in computation.
Division rounding was causing incorrect results.  Test case:

test=> SELECT 12345678901234567890 % 123;
 ?column?
----------
       78
(1 row)

Was returning -45.

19 years agoUpdate Chinese FAQ to fix XHTML format.
Bruce Momjian [Sat, 4 Jun 2005 03:28:57 +0000 (03:28 +0000)]
Update Chinese FAQ to fix XHTML format.

Weiping (Laser)

19 years agoRemove unused 'printCost' field from ExplainState, and simplify the code
Neil Conway [Sat, 4 Jun 2005 02:07:09 +0000 (02:07 +0000)]
Remove unused 'printCost' field from ExplainState, and simplify the code
accordingly (this field was always initialized to true). Patch from
Alvaro Herrera.

19 years agoRevise handling of dropped columns in JOIN alias lists to avoid a
Tom Lane [Fri, 3 Jun 2005 23:05:30 +0000 (23:05 +0000)]
Revise handling of dropped columns in JOIN alias lists to avoid a
performance problem pointed out by phil@vodafone: to wit, we were
spending O(N^2) time to check dropped-ness in an N-deep join tree,
even in the case where the tree was freshly constructed and couldn't
possibly mention any dropped columns.  Instead of recursing in
get_rte_attribute_is_dropped(), change the data structure definition:
the joinaliasvars list of a JOIN RTE must have a NULL Const instead
of a Var at any position that references a now-dropped column.  This
costs nothing during normal parse-rewrite-plan path, and instead we
have a linear-time update to make when loading a stored rule that
might contain now-dropped columns.  While at it, move the responsibility
for acquring locks on relations referenced by rules into this separate
function (which I therefore chose to call AcquireRewriteLocks).
This saves effort --- namely, duplicated lock grabs in parser and rewriter
--- in the normal path at a cost of one extra non-locked heap_open()
in the stored-rule path; seems a good tradeoff.  A fringe benefit is
that it is now *much* clearer that we acquire lock on relations referenced
in rules before we make any rewriter decisions based on their properties.
(I don't know of any bug of that ilk, but it wasn't exactly clear before.)

19 years agoPut back WAL TODO.detail entries.
Bruce Momjian [Fri, 3 Jun 2005 21:46:02 +0000 (21:46 +0000)]
Put back WAL TODO.detail entries.

19 years agoRemove because it is partly done and we might not want to go farther:
Bruce Momjian [Fri, 3 Jun 2005 21:42:21 +0000 (21:42 +0000)]
Remove because it is partly done and we might not want to go farther:
< * -Compress WAL entries [wal]

19 years agoJust noticed that you can't Query-Cancel a long planner run, because
Tom Lane [Fri, 3 Jun 2005 19:00:12 +0000 (19:00 +0000)]
Just noticed that you can't Query-Cancel a long planner run, because
no part of the planner did CHECK_FOR_INTERRUPTS().  Add one in a
suitably strategic spot.

19 years agoUpdate Russian FAQ.
Bruce Momjian [Fri, 3 Jun 2005 18:17:07 +0000 (18:17 +0000)]
Update Russian FAQ.

Viktor Vislobokov

19 years agoTrim TODO.detail for wal completed items.
Bruce Momjian [Fri, 3 Jun 2005 17:14:17 +0000 (17:14 +0000)]
Trim TODO.detail for wal completed items.

19 years agoDone:
Bruce Momjian [Fri, 3 Jun 2005 16:38:02 +0000 (16:38 +0000)]
Done:
> * -Compress WAL entries [wal]

19 years agoDone:
Bruce Momjian [Fri, 3 Jun 2005 16:36:50 +0000 (16:36 +0000)]
Done:
> * -Change WAL to use 32-bit CRC, for performance reasons

19 years agoPush enable/disable of notify and catchup interrupts all the way down
Tom Lane [Thu, 2 Jun 2005 21:03:25 +0000 (21:03 +0000)]
Push enable/disable of notify and catchup interrupts all the way down
to just around the bare recv() call that gets a command from the client.
The former placement in PostgresMain was unsafe because the intermediate
processing layers (especially SSL) use facilities such as malloc that are
not necessarily re-entrant.  Per report from counterstorm.com.

19 years agoThe no-lexer-backup speedup hadn't been there a week before somebody
Tom Lane [Thu, 2 Jun 2005 17:45:19 +0000 (17:45 +0000)]
The no-lexer-backup speedup hadn't been there a week before somebody
broke it.  Maybe we do need an automated check ...

19 years ago- Fixed memory leak in ecpglib by adding some missing free() commands.
Michael Meskes [Thu, 2 Jun 2005 12:35:11 +0000 (12:35 +0000)]
- Fixed memory leak in ecpglib by adding some missing free() commands.
- Added patch by Gavin Scott <gavin@planetacetech.com> for Intel 64bit hardware.

19 years agoChange CRCs in WAL records from 64bit to 32bit for performance reasons.
Tom Lane [Thu, 2 Jun 2005 05:55:29 +0000 (05:55 +0000)]
Change CRCs in WAL records from 64bit to 32bit for performance reasons.
Instead of a separate CRC on each backup block, include backup blocks
in their parent WAL record's CRC; this is important to ensure that the
backup block really goes with the WAL record, ie there was not a page
tear right at the start of the backup block.  Implement a simple form
of compression of backup blocks: drop any run of zeroes starting at
pd_lower, so as not to store the unused 'hole' that commonly exists in
PG heap and index pages.  Tweak PageRepairFragmentation and related
routines to ensure they keep the unused space zeroed, so that the above
compression method remains effective.  All per recent discussions.

19 years agoCompleted:
Bruce Momjian [Thu, 2 Jun 2005 01:27:58 +0000 (01:27 +0000)]
Completed:
<  o Allow COPY to understand \x as a hex byte
>  o -Allow COPY to understand \x as a hex byte

19 years agoAdd support for \x hex strings in psql variables.
Bruce Momjian [Thu, 2 Jun 2005 01:23:48 +0000 (01:23 +0000)]
Add support for \x hex strings in psql variables.

19 years agoAdd support for \x hex escapes in backend strings. Octal was already
Bruce Momjian [Thu, 2 Jun 2005 01:23:08 +0000 (01:23 +0000)]
Add support for \x hex escapes in backend strings.  Octal was already
supported.  This follows the C standard escapes.

19 years agoAdd support for \x hex escapes in COPY.
Bruce Momjian [Thu, 2 Jun 2005 01:21:22 +0000 (01:21 +0000)]
Add support for \x hex escapes in COPY.

Sergey Ten

19 years agoFix log_statement to properly recognize SELECT INTO and CREATE TABLE AS
Bruce Momjian [Wed, 1 Jun 2005 23:27:03 +0000 (23:27 +0000)]
Fix log_statement to properly recognize SELECT INTO and CREATE TABLE AS
and DDL statements.

Backpatch fix to 8.0.X.

Per report from Murthy Kambhampaty

19 years agopatternsel() was improperly stripping RelabelType from the derived
Tom Lane [Wed, 1 Jun 2005 17:05:11 +0000 (17:05 +0000)]
patternsel() was improperly stripping RelabelType from the derived
expressions it constructed, causing scalarineqsel to become confused
if the underlying variable was of a domain type.  Per report from
Kevin Grittner.

19 years agoPrevent to divide by zero and range out of 0..1
Teodor Sigaev [Wed, 1 Jun 2005 11:45:03 +0000 (11:45 +0000)]
Prevent to divide by zero and range out of 0..1

19 years agoAdd test to WAL replay to verify that xl_prev points back to the previous
Tom Lane [Tue, 31 May 2005 19:10:28 +0000 (19:10 +0000)]
Add test to WAL replay to verify that xl_prev points back to the previous
WAL record; this is necessary to be sure we recognize stale WAL records
when a WAL page was only partially written during a system crash.

19 years agoTab cleanup for SGML.
Bruce Momjian [Tue, 31 May 2005 14:48:47 +0000 (14:48 +0000)]
Tab cleanup for SGML.

Robert Treat

19 years agoFix information_schema for OUT and INOUT parameters.
Tom Lane [Tue, 31 May 2005 03:36:24 +0000 (03:36 +0000)]
Fix information_schema for OUT and INOUT parameters.

19 years agoTeach ruleutils to drill down into RECORD-type Vars in the same way
Tom Lane [Tue, 31 May 2005 03:03:59 +0000 (03:03 +0000)]
Teach ruleutils to drill down into RECORD-type Vars in the same way
that the parser now can, so that it can reverse-list cases involving
FieldSelect from a RECORD Var.

19 years agoParseComplexProjection should make use of expandRecordVariable so that
Tom Lane [Tue, 31 May 2005 01:03:23 +0000 (01:03 +0000)]
ParseComplexProjection should make use of expandRecordVariable so that
it can handle cases like (foo.x).y where foo is a subquery and x is
a function-returning-RECORD RTE in that subquery.

19 years agoChange relblocknumber field of pg_buffercache view from numeric to int8
Tom Lane [Tue, 31 May 2005 00:07:47 +0000 (00:07 +0000)]
Change relblocknumber field of pg_buffercache view from numeric to int8
for efficiency's sake.  Mark Kirkwood.

19 years agoDocument get_call_result_type() and friends; mark TypeGetTupleDesc()
Tom Lane [Mon, 30 May 2005 23:09:07 +0000 (23:09 +0000)]
Document get_call_result_type() and friends; mark TypeGetTupleDesc()
and RelationNameGetTupleDesc() as deprecated; remove uses of the
latter in the contrib library.  Along the way, clean up crosstab()
code and documentation a little.