Eclipselink 11.1.1.3.0 (eclipse link 2.0.3-r7973 ) not
building addCount sql correctly
Building select count()… instead of select count(*)….
Same code wokrs fine
with 11.1.1.2.0 ( eclipse link 1.2.1-r7082)
Code in the red
causing issue
log.fine("registering
PurchaseFraudJdo queries with session");
// find purchases pending fraud review
ExpressionBuilder builder = new ExpressionBuilder();
ReadAllQuery readAllQuery = new ReadAllQuery(PurchaseFraudJdo.class);
readAllQuery.addArgument("pGoodCode");
readAllQuery.addJoinedAttribute("po");
// look for statuses 'pending review', 'blocked' or 'follow up'
_expression_ pendingExp =
builder.get("reviewStatusCode").
equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
or(builder.get("reviewStatusCode").
equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
or(builder.get("reviewStatusCode").
equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
or(builder.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));
_expression_ exp =
builder.get("po").get("pGoodCode").equal(builder.getParameter("pGoodCode"));
exp = exp.and(builder.get("po").get("date").
greaterThanEqual(builder.postfixSQL("SYSDATE - " + DAYS_TO_LOOK_BACK)));
exp = exp.and(builder.getField("CREATE_DATE").
greaterThanEqual(builder.postfixSQL("SYSDATE - " +
DAYS_TO_LOOK_BACK)));
exp = exp.and(pendingExp);
readAllQuery.setSelectionCriteria(exp);
readAllQuery.setMaxRows(MAX_FRAUD_SEARCH_RESULTS);
readAllQuery.addDescendingOrdering("fraudScore");
readAllQuery.refreshIdentityMapResult();
readAllQuery.bindAllParameters();
server.registerToplinkQuery(FIND_ALL_PENDING_BY_PGOOD, readAllQuery);
// count all purchases pending fraud review
ReportQuery rptQuery = new ReportQuery(PurchaseFraudJdo.class, pendingExp);
rptQuery.addCount();
rptQuery.bindAllParameters();
rptQuery.setShouldReturnSingleValue(true);
server.registerToplinkQuery(FIND_PENDING_COUNT, rptQuery);
From: Anuj Lal
Sent: Thursday, November 11, 2010 12:58 AM
To: 'eclipselink-users@xxxxxxxxxxx'
Subject: EL building select count() instead of select count(*)
Importance: High
Eclipselink 11.1.1.3.0 (eclipse link 2.0.3-r7973 ) not
building addCount sql correctly
Building select count()… instead of select count(*)….
Same code wokrs fine
with 11.1.1.2.0 ( eclipse link 1.2.1-r7082)
_expression_ pendingExp =
builder.get("reviewStatusCode").
equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_PENDING_REVIEW).
or(builder.get("reviewStatusCode").
equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_RULES)).
or(builder.get("reviewStatusCode").
equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_BLOCKED_BY_SCORE)).
or(builder.get("reviewStatusCode").equal(DatabaseCodes.PURCHASE_FRAUD_REVIEW_STATUS_FOLLOW_UP));
// count all purchases pending fraud review
ReportQuery
rptQuery = new ReportQuery(PurchaseFraudJdo.class, pendingExp);
rptQuery.addCount();
rptQuery.bindAllParameters();
rptQuery.setShouldReturnSingleValue(true);
server.registerToplinkQuery(FIND_PENDING_COUNT,
rptQuery);
building a query like this
SELECT COUNT() FROM PURCHASE_ORDER t0, PURCHASE_FRAUD t1
WHERE (((((t1.REVIEW_STATUS = ?) OR (t1.REVIEW_STATUS = ?)) OR
(t1.REVIEW_STATUS = ?)) OR (t1.REVIEW_STATUS = ?)) AND (t0.PURCHASE_ORDER_ID =
t1.PURCHASE_ORDER_ID))
bind => [P, R,
S, F]
giving parsing _expression_
it building COUNT() instead of COUNT(*)