From ffce35fe6fcba7fdd6a85c3774f2c5471677920a Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Fri, 7 Jan 2005 23:08:44 +0000 Subject: [PATCH] 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. --- doc/src/sgml/xfunc.sgml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) 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) < 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: -- GitLab