[
https://issues.apache.org/jira/browse/IGNITE-6190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov updated IGNITE-6190:
------------------------------------
Component/s: sql
> SQL query fails silently if Set is passed as a parameter
> --------------------------------------------------------
>
> Key: IGNITE-6190
> URL: https://issues.apache.org/jira/browse/IGNITE-6190
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Denis Magda
> Assignee: Roman Shtykh
> Attachments: TestIgniteQuery.zip
>
>
> Seems like the SqlQuery API does not like {{Set<?>}} as the input parameter.
> While this query doesn't work (the Set is used as an input):
> {code}
> public Map<String, Account> getAccountsForLe(Set<String> leId) {
> SqlQuery<String, Account> query =
> new SqlQuery<String, Account>(Account.class, "from Account join
> table(id varchar = ?) i on Account.clientLegalEntityId = i.id")
> .setArgs(leId);
> Map<String, Account> results = new HashMap<>();
> _cache.query(query).getAll().stream().forEach(e ->
> results.put(e.getKey(), e.getValue()));
> return results;
> }
> {code}
> This one works well (the Set is converted to Array explicitly):
> {code}
> public Map<String, Account> getAccountsForLe(Set<String> leId) {
> SqlQuery<String, Account> query =
> new SqlQuery<String, Account>(Account.class, "from Account join
> table(id varchar = ?) i on Account.clientLegalEntityId = i.id")
> .setArgs(leId.toArray());
> Map<String, Account> results = new HashMap<>();
> _cache.query(query).getAll().stream().forEach(e ->
> results.put(e.getKey(), e.getValue()));
> return results;
> }
> {code}
> The fact that it fails silently is an issue. IMHO there should be some
> validation to alert the calling code that the type specified is not valid or
> the set has to be transformed to the array on the fly.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)