Dear Horiguchi-san,
> I'm not sure. I think that int is generally thought that it is tied
> with an integer type of any size. min_apply_delay is tightly bond
> with a catalog column of int32 thus I thought that (PG_)INT32_MAX is
> the right limit. So, as I expressed before, if we assume sizeof(int)
> <= sizeof(int32), I' fine with using INT_MAX there.
I have checked some articles and I think platforms supported by postgres regard
Int as 32-bit integer.
According to the definition of C99, actual value of INT_MAX/INT_MIN depend on the
implementation - INT_MAX must bigger than or equal to 2^15 - 1 [1].
So theoretically there is a possibility that int is bigger than int, as you worried.
Next, I checked some data models, and found ILP64 that regards int as 64-bit integer.
In this case INT_MAX may be 2^63-1, it exceeds PG_INT32_MAX.
I cannot find the proper document about the type, but I can site a table from the doc[2].
```
Datatype LP64 ILP64 LLP64 ILP32 LP32
char 8 8 8 8 8
short 16 16 16 16 16
_int32 32
int 32 64 32 32 16
long 64 64 32 32 32
long long 64
pointer 64 64 64 32 32
```
I'm not sure whether the system survives or not. According to [2], a few system
released, but I have never heard. Modern systems have LP64 or LLP64.
> There have been a few examples of ILP64 systems that have shipped
> (Cray and ETA come to mind).
In another paper[3], Sun UltraSPARC, which is 32-bit OS and use SPARC64 processor,
seems to use ILP64 model, but it may be ancient OS.
> 1995 Sun UltraSPARC: 64/32-bit hardware, 32-bit-only operating system. HAL Computer’s SPARC64: uses ILP64 model for
C.
Also, I checked buildfarm animals that have Sparc64 architecture,
but their alignment of int seems to be 4 byte [4].
> checking alignment of int... 4
Therefore, I think we can say that modern platforms that are supported by PostgreSQL define int as 32-bit.
It satisfies the condition sizeof(int) <= sizeof(int32), so we can keep to use INT_MAX.
[1] https://www.dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf
[2] https://unix.org/version2/whatsnew/lp64_wp.html
[3] https://queue.acm.org/detail.cfm?id=1165766
[4]
https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=castoroides&dt=2023-01-30%2012%3A00%3A07&stg=configure#:~:text=checking%20alignment%20of%20int...%204
Best Regards,
Hayato Kuroda
FUJITSU LIMITED