From e34d442dbbe855a6ec4dfe957ec6083a6ab6fbb0 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue, 19 Dec 2000 00:54:59 +0000
Subject: [PATCH] Mention fallback case for type coercion in description of
 function resolution procedure.

---
 doc/src/sgml/typeconv.sgml | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/doc/src/sgml/typeconv.sgml b/doc/src/sgml/typeconv.sgml
index 8b51ed2fa35..e9d225f242a 100644
--- a/doc/src/sgml/typeconv.sgml
+++ b/doc/src/sgml/typeconv.sgml
@@ -279,7 +279,7 @@ select "string"
 category if any candidate accepts that category (this bias towards string
 is appropriate since an unknown-type literal does look like a string).
 Otherwise, if all the remaining candidates accept the same type category,
-select that category; otherwise raise an error because
+select that category; otherwise fail because
 the correct choice cannot be deduced without more clues.  Also note whether
 any of the candidates accept a preferred datatype within the selected category.
 Now discard operator candidates that do not accept the selected type category;
@@ -292,7 +292,7 @@ argument.
 <para>
 If only one candidate remains, use it.  If no candidate or more than one
 candidate remains,
-then raise an error.
+then fail.
 </para>
 </step>
 </substeps>
@@ -488,7 +488,7 @@ select "string"
 category if any candidate accepts that category (this bias towards string
 is appropriate since an unknown-type literal does look like a string).
 Otherwise, if all the remaining candidates accept the same type category,
-select that category; otherwise raise an error because
+select that category; otherwise fail because
 the correct choice cannot be deduced without more clues.  Also note whether
 any of the candidates accept a preferred datatype within the selected category.
 Now discard operator candidates that do not accept the selected type category;
@@ -501,11 +501,22 @@ argument.
 <para>
 If only one candidate remains, use it.  If no candidate or more than one
 candidate remains,
-then raise an error.
+then fail.
 </para>
 </step>
 </substeps>
 </step>
+<step performance="required">
+<para>
+If no best match could be identified, see whether the function call appears
+to be a trivial type coercion request.  This happens if the function call
+has just one argument and the function name is the same as the (internal)
+name of some datatype.  Furthermore, the function argument must be either
+an unknown-type literal or a type that is binary-compatible with the named
+datatype.  When these conditions are met, the function argument is coerced
+to the named datatype.
+</para>
+</step>
 </procedure>
 
 <sect2>
@@ -699,8 +710,7 @@ Otherwise, ignore the <type>unknown</type> inputs while choosing the type.
 
 <step performance="required">
 <para>
-If the non-unknown inputs are not all of the same type category, raise an
-error.
+If the non-unknown inputs are not all of the same type category, fail.
 </para></step>
 
 <step performance="required">
-- 
GitLab