Re: Incomplete or misleading explanation of the data types formathematical operators - Mailing list pgsql-docs

From Bruce Momjian
Subject Re: Incomplete or misleading explanation of the data types formathematical operators
Date
Msg-id 20200321143132.GG10066@momjian.us
Whole thread Raw
In response to Re: Incomplete or misleading explanation of the data types formathematical operators  (Sergei Agalakov <sergei.agalakov@gmail.com>)
Responses Re: Incomplete or misleading explanation of the data types formathematical operators  (Bruce Momjian <bruce@momjian.us>)
List pgsql-docs
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  <bruce@momjian.us>        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 +

Attachment

pgsql-docs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Possible typos in the #12.1.1 examples
Next
From: Bruce Momjian
Date:
Subject: Re: optionally schema-qualified for table_name