Re: Incomplete or misleading explanation of the data types for mathematical operators

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Sergei Agalakov <sergei(dot)agalakov(at)gmail(dot)com>
Cc: pgsql-docs(at)lists(dot)postgresql(dot)org
Subject: Re: Incomplete or misleading explanation of the data types for mathematical operators
Date: 2020-03-31 22:44:49
Message-ID: 20200331224449.GI17676@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs


Patch applied through 9.5, thanks.

---------------------------------------------------------------------------

On Sat, Mar 21, 2020 at 10:31:32AM -0400, Bruce Momjian wrote:
> 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(at)momjian(dot)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 +

> 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>

--
Bruce Momjian <bruce(at)momjian(dot)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 +

In response to

Browse pgsql-docs by date

  From Date Subject
Next Message Bruce Momjian 2020-03-31 23:10:13 Re: terminology in example
Previous Message Bruce Momjian 2020-03-31 22:11:02 Re: Users/Roles do not align.