Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.37.0
Description
SUBSTRING function for cases when 3rd parameter (length) more than
Integer.MAX_VALUE can return empty result due to code do clamp
that value and after that it can't be more than Integer.MAX_VALUE.
Simple way to reproduce :
append into SqlOperatorTest smth like:
f.checkScalar( String.format("{fn SUBSTRING('abcdef', %d, %d)}", Integer.MIN_VALUE, 10L + Integer.MAX_VALUE), "abcdef", "VARCHAR(6) NOT NULL");
it`s all due to check after clamping
public static String substring(String c, int s, int l) { .... long e = (long) s + (long) l; -- here we can got incorrect length ..... if (s > lc || e < 1L) { return ""; } .....
Attachments
Issue Links
- links to