Piotr Bojko created CALCITE-2009:
------------------------------------
Summary: Possible bug in interpreting ( IN ) OR ( IN ) logic
Key: CALCITE-2009
URL: https://issues.apache.org/jira/browse/CALCITE-2009
Project: Calcite
Issue Type: Bug
Affects Versions: 1.13.0, 1.14.0
Reporter: Piotr Bojko
Assignee: Julian Hyde
I have schema
{code:javascript}
{
"version": "1.0",
"defaultSchema": "JIRA",
"schemas": [
{
"name": "INTERNAL",
"type": "custom",
"factory": "%%UNDERLYING_SCHEMA_FACTORY",
"operand": {}
}, {
"name": "JIRA",
"type": "custom",
"factory":
"org.apache.calcite.schema.impl.AbstractSchema$Factory",
"operand": {},
"tables": [
{
"name": "ISSUES",
"type": "view",
"sql": [
"SELECT JI.ID, JI.SUMMARY,
JI.PROJECT ",
"FROM INTERNAL.JIRAISSUE as JI
",
"WHERE JI.ID IN (SELECT EAI.ID
FROM EXPLICIT_ALLOWED_ISSUES AS EAI) ",
"UNION ",
"SELECT JI.ID, JI.SUMMARY,
JI.PROJECT ",
"FROM INTERNAL.JIRAISSUE as JI
",
"WHERE JI.PROJECT IN (SELECT
AP.ID FROM ALLOWED_PROJECTS AS AP)"
]
},
{
"name": "ALLOWED_PROJECTS",
"type": "table",
"factory": "%%DELEGATING_TABLE_FACTORY"
},
{
"name": "EXPLICIT_ALLOWED_ISSUES",
"type": "table",
"factory": "%%DELEGATING_TABLE_FACTORY"
}
]
}
]
}
{code}
Where INTERNAL schema points to JDBC native JIRA Schema (through my custom
factory, but it only wraps passing datasource instead of user/password/url to
db) and JIRA schema has one view and two tables (factories generate java data
wrapped in AbstractQueryableTable)
When running "SELECT * FROM ISSUES" all works.
But when changing the view from UNION construction to OR - engine provides no
results:
{code:javascript}
{
"version": "1.0",
"defaultSchema": "JIRA",
"schemas": [
{
"name": "INTERNAL",
"type": "custom",
"factory": "%%UNDERLYING_SCHEMA_FACTORY",
"operand": {}
}, {
"name": "JIRA",
"type": "custom",
"factory":
"org.apache.calcite.schema.impl.AbstractSchema$Factory",
"operand": {},
"tables": [
{
"name": "ISSUES",
"type": "view",
"sql": [
"SELECT JI.ID, JI.SUMMARY,
JI.PROJECT ",
"FROM INTERNAL.JIRAISSUE as JI
",
"WHERE JI.ID IN (SELECT EAI.ID
FROM EXPLICIT_ALLOWED_ISSUES AS EAI) ",
"OR (JI.PROJECT IN (SELECT
AP.ID FROM ALLOWED_PROJECTS AS AP))"
]
},
{
"name": "ALLOWED_PROJECTS",
"type": "table",
"factory": "%%DELEGATING_TABLE_FACTORY"
},
{
"name": "EXPLICIT_ALLOWED_ISSUES",
"type": "table",
"factory": "%%DELEGATING_TABLE_FACTORY"
}
]
}
]
}
{code}
Note that %%factories are a simple workaround not to changing the schema each
time my java code is refactored.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)