Just wanted to remind everyone before I completely move off of this issue, that the reason for this bug is because Village is using non-streaming JDBC calls for OBJECTDATA.
*****All data stored in Oracle (9i) via User.setPerm() will fail to persist once the data size exceeds 4kbytes.***** Any Oracle users out there using User.setPerm() beware. This is one of those "down the road" symptoms. I made local change to the Village code to use streaming calls to overcome the problem, and posted the solution to the Village and Turbine-User groups. -Mitch -----Original Message----- From: Quinton McCombs [mailto:[EMAIL PROTECTED]] Sent: Monday, November 18, 2002 9:00 AM To: Turbine Users List Subject: Re: Problem writing to TURBINE_USER.OBJECTDATA If my memory serves me correctly, it is because Village uses the setString( data ) method on the prepared statement. The JDBC driver has an upper limit of data that it is willing to accept using setString(). I ran into this situation myself. The way that I worked around it was to extend TurbineUser. I created more columns in the database table and stopped using OBJECTDATA. On Mon, 2002-11-18 at 10:44, Mitch Christensen wrote: > Hey, > > I'm currently saving user preferences (10 key/value pairs), and some > (~15-20) HashTables with about 7 key/val pairs each to user.setPerm(). This > was working fine, but suddenly stopped working. I noticed the following > exception being thrown. > > The datatype for the OBJECTDATA column is LONG RAW, which supposedly > supports up to 4gig of data. I suspect that the '4537' number in the > exception may be my actual data size. If so, this if far from what I would > consider "excessive" for storage via setPerm(). > > I really don't have time to crack the torque/village code right now, so any > pointers would be greatly appreciated. > > Any ideas? > > -Mitch > > > java.sql.SQLException: Data size bigger than max size for this type: 4537 > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180) > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222) > at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:99) > at > oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:1761) > at > oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.j > ava:855) > at > oracle.jdbc.driver.OraclePreparedStatement.setBytes(OraclePreparedStatement. > java:1812) > at com.workingdogs.village.Value.setPreparedStatementValue(Unknown > Source) > at com.workingdogs.village.Record.saveWithUpdate(Unknown Source) > at com.workingdogs.village.Record.save(Unknown Source) > at com.workingdogs.village.Record.save(Unknown Source) > at > org.apache.torque.util.BasePeer.insertOrUpdateRecord(BasePeer.java:891) > at org.apache.torque.util.BasePeer.doUpdate(BasePeer.java:1812) > at org.apache.torque.util.BasePeer.doUpdate(BasePeer.java:1711) > at > org.apache.turbine.om.security.peer.TurbineUserPeer.doUpdate(TurbineUserPeer > .java:482) > at > org.apache.turbine.services.security.db.DBUserManager.store(DBUserManager.ja > va:267) > at > org.apache.turbine.services.security.BaseSecurityService.saveUser(BaseSecuri > tyService.java:374) > at > org.apache.turbine.services.security.TurbineSecurity.saveUser(TurbineSecurit > y.java:256) > at > org.apache.turbine.om.security.TurbineUser.valueUnbound(TurbineUser.java:653 > ) > at > jrun.servlet.session.JRunSession.setAttribute(JRunSession.java:278) > at jrun.servlet.session.JRunSession.putValue(JRunSession.java:254) > at > org.apache.turbine.services.rundata.DefaultTurbineRunData.save(DefaultTurbin > eRunData.java:1355) > at > org.apache.turbine.modules.actions.LogoutUser.doPerform(LogoutUser.java:118) > at org.apache.turbine.modules.Action.perform(Action.java:87) > at > org.apache.turbine.modules.ActionLoader.exec(ActionLoader.java:122) > at org.apache.turbine.Turbine.doGet(Turbine.java:509) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) > at > jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) > at > jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:241) > at > jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527) > at jrun.servlet.http.WebService.invokeRunnable(WebService.java:172) > at > jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java: > 348) > at > jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:451 > ) > at > jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:29 > 4) > at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) > rethrown as org.apache.torque.TorqueException: Data size bigger than max > size for this type: 4537 > > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> >Quinton McCombs< Strategic Planner, NEqualsOne 1800 International Park Drive Suite 205 Birmingham, AL 35243 p: 205.324.8005 x121 800.466.1337 f: 205.324.7008 e: [EMAIL PROTECTED] www.NEqualsOne.com -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
