Jakarta Slide
Main
Introduction
News
Status
Changelog
Contributors
Downloads
Releases
Nightly
Resources
FAQ
Mailing Lists
Build Status
CVS
Library
User's Guide
Server
Client
HOWTOs
Installation
Configuration
Examples
Tomcat Howto
JDBC Stores Howto
Programmer's Corner
Architecture
Domain
Namespace
Slide API
Structure
Security
Lock
Content
Macro
Index
Process
Reference
UML
JavaDoc
WebDAV Client Javadoc
JDBC Store Howto
Initialization

On the first startup of the Store, it will attempt to automatically create the appropriate tables in the database. The creation will fail if any of the types used is not supported by the user's database, in which case the tables have to be created before starting the store.

This document includes a number of SQL scripts which can be used with various databases to create the tables. Contributions are welcome :)

Note: The JDBC store's goal is to be as compatible as possible. Specific, high performance stores will eventually be developed, based around some vendor XA driver.

Tables

This section presents the database schema which is used by the JDBC stores. The types mentioned are the Java types which are expected for each field.

Objects
  • uri: String
  • classname: String
Children
  • uri: String
  • childuri: String
Links
  • uri: String
  • linkto: String
Permissions
  • object: String
  • revisionnumber: String
  • subject: String
  • action: String
  • inheritable: int
  • negative: int
Locks
  • id: String
  • object: String
  • subject: String
  • type: String
  • expirationdate: String
  • inheritable: int
  • xeclusive: int
Revisions
  • uri: String
  • isversioned: int
  • initialrevision: String
Workingrevision
  • uri: String
  • baserevision: String
  • xnumber: String
Latestrevisions
  • uri: String
  • branchname: String
  • xnumber: String
Branches
  • uri: String
  • xnumebr: String
  • childnumber: String
Revision
  • uri: String
  • xnumber: String
  • branchname: String
Label
  • uri: String
  • xnumber: String
  • label: String
Property
  • uri: String
  • xnumber: String
  • name: String
  • value: String
  • namespace: String
  • type: String
  • protected: int
Revisioncontent
  • uri: String
  • xnumber: String
  • content: byte[]
Hypersonic SQL

The initialization script for hSQL is the one which is run at the startup of the store.

create table objects(uri varchar(65536) primary key, classname varchar(4096);

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

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

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

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

create table revisions(uri varchar(65536) primary key, 
  isversioned int, initialrevision varchar(10));

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

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

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

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

create table label(uri varchar(65536), xnumber varchar(20), 
  label varchar(4096));

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

create table revisioncontent(uri varchar(65536), xnumber varchar(20), 
  content longvarbinary);

mySQL

create database myDB;

use myDB;

create table objects(uri blob not null, primary key uriIndex (uri(255)), 
  classname blob);

create table children(uri blob, childuri blob);

create table links(link blob, linkto blob);

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

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

create table revisions(uri blob not null, primary key uriIndex 
  (uri(255)), isversioned int, initialrevision varchar(10) );

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

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

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

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

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

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

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

Oracle 8i

create table objects(uri varchar(3200) primary key, 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(4000), action varchar(4000), 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) primary key, 
  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 varchar(4000), namespace varchar(4000), 
  type varchar(100), protected int);

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

Cloudscape

create table objects(uri varchar(3200) primary key, 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(4000), "ACTION" varchar(4000), 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) primary key, 
  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 varchar(4000), namespace varchar(4000), 
  type varchar(100), protected int);

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

Microsoft SQL Server

EXEC sp_addtype N'uri', N'varchar (800)', N'not null'

create table objects(uri uri primary key, classname text);

create table children(uri uri, childuri uri);

create table links(link uri, linkto uri);

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

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

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

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

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

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

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

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

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

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


Copyright (c) 2000-2001, Apache Software Foundation