EPrints Technical Mailing List Archive

Message: #00952


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

[EP-tech] Oracle issue with order tables


Hi,

I've found another issue with the Oracle DB layer in the latest
release. Whenever ordering using the tables suffixed '__ORDERVALUES_EN'
an error such as the following occurs:

DBD::Oracle::db prepare failed: ORA-00932: inconsistent datatypes:
expected - got CLOB (DBD ERROR: error possibly near <*> indicator at
char 316 in 'SELECT "SUBJECT"."SUBJECTID" FROM "SUBJECT" LEFT JOIN
"SUBJECT__ORDERVALUES_EN" ON
"SUBJECT"."SUBJECTID"="SUBJECT__ORDERVALUES_EN"."SUBJECTID",
"SUBJECT_PARENTS" "SUBJECT_PARENTS" WHERE
"SUBJECT"."SUBJECTID"="SUBJECT_PARENTS"."SUBJECTID" AND
"SUBJECT_PARENTS"."PARENTS" = 'divisions' GROUP BY
"SUBJECT"."SUBJECTID", <*>"SUBJECT__ORDERVALUES_EN"."NAME_NAME" ORDER BY
"SUBJECT__ORDERVALUES_EN"."NAME_NAME" ASC')

This is because in Oracle you are not able to order by CLOB (or other
similar 'blob'-type fields). The field needs to be either typecast to a
VARCHAR2 or the field should be initially defined as a VARCHAR2. I'm
unsure which is the correct solution, as I don't know the details of how
these tables work. In older versions of EPrints they were defined as
VARCHAR2(1000)s, which would not cause these errors.

Best wishes,
Rob