ozeigermann    2004/02/25 01:13:20

  Added:       src/conf/schema dropPostgresSchema.sql MySqlSchema.sql
                        SybaseSchema.sql SQLServerSchema.sql
                        createPostgresSchema.sql
  Removed:     src/stores/org/apache/slide/store/impl/rdbms MySqlSchema.sql
                        SQLServerSchema.sql SybaseSchema.sql
                        dropPostgresSchema.sql createPostgresSchema.sql
  Log:
  Moved schemas from src to conf to have it available in future binary releases
  
  Revision  Changes    Path
  1.1                  jakarta-slide/src/conf/schema/dropPostgresSchema.sql
  
  Index: dropPostgresSchema.sql
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-slide/src/conf/schema/dropPostgresSchema.sql,v 1.1 
2004/02/25 09:13:20 ozeigermann Exp $
   * $Revision: 1.1 $
   * $Date: 2004/02/25 09:13:20 $
   *
   * ====================================================================
   *
   * Copyright 1999-2002 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  
  /*
   * drop the SQL schema used by org.apache.slide.impl.rdbms.PostgresAdapter.
   * Tested with Postgres 7.4.
   *
   */
  
  DROP VIEW LOCKS_VIEW;
  DROP VIEW PERMISSIONS_VIEW;
  DROP VIEW BINDING_VIEW;
  DROP VIEW OBJECT_VIEW;
  DROP TABLE PROPERTIES; 
  DROP TABLE VERSION_CONTENT; 
  DROP TABLE VERSION_PREDS;
  DROP TABLE VERSION_LABELS;
  DROP TABLE VERSION_HISTORY; 
  DROP TABLE VERSION; 
  DROP TABLE BINDING;
  DROP TABLE PARENT_BINDING;
  DROP TABLE LINKS;
  DROP TABLE LOCKS;
  DROP TABLE BRANCH;
  DROP TABLE LABEL; 
  DROP TABLE PERMISSIONS; 
  DROP TABLE OBJECT;
  DROP TABLE URI;
  
  
  
  1.1                  jakarta-slide/src/conf/schema/MySqlSchema.sql
  
  Index: MySqlSchema.sql
  ===================================================================
  # --------------------------------------------------------
  
  drop table if exists OBJECT;
  drop table if exists CHILDREN;
  drop table if exists BINDING;
  drop table if exists PARENT_BINDING;
  drop table if exists LINKS;
  drop table if exists LOCKS;
  drop table if exists VERSION_CONTENT;
  drop table if exists PROPERTIES;
  drop table if exists PERMISSIONS;
  drop table if exists VERSION_PREDS;
  drop table if exists VERSION_LABELS;
  drop table if exists VERSION_HISTORY;
  drop table if exists VERSION;
  drop table if exists BRANCH;
  drop table if exists LABEL;
  drop table if exists URI;
  
  # --------------------------------------------------------
  
  CREATE TABLE URI (
    URI_ID       bigint       NOT NULL auto_increment,
    URI_STRING   varchar(255)  NOT NULL,
    PRIMARY KEY  (URI_ID),
    KEY URI_IX2  (URI_STRING)
  ) TYPE=InnoDB;
  
  # --------------------------------------------------------
  
  CREATE TABLE OBJECT (
    URI_ID      bigint       NOT NULL,
    CLASS_NAME  varchar(255)  NOT NULL,
    PRIMARY KEY (URI_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE OBJECT ADD CONSTRAINT OBJECT_FK1 FOREIGN KEY OBJECT_FK1(URI_ID)
  REFERENCES URI (URI_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE BINDING (
    URI_ID         bigint  NOT NULL,
    NAME           varchar(255)  NOT NULL,
    CHILD_UURI_ID  bigint  NOT NULL,
    PRIMARY KEY    (URI_ID, NAME, CHILD_UURI_ID),
    KEY BINDING_IX  (CHILD_UURI_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE BINDING ADD CONSTRAINT BINDING_FK1 FOREIGN KEY
  BINDING_FK1(URI_ID) REFERENCES URI (URI_ID);
  ALTER TABLE BINDING ADD CONSTRAINT BINDING_FK2 FOREIGN KEY
  BINDING_FK2(CHILD_UURI_ID) REFERENCES URI (URI_ID);
  
  CREATE TABLE PARENT_BINDING (
    URI_ID         bigint  NOT NULL,
    NAME           varchar(255)  NOT NULL,
    PARENT_UURI_ID bigint  NOT NULL,
    PRIMARY KEY    (URI_ID, NAME, PARENT_UURI_ID),
    KEY PARENT_BINDING_IX  (PARENT_UURI_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE PARENT_BINDING ADD CONSTRAINT PARENT_BINDING_FK1 FOREIGN KEY
  PARENT_BINDING_FK1(URI_ID) REFERENCES URI (URI_ID);
  ALTER TABLE PARENT_BINDING ADD CONSTRAINT PARENT_BINDING_FK2 FOREIGN KEY
  PARENT_BINDING_FK2(PARENT_UURI_ID) REFERENCES URI (URI_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE LINKS (
    URI_ID        bigint  NOT NULL,
    LINK_TO_ID    bigint  NOT NULL,
    PRIMARY KEY   (URI_ID,LINK_TO_ID),
    key LINK_IX2  (LINK_TO_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE LINKS ADD CONSTRAINT LINK_FK1 FOREIGN KEY LINK_FK1(URI_ID)
  REFERENCES URI (URI_ID);
  ALTER TABLE LINKS ADD CONSTRAINT LINK_FK2 FOREIGN KEY LINK_FK2(LINK_TO_ID)
  REFERENCES URI (URI_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE LOCKS (
    LOCK_ID          bigint     NOT NULL,
    OBJECT_ID        bigint     NOT NULL,
    SUBJECT_ID       bigint     NOT NULL,
    TYPE_ID          bigint     NOT NULL,
    EXPIRATION_DATE  bigint        NOT NULL,
    IS_INHERITABLE   tinyint(1)  NOT NULL,
    IS_EXCLUSIVE     tinyint(1)  NOT NULL,
    OWNER            varchar(255), 
    PRIMARY KEY      (LOCK_ID),
    KEY LOCK_IX2     (OBJECT_ID),
    KEY LOCK_IX3     (SUBJECT_ID),
    KEY LOCK_IX4     (TYPE_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK1 FOREIGN KEY LOCK_FK1(LOCK_ID)
  REFERENCES URI (URI_ID);
  ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK2 FOREIGN KEY LOCK_FK2(OBJECT_ID)
  REFERENCES URI (URI_ID);
  ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK3 FOREIGN KEY LOCK_FK3(SUBJECT_ID)
  REFERENCES URI (URI_ID);
  ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK4 FOREIGN KEY LOCK_FK4(TYPE_ID)
  REFERENCES URI (URI_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE BRANCH (
    BRANCH_ID      bigint       NOT NULL auto_increment,
    BRANCH_STRING  varchar(255)  NOT NULL,
    PRIMARY KEY    (BRANCH_ID)
  ) TYPE=InnoDB;
  
  # --------------------------------------------------------
  
  CREATE TABLE LABEL (
    LABEL_ID      bigint       NOT NULL auto_increment,
    LABEL_STRING  varchar(255)  NOT NULL,
    PRIMARY KEY   (LABEL_ID)
  ) TYPE=InnoDB;
  
  # --------------------------------------------------------
  
  CREATE TABLE VERSION (
    URI_ID        bigint     NOT NULL,
    IS_VERSIONED  tinyint(1)  NOT NULL,
    PRIMARY KEY   (URI_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE VERSION ADD CONSTRAINT REVISON_FK1 FOREIGN KEY
  VERSION_FK1(URI_ID) REFERENCES URI (URI_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE VERSION_HISTORY (
    VERSION_ID   bigint      NOT NULL auto_increment,
    URI_ID       bigint      NOT NULL,
    BRANCH_ID    bigint      NOT NULL,
    REVISION_NO  varchar(20)  NOT NULL,
    PRIMARY KEY  (VERSION_ID),
    UNIQUE KEY URI_ID (BRANCH_ID,URI_ID,REVISION_NO),
    KEY URI_ID_IX3 (URI_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE VERSION_HISTORY ADD CONSTRAINT VERSION_HISTORY_FK1 FOREIGN KEY
  VERSION_HISTORY_FK1(URI_ID) REFERENCES URI (URI_ID);
  ALTER TABLE VERSION_HISTORY ADD CONSTRAINT VERSION_HISTORY_FK2 FOREIGN KEY
  VERSION_HISTORY_FK2(BRANCH_ID) REFERENCES BRANCH (BRANCH_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE VERSION_PREDS (
    VERSION_ID      bigint  NOT NULL,
    PREDECESSOR_ID  bigint  NOT NULL,
    PRIMARY KEY     (VERSION_ID,PREDECESSOR_ID),
    KEY PREDECESSOR_ID_IX2 (PREDECESSOR_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE VERSION_PREDS ADD CONSTRAINT REVISON_PREDS_FK1 FOREIGN KEY
  VERSION_PREDS_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  ALTER TABLE VERSION_PREDS ADD CONSTRAINT REVISON_PREDS_FK2 FOREIGN KEY
  VERSION_PREDS_FK2(PREDECESSOR_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE VERSION_LABELS (
    VERSION_ID   bigint  NOT NULL,
    LABEL_ID     bigint  NOT NULL,
    PRIMARY KEY  (VERSION_ID,LABEL_ID),
    KEY LABEL_ID_IX2 (LABEL_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE VERSION_LABELS ADD CONSTRAINT REVISON_LABELS_FK1 FOREIGN KEY
  VERSION_LABELS_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  ALTER TABLE VERSION_LABELS ADD CONSTRAINT REVISON_LABELS_FK2 FOREIGN KEY
  VERSION_LABELS_FK2(LABEL_ID) REFERENCES LABEL (LABEL_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE VERSION_CONTENT (
    VERSION_ID   bigint  NOT NULL,
    CONTENT      blob     NOT NULL,
    PRIMARY KEY  (VERSION_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE VERSION_CONTENT ADD CONSTRAINT REVISON_CONTENT_FK1 FOREIGN KEY
  VERSION_CONTENT_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE PROPERTIES (
    VERSION_ID          bigint       NOT NULL,
    PROPERTY_NAMESPACE  varchar(50)   NOT NULL,
    PROPERTY_NAME       varchar(50)   NOT NULL,
    PROPERTY_VALUE      varchar(255)  NOT NULL,
    PROPERTY_TYPE       varchar(50)   NOT NULL,
    IS_PROTECTED        tinyint(1)    NOT NULL,
    PRIMARY KEY         (VERSION_ID,PROPERTY_NAMESPACE,PROPERTY_NAME)
  ) TYPE=InnoDB;
  
  ALTER TABLE PROPERTIES ADD CONSTRAINT PROPERTIES_FK1 FOREIGN KEY
  PROPERTIES_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  
  # --------------------------------------------------------
  
  CREATE TABLE PERMISSIONS (
    OBJECT_ID       bigint      NOT NULL,
    SUBJECT_ID      bigint      NOT NULL,
    ACTION_ID       bigint      NOT NULL,
    VERSION_NO      varchar(20),
    IS_INHERITABLE  tinyint(1)   NOT NULL,
    IS_NEGATIVE     tinyint(1)   NOT NULL,
    SUCCESSION      int         NOT NULL,
    PRIMARY KEY     (SUBJECT_ID,OBJECT_ID,ACTION_ID),
    UNIQUE KEY OBJECT_ID_2 (OBJECT_ID,SUCCESSION),
    KEY ACTION_ID_IX3 (ACTION_ID)
  ) TYPE=InnoDB;
  
  ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK1 FOREIGN KEY
  PERMISSIONS_FK1(OBJECT_ID) REFERENCES URI (URI_ID);
  ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK2 FOREIGN KEY
  PERMISSIONS_FK2(SUBJECT_ID) REFERENCES URI (URI_ID);
  ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK3 FOREIGN KEY
  PERMISSIONS_FK3(ACTION_ID) REFERENCES URI (URI_ID); 
  
  
  1.1                  jakarta-slide/src/conf/schema/SybaseSchema.sql
  
  Index: SybaseSchema.sql
  ===================================================================
  /**********************************************************************/
  /******    DROP SLIDE TABLES                                     ******/
  /**********************************************************************/
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'OBJECT')
  DROP TABLE OBJECT
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'CHILDREN')
  DROP TABLE CHILDREN
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'BINDING')
  DROP TABLE BINDING
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'PARENT_BINDING')
  DROP TABLE PARENT_BINDING
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'LINKS')
  DROP TABLE LINKS
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'LOCKS')
  DROP TABLE LOCKS
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'VERSION_CONTENT')
  DROP TABLE VERSION_CONTENT
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'PROPERTIES')
  DROP TABLE PROPERTIES
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'PERMISSIONS')
  DROP TABLE PERMISSIONS
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'VERSION_PREDS')
  DROP TABLE VERSION_PREDS
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'VERSION_LABELS')
  DROP TABLE VERSION_LABELS
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'VERSION_HISTORY')
  DROP TABLE VERSION_HISTORY
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'VERSION')
  DROP TABLE VERSION
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'BRANCH')
  DROP TABLE BRANCH
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'LABEL')
  DROP TABLE LABEL
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'URI')
  DROP TABLE URI
  GO
  
  /**********************************************************************/
  /******    DROP EXISTING USER DEFINED DATA TYPES                 ******/
  /**********************************************************************/
  
  sp_droptype id_type
  GO
  
  sp_droptype uri_str_type
  GO
  
  sp_droptype revision_no_type
  GO
  
  sp_droptype hash_type
  GO
  
  sp_droptype literal_str_type
  GO
  
  sp_droptype value_str_type
  GO
  
  
  /**********************************************************************/
  /******    ADD USER DEFINED DATA TYPES                           ******/
  /**********************************************************************/
  
  sp_addtype id_type,      "numeric(18,0)"
  GO
  
  sp_addtype uri_str_type, "varchar(255)"
  GO
  
  sp_addtype revision_no_type, "varchar(20)"
  GO
  
  sp_addtype hash_type,         "numeric(18,0)"
  GO
  
  sp_addtype value_str_type,   "varchar(255)"
  GO
  
  /**********************************************************************/
  /******    CREATE SLIDE TABLES                                   ******/
  /**********************************************************************/
  
  CREATE TABLE dbo.URI (
      URI_ID          id_type               IDENTITY  UNIQUE  NOT NULL,
      URI_STRING      uri_str_type          UNIQUE  NOT NULL,
   --   UNIQUE NONCLUSTERED (URI_ID)
  )
  GO
  
  CREATE INDEX XUID
        ON URI(URI_ID) 
  GO
  
  CREATE INDEX XUSTRING
        ON URI(URI_STRING) 
  GO
  
  CREATE TABLE dbo.OBJECT (
      URI_ID          id_type               PRIMARY KEY,
      CLASS_NAME      varchar(255)          NOT NULL,
      CONSTRAINT      FK_OBJECT_URI_ID
         FOREIGN KEY (URI_ID)
         REFERENCES   URI (URI_ID)
  )
  GO    
  
  CREATE TABLE dbo.BINDING (
      URI_ID          id_type               NOT NULL
          REFERENCES  URI (URI_ID),
      NAME            varchar(238)          NOT NULL, -- index must not be more than 
256 bytes
      CHILD_UURI_ID    id_type              NOT NULL
          REFERENCES  URI (URI_ID),
      UNIQUE CLUSTERED (URI_ID, NAME, CHILD_UURI_ID)
  )
  GO
  
  CREATE TABLE dbo.PARENT_BINDING (
      URI_ID          id_type               NOT NULL
          REFERENCES  URI (URI_ID),
      NAME            varchar(238)          NOT NULL, -- index must not be more than 
256 bytes
      PARENT_UURI_ID    id_type             NOT NULL
          REFERENCES  URI (URI_ID),
      UNIQUE CLUSTERED (URI_ID, NAME, PARENT_UURI_ID)
  ) 
  GO
  
  CREATE INDEX XCHILDREN1
        ON CHILDREN(URI_ID) 
  GO
  CREATE INDEX XCHILDREN2
        ON CHILDREN(CHILD_URI_ID) 
  GO
  
  -- early versions of Sybase do not allow more than 16 tables per query
  -- URI has too many foreign keys which internally add to the tables used in a query 
on it
  -- remove foreign keys to URI from links as they are likely to be used little
  CREATE TABLE dbo.LINKS (
      URI_ID          id_type               NOT NULL
  /*        REFERENCES  URI (URI_ID) */ ,  
      LINK_TO_ID      id_type               NOT NULL
  /*        REFERENCES  URI (URI_ID) */ ,
      --UNIQUE CLUSTERED (URI_ID, LINK_TO_ID)
  )
  GO
  
  CREATE INDEX XURI_ID
        ON LINKS(URI_ID) 
  GO
  
  
  CREATE INDEX XLINK_TO_ID
        ON LINKS(LINK_TO_ID) 
  GO
  
  CREATE TABLE dbo.LOCKS (
      LOCK_ID         id_type               PRIMARY KEY,
      OBJECT_ID       id_type               NOT NULL
         REFERENCES   URI (URI_ID),
      SUBJECT_ID      id_type               NOT NULL
         REFERENCES   URI (URI_ID),
      TYPE_ID         id_type               NOT NULL
         REFERENCES   URI (URI_ID),
      EXPIRATION_DATE numeric(14, 0)      NOT NULL,
      IS_INHERITABLE  bit                   NOT NULL, 
      IS_EXCLUSIVE    bit                   NOT NULL,
      OWNER           varchar(255),
      CONSTRAINT      FK_LOCKS_LOCK_ID
         FOREIGN KEY (LOCK_ID)
         REFERENCES   URI (URI_ID)
  )
  GO
  
  CREATE TABLE dbo.BRANCH ( 
      BRANCH_ID       id_type               IDENTITY  UNIQUE NOT NULL,
      BRANCH_STRING   varchar(255)          UNIQUE NOT NULL
  )
  GO
  
  CREATE TABLE dbo.LABEL (
      LABEL_ID        id_type               IDENTITY  UNIQUE NOT NULL,
      LABEL_STRING    varchar(255)          NOT NULL
  )
  GO
  
  CREATE TABLE dbo.VERSION (
      URI_ID          id_type               PRIMARY KEY,
      IS_VERSIONED    bit                   NOT NULL,    
      CONSTRAINT      FK_VERSION_URI_ID
         FOREIGN KEY (URI_ID)
         REFERENCES   URI (URI_ID)
  )
  GO
  
  CREATE TABLE dbo.VERSION_HISTORY (
      VERSION_ID      id_type               IDENTITY  UNIQUE NOT NULL,
      URI_ID          id_type               NOT NULL
         REFERENCES   VERSION (URI_ID),
      BRANCH_ID       id_type               NOT NULL
         REFERENCES   BRANCH (BRANCH_ID),
      REVISION_NO     VARCHAR(20)                 NOT NULL,
      --UNIQUE CLUSTERED (URI_ID, BRANCH_ID, REVISION_NO)
  )
  GO
  CREATE INDEX XVERSION_HISTORY1 
        ON VERSION_HISTORY(URI_ID, BRANCH_ID, REVISION_NO) 
  GO
  
  CREATE TABLE dbo.VERSION_PREDS (
      VERSION_ID         id_type            NOT NULL
          REFERENCES  VERSION_HISTORY (VERSION_ID),
      PREDECESSOR_ID     id_type            NOT NULL
          REFERENCES  VERSION_HISTORY (VERSION_ID),
      UNIQUE CLUSTERED (VERSION_ID, PREDECESSOR_ID)
  )
  GO
  CREATE INDEX XVERSION_PREDS1 
        ON VERSION_PREDS(VERSION_ID, PREDECESSOR_ID) 
  GO
  
  CREATE TABLE dbo.VERSION_LABELS (
      VERSION_ID         id_type            NOT NULL
          REFERENCES  VERSION_HISTORY (VERSION_ID),
      LABEL_ID           id_type            NOT NULL
          REFERENCES  LABEL (LABEL_ID), 
      UNIQUE CLUSTERED (VERSION_ID, LABEL_ID)
  )
  GO
  
  CREATE TABLE dbo.VERSION_CONTENT (
      VERSION_ID         id_type            PRIMARY KEY,
      CONTENT            image              NOT NULL,
      CONSTRAINT FK_VC_VERSION_ID 
          FOREIGN KEY (VERSION_ID)
          REFERENCES  VERSION_HISTORY (VERSION_ID),
  )
  GO
  
  CREATE TABLE dbo.PROPERTIES (
      VERSION_ID         id_type            NOT NULL
          REFERENCES  VERSION_HISTORY (VERSION_ID),    
      PROPERTY_NAMESPACE varchar(50)        NOT NULL, 
      PROPERTY_NAME      varchar(50)        NOT NULL,        
      PROPERTY_VALUE     varchar(255)       NOT NULL,
      PROPERTY_TYPE      varchar(50)        NOT NULL, 
      IS_PROTECTED       bit                NOT NULL,
      UNIQUE CLUSTERED (VERSION_ID, PROPERTY_NAMESPACE, PROPERTY_NAME)
  )
  GO
  
  CREATE TABLE dbo.PERMISSIONS (
      OBJECT_ID       id_type               NOT NULL
         REFERENCES   URI (URI_ID),
      SUBJECT_ID      id_type               NOT NULL
         REFERENCES   URI (URI_ID),
      ACTION_ID       id_type               NOT NULL
         REFERENCES   URI (URI_ID),
      VERSION_NO      VARCHAR(20)           NULL,
      IS_INHERITABLE  bit                   NOT NULL,
      IS_NEGATIVE     bit                   NOT NULL,
      -- Both order and sequence would be more suitable, but can not be used
      SUCCESSION      int                   NOT NULL,
      UNIQUE CLUSTERED (OBJECT_ID, SUBJECT_ID, ACTION_ID),
      UNIQUE (OBJECT_ID, SUCCESSION)
  )
  GO
  
  
  
  
  1.1                  jakarta-slide/src/conf/schema/SQLServerSchema.sql
  
  Index: SQLServerSchema.sql
  ===================================================================
  /**********************************************************************/
  /******    DROP SLIDE TABLES                                     ******/
  /**********************************************************************/
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[OBJECT]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[OBJECT]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BINDING]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[BINDING]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = 
OBJECT_ID(N'[dbo].[PARENT_BINDING]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[PARENT_BINDING]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[CHILDREN]') 
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[CHILDREN]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LINKS]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[LINKS]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LOCKS]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[LOCKS]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = 
OBJECT_ID(N'[dbo].[VERSION_CONTENT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[VERSION_CONTENT]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PROPERTIES]') 
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[PROPERTIES]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PERMISSIONS]') 
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[PERMISSIONS]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = 
OBJECT_ID(N'[dbo].[VERSION_PREDS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[VERSION_PREDS]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = 
OBJECT_ID(N'[dbo].[VERSION_LABELS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[VERSION_LABELS]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = 
OBJECT_ID(N'[dbo].[VERSION_HISTORY]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[VERSION_HISTORY]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[VERSION]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BRANCH]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[BRANCH]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LABEL]') and 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[LABEL]
  GO
  
  IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[URI]') AND 
OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[URI]
  GO
  
  /**********************************************************************/
  /******    DROP EXISTING USER DEFINED DATA TYPES                 ******/
  /**********************************************************************/
  
  sp_droptype id_type
  GO
  
  sp_droptype uri_str_type
  GO
  
  sp_droptype revision_no_type
  GO
  
  sp_droptype hash_type
  GO
  
  sp_droptype literal_str_type
  GO
  
  sp_droptype value_str_type
  GO
  
  
  /**********************************************************************/
  /******    ADD USER DEFINED DATA TYPES                           ******/
  /**********************************************************************/
  
  sp_addtype id_type,           bigint
  GO
  
  sp_addtype uri_str_type,     "nvarchar(800)"
  GO
  
  sp_addtype revision_no_type, "nvarchar(20)"
  GO
  
  sp_addtype hash_type,         bigint
  GO
  
  sp_addtype literal_str_type, "nvarchar(3000)"
  GO
  
  sp_addtype value_str_type,   "nvarchar(255)"
  GO
  
  /**********************************************************************/
  /******    CREATE SLIDE TABLES                                   ******/
  /**********************************************************************/
  
  CREATE TABLE dbo.URI (
      URI_ID          id_type               IDENTITY  UNIQUE  NOT NULL,
      URI_STRING      uri_str_type          UNIQUE  NOT NULL,
   --   UNIQUE NONCLUSTERED (URI_ID)
  )
  GO
  
  CREATE INDEX XUID
        ON URI(URI_ID) 
  GO
  
  CREATE INDEX XUSTRING
        ON URI(URI_STRING) 
  GO
  
  CREATE TABLE dbo.OBJECT (
      URI_ID          id_type               PRIMARY KEY,
      CLASS_NAME      nvarchar(255)          NOT NULL,
      CONSTRAINT      FK_OBJECT_URI_ID
         FOREIGN KEY (URI_ID)
         REFERENCES   URI (URI_ID)
  )
  GO    
  
  CREATE TABLE dbo.BINDING (
      URI_ID          id_type               NOT NULL
          REFERENCES  URI (URI_ID),
      NAME            uri_str_type          NOT NULL,
      CHILD_UURI_ID    id_type              NOT NULL
          REFERENCES  URI (URI_ID),
      UNIQUE CLUSTERED (URI_ID, NAME, CHILD_UURI_ID)
  )
  GO
  
  CREATE TABLE dbo.PARENT_BINDING (
      URI_ID          id_type               NOT NULL
          REFERENCES  URI (URI_ID),
      NAME            uri_str_type          NOT NULL,
      PARENT_UURI_ID    id_type             NOT NULL
          REFERENCES  URI (URI_ID),
      UNIQUE CLUSTERED (URI_ID, NAME, PARENT_UURI_ID)
  ) 
  GO
  
  CREATE TABLE dbo.LINKS (
      URI_ID          id_type               NOT NULL  FOREIGN KEY
          REFERENCES  URI (URI_ID),
      LINK_TO_ID      id_type               NOT NULL  FOREIGN KEY
          REFERENCES  URI (URI_ID),
      --UNIQUE CLUSTERED (URI_ID, LINK_TO_ID)
  )
  GO
  
  CREATE INDEX XURI_ID
        ON LINKS(URI_ID) 
  GO
  
  
  CREATE INDEX XLINK_TO_ID
        ON LINKS(LINK_TO_ID) 
  GO
  
  CREATE TABLE dbo.LOCKS (
      LOCK_ID         id_type               PRIMARY KEY,
      OBJECT_ID       id_type               NOT NULL  FOREIGN KEY
         REFERENCES   URI (URI_ID),
      SUBJECT_ID      id_type               NOT NULL  FOREIGN KEY
         REFERENCES   URI (URI_ID),
      TYPE_ID         id_type               NOT NULL  FOREIGN KEY
         REFERENCES   URI (URI_ID),
      EXPIRATION_DATE numeric(14, 0)      NOT NULL,
      IS_INHERITABLE  bit                   NOT NULL, 
      IS_EXCLUSIVE    bit                   NOT NULL,
      OWNER           nvarchar(255),
      CONSTRAINT      FK_LOCKS_LOCK_ID
         FOREIGN KEY (LOCK_ID)
         REFERENCES   URI (URI_ID)
  )
  GO
  
  CREATE TABLE dbo.BRANCH ( 
      BRANCH_ID       id_type               IDENTITY  UNIQUE NOT NULL,
      BRANCH_STRING   nvarchar(255)          UNIQUE NOT NULL,
      UNIQUE NONCLUSTERED (BRANCH_ID)
  )
  GO
  
  CREATE TABLE dbo.LABEL (
      LABEL_ID        id_type               IDENTITY  UNIQUE NOT NULL,
      LABEL_STRING    nvarchar(255)          NOT NULL,
      UNIQUE NONCLUSTERED (LABEL_ID)
  )
  GO
  
  CREATE TABLE dbo.VERSION (
      URI_ID          id_type               PRIMARY KEY,
      IS_VERSIONED    bit                   NOT NULL,    
      CONSTRAINT      FK_VERSION_URI_ID
         FOREIGN KEY (URI_ID)
         REFERENCES   URI (URI_ID)
  )
  GO
  
  CREATE TABLE dbo.VERSION_HISTORY (
      VERSION_ID      id_type               IDENTITY  UNIQUE NOT NULL,
      URI_ID          id_type               NOT NULL  FOREIGN KEY
         REFERENCES   VERSION (URI_ID),
      BRANCH_ID       id_type               NOT NULL  FOREIGN KEY
         REFERENCES   BRANCH (BRANCH_ID),
      REVISION_NO     nVARCHAR(20)                NOT NULL,
      --UNIQUE CLUSTERED (URI_ID, BRANCH_ID, REVISION_NO)
  )
  GO
  CREATE INDEX XVERSION_HISTORY1 
        ON VERSION_HISTORY(URI_ID, BRANCH_ID, REVISION_NO) 
  GO
  
  CREATE TABLE dbo.VERSION_PREDS (
      VERSION_ID         id_type            NOT NULL  FOREIGN KEY 
          REFERENCES  VERSION_HISTORY (VERSION_ID),
      PREDECESSOR_ID     id_type            NOT NULL  FOREIGN KEY
          REFERENCES  VERSION_HISTORY (VERSION_ID),
      UNIQUE CLUSTERED (VERSION_ID, PREDECESSOR_ID)
  )
  GO
  CREATE INDEX XVERSION_PREDS1 
        ON VERSION_PREDS(VERSION_ID, PREDECESSOR_ID) 
  GO
  
  CREATE TABLE dbo.VERSION_LABELS (
      VERSION_ID         id_type            NOT NULL  FOREIGN KEY
          REFERENCES  VERSION_HISTORY (VERSION_ID),
      LABEL_ID           id_type            NOT NULL  FOREIGN KEY
          REFERENCES  LABEL (LABEL_ID), 
      UNIQUE CLUSTERED (VERSION_ID, LABEL_ID)
  )
  GO
  
  CREATE TABLE dbo.VERSION_CONTENT (
      VERSION_ID         id_type            PRIMARY KEY,
      CONTENT            image              NOT NULL,
      CONSTRAINT FK_VC_VERSION_ID 
          FOREIGN KEY (VERSION_ID)
          REFERENCES  VERSION_HISTORY (VERSION_ID),
  )
  GO
  
  CREATE TABLE dbo.PROPERTIES (
      VERSION_ID         id_type            NOT NULL  FOREIGN KEY
          REFERENCES  VERSION_HISTORY (VERSION_ID),    
      PROPERTY_NAMESPACE nvarchar(50)        NOT NULL, 
      PROPERTY_NAME      nvarchar(50)        NOT NULL,        
      PROPERTY_VALUE     nvarchar(255)       NOT NULL,
      PROPERTY_TYPE      nvarchar(50)        NOT NULL, 
      IS_PROTECTED       bit                NOT NULL,
      UNIQUE CLUSTERED (VERSION_ID, PROPERTY_NAMESPACE, PROPERTY_NAME)
  )
  GO
  
  CREATE TABLE dbo.PERMISSIONS (
      OBJECT_ID       id_type               NOT NULL  FOREIGN KEY
         REFERENCES   URI (URI_ID),
      SUBJECT_ID      id_type               NOT NULL  FOREIGN KEY
         REFERENCES   URI (URI_ID),
      ACTION_ID       id_type               NOT NULL  FOREIGN KEY
         REFERENCES   URI (URI_ID),
      VERSION_NO      nVARCHAR(20)           NULL,
      IS_INHERITABLE  bit                   NOT NULL,
      IS_NEGATIVE     bit                   NOT NULL,
      -- Both order and sequence would be more suitable, but can not be used
      SUCCESSION      int                   NOT NULL,
      UNIQUE CLUSTERED (OBJECT_ID, SUBJECT_ID, ACTION_ID),
      UNIQUE (OBJECT_ID, SUCCESSION)
  )
  GO
  
  
  1.1                  jakarta-slide/src/conf/schema/createPostgresSchema.sql
  
  Index: createPostgresSchema.sql
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-slide/src/conf/schema/createPostgresSchema.sql,v 1.1 
2004/02/25 09:13:20 ozeigermann Exp $
   * $Revision: 1.1 $
   * $Date: 2004/02/25 09:13:20 $
   *
   * ====================================================================
   *
   * Copyright 1999-2002 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  
  /*
   * create the SQL schema used by org.apache.slide.impl.rdbms.PostgresAdapter.
   * Tested with Postgres 7.4.
   *
   */
  
  CREATE TABLE URI (
      URI_ID          serial               PRIMARY KEY  NOT NULL,
      URI_STRING      varchar(800)          UNIQUE NOT NULL
  );
  
  
  
  CREATE TABLE OBJECT (
      URI_ID          integer               PRIMARY KEY,
      CLASS_NAME      varchar(255)          NOT NULL,
      CONSTRAINT      FK_OBJECT_URI_ID
         FOREIGN KEY (URI_ID)
         REFERENCES   URI (URI_ID)
  );
  
  
  CREATE TABLE BINDING (
    URI_ID         integer              NOT NULL  REFERENCES URI(URI_ID), 
    NAME           varchar(255)                 NOT NULL,
    CHILD_UURI_ID  integer              NOT NULL  REFERENCES URI(URI_ID), 
    PRIMARY KEY    (URI_ID, NAME, CHILD_UURI_ID) 
  );
  
  
  CREATE TABLE PARENT_BINDING (
      URI_ID        integer               NOT NULL  REFERENCES  URI (URI_ID),
      NAME          varchar(255)          NOT NULL, 
      PARENT_UURI_ID integer              NOT NULL  REFERENCES  URI (URI_ID),
      PRIMARY KEY    (URI_ID, NAME, PARENT_UURI_ID)
  ); 
  
  /* TODO Which indices for binding? */
  
  
  CREATE TABLE LINKS (
      URI_ID          integer               NOT NULL  REFERENCES  URI (URI_ID),
      LINK_TO_ID      integer               NOT NULL  REFERENCES  URI (URI_ID),
      UNIQUE (URI_ID, LINK_TO_ID)
  );
  
  CREATE INDEX XURI_ID
        ON LINKS(URI_ID); 
  
  
  CREATE INDEX XLINK_TO_ID
        ON LINKS(LINK_TO_ID); 
  
  CREATE TABLE LOCKS (
      LOCK_ID         integer               PRIMARY KEY, 
      OBJECT_ID       integer               REFERENCES   URI (URI_ID),
      SUBJECT_ID      integer               REFERENCES   URI (URI_ID),
      TYPE_ID         integer               REFERENCES   URI (URI_ID),
      EXPIRATION_DATE numeric(14, 0)      NOT NULL,
      IS_INHERITABLE  smallint              NOT NULL, 
      IS_EXCLUSIVE    smallint              NOT NULL,
      OWNER           varchar(255),                     
      CONSTRAINT      FK_LOCKS_LOCK_ID
         FOREIGN KEY (LOCK_ID)
         REFERENCES   URI (URI_ID)
  );
  
  
  CREATE TABLE BRANCH ( 
      BRANCH_ID       serial               UNIQUE NOT NULL,
      BRANCH_STRING   varchar(255)          UNIQUE NOT NULL
  );
  
  CREATE TABLE LABEL (
      LABEL_ID        serial               UNIQUE NOT NULL,
      LABEL_STRING    varchar(255)         NOT NULL
  );
  
  CREATE TABLE VERSION (
      URI_ID          integer               PRIMARY KEY,
      IS_VERSIONED    smallint                   NOT NULL,    
      CONSTRAINT      FK_VERSION_URI_ID
         FOREIGN KEY (URI_ID)
         REFERENCES   URI (URI_ID)
  );
  
  
  CREATE TABLE VERSION_HISTORY (
      VERSION_ID      serial               UNIQUE NOT NULL,
      URI_ID          integer               NOT NULL  REFERENCES   URI (URI_ID),
      BRANCH_ID       integer               NOT NULL  REFERENCES   BRANCH (BRANCH_ID),
      REVISION_NO     VARCHAR(20)                 NOT NULL,
      UNIQUE (URI_ID, BRANCH_ID, REVISION_NO)
  );
  
  CREATE INDEX XVERSION_HISTORY1 
        ON VERSION_HISTORY(URI_ID, BRANCH_ID, REVISION_NO); 
  
  
  CREATE TABLE VERSION_PREDS (
      VERSION_ID         integer            NOT NULL  REFERENCES  VERSION_HISTORY 
(VERSION_ID),
      PREDECESSOR_ID     integer            NOT NULL  REFERENCES  VERSION_HISTORY 
(VERSION_ID),
      UNIQUE (VERSION_ID, PREDECESSOR_ID)
  );
  
  CREATE INDEX XVERSION_PREDS1 
        ON VERSION_PREDS(VERSION_ID, PREDECESSOR_ID); 
  
  
  CREATE TABLE VERSION_LABELS (
      VERSION_ID         integer            NOT NULL  REFERENCES  VERSION_HISTORY 
(VERSION_ID),
      LABEL_ID           integer            NOT NULL  REFERENCES  LABEL (LABEL_ID), 
      UNIQUE (VERSION_ID, LABEL_ID)
  );
  
  
  CREATE TABLE VERSION_CONTENT (
      VERSION_ID         integer            PRIMARY KEY REFERENCES VERSION_HISTORY 
(VERSION_ID),
      CONTENT            bytea
  );
  
  
  CREATE TABLE PROPERTIES (
      VERSION_ID         integer            NOT NULL  REFERENCES  VERSION_HISTORY 
(VERSION_ID),    
      PROPERTY_NAMESPACE varchar(50)        NOT NULL, 
      PROPERTY_NAME      varchar(50)        NOT NULL,        
      PROPERTY_VALUE     varchar(255)       NOT NULL,
      PROPERTY_TYPE      varchar(50)        NOT NULL, 
      IS_PROTECTED       smallint                NOT NULL,
      UNIQUE  (VERSION_ID, PROPERTY_NAMESPACE, PROPERTY_NAME)
  );
  
  
  CREATE TABLE PERMISSIONS (
      OBJECT_ID       integer               NOT NULL  REFERENCES   URI (URI_ID),
      SUBJECT_ID      integer               NOT NULL  REFERENCES   URI (URI_ID),
      ACTION_ID       integer               NOT NULL  REFERENCES   URI (URI_ID),
      VERSION_NO      VARCHAR(20)           NULL,
      IS_INHERITABLE  smallint                   NOT NULL,
      IS_NEGATIVE     smallint                   NOT NULL,
      -- Both order and sequence would be more suitable, but can not be used
      SUCCESSION      int                   NOT NULL,
      UNIQUE (OBJECT_ID, SUBJECT_ID, ACTION_ID),
      UNIQUE (OBJECT_ID, SUCCESSION)
  );
  
  /**
   * The views are not used by slide, but only as a  debugging/administration help. 
   */
  CREATE VIEW OBJECT_VIEW AS 
    SELECT u.URI_STRING,o.CLASS_NAME FROM URI u, OBJECT o WHERE o.URI_ID = u.URI_ID;
  
  CREATE VIEW BINDING_VIEW AS 
     SELECT u1.URI_STRING AS PARENT,u2.URI_STRING AS CHILD 
        FROM BINDING b,URI u1, URI u2 WHERE b.URI_ID = u1.URI_ID AND b.CHILD_UURI_ID = 
u2.URI_ID;
  
  CREATE VIEW PERMISSIONS_VIEW AS 
     SELECT u1.URI_STRING AS OBJECT, u2.URI_STRING AS SUBJECT, u3.URI_STRING AS ACTION,
          p.VERSION_NO,p.IS_INHERITABLE,p.IS_NEGATIVE, p.SUCCESSION
        FROM PERMISSIONS p,URI u1,URI u2, URI u3
        WHERE p.OBJECT_ID = u1.URI_ID AND p.SUBJECT_ID = u2.URI_ID AND p.ACTION_ID = 
u3.URI_ID;
  
  CREATE VIEW LOCKS_VIEW AS
    SELECT l.LOCK_ID,ou.URI_STRING AS OBJECT,su.URI_STRING AS SUBJECT,tu.URI_STRING AS 
TYPE ,l.EXPIRATION_DATE,l.IS_INHERITABLE,l.IS_EXCLUSIVE
      FROM LOCKS l, URI ou,URI su,URI tu 
      WHERE l.OBJECT_ID = ou.URI_ID AND         l.SUBJECT_ID = su.URI_ID AND l.TYPE_ID 
= su.URI_ID;
  
  

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

Reply via email to