I think that CASE as a performance optimization made sense in theory but the major databases do not support it in its current form. I think we can accomplish the same thing in TranQL with a more portable implementation.

Santosh Koti wrote:
Thanks, Matt.
I referred ur earlier post & resolved it.

By the way, in the same post (I guess, not sure) some people were
speaking about the 'CASE' & its importance in performance.

What is ur stand on that ? (in future releases)
Thanks for ur time,

Santosh.
"Don't talk about yourself; it will be done when you leave. "
-----Original Message-----
From: Matt Hogstrom [mailto:[EMAIL PROTECTED] Sent: Thursday, May 11, 2006 8:25 AM
To: [email protected]
Subject: Re: ejb transaction exception..!!

The CASE syntax is a poor choice and we will address it.  For DB2 and
Oracle there are alternate syntax factories that are available. Here is a sample from the
DayTrader deployment plan.

             <!--
             ##
             ##  C o n n e c t i o n  F a c t o r y  D e f i n i t i o n
             ##
             ##
             ##
             -->
             <cmp-connection-factory>
                 <resource-link>jdbc/TradeDataSource</resource-link>
             </cmp-connection-factory>

<ejb-ql-compiler-factory>com.tranql.sql.ejbcompiler.OracleEJBQLCompilerF
actory</ejb-ql-compiler-factory> <db-syntax-factory>com.tranql.sql.oracle.OracleDBSyntaxFactory</db-synta
x-factory>

This will generate code that is not using the CASE Statement



Santosh Koti wrote:
Hi Folks,



I am facing a problem in running ejb based transaction.



Here is stack trace for my exception (in parts):



javax.ejb.TransactionRolledbackLocalException

        at

org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolic
y.java:123)

        at

org.openejb.transaction.TransactionContextInterceptor.invoke(Transaction
ContextInterceptor.java:80)

        at

org.openejb.SystemExceptionInterceptor.invoke(SystemExceptionInterceptor
.java:82)

        at
org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:238)

                  .......

                  .......



 Caused by: javax.ejb.EJBException: Error executing statement: UPDATE
AccountDetails SET bankID = CASE WHEN ? THEN ? ELSE bank

        at

com.infosys.j2ee.setlbank.appservice.accounts.impl.AccountsInfoEJB.credi
t(AccountsInfoEJB.java:322)



                  .......

                  .......

Caused by: javax.ejb.FinderException: Error executing statement:
UPDATE
AccountDetails SET bankID = CASE WHEN ? THEN

        at

org.openejb.entity.cmp.SingleValuedFinder.execute(SingleValuedFinder.jav
a:83)

        at

org.openejb.dispatch.DispatchInterceptor.invoke(DispatchInterceptor.java
:72)

        at

org.apache.geronimo.naming.java.ComponentContextInterceptor.invoke(Compo
nentContextInterceptor.java:56)

                  .......

                  .......



Caused by: org.tranql.ql.QueryException: Error executing statement:
UPDATE AccountDetails SET bankID = CASE WHEN ? THEN ? ELSE

        at

org.tranql.sql.jdbc.JDBCUpdateCommand.execute(JDBCUpdateCommand.java:69)
        at

org.tranql.cache.SimpleFlushStrategy.flush(SimpleFlushStrategy.java:64)




Caused by: java.sql.SQLException: ORA-00920: invalid relational
operator
                  .......

                  .......



        at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

        at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)

        at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)







I think the key word : 'CASE'  is giving problem, because it is not
been
recognized by Oracle during the execution of the query.



But any ways to remove that , or can any1 suggest some  workarounds
which will be of great help...!!

I tried many options , but no luck :-(

Thanks,

Santosh.

"Don't talk about yourself; it will be done when you leave. "





**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended
solely for the use of the addressee(s). If you are not the intended
recipient, please notify the sender by e-mail and delete the original
message. Further, you are not to copy, disclose, or distribute this
e-mail or its contents to any other person and any such actions are
unlawful. This e-mail may contain viruses. Infosys has taken every
reasonable precaution to minimize this risk, but is not liable for any
damage you may sustain as a result of any virus in this e-mail. You
should carry out your own virus checks before opening the e-mail or
attachment. Infosys reserves the right to monitor and review the content
of all messages sent to or from this e-mail address. Messages sent to or
from this e-mail address may be stored on the Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***



Reply via email to