Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3d7ac0d

Browse files
committed
Note that the example aggregate array_accum is comparable to the now
built-in array_agg. Per suggestion from Robert Haas.
1 parent170b66a commit3d7ac0d

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

‎doc/src/sgml/xaggr.sgml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/xaggr.sgml,v 1.35 2007/02/01 00:28:18 momjian Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/xaggr.sgml,v 1.36 2008/11/20 21:10:44 tgl Exp $ -->
22

33
<sect1 id="xaggr">
44
<title>User-Defined Aggregates</title>
@@ -9,7 +9,7 @@
99
</indexterm>
1010

1111
<para>
12-
Aggregate functions in <productname>PostgreSQL</productname>
12+
Aggregate functions in <productname>PostgreSQL</productname>
1313
are expressed in terms of <firstterm>state values</firstterm>
1414
and <firstterm>state transition functions</firstterm>.
1515
That is, an aggregate operates using a state value that is updated
@@ -41,7 +41,7 @@
4141
aggregate to work on a data type for complex numbers,
4242
we only need the addition function for that data type.
4343
The aggregate definition would be:
44-
44+
4545
<screen>
4646
CREATE AGGREGATE sum (complex)
4747
(
@@ -80,7 +80,7 @@ SELECT sum(a) FROM test_complex;
8080
the transition function is marked <quote>strict</> (i.e., not to be called
8181
for null inputs).
8282
</para>
83-
83+
8484
<para>
8585
Another bit of default behavior for a <quote>strict</> transition function
8686
is that the previous state value is retained unchanged whenever a
@@ -89,7 +89,7 @@ SELECT sum(a) FROM test_complex;
8989
transition function as strict; instead code it to test for null inputs and
9090
do whatever is needed.
9191
</para>
92-
92+
9393
<para>
9494
<function>avg</> (average) is a more complex example of an aggregate.
9595
It requires
@@ -132,7 +132,10 @@ CREATE AGGREGATE array_accum (anyelement)
132132
</programlisting>
133133

134134
Here, the actual state type for any aggregate call is the array type
135-
having the actual input type as elements.
135+
having the actual input type as elements. The behavior of the aggregate
136+
is to concatenate all the inputs into an array of that type.
137+
(Note: the built-in aggregate <function>array_agg</> provides similar
138+
functionality, with better performance than this definition would have.)
136139
</para>
137140

138141
<para>
@@ -149,14 +152,14 @@ SELECT attrelid::regclass, array_accum(attname)
149152
pg_tablespace | {spcname,spcowner,spclocation,spcacl}
150153
(1 row)
151154

152-
SELECT attrelid::regclass, array_accum(atttypid)
155+
SELECT attrelid::regclass, array_accum(atttypid::regtype)
153156
FROM pg_attribute
154157
WHERE attnum &gt; 0 AND attrelid = 'pg_tablespace'::regclass
155158
GROUP BY attrelid;
156159

157-
attrelid | array_accum
158-
---------------+-----------------
159-
pg_tablespace | {19,26,25,1034}
160+
attrelid |array_accum
161+
---------------+---------------------------
162+
pg_tablespace | {name,oid,text,aclitem[]}
160163
(1 row)
161164
</programlisting>
162165
</para>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp