Hi

I noticed in the source of DBDictionary that the indexOf function will
have what I would consider to be unexpected behaviour when a start index
is specified.

When a start index is specified (say "N"), the search target string has
the first N characters removed, the search performed (by INSTR in the
default case), this is reduced by 1 to make it 0-indexed and then
crucially the start index in added to the result.

In Oracle, if the search term is not found, INSTR returns 0.  If a start
index is supplied, this is then added and 1 is taken away, so the
"result of indexOf" will be "start index - 1" if the search string is
not found.

I would expect the case where the string is not found to return 0 or -1,
depending on the index base.  I think it is misleading for this to
return a positive integer if the string is not found.  Would you agree?
I was going to raise a bug in JIRA for this, but I didn't know whether
it *is* expected behaviour.

The indexOf method is the same in OpenJPA 1.2.0 and 2.0

Alan Raison

Reply via email to