]
Steven Hawkins commented on TEIID-5353:
---------------------------------------
[~mkosiarc] yes that is what will happen in this case as shown with the unit test as well.
However in circumstances where both branches are pushed to the same source query such
that the pre-evalation happens at the access node, both branches will still be in the
source query but will have 1 = 0 predicates where appropriate. That behavior was the same
prior to and after this issue.
Prepared Statement params are not pre-evaluated
-----------------------------------------------
Key: TEIID-5353
URL:
https://issues.jboss.org/browse/TEIID-5353
Project: Teiid
Issue Type: Bug
Affects Versions: 8.12.12.6_4
Reporter: Debbie Steigner
Assignee: Steven Hawkins
Fix For: 11.0, 10.3.2, 8.12.14.6_4
prepared statements, [1] with both criteria as parameters for the prepared statement, the
predicates are not evaluated until after batches are pulled. But for [2] if the
SEARCH='FALSE' is in the query and not a param, it is pre-evaluated and we only
run the one side of the union.
[1]
sql = "select * from " +
"Inventory_Detail" +
" WHERE SEARCH = (?) and ITEM_ID in (?) OFFSET 0 ROWS FETCH NEXT 500 ROWS
ONLY";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1,"FALSE");
preparedStatement.setString(2,"1005014161091");
ResultSet rs = null;
[2]
sql = "select * from " +
"Inventory_Detail" +
" WHERE SEARCH = 'FALSE' and ITEM_ID in (?) OFFSET 0 ROWS FETCH NEXT 500
ROWS ONLY";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1,"1005014161091");
ResultSet rs = null;