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

Reply via email to