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

Reply via email to