[ https://issues.apache.org/jira/browse/IGNITE-18831?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maksim Zhuravkov updated IGNITE-18831: -------------------------------------- Summary: Sql. Dynamic parameters. Inferred types of dynamic parameters are not used by the execution runtime. (was: Sql. Dynamic parameters. Pass inferred types of dynamic parameters to the execution runtime.) > Sql. Dynamic parameters. Inferred types of dynamic parameters are not used by > the execution runtime. > ---------------------------------------------------------------------------------------------------- > > Key: IGNITE-18831 > URL: https://issues.apache.org/jira/browse/IGNITE-18831 > Project: Ignite > Issue Type: Improvement > Components: sql > Affects Versions: 3.0.0-beta2 > Reporter: Maksim Zhuravkov > Priority: Minor > Labels: calcite2-required, calcite3-required, ignite-3 > > At the moment the execution runtime is not aware of dynamic parameter types > inferred at the validation stage and when the validation stage completes and > those types are thrown away. During the execution, the runtime uses the > _java_class_ of a type parameter to perform an operation, which fails in the > following case: > A query has a dynamic parameter (string) but the validator, by using implicit > cast rules inferred, the actual type for that dynamic parameter to be some > another type that can be implicitly created from a string. > {code:java} > CREATE TABLE UUIDS (id INTEGER PRIMARY KEY, uuid_key UUID); > INSERT INTO UUIDS VALUES(1, ?); > {code} > * Execution runtime loses type information of the dynamic parameter and > assumes it to be a string. > * At the runtime toInternal call is going to fail, because it expects the > type of this parameter to be UUID but dynamic parameter contains a string and > adds no additional casts. > There multiple approaches to resolve this issue: > * Add dynamic cast to all dynamic parameters after validation completes. > * Pass type information to the execution runtime so it would add the > necessary casts (*). > Either of this approaches can help resolving another issue with dynamic > parameters: https://issues.apache.org/jira/browse/IGNITE-18645: Sql. Type > System. Reject plans with not matching dynamic parameters types during query > validation. -- This message was sent by Atlassian Jira (v8.20.10#820010)