summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2005-01-07 23:08:44 +0000
committerTom Lane2005-01-07 23:08:44 +0000
commitffce35fe6fcba7fdd6a85c3774f2c5471677920a (patch)
tree10950af5a58112e8a042c6ea8958654b95afb91a
parent4e64e7f5638c2da3769db648408062085e9c43f2 (diff)
Add a tip showing how functions on composite types can be used to
emulate computed fields. I suppose this is why the Berkeley boys made it work that way in the first place, but the docs never said so anyplace.
-rw-r--r--doc/src/sgml/xfunc.sgml27
1 files changed, 26 insertions, 1 deletions
diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml
index 534ba4c08fe..bd70eb016b3 100644
--- a/doc/src/sgml/xfunc.sgml
+++ b/doc/src/sgml/xfunc.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.93 2005/01/07 22:40:46 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.94 2005/01/07 23:08:44 tgl Exp $
-->
<sect1 id="xfunc">
@@ -450,6 +450,31 @@ SELECT name(emp) AS youngster FROM emp WHERE age(emp) &lt; 30;
</screen>
</para>
+ <tip>
+ <para>
+ The equivalence between functional notation and attribute notation
+ makes it possible to use functions on composite types to emulate
+ <quote>computed fields</>.
+ <indexterm>
+ <primary>computed field</primary>
+ </indexterm>
+ <indexterm>
+ <primary>field</primary>
+ <secondary>computed</secondary>
+ </indexterm>
+ For example, using the previous definition
+ for <literal>double_salary(emp)</>, we can write
+
+<screen>
+SELECT emp.name, emp.double_salary FROM emp;
+</screen>
+
+ An application using this wouldn't need to be directly aware that
+ <literal>double_salary</> isn't a real column of the table.
+ (You can also emulate computed fields with views.)
+ </para>
+ </tip>
+
<para>
Another way to use a function returning a row result is to pass the
result to another function that accepts the correct row type as input: