Description
Calcite substring throws a IndexOutOfBoundsException with a position less than 1. Per the SQL standard, the position should be treated as the larger of the provided value and 1, however many implementations treat negative values as starting from the end of the string.
Extended standard:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions162.htm
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring
https://spark.apache.org/docs/2.3.0/api/sql/index.html#substring
https://www.sqlite.org/lang_corefunc.html#substr
Follow the standard:
https://docs.microsoft.com/en-us/sql/t-sql/functions/substring-transact-sql?view=sql-server-2017
https://www.postgresql.org/docs/9.1/static/functions-string.html
Attachments
Issue Links
- relates to
-
CALCITE-4408 Implement Oracle SUBSTR function
- Closed