[ 
https://issues.apache.org/jira/browse/CALCITE-4427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17244895#comment-17244895
 ] 

Julian Hyde commented on CALCITE-4427:
--------------------------------------

This is going to be a breaking change (albeit minor):
* In 1.26, {{SUBSTRING('abcde' FROM -4 FOR 2)}} returned 'bc' (behavior 
compatible with BigQuery)
* In 1.27, {{SUBSTRING('abcde' FROM -4 FOR 2)}} will return 'ab' (behavior 
compatible with ISO standard SQL and PostgreSQL)

In 1.27, you will be able to override the default by setting 
'semantics=bigquery' in the connect-string parameters. This will restore 1.26 
behavior.

*Rationale*: Calcite always aims to be compatible with (or a superset of) ISO 
standard SQL. We made a mistake in introducing non-standard behavior in 
CALCITE-2572.

Also in this change, there will be {{SUBSTR}} functions compatible with 
BigQuery, Oracle, MySQL, PostgreSQL. These functions all have slightly 
different semantics. Whether a {{SUBSTR}} function is available, and what are 
its semantics, depends on the value of the {{fun}} connect-string parameter of 
that connection.

Depending on the combination of {{semantics}} and {{fun}} parameters, 
{{SUBSTRING}} and {{SUBSTR}} with the same parameters may give different 
results.

*Rationale*: Given that {{SUBSTRING}} is standard, and present in all dialects, 
it seemed unwise to change its behavior based on the {{fun}} parameter. The new 
{{semantics}} parameter was added to control it.

If people have objections to the above described behavior, please speak up very 
soon.

> Make SUBSTRING operator comply with ISO standard SQL
> ----------------------------------------------------
>
>                 Key: CALCITE-4427
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4427
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Priority: Major
>
> Make {{SUBSTRING}} operator comply with ISO standard SQL. It currently 
> complies with BigQuery standard SQL, which gives different behavior when 
> start is negative. See discussion in CALCITE-4408.
> Add an option to get the BigQuery behavior, for those who want it.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to