You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by bu...@apache.org on 2003/11/07 13:32:32 UTC
DO NOT REPLY [Bug 24491] New: -
PATCH: Fixes problem in Oracle with properties longer that 4000 chars.
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: slide-dev@jakarta.apache.org
ReportedBy: pwalendziak@yahoo.com
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: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org