Spoke too soon.... there was a followup thread, 4 months later with "Subject: oracle.jdbc.LobStreamPosStandardCompliant". See:
http://lists.apple.com/archives/webobjects-dev/2010/Sep/msg00548.html Thanks, Mike... 2.25 years later. :-) - Patrick On Dec 20, 2012, at 3:00 PM, Patrick Robinson wrote: > 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/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