Re: ORA-00932 inconsistent datatypes with CLOB

2006-07-31 Thread Armin Waibel

Hi Steve,

[EMAIL PROTECTED] wrote:
...
As an aside, it sure would be nice to be able to add new Platform 
implementations without having to put them into 
org.apache.ojb.broker.platforms.  A simple solution would be something 
like this (in PlatformFactory):


I agree with you. A more sophisticated implementation of 
PlatformFactory#getPlatformFor is required - add this on my todo-list.


regards,
Armin

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: ORA-00932 inconsistent datatypes with CLOB

2006-07-28 Thread Dennis Bekkering

Hello Steve,

What does your criteria code look like? I have the same problem when
applying like operation on a CLOB. I therefore changed the fieldtype to
varchar2(4000).

Cheers,
Dennis


Re: ORA-00932 inconsistent datatypes with CLOB

2006-07-28 Thread Armin Waibel

Hi Steve,

do you use a modified version of JdbcAccessImpl? The stack trace show 
line 327 in method 'executeQuery' as causer but this doesn't match with 
1.0.4 version of this class (SNV: 365259)

...
at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java:327)

regards,
Armin


[EMAIL PROTECTED] wrote:

I am using OJB 1.0.4, Persistence Broker, Oracle 10g, Oracle Text.

I have a query which is using the Oracle Text contains() function to 
search in a CLOB.  It is throwing ORA-00932: inconsistent datatypes: 
expected - got CLOB.
If I replace the ?'s with appropriate values and do 
Statement.executeQuery(), i.e. do the binding by hand and pass this query 
straight to JDBC, then it works.  Similarly, if I give it to sqlplus, it 
works.  Can anybody tell me why it fails when produced by OJB?  The one 
possibly weird thing that I can come up with is that 'SPECIES', the value 
that's being sought in the CLOB column, is not a bind variable in the 
PreparedStatement but rather a literal (I couldn't figure out how to do it 
otherwise with PB).


Any insights?

thanks,
-steve

Steve Clark
ECOS Development Group
[EMAIL PROTECTED]
(970)226-9291

Full stack trace:

An error has occurred
 
org.apache.ojb.broker.PersistenceBrokerSQLException: * SQLException during 
execution of sql-statement: * sql statement was 'SELECT DISTINCT 
A0.ACTIVITY_ID,A0.PRIMARY_WORK_TYPE_ID,A0.IS_EARLY_PLANNING,A0.IS_MITIGATION_REQUIRED,A0.ACRES_IMPACTED,A0.MILES_IMPACTED,A0.S18_FISHWAY_PRESCRIPTIONS,A0.S18_FISHWAY_MILES,A0.OTHER_RIVER_MILES,A0.FWS_RESPONSE_DATE,A0.FINAL_DECISION_DATE,A0.PERMIT_DATE,A0.PERMIT_AGENCY_ID,A0.OTHER_PERMIT_AGENCY,A0.REF_ENVIR_REVIEW,A0.REF_FOIA_CODE,A0.FEDACT_REVIEW_TYPE_ID,A0.APPLICANT_TYPE_ID,A0.PERMIT_STATUS_ID,A0.FWS_RECOMMENDATION,A1.SEQUENCE 
as ojb_col_21 FROM TAILS_DEV.FEDERAL_ACTIVITY A0 INNER JOIN 
TAILS_DEV.ACTIVITY A1 ON A0.ACTIVITY_ID=A1.ACTIVITY_ID WHERE 
A0.ACTIVITY_ID IN (SELECT DISTINCT B0.ACTIVITY_ID FROM 
TAILS_DEV.FEDERAL_ACTIVITY B0 LEFT OUTER JOIN TAILS_DEV.ACTIVITY B1 ON 
B0.ACTIVITY_ID=B1.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY_EVENT B2 
ON B1.ACTIVITY_ID=B2.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.EVENT B3 ON 
B2.EVENT_ID=B3.EVENT_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY B4 ON 
B0.ACTIVITY_ID=B4.ACTIVITY_ID LEFT OUTER JOIN 
TAILS_DEV.ACTIVITY_OTHER_OFFICE B5 ON B4.ACTIVITY_ID=B5.ACTIVITY_ID LEFT 
OUTER JOIN ECOS_DATA.ECOS_OFFICE B6 ON B5.OFFICE_ID=B6.OFFICE_ID WHERE ( 
contains(B3.DESCRIPTION,'SPECIES')  ?) AND (B4.LEAD_OFFICE_ID = ? OR 
(B6.OFFICE_ID = ?))) ORDER BY 21' * Exception message is [ORA-00932: 
inconsistent datatypes: expected - got CLOB ] * Vendor error code [932] * 
SQL state code [42000]
 

org.apache.ojb.broker.PersistenceBrokerException: 
org.apache.ojb.broker.PersistenceBrokerSQLException: 
* SQLException during execution of sql-statement:
* sql statement was 'SELECT DISTINCT 
A0.ACTIVITY_ID,A0.PRIMARY_WORK_TYPE_ID,A0.IS_EARLY_PLANNING,A0.IS_MITIGATION_REQUIRED,A0.ACRES_IMPACTED,A0.MILES_IMPACTED,A0.S18_FISHWAY_PRESCRIPTIONS,A0.S18_FISHWAY_MILES,A0.OTHER_RIVER_MILES,A0.FWS_RESPONSE_DATE,A0.FINAL_DECISION_DATE,A0.PERMIT_DATE,A0.PERMIT_AGENCY_ID,A0.OTHER_PERMIT_AGENCY,A0.REF_ENVIR_REVIEW,A0.REF_FOIA_CODE,A0.FEDACT_REVIEW_TYPE_ID,A0.APPLICANT_TYPE_ID,A0.PERMIT_STATUS_ID,A0.FWS_RECOMMENDATION,A1.SEQUENCE 
as ojb_col_21 FROM TAILS_DEV.FEDERAL_ACTIVITY A0 INNER JOIN 
TAILS_DEV.ACTIVITY A1 ON A0.ACTIVITY_ID=A1.ACTIVITY_ID WHERE 
A0.ACTIVITY_ID IN  (SELECT DISTINCT B0.ACTIVITY_ID FROM 
TAILS_DEV.FEDERAL_ACTIVITY B0 LEFT OUTER JOIN TAILS_DEV.ACTIVITY B1 ON 
B0.ACTIVITY_ID=B1.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY_EVENT B2 
ON B1.ACTIVITY_ID=B2.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.EVENT B3 ON 
B2.EVENT_ID=B3.EVENT_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY B4 ON 
B0.ACTIVITY_ID=B4.ACTIVITY_ID LEFT OUTER JOIN 
TAILS_DEV.ACTIVITY_OTHER_OFFICE B5 ON B4.ACTIVITY_ID=B5.ACTIVITY_ID LEFT 
OUTER JOIN ECOS_DATA.ECOS_OFFICE B6 ON B5.OFFICE_ID=B6.OFFICE_ID WHERE ( 
my_contains(B3.DESCRIPTION,'E')  ?) AND  (B4.LEAD_OFFICE_ID = ? OR 
(B6.OFFICE_ID = ?)))  ORDER BY 21'
* Exception message is [ORA-00932: inconsistent datatypes: expected - got 
CLOB

]
* Vendor error code [932]
* SQL state code [42000]
at 
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:272)
at 
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:284)
at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1475)
at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:383)
at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:383)

at gov.doi.tat.odmg.Select.byCriteria(Select.java:314)
at gov.doi.tat.odmg.Select.byCriteria(Select.java:265

Re: ORA-00932 inconsistent datatypes with CLOB

2006-07-28 Thread Steve_Clark
I guess I had modified JdbcAccessImpl to add some print statements.

I have solved the problem.  Here's what was happening:

I had code like this: crit.addGreaterThan(contains(clob_column, 
'someval'), 0), because I needed to get SQL like this: 
contains(clob_column, 'someval')  0.  When OJB parsed the first parameter 
to extract the referenced column, it decided (correctly) that it was 
looking at a CLOB.  So when it went to bind the second parameter (0), it 
tried to handle it as a CLOB as well, which (of course) didn't work.

The workaround that I am using: I made a custom platform implementation 
which overrides setObjectForStatement() to look for the special case where 
a String containing a single digit is being treated as a CLOB and treat it 
as an integer instead.  This test, at least in my app, will pretty 
reliably indicate this specific situation.

I'm not sure whether there's a cleaner solution short of making OJB aware 
of functions and their specific return types.

As an aside, it sure would be nice to be able to add new Platform 
implementations without having to put them into 
org.apache.ojb.broker.platforms.  A simple solution would be something 
like this (in PlatformFactory):

private static String getClassnameFor(String platform)
{
String pf = Default;
if (platform != null)
{
+if (platform.indexOf('.')  0)
+{
+return platform;
+}
pf = platform;
}
return org.apache.ojb.broker.platforms.Platform + 
pf.substring(0, 1).toUpperCase() + pf.substring(1) + Impl;
}

-steve

Steve Clark
ECOS Development Group
[EMAIL PROTECTED]
(970)226-9291




Armin Waibel [EMAIL PROTECTED] 
07/28/2006 11:35 AM
Please respond to
OJB Users List ojb-user@db.apache.org


To
OJB Users List ojb-user@db.apache.org
cc

Subject
Re: ORA-00932 inconsistent datatypes with CLOB






Hi Steve,

do you use a modified version of JdbcAccessImpl? The stack trace show 
line 327 in method 'executeQuery' as causer but this doesn't match with 
1.0.4 version of this class (SNV: 365259)
...
 at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java:327)

regards,
Armin


[EMAIL PROTECTED] wrote:
 I am using OJB 1.0.4, Persistence Broker, Oracle 10g, Oracle Text.
 
 I have a query which is using the Oracle Text contains() function to 
 search in a CLOB.  It is throwing ORA-00932: inconsistent datatypes: 
 expected - got CLOB.
 If I replace the ?'s with appropriate values and do 
 Statement.executeQuery(), i.e. do the binding by hand and pass this 
query 
 straight to JDBC, then it works.  Similarly, if I give it to sqlplus, it 

 works.  Can anybody tell me why it fails when produced by OJB?  The one 
 possibly weird thing that I can come up with is that 'SPECIES', the 
value 
 that's being sought in the CLOB column, is not a bind variable in the 
 PreparedStatement but rather a literal (I couldn't figure out how to do 
it 
 otherwise with PB).
 
 Any insights?
 
 thanks,
 -steve
 
 Steve Clark
 ECOS Development Group
 [EMAIL PROTECTED]
 (970)226-9291
 
 Full stack trace:
 
 An error has occurred
 
 org.apache.ojb.broker.PersistenceBrokerSQLException: * SQLException 
during 
 execution of sql-statement: * sql statement was 'SELECT DISTINCT 
 
A0.ACTIVITY_ID,A0.PRIMARY_WORK_TYPE_ID,A0.IS_EARLY_PLANNING,A0.IS_MITIGATION_REQUIRED,A0.ACRES_IMPACTED,A0.MILES_IMPACTED,A0.S18_FISHWAY_PRESCRIPTIONS,A0.S18_FISHWAY_MILES,A0.OTHER_RIVER_MILES,A0.FWS_RESPONSE_DATE,A0.FINAL_DECISION_DATE,A0.PERMIT_DATE,A0.PERMIT_AGENCY_ID,A0.OTHER_PERMIT_AGENCY,A0.REF_ENVIR_REVIEW,A0.REF_FOIA_CODE,A0.FEDACT_REVIEW_TYPE_ID,A0.APPLICANT_TYPE_ID,A0.PERMIT_STATUS_ID,A0.FWS_RECOMMENDATION,A1.SEQUENCE
 

 as ojb_col_21 FROM TAILS_DEV.FEDERAL_ACTIVITY A0 INNER JOIN 
 TAILS_DEV.ACTIVITY A1 ON A0.ACTIVITY_ID=A1.ACTIVITY_ID WHERE 
 A0.ACTIVITY_ID IN (SELECT DISTINCT B0.ACTIVITY_ID FROM 
 TAILS_DEV.FEDERAL_ACTIVITY B0 LEFT OUTER JOIN TAILS_DEV.ACTIVITY B1 ON 
 B0.ACTIVITY_ID=B1.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY_EVENT 
B2 
 ON B1.ACTIVITY_ID=B2.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.EVENT B3 ON 
 B2.EVENT_ID=B3.EVENT_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY B4 ON 
 B0.ACTIVITY_ID=B4.ACTIVITY_ID LEFT OUTER JOIN 
 TAILS_DEV.ACTIVITY_OTHER_OFFICE B5 ON B4.ACTIVITY_ID=B5.ACTIVITY_ID LEFT 

 OUTER JOIN ECOS_DATA.ECOS_OFFICE B6 ON B5.OFFICE_ID=B6.OFFICE_ID WHERE ( 

 contains(B3.DESCRIPTION,'SPECIES')  ?) AND (B4.LEAD_OFFICE_ID = ? OR 
 (B6.OFFICE_ID = ?))) ORDER BY 21' * Exception message is [ORA-00932: 
 inconsistent datatypes: expected - got CLOB ] * Vendor error code [932] 
* 
 SQL state code [42000]
 
 
 org.apache.ojb.broker.PersistenceBrokerException: 
 org.apache.ojb.broker.PersistenceBrokerSQLException: 
 * SQLException during execution of sql-statement:
 * sql statement was 'SELECT DISTINCT 
 
A0.ACTIVITY_ID,A0.PRIMARY_WORK_TYPE_ID,A0.IS_EARLY_PLANNING,A0.IS_MITIGATION_REQUIRED,A0.ACRES_IMPACTED,A0.MILES_IMPACTED

ORA-00932 inconsistent datatypes with CLOB

2006-07-27 Thread Steve_Clark
I am using OJB 1.0.4, Persistence Broker, Oracle 10g, Oracle Text.

I have a query which is using the Oracle Text contains() function to 
search in a CLOB.  It is throwing ORA-00932: inconsistent datatypes: 
expected - got CLOB.
If I replace the ?'s with appropriate values and do 
Statement.executeQuery(), i.e. do the binding by hand and pass this query 
straight to JDBC, then it works.  Similarly, if I give it to sqlplus, it 
works.  Can anybody tell me why it fails when produced by OJB?  The one 
possibly weird thing that I can come up with is that 'SPECIES', the value 
that's being sought in the CLOB column, is not a bind variable in the 
PreparedStatement but rather a literal (I couldn't figure out how to do it 
otherwise with PB).

Any insights?

thanks,
-steve

Steve Clark
ECOS Development Group
[EMAIL PROTECTED]
(970)226-9291

Full stack trace:

An error has occurred
 
org.apache.ojb.broker.PersistenceBrokerSQLException: * SQLException during 
execution of sql-statement: * sql statement was 'SELECT DISTINCT 
A0.ACTIVITY_ID,A0.PRIMARY_WORK_TYPE_ID,A0.IS_EARLY_PLANNING,A0.IS_MITIGATION_REQUIRED,A0.ACRES_IMPACTED,A0.MILES_IMPACTED,A0.S18_FISHWAY_PRESCRIPTIONS,A0.S18_FISHWAY_MILES,A0.OTHER_RIVER_MILES,A0.FWS_RESPONSE_DATE,A0.FINAL_DECISION_DATE,A0.PERMIT_DATE,A0.PERMIT_AGENCY_ID,A0.OTHER_PERMIT_AGENCY,A0.REF_ENVIR_REVIEW,A0.REF_FOIA_CODE,A0.FEDACT_REVIEW_TYPE_ID,A0.APPLICANT_TYPE_ID,A0.PERMIT_STATUS_ID,A0.FWS_RECOMMENDATION,A1.SEQUENCE
 
as ojb_col_21 FROM TAILS_DEV.FEDERAL_ACTIVITY A0 INNER JOIN 
TAILS_DEV.ACTIVITY A1 ON A0.ACTIVITY_ID=A1.ACTIVITY_ID WHERE 
A0.ACTIVITY_ID IN (SELECT DISTINCT B0.ACTIVITY_ID FROM 
TAILS_DEV.FEDERAL_ACTIVITY B0 LEFT OUTER JOIN TAILS_DEV.ACTIVITY B1 ON 
B0.ACTIVITY_ID=B1.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY_EVENT B2 
ON B1.ACTIVITY_ID=B2.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.EVENT B3 ON 
B2.EVENT_ID=B3.EVENT_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY B4 ON 
B0.ACTIVITY_ID=B4.ACTIVITY_ID LEFT OUTER JOIN 
TAILS_DEV.ACTIVITY_OTHER_OFFICE B5 ON B4.ACTIVITY_ID=B5.ACTIVITY_ID LEFT 
OUTER JOIN ECOS_DATA.ECOS_OFFICE B6 ON B5.OFFICE_ID=B6.OFFICE_ID WHERE ( 
contains(B3.DESCRIPTION,'SPECIES')  ?) AND (B4.LEAD_OFFICE_ID = ? OR 
(B6.OFFICE_ID = ?))) ORDER BY 21' * Exception message is [ORA-00932: 
inconsistent datatypes: expected - got CLOB ] * Vendor error code [932] * 
SQL state code [42000]
 

org.apache.ojb.broker.PersistenceBrokerException: 
org.apache.ojb.broker.PersistenceBrokerSQLException: 
* SQLException during execution of sql-statement:
* sql statement was 'SELECT DISTINCT 
A0.ACTIVITY_ID,A0.PRIMARY_WORK_TYPE_ID,A0.IS_EARLY_PLANNING,A0.IS_MITIGATION_REQUIRED,A0.ACRES_IMPACTED,A0.MILES_IMPACTED,A0.S18_FISHWAY_PRESCRIPTIONS,A0.S18_FISHWAY_MILES,A0.OTHER_RIVER_MILES,A0.FWS_RESPONSE_DATE,A0.FINAL_DECISION_DATE,A0.PERMIT_DATE,A0.PERMIT_AGENCY_ID,A0.OTHER_PERMIT_AGENCY,A0.REF_ENVIR_REVIEW,A0.REF_FOIA_CODE,A0.FEDACT_REVIEW_TYPE_ID,A0.APPLICANT_TYPE_ID,A0.PERMIT_STATUS_ID,A0.FWS_RECOMMENDATION,A1.SEQUENCE
 
as ojb_col_21 FROM TAILS_DEV.FEDERAL_ACTIVITY A0 INNER JOIN 
TAILS_DEV.ACTIVITY A1 ON A0.ACTIVITY_ID=A1.ACTIVITY_ID WHERE 
A0.ACTIVITY_ID IN  (SELECT DISTINCT B0.ACTIVITY_ID FROM 
TAILS_DEV.FEDERAL_ACTIVITY B0 LEFT OUTER JOIN TAILS_DEV.ACTIVITY B1 ON 
B0.ACTIVITY_ID=B1.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY_EVENT B2 
ON B1.ACTIVITY_ID=B2.ACTIVITY_ID LEFT OUTER JOIN TAILS_DEV.EVENT B3 ON 
B2.EVENT_ID=B3.EVENT_ID LEFT OUTER JOIN TAILS_DEV.ACTIVITY B4 ON 
B0.ACTIVITY_ID=B4.ACTIVITY_ID LEFT OUTER JOIN 
TAILS_DEV.ACTIVITY_OTHER_OFFICE B5 ON B4.ACTIVITY_ID=B5.ACTIVITY_ID LEFT 
OUTER JOIN ECOS_DATA.ECOS_OFFICE B6 ON B5.OFFICE_ID=B6.OFFICE_ID WHERE ( 
my_contains(B3.DESCRIPTION,'E')  ?) AND  (B4.LEAD_OFFICE_ID = ? OR 
(B6.OFFICE_ID = ?)))  ORDER BY 21'
* Exception message is [ORA-00932: inconsistent datatypes: expected - got 
CLOB
]
* Vendor error code [932]
* SQL state code [42000]
at 
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:272)
at 
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:284)
at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1475)
at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:383)
at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:383)
at gov.doi.tat.odmg.Select.byCriteria(Select.java:314)
at gov.doi.tat.odmg.Select.byCriteria(Select.java:265)
at gov.doi.tat.odmg.Select.byCriteriaWithSubQuery(Select.java:242)
at 
gov.doi.tails.dao.odmg.AbstractSearchDaoImpl.search(AbstractSearchDaoImpl.java:306)
at 
gov.doi.tails.biz.AbstractSearchMgr.search(AbstractSearchMgr.java:129)
at 
gov.doi.tails.actions.AbstractSearchAction.doSearch(AbstractSearchAction.java:224