Iurii Gerzhedovich created CALCITE-6433: -------------------------------------------
Summary: SUBSTRING can return incorrect empty result for some parameters Key: CALCITE-6433 URL: https://issues.apache.org/jira/browse/CALCITE-6433 Project: Calcite Issue Type: Improvement Components: core Affects Versions: 1.37.0 Reporter: Iurii Gerzhedovich 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: {noformat} f.checkScalar( String.format("{fn SUBSTRING('abcdef', %d, %d)}", Integer.MIN_VALUE, 10L + Integer.MAX_VALUE), "abcdef", "VARCHAR(6) NOT NULL"); {noformat} it`s all due to check after clamping {noformat} 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 ""; } ---------{noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)