DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24491>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24491

PATCH: Fixes problem in Oracle with properties longer that 4000 chars.

           Summary: PATCH: Fixes problem in Oracle with properties longer
                    that 4000 chars.
           Product: Slide
           Version: Nightly
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Stores
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Hi!

For Oracle varchar2 can have maximum 4000 chars. So after 80 PUT commands slide 
crashes on that document because 'version-set' property length of history object 
(for example /history/1) is exceeded.

So I would like propose new schema for Oracle (what is really important is 
property value stored as clob) and patch to JDBCDescriptorStore that works with 
this schema:

SCHEMA :

--Slide schema for user_5 9.0.0.0.
--Modified for named primary keys 11.09.2003.
drop table objects;
drop table children;
drop table links;
drop table permissions;
drop table locks;
drop table revisions;
drop table workingrevision;
drop table latestrevisions;
drop table branches;
drop table revision;
drop table label;
drop table property;
drop table revisioncontent;


create table objects(uri varchar(3200), classname varchar(4000));

create table children(uri varchar(4000), childuri varchar(4000));

create table links(link varchar(4000), linkto varchar(4000));

create table permissions(object varchar(4000), revisionnumber varchar(20), 
  subject varchar(1500), action varchar(400), inheritable int, negative int);

create table locks(id varchar(4000), object varchar(4000), 
  subject varchar(4000), type varchar(4000), 
  expirationdate varchar(15), inheritable int, xexclusive int);

create table revisions(uri varchar(3200), 
  isversioned int, initialrevision varchar(10));

create table workingrevision(uri varchar(4000), 
  baserevision varchar(20), xnumber varchar(20));

create table latestrevisions(uri varchar(4000), 
  branchname varchar(4000), xnumber varchar(20));

create table branches(uri varchar(4000), xnumber varchar(20), 
  childnumber varchar(20));

create table revision(uri varchar(4000), xnumber varchar(20), 
  branchname varchar(4000));

create table label(uri varchar(4000), xnumber varchar(20), 
  label varchar(4000));

create table property(uri varchar(4000), xnumber varchar(20), 
  name varchar(4000), value clob, namespace varchar(4000), 
  type varchar(100), protected int);

create table revisioncontent(uri varchar(4000), xnumber varchar(20), 
  content blob);

alter table objects add constraint pk_objects primary key (uri);
alter table revisions add constraint pk_revisions primary key (uri);
  
create index idx_rc_uri_xnumber on revisioncontent (uri, xnumber);
create index idx_chld_uri on children (uri);
create index idx_lnks_linkto on links (linkto);
create index idx_lnks_link on links (link);
create index idx_perm_osar on permissions (object, subject, action, 
revisionnumber);
create index idx_perm_obj on permissions (object);
create index idx_lcks_id on locks (id);
create index idx_lcks_obj on locks (object);
create index idx_wrkrev_uri on workingrevision (uri);
create index idx_ltstrev_uri on latestrevisions (uri);
create index idx_rev_uri on revision (uri);
create index idx_rev_uri_xnumber on revision (uri, xnumber);
create index idx_brnch_uri_xnumber on branches (uri, xnumber);
create index idx_lbl_uri_xnumber on label (uri, xnumber);
create index idx_prop_uri_xnumber on property (uri, xnumber);

  
PATCH:


1595a1597,1606
>               Clob pValueClob = res.getClob(PROPERTY_VALUE);
>               String propertyValue = null;
>               if(pValueClob != null) {
>                       long pValueClobLength = pValueClob.length();
>                       char pValueChars[] = new char[(int)pValueClobLength];
>                       Reader pValueClobReader = pValueClob.getCharacterStream();
>                       pValueClobReader.read(pValueChars);
>                       pValueClobReader.close();
>                       propertyValue = new String(pValueChars);
>               }
1599c1610
<                                      res.getString(PROPERTY_VALUE), 
---
>                                      propertyValue,
1614c1625,1629
<         } finally {
---
>         } catch (IOException e) {
>             getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
>             throw new ServiceAccessException(this, e);
>         }
>       finally {
1682c1697,1699
<                 statement.setString(4, property.getValue().toString());
---
>               char pValueChars[] = property.getValue().toString().toCharArray();
>               Reader pValueReader = new CharArrayReader(pValueChars);
>                 statement.setCharacterStream(4, pValueReader, pValueChars.
length);
1686a1704
>               pValueReader.close();
1692a1711,1713
>             throw new ServiceAccessException(this, e);
>         } catch (IOException e) {
>             getLogger().log(e,LOG_CHANNEL,Logger.ERROR);

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to