Cool.  A fix *and* and explanation!  How can you beat that?

By the way, if you're actually fixing the real code, there are more
ILIKEs in 
public static EPerson[] search(Context context, String query, int
offset, int limit)

Thanks,
- Rick

-----Original Message-----
From: Greg McClellan [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, March 25, 2008 4:31 PM
To: Rick Runyan
Cc: dspace-tech@lists.sourceforge.net
Subject: Re: [Dspace-tech] Oracle and DSpace 1.5 and "ILIKE"

Hi,

I think it worked in 1.4.2 only if you used the default jspui interface 
(it doesn't call searchResultCount). Manakin/xmlui on the other hand 
does call it, so it breaks.

I altered the code to be oracle friendly:

TableRow row = DatabaseManager.querySingle(context,
"SELECT count(*) as count FROM eperson WHERE eperson_id = ? OR " +
"lower(firstname) LIKE ? OR lower(lastname) LIKE ? OR lower(email) LIKE
?",
new Object[] {int_param,dbquery,dbquery,dbquery});

I assume that would work in postgres as well, but I haven't tested it. 
You would also have to make a similar change in Group.java as well.

I haven't looked too closely at 1.5, but it works in 1.4.2.

Hope this helps.

-Greg

Rick Runyan wrote:
>
> Hi -
>
> I'm trying to install DSpace 1.5 using Oracle. It wasn't until 
> yesterday that I saw this in the KNOWN_BUGS file:
>
> "Oracle compatibility: this release does not support Oracle. Check for

> patches or updates to this release to restore Oracle compatibility."
>
> But nevertheless, I thought I had read that people had done successful

> installs using Oracle, and I wound up also getting it installed OK, 
> but now I'm running into a problem in the eperson code when I click 
> the "People" link under "Access Control."
>
> Specifically, I get this exception:
>
> java.sql.SQLException: ORA-00920: invalid relational operator
>
> and looking through the stack trace, it appears to be coming from
>
> org.dspace.eperson.EPerson.searchResultCount(EPerson.java:326)
>
> where it says
>
> TableRow row = DatabaseManager.querySingle(context,
>
> "SELECT count(*) as count FROM eperson WHERE eperson_id = ? OR " +
>
> "firstname ILIKE ? OR lastname ILIKE ? OR email ILIKE ?",
>
> new Object[] {int_param,dbquery,dbquery,dbquery});
>
> I'm pretty sure "ILIKE" doesn't work in Oracle, but I see this in the 
> 1.4.2 code and I'm pretty sure I was able t create some users in that.

> Does anybody have any idea about what's wrong here?
>
> Thanks,
>
> Rick Runyan
>
>
------------------------------------------------------------------------
>
>
------------------------------------------------------------------------
-
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>
------------------------------------------------------------------------
>
> _______________________________________________
> DSpace-tech mailing list
> DSpace-tech@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/dspace-tech
>   


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
DSpace-tech mailing list
DSpace-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-tech

Reply via email to