public inbox for [email protected]  
help / color / mirror / Atom feed
From: Bruce Momjian <[email protected]>
To: Sergei Agalakov <[email protected]>
Cc: [email protected]
Subject: Re: Incomplete or misleading explanation of the data types for mathematical operators
Date: Sat, 21 Mar 2020 10:31:32 -0400
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<[email protected]>
	<[email protected]>

On Thu, Mar  5, 2020 at 08:03:19PM -0700, Sergei Agalakov wrote:
> On 3/5/2020 7:29 PM, Bruce Momjian wrote:
> > On Wed, Jan 29, 2020 at 07:35:18PM +0000, PG Doc comments form wrote:
> > > Multiplication preserves data type, exponentiation silently converts bigint
> > > to double, but preserves numeric data type, square root silently converts
> > > both int and numeric types to double.
> > > The best would be to explain this behaivior of operators like it was done
> > > for mathematical functions.
> > Uh, how does this relate to bitwise operators?  Why would we mention
> > type changes for things like exponentiation in the bitwise operator
> > documentation section?
> > 
> This chapter is named "Mathematical Functions and Operators". The table 9.4.
> is named "Mathematical Operators". I don't see on this page any section
> "Bitwise operators" so I don't really understand your complaint.
> How do you understand the phrase "The bitwise operators work only on
> integral data types, whereas the others are available for all numeric data
> types. "  in the context of the table "Mathematical Operators"?
> I understand it that all other mathematical operators except bitwise
> operators do exist for all numeric data type.
> In what place by your opinion documentation should describe that some
> mathematical operators exist only for some numeric data types but not
> others?
> I have given examples of such operators - exponentiation and square root
> aren't defined for all numeric data types and do hidden conversion of the
> data types.

Ah, I see what you are saying now --- there are operators listed above
that are not supported by all numeric data types, so "the others are
available for all numeric data types" is false.  I think the text was
written because non-integer calls to bit-wise functions _fail_, rather
than being silently converted:

	SELECT 1::float4 | 1;
	ERROR:  operator does not exist: real | integer
	LINE 1: SELECT 1::float4 | 1;
	                         ^
	HINT:  No operator matches the given name and argument types. You might
	need to add explicit type casts.

but I see your point.  I guess we could change the word "available" to
"silently converted", but it seems best to just remove that phrase. 
Documentation patch attached.

-- 
  Bruce Momjian  <[email protected]>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +


Attachments:

  [text/x-diff] bit.diff (631B, 2-bit.diff)
  download | inline diff:
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 464a48ed6a..e1d70c251d 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -732,9 +732,8 @@
    </table>
 
    <para>
-    The bitwise operators work only on integral data types, whereas
-    the others are available for all numeric data types.  The bitwise
-    operators are also available for the bit
+    The bitwise operators work only on integral data types, and are also
+    available for the bit
     string types <type>bit</type> and <type>bit varying</type>, as
     shown in <xref linkend="functions-bit-string-op-table"/>.
    </para>


view thread (5+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: Incomplete or misleading explanation of the data types for mathematical operators
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox