Hi Ricardo, Resurrecting a 2.5 year old thread here, but I just became aware that we're having the same problem (with an obviously infrequently-used feature).
Did you ever learn anything more about this? Did setting that oracle.jdbc.LobStreamPosStandardCompliant property result in any strange or undesirable behavior? Thanks, - Patrick On May 11, 2010, at 4:47 PM, Ricardo J. Parada wrote: > > To simplify things, in a nutshell, the new oracle 11g driver has this logic: > > if (pos == 518630185893888L) > { > if (lobStreamPosStandardCompliant) > { > throw > DatabaseError.createSqlException(getConnectionDuringExceptionHandling(), 68); > } > > ... > } > > and the old oracle 10g driver looks like this: > > if (pos == 518630185893888L) > { > return new OracleBlobOutputStream(blob, chunkSize); > } > > > So I looked at the lobStreamPosStandardCompliant i-var in the oracle driver > and I noticed that it is being initialized from the > oracle.jdbc.LobStreamPosStandardCompliant property which defaults to true. > So if I set the property to false in my Properties file like this: > > oracle.jdbc.LobStreamPosStandardCompliant=false > > then the 11g driver works fine. > > But it makes me nervous setting this property. Anyways, I'm just putting > this out here to see if anybody has an idea of what this is. > > > > > > On May 11, 2010, at 3:35 PM, Ricardo J. Parada wrote: > >> On May 11, 2010, at 1:34 PM, Chuck Hill wrote: >> >>> >>> On May 11, 2010, at 8:57 AM, Ricardo J. Parada wrote: >>> >>>> >>>> We upgraded ORACLE to 11g and so I switched to the 11g driver. But now we >>>> started getting these exceptions: >>>> >>>> [2010-05-11 07:31:24,579] ERROR >>>> com.webobjects.eoaccess.EOGeneralAdaptorException: Invalid argument(s) in >>>> call >>>> at >>>> com.webobjects.eoaccess.EODatabaseContext._exceptionWithDatabaseContextInformationAdded(EODatabaseContext.java:4504) >>>> at >>>> com.webobjects.eoaccess.EODatabaseContext.performChanges(EODatabaseContext.java:6216) >>>> at >>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(EOObjectStoreCoordinator.java:376) >>>> at >>>> com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3192) >>>> at er.extensions.eof.ERXEC._saveChanges(ERXEC.java:1085) >>>> at er.extensions.eof.ERXEC.saveChanges(ERXEC.java:1007) >>>> ... >>>> >>>> I suspect it is related to BLOB fields because it happens right after EOF >>>> issues SQL to insert into a table with a BLOB field. The SQL looks >>>> something like this: >>>> >>>> INSERT INTO MIME_CONTENT(DEFAULT_DOWNLOAD_FILE_NAME, MIME_TYPE, >>>> CREATION_DATE, MIME_CONTENT, MIME_CONTENT_ID) VALUES (?, ?, ?, >>>> EMPTY_BLOB(), ?)" withBindings: >>>> 1:"BasicAdHocReport.csv"(defaultDownloadFileName), >>>> 2:"text/comma-separated-values"(mimeType), 3:2010-05-11 >>>> 11:17:00(creationDate), 4:496737(mimeContentID) >>>> >>>> SELECT t0.MIME_CONTENT FROM MIME_CONTENT t0 WHERE t0.MIME_CONTENT_ID = ? >>>> FOR UPDATE" withBindings: 1:496737(mimeContentID) >>> >>> >>> SELECT ... FOR UPDATE usually means that WO has gotten totally confused. >>> It should probably be doing something like >>> UPDATE MIME_CONTENT SET MIME_CONTENT = .... where MIME_CONTENT_ID = 496737 >>> >>> See http://www.google.ca/search?q=SELECT+%22FOR+UPDATE%22+webobjects& >>> >>> Often this indicates a difference between your prototypes and the name / >>> case of the data type that the JDBC driver is returning. >> >> The field is defined as follows in the eomodel: >> >> { >> columnName = "MIME_CONTENT"; >> externalType = BLOB; >> name = mimeContent; >> valueClassName = NSData; >> }, >> >> It's not using a prototype but I checked ERPrototypes' definition of the >> blob prototype for ORACLE and it seems that this is setup right. >> >> It has always seemed weird to me that I don't see an UPDATE MIME_CONTENT SET >> MIME_CONTENT = ... WHERE MIME_content_id = 496737 like you mentioned. >> However, the SQL looks the identical with the old driver except that no >> exception is thrown and the field in the database ends up with the blob in >> there. >> >> I noticed that the exception class is EOGeneralAdaptorException and it has a >> userInfo dictionary. So I peeked at that and I see more info that shows a >> stack trace with line numbers inside the oracle driver. It shows the >> exception happening at line #4388 in the newOutputStream(BLOB blob, int >> chunkSize, long pos, boolean zeroInvalid method. And in JD-GUI it seems >> that for that to happen pos is a really large number and zeroInvalid & >> lobStreamPosStandardCompliant return true. ( I didn't know a bitwise and >> with a boolean was a valid expression in java... :-/) >> >> public OutputStream newOutputStream(BLOB blob, int chunkSize, long pos, >> boolean zeroInvalid) >> throws java.sql.SQLException >> { >> >> ... >> >> if (pos == 518630185893888L) >> { >> if ((zeroInvalid & this.lobStreamPosStandardCompliant)) >> { >> ... >> >> java.sql.SQLException __ex__ = >> DatabaseError.createSqlException(getConnectionDuringExceptionHandling(), 68); >> 4388: __ex__.fillInStackTrace(); >> throw __ex__; >> } >> >> … >> >> } >> >> >>> >>> >>> Chuck >>> >>> >>>> >>>> >>>> Switching to the old driver makes the exception go away. Any wild guess >>>> if this is an EOF problem or a driver problem? >>>> >>>> For reference, the version of the oracle jdbc driver is 11.2.0.1.0. >>>> >>>> Thanks for any help, >>>> Ricardo >>>> >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>> Help/Unsubscribe/Update your Subscription: >>>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net >>>> >>>> This email sent to ch...@global-village.net >>> >>> -- >>> Chuck Hill Senior Consultant / VP Development >>> >>> Practical WebObjects - for developers who want to increase their overall >>> knowledge of WebObjects or who are trying to solve specific problems. >>> http://www.global-village.net/products/practical_webobjects >>> >>> >>> >>> >>> >>> >>> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/webobjects-dev/rparada%40mac.com >> >> This email sent to rpar...@mac.com > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/webobjects-dev/pgr%40vt.edu > > This email sent to p...@vt.edu
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com