Hi,
> select substring('string' from 2 for 2147483646);
Actual result:
2021-01-04 12:43:13.145 EST [85734] ERROR: negative substring length not
allowed
2021-01-04 12:43:13.145 EST [85734] STATEMENT:s
negative substring length not allowed
Minimally this is a bug and it should raise an error "integer out of range". Probably in this case we can use MAX_INT as a special value of unlimited length, although it is a little bit scary, because length is an optional value. The attached patch should fix this issue. I do not have access to Oracle to check the behaviour of this case there.
Except according to the pg docs, it’s not out of range, it’s one less than MAX_INT.
The manual calls for it to be an integer, which is defined as:
integer | 4 bytes | typical choice for integer | -2147483648 to +2147483647 |
The original bug report is one less than +2147483647, and thus should be a valid value, no?