mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08:00
Change -> and <- to use proper ampersand markups.
HEAD and 8.0.X.
This commit is contained in:
parent
082283b9b9
commit
1e5eb160d1
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.30 2005/01/06 01:49:22 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.31 2005/01/22 22:06:17 momjian Exp $
|
||||
-->
|
||||
|
||||
<appendix id="cvs">
|
||||
@ -214,7 +214,7 @@ $ cvs checkout -r REL6_4 tc
|
||||
<programlisting>
|
||||
file1 file2 file3 file4 file5
|
||||
|
||||
1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
|
||||
1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
|
||||
1.2*- 1.2 1.2 -1.2*-
|
||||
1.3 \- 1.3*- 1.3 / 1.3
|
||||
1.4 \ 1.4 / 1.4
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/indexcost.sgml,v 2.18 2003/11/29 19:51:37 pgsql Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/indexcost.sgml,v 2.19 2005/01/22 22:06:17 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter id="indexcost">
|
||||
@ -205,7 +205,7 @@ amcostestimate (Query *root,
|
||||
|
||||
<programlisting>
|
||||
*indexSelectivity = clauselist_selectivity(root, indexQuals,
|
||||
rel->relid, JOIN_INNER);
|
||||
rel->relid, JOIN_INNER);
|
||||
</programlisting>
|
||||
</para>
|
||||
</step>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/plhandler.sgml,v 1.4 2005/01/05 23:42:03 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/plhandler.sgml,v 1.5 2005/01/22 22:06:17 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter id="plhandler">
|
||||
@ -121,7 +121,7 @@ plsample_call_handler(PG_FUNCTION_ARGS)
|
||||
/*
|
||||
* Called as a trigger procedure
|
||||
*/
|
||||
TriggerData *trigdata = (TriggerData *) fcinfo->context;
|
||||
TriggerData *trigdata = (TriggerData *) fcinfo->context;
|
||||
|
||||
retval = ...
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.321 2005/01/15 21:11:46 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.322 2005/01/22 22:06:17 momjian Exp $
|
||||
-->
|
||||
|
||||
<appendix id="release">
|
||||
@ -7138,7 +7138,7 @@ Added documentation to tarball.
|
||||
<programlisting>
|
||||
Fix many CLUSTER failures (Tom)
|
||||
Allow ALTER TABLE RENAME works on indexes (Tom)
|
||||
Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
|
||||
Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
|
||||
New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
|
||||
Fix the off by one errors in ResultSet from 6.5.3, and more.
|
||||
jdbc ResultSet fixes (Joseph Shraibman)
|
||||
@ -8017,7 +8017,7 @@ Add Win1250 (Czech) support (Pavel Behal)
|
||||
<programlisting>
|
||||
Bug Fixes
|
||||
---------
|
||||
Fix text<->float8 and text<->float4 conversion functions(Thomas)
|
||||
Fix text<->float8 and text<->float4 conversion functions(Thomas)
|
||||
Fix for creating tables with mixed-case constraints(Billy)
|
||||
Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
|
||||
Fix bug in pg_dump -z
|
||||
@ -9225,7 +9225,7 @@ Check explicitly for points and polygons contained within polygons
|
||||
using an axis-crossing algorithm(Thomas)
|
||||
Add routine to convert circle-box(Thomas)
|
||||
Merge conflicting operators for different geometric data types(Thomas)
|
||||
Replace distance operator "<===>" with "<->"(Thomas)
|
||||
Replace distance operator "<===>" with "<->"(Thomas)
|
||||
Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
|
||||
Add routines for text trimming on both ends, substring, and string position(Thomas)
|
||||
Added conversion routines circle(box) and poly(circle)(Thomas)
|
||||
@ -10093,9 +10093,9 @@ more compliant to the SQL-92 standard):
|
||||
char(N), varchar(N), date and time.
|
||||
|
||||
The following are aliases to existing postgres types:
|
||||
smallint -> int2
|
||||
integer, int -> int4
|
||||
float, real -> float4
|
||||
smallint -> int2
|
||||
integer, int -> int4
|
||||
float, real -> float4
|
||||
char(N) and varchar(N) are implemented as truncated text types. In
|
||||
addition, char(N) does blank-padding.
|
||||
* single-quote (') is used for quoting string literals; '' (in addition to
|
||||
|
@ -1,4 +1,4 @@
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/rules.sgml,v 1.37 2004/12/30 03:13:56 tgl Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/rules.sgml,v 1.38 2005/01/22 22:06:27 momjian Exp $ -->
|
||||
|
||||
<Chapter Id="rules">
|
||||
<Title>The Rule System</Title>
|
||||
@ -1565,26 +1565,26 @@ UPDATE shoelace_data
|
||||
|
||||
<literallayout class="monospaced">
|
||||
Nested Loop
|
||||
-> Merge Join
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on s
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on shoelace_arrive
|
||||
-> Seq Scan on shoelace_data
|
||||
-> Merge Join
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on s
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on shoelace_arrive
|
||||
-> Seq Scan on shoelace_data
|
||||
</literallayout>
|
||||
|
||||
while omitting the extra range table entry would result in a
|
||||
|
||||
<literallayout class="monospaced">
|
||||
Merge Join
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on s
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on shoelace_arrive
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on s
|
||||
-> Seq Scan
|
||||
-> Sort
|
||||
-> Seq Scan on shoelace_arrive
|
||||
</literallayout>
|
||||
|
||||
which produces exactly the same entries in the log table. Thus,
|
||||
@ -1943,8 +1943,8 @@ DELETE FROM software WHERE computer.hostname = 'mypc.local.net'
|
||||
|
||||
<literallayout class="monospaced">
|
||||
Nestloop
|
||||
-> Index Scan using comp_hostidx on computer
|
||||
-> Index Scan using soft_hostidx on software
|
||||
-> Index Scan using comp_hostidx on computer
|
||||
-> Index Scan using soft_hostidx on software
|
||||
</literallayout>
|
||||
|
||||
So there would be not that much difference in speed between
|
||||
@ -1973,9 +1973,9 @@ DELETE FROM software WHERE computer.hostname >= 'old' AND computer.hostname < 'o
|
||||
|
||||
<literallayout class="monospaced">
|
||||
Hash Join
|
||||
-> Seq Scan on software
|
||||
-> Hash
|
||||
-> Index Scan using comp_hostidx on computer
|
||||
-> Seq Scan on software
|
||||
-> Hash
|
||||
-> Index Scan using comp_hostidx on computer
|
||||
</literallayout>
|
||||
|
||||
The other possible command is
|
||||
@ -1989,8 +1989,8 @@ DELETE FROM computer WHERE hostname ~ '^old';
|
||||
|
||||
<literallayout class="monospaced">
|
||||
Nestloop
|
||||
-> Index Scan using comp_hostidx on computer
|
||||
-> Index Scan using soft_hostidx on software
|
||||
-> Index Scan using comp_hostidx on computer
|
||||
-> Index Scan using soft_hostidx on software
|
||||
</literallayout>
|
||||
|
||||
This shows, that the planner does not realize that the
|
||||
@ -2030,8 +2030,8 @@ DELETE FROM software WHERE computer.manufacurer = 'bim'
|
||||
|
||||
<ProgramListing>
|
||||
Nestloop
|
||||
-> Index Scan using comp_manufidx on computer
|
||||
-> Index Scan using soft_hostidx on software
|
||||
-> Index Scan using comp_manufidx on computer
|
||||
-> Index Scan using soft_hostidx on software
|
||||
</ProgramListing>
|
||||
|
||||
In any of these cases, the extra commands from the rule system
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.37 2004/12/30 21:45:37 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.38 2005/01/22 22:06:27 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter id="spi">
|
||||
@ -2931,19 +2931,19 @@ execq(text *sql, int cnt)
|
||||
*/
|
||||
if (ret == SPI_OK_SELECT && SPI_processed > 0)
|
||||
{
|
||||
TupleDesc tupdesc = SPI_tuptable->tupdesc;
|
||||
TupleDesc tupdesc = SPI_tuptable->tupdesc;
|
||||
SPITupleTable *tuptable = SPI_tuptable;
|
||||
char buf[8192];
|
||||
int i, j;
|
||||
|
||||
for (j = 0; j < proc; j++)
|
||||
{
|
||||
HeapTuple tuple = tuptable->vals[j];
|
||||
HeapTuple tuple = tuptable->vals[j];
|
||||
|
||||
for (i = 1, buf[0] = 0; i <= tupdesc->natts; i++)
|
||||
for (i = 1, buf[0] = 0; i <= tupdesc->natts; i++)
|
||||
snprintf(buf + strlen (buf), sizeof(buf) - strlen(buf), " %s%s",
|
||||
SPI_getvalue(tuple, tupdesc, i),
|
||||
(i == tupdesc->natts) ? " " : " |");
|
||||
(i == tupdesc->natts) ? " " : " |");
|
||||
elog (INFO, "EXECQ: %s", buf);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.39 2004/12/30 03:13:56 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.40 2005/01/22 22:06:27 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter id="triggers">
|
||||
@ -271,10 +271,10 @@ CALLED_AS_TRIGGER(fcinfo)
|
||||
</programlisting>
|
||||
which expands to
|
||||
<programlisting>
|
||||
((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData))
|
||||
((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData))
|
||||
</programlisting>
|
||||
If this returns true, then it is safe to cast
|
||||
<literal>fcinfo->context</> to type <literal>TriggerData
|
||||
<literal>fcinfo->context</> to type <literal>TriggerData
|
||||
*</literal> and make use of the pointed-to
|
||||
<structname>TriggerData</> structure. The function must
|
||||
<emphasis>not</emphasis> alter the <structname>TriggerData</>
|
||||
@ -393,8 +393,8 @@ typedef struct TriggerData
|
||||
A pointer to a structure describing the relation that the trigger fired for.
|
||||
Look at <filename>utils/rel.h</> for details about
|
||||
this structure. The most interesting things are
|
||||
<literal>tg_relation->rd_att</> (descriptor of the relation
|
||||
tuples) and <literal>tg_relation->rd_rel->relname</>
|
||||
<literal>tg_relation->rd_att</> (descriptor of the relation
|
||||
tuples) and <literal>tg_relation->rd_rel->relname</>
|
||||
(relation name; the type is not <type>char*</> but
|
||||
<type>NameData</>; use
|
||||
<literal>SPI_getrelname(tg_relation)</> to get a <type>char*</> if you
|
||||
@ -541,7 +541,7 @@ PG_FUNCTION_INFO_V1(trigf);
|
||||
Datum
|
||||
trigf(PG_FUNCTION_ARGS)
|
||||
{
|
||||
TriggerData *trigdata = (TriggerData *) fcinfo->context;
|
||||
TriggerData *trigdata = (TriggerData *) fcinfo->context;
|
||||
TupleDesc tupdesc;
|
||||
HeapTuple rettuple;
|
||||
char *when;
|
||||
@ -554,22 +554,22 @@ trigf(PG_FUNCTION_ARGS)
|
||||
elog(ERROR, "trigf: not called by trigger manager");
|
||||
|
||||
/* tuple to return to executor */
|
||||
if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
|
||||
rettuple = trigdata->tg_newtuple;
|
||||
if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
|
||||
rettuple = trigdata->tg_newtuple;
|
||||
else
|
||||
rettuple = trigdata->tg_trigtuple;
|
||||
rettuple = trigdata->tg_trigtuple;
|
||||
|
||||
/* check for null values */
|
||||
if (!TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)
|
||||
&& TRIGGER_FIRED_BEFORE(trigdata->tg_event))
|
||||
if (!TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)
|
||||
&& TRIGGER_FIRED_BEFORE(trigdata->tg_event))
|
||||
checknull = true;
|
||||
|
||||
if (TRIGGER_FIRED_BEFORE(trigdata->tg_event))
|
||||
if (TRIGGER_FIRED_BEFORE(trigdata->tg_event))
|
||||
when = "before";
|
||||
else
|
||||
when = "after ";
|
||||
|
||||
tupdesc = trigdata->tg_relation->rd_att;
|
||||
tupdesc = trigdata->tg_relation->rd_att;
|
||||
|
||||
/* connect to SPI manager */
|
||||
if ((ret = SPI_connect()) < 0)
|
||||
@ -582,8 +582,8 @@ trigf(PG_FUNCTION_ARGS)
|
||||
elog(NOTICE, "trigf (fired %s): SPI_exec returned %d", when, ret);
|
||||
|
||||
/* count(*) returns int8, so be careful to convert */
|
||||
i = DatumGetInt64(SPI_getbinval(SPI_tuptable->vals[0],
|
||||
SPI_tuptable->tupdesc,
|
||||
i = DatumGetInt64(SPI_getbinval(SPI_tuptable->vals[0],
|
||||
SPI_tuptable->tupdesc,
|
||||
1,
|
||||
&isnull));
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.96 2005/01/14 21:46:09 jurka Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.97 2005/01/22 22:06:27 momjian Exp $
|
||||
-->
|
||||
|
||||
<sect1 id="xfunc">
|
||||
@ -1482,8 +1482,8 @@ makepoint(Point *pointx, Point *pointy)
|
||||
{
|
||||
Point *new_point = (Point *) palloc(sizeof(Point));
|
||||
|
||||
new_point->x = pointx->x;
|
||||
new_point->y = pointy->y;
|
||||
new_point->x = pointx->x;
|
||||
new_point->y = pointy->y;
|
||||
|
||||
return new_point;
|
||||
}
|
||||
@ -1665,8 +1665,8 @@ makepoint(PG_FUNCTION_ARGS)
|
||||
Point *pointy = PG_GETARG_POINT_P(1);
|
||||
Point *new_point = (Point *) palloc(sizeof(Point));
|
||||
|
||||
new_point->x = pointx->x;
|
||||
new_point->y = pointy->y;
|
||||
new_point->x = pointx->x;
|
||||
new_point->y = pointy->y;
|
||||
|
||||
PG_RETURN_POINT_P(new_point);
|
||||
}
|
||||
@ -2447,7 +2447,7 @@ my_set_returning_function(PG_FUNCTION_ARGS)
|
||||
if (SRF_IS_FIRSTCALL())
|
||||
{
|
||||
funcctx = SRF_FIRSTCALL_INIT();
|
||||
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
|
||||
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
|
||||
/* One-time setup code appears here: */
|
||||
<replaceable>user code</replaceable>
|
||||
<replaceable>if returning composite</replaceable>
|
||||
@ -2503,7 +2503,7 @@ testpassbyval(PG_FUNCTION_ARGS)
|
||||
funcctx = SRF_FIRSTCALL_INIT();
|
||||
|
||||
/* switch to memory context appropriate for multiple function calls */
|
||||
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
|
||||
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
|
||||
|
||||
/* total number of tuples to be returned */
|
||||
funcctx->max_calls = PG_GETARG_UINT32(0);
|
||||
|
Loading…
Reference in New Issue
Block a user