[ https://issues.apache.org/jira/browse/CALCITE-6211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated CALCITE-6211: ------------------------------------ Labels: pull-request-available (was: ) > SUBSTRING with Integer.MIN_VALUE as a second parameter raise unexpected > exception > --------------------------------------------------------------------------------- > > Key: CALCITE-6211 > URL: https://issues.apache.org/jira/browse/CALCITE-6211 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.36.0 > Reporter: Evgeny Stanilovsky > Assignee: Evgeny Stanilovsky > Priority: Major > Labels: pull-request-available > > SUBSTRING function with minimal possible integer offset parameter raise > exception. > Simple way to reproduce : > append into *SqlOperatorTest* smth like: > {noformat} > f.checkScalar( > String.format("{fn SUBSTRING('abcdef', %d)}", Integer.MIN_VALUE), > "abcdef", > "VARCHAR(6) NOT NULL"); > {noformat} > And exception will raised: > {noformat} > String index out of range: -2147483641 > {noformat} > it`s all due to integer overflow, check implementation near: > {noformat} > public static String substring(String c, int s) { > final int s0 = s - 1; // -2147483648 - 1 = 2147483647 > if (s0 <= 0) { // this check is broken > return c; > } > if (s > c.length()) { > return ""; > } > return c.substring(s0); > } > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)