geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Hogstrom <m...@hogstrom.org>
Subject Re: ejb transaction exception..!!
Date Thu, 11 May 2006 11:36:44 GMT
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:matt@hogstrom.org] 
> Sent: Thursday, May 11, 2006 8:25 AM
> To: user@geronimo.apache.org
> 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***
> 
> 
> 

Mime
View raw message