* @return The read instance list.
*/
private InstanceList read(Operator conj)
{
byte nUniquenessSaved = m_nUnique;
AndOperator and;
int nOperandCountSaved;
if (m_where == null)
{
and = null;
nOperandCountSaved = 0;
m_where = conj;
}
else
{
and = (AndOperator)m_where; // and was setup during normalization
nOperandCountSaved = and.getOperandCount();
and.addOperand(conj);
}
if (m_nUnique == 0)
{
m_nUnique = -1;
}
try
{
conj = conj.normalize(Operator.NORMALIZE_WHERE | Operator.NORMALIZE_PERSISTENCE);
if (and == null)
{
m_where = conj;
}
else
{
and.setOperand(nOperandCountSaved, conj);
}
return read();
}
finally
{
// remove the join filter
if (and == null)
{
m_where = null;
}
else
{
while (and.getOperandCount() > nOperandCountSaved)
{
and.removeOperand(and.getOperandCount() - 1);
}
}
m_nUnique = nUniquenessSaved;
}