Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
1e5eb160
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1e5eb160
编写于
1月 22, 2005
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Change -> and <- to use proper ampersand markups.
HEAD and 8.0.X.
上级
082283b9
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
64 addition
and
64 deletion
+64
-64
doc/src/sgml/cvs.sgml
doc/src/sgml/cvs.sgml
+2
-2
doc/src/sgml/indexcost.sgml
doc/src/sgml/indexcost.sgml
+2
-2
doc/src/sgml/plhandler.sgml
doc/src/sgml/plhandler.sgml
+2
-2
doc/src/sgml/release.sgml
doc/src/sgml/release.sgml
+7
-7
doc/src/sgml/rules.sgml
doc/src/sgml/rules.sgml
+24
-24
doc/src/sgml/spi.sgml
doc/src/sgml/spi.sgml
+5
-5
doc/src/sgml/trigger.sgml
doc/src/sgml/trigger.sgml
+15
-15
doc/src/sgml/xfunc.sgml
doc/src/sgml/xfunc.sgml
+7
-7
未找到文件。
doc/src/sgml/cvs.sgml
浏览文件 @
1e5eb160
<!--
$PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.3
0 2005/01/06 01:49:22 tgl
Exp $
$PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.3
1 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
...
...
doc/src/sgml/indexcost.sgml
浏览文件 @
1e5eb160
<!--
$PostgreSQL: pgsql/doc/src/sgml/indexcost.sgml,v 2.1
8 2003/11/29 19:51:37 pgsql
Exp $
$PostgreSQL: pgsql/doc/src/sgml/indexcost.sgml,v 2.1
9 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>
...
...
doc/src/sgml/plhandler.sgml
浏览文件 @
1e5eb160
<!--
$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 = ...
}
...
...
doc/src/sgml/release.sgml
浏览文件 @
1e5eb160
<!--
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.32
1 2005/01/15 21:11:46 tgl
Exp $
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.32
2 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
...
...
doc/src/sgml/rules.sgml
浏览文件 @
1e5eb160
<!-- $PostgreSQL: pgsql/doc/src/sgml/rules.sgml,v 1.3
7 2004/12/30 03:13:56 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/rules.sgml,v 1.3
8 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
...
...
doc/src/sgml/spi.sgml
浏览文件 @
1e5eb160
<!--
$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.3
7 2004/12/30 21:45:37 tgl
Exp $
$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.3
8 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);
}
}
...
...
doc/src/sgml/trigger.sgml
浏览文件 @
1e5eb160
<!--
$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));
...
...
doc/src/sgml/xfunc.sgml
浏览文件 @
1e5eb160
<!--
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.9
6 2005/01/14 21:46:09 jurka
Exp $
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.9
7 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);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录