Thread: integer overflow in reloption.h

integer overflow in reloption.h

From
Zdenek Kotala
Date:
When I compile postgresql now I get following message:

"../../../src/include/access/reloptions.h", line 45: warning: integer
overflow detected: op "<<"


The problem is on the following lines

typedef enum relopt_kind
{
...       RELOPT_KIND_MAX = (1 << 31)
}

enum is int datatype and 1 << 31 == -2147483648. It is reason why
compiler (sun studio) complains.

Is possible to change it to 1 << 30 to stop compiler generates noise?
Thanks Zdenek






Re: integer overflow in reloption.h

From
Tom Lane
Date:
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
> The problem is on the following lines

> typedef enum relopt_kind
> {
> ...
>         RELOPT_KIND_MAX = (1 << 31)
> }

> enum is int datatype and 1 << 31 == -2147483648. It is reason why
> compiler (sun studio) complains.

> Is possible to change it to 1 << 30 to stop compiler generates noise?

Yeah, but we also have to fix the code that uses it.  Done.
        regards, tom lane