Embedding function in operator error

User 8688ffe688

09-06-2006 15:35:58

When embedding a function oracle hangs and eventually exits session.





select abs_id from abs_chemstruct where


jc_equals(smiles,jc_molconvert([input smiles],'smiles:u')) = 1;


select abs_id from abs_chemstruct where


*


ERROR at line 1:


ORA-03113: end-of-file on communication channel








ERROR:


ORA-03114: not connected to ORACLE





Server Details:





Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production


PL/SQL Release


9.2.0.4.0 - Production


CORE 9.2.0.3.0 Production


TNS for Solaris: Version


9.2.0.4.0 - Production


NLSRTL Version 9.2.0.4.0 - Production


NLSRTL Version


9.2.0.4.0 - Production





JChem version in the database: 3.1.7


JChem version in the Tomcat server:


3.1.7


java.vm.version: 1.5.0_04-b05


java.vm.vendor: Sun Microsystems Inc.


Apache


Tomcat/5.5.9


Major JDBC version in Tomcat: 1


Minor JDBC version in Tomcat: 0

ChemAxon aa7c50abf8

09-06-2006 17:51:44

Another JChem Cartridge user had a similar problem with Oracle9i Enterprise Edition 9.2.0.5.0 on a 64bit Sparc server. The 9.2.0.6 Oracle patch definitively solved their problem.





I'd suggest to give this same patch a try.





Peter

ChemAxon aa7c50abf8

22-06-2006 05:03:26

Based on information I recently obtained, the patch might not work in this case after all.





Try to "embed" functions instead of operators. (jc_molconvert is an operator, not a function.)





The following will most probably work:


Code:
select abs_id from abs_chemstruct where


jc_equals(smiles,jcf_molconvert([input smiles],'smiles:u')) = 1;






In this kind of contexts (directly "embedding" a conversion style operator like jc_molconvert, jc_standardize, jc_evaluate_x), using an operator will have no benefit over using a function anyway.