Bug #36841 java.sql.SQLException: Invalid column name
Submitted: 21 May 2008 6:00 Modified: 26 May 2008 12:01
Reporter: Mangesh Reg Email Updates:
Status: Duplicate Impact on me:
None 
Category:Connector / J Severity:S1 (Critical)
Version:5.1.6 OS:Other (CentOS)
Assigned to: CPU Architecture:Any

[21 May 2008 6:00] Mangesh Reg
Description:
Hello,

We are facing critical problem on our production sever  with CentOS , mysql version 5.0.45 , mysql connector mysql-connector-java-5.1.6-bin.jar ,JBoss-4.2.2.GA Release

We are using CachedRowSet (Cheched ResultSet) to retrieve values from database.

but while enumerating the CachedRowSet , if the table column value is 

retrieved by column name , application throwing error 

The Error Stack thrown is 

2008-05-21 01:07:24,331 ERROR [com.ems.ejb.secure.PSecureLoginEJB] java.sql.SQLException: Invalid column name

java.sql.SQLException: Invalid column name
	at sun.jdbc.rowset.CachedRowSet.getColIdxByName(CachedRowSet.java:1383)
	at sun.jdbc.rowset.CachedRowSet.getString(CachedRowSet.java:2167)
	at com.ems.ejb.secure.PSecureLoginEJB.login(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor209.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
	at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:237)
	at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
	at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:169)
	at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
	at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
	at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
	at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
	at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
	at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
	at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
	at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
	at org.jboss.ejb.Container.invoke(Container.java:960)
	at sun.reflect.GeneratedMethodAccessor204.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
	at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
	at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
	at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)
	at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
	at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
	at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
	at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
	at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
	at $Proxy335.login(Unknown Source)
	at com.ems.action.secure.LoginAction.login(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor206.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
	at com.common.action.struts.CLookupDispatchAction.execute(Unknown Source)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
	at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:619)

Same works on our development server with mysql version 

 4.0.1 Alpha NT , Mysql connector version is mysql-connector-java-5.0.7-bin.jar and jboss veriosn is jboss-4.2.1.GA , OS Windows 2000 professional

Please let us know the resolution for this problem

How to repeat:
Example

sql="select ev_user_login.user_id,ev_user_login.password as szPassword,md5('admin') as szMatchPass from ev_user_login where ev_user_login.username='admin'";

CachedRowSet crsPassword = DAO.getSQLData(sql, connection);

if (null!= crsPassword && crsPassword.size() > 0 ){
crsPassword.beforeFirst();
if(crsPassword.next()) {
String szPassword = crsPassword.getString("szPassword");//This doesn't work
szPassword = crsPassword.getString(2); //This works
String szMatchPass = crsPassword.getString("szMatchPass"); //This doesn't work
szMatchPass = crsPassword.getString(3); //This works

}

}

if(null!=crsPassword)

crsPassword=null;

crsPassword.getString("szPassword");//This doesn't work
[26 May 2008 12:01] Tonci Grgin
Hi Mangesh and thanks for your report. This is a duplicate of Bug#35610.