blob: 3d8ef3003b9bd1f85de0b79f23487406902f422e [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<tns:store xmlns:tns="http://tajo.apache.org/catalogstore" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tajo.apache.org/catalogstore ../DBMSSchemaDefinition.xsd ">
<!--
Catalog base version history
* 6 - 2015-07-24: Merge the index branch into the master branch (TAJO-1300)
* 5 - 2015-06-15: Implement TablespaceManager to load Tablespaces (TAJO-1616)
* 4 - 2015-03-27: Partition Schema (TAJO-1284)
* 3 - 2015-03-12: Nested Schema (TAJO-1329)
* 2 - 2014-06-09: First versioning
* 1- Before 2013-03-20
-->
<tns:base version="6">
<tns:objects>
<tns:Object order="0" type="table" name="meta">
<tns:sql><![CDATA[
CREATE TABLE META (VERSION INT NOT NULL)]]>
</tns:sql>
</tns:Object>
<tns:Object order="1" type="table" name="tablespaces">
<tns:sql><![CDATA[
CREATE TABLE TABLESPACES (
SPACE_ID NUMBER(10) NOT NULL PRIMARY KEY,
SPACE_NAME VARCHAR2(128) NOT NULL UNIQUE,
SPACE_HANDLER VARCHAR2(1024) DEFAULT 'HDFS',
SPACE_URI VARCHAR2(4000) NOT NULL
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="2" type="sequence" name="TABLESPACES_SEQ">
<tns:sql><![CDATA[CREATE SEQUENCE TABLESPACES_SEQ]]></tns:sql>
</tns:Object>
<tns:Object order="3" type="trigger" name="TABLESPACES_AUTOINC">
<tns:sql><![CDATA[
CREATE OR REPLACE TRIGGER TABLESPACES_AUTOINC
BEFORE INSERT ON TABLESPACES
FOR EACH ROW
WHEN (new.SPACE_ID IS NULL)
BEGIN
SELECT TABLESPACES_SEQ.NEXTVAL INTO :new.SPACE_ID FROM DUAL;
END;]]>
</tns:sql>
</tns:Object>
<tns:Object order="4" type="table" name="DATABASES_">
<tns:sql><![CDATA[
CREATE TABLE DATABASES_ (
DB_ID NUMBER(10) NOT NULL PRIMARY KEY,
DB_NAME VARCHAR2(128) NOT NULL UNIQUE,
SPACE_ID INT NOT NULL,
FOREIGN KEY (SPACE_ID) REFERENCES TABLESPACES (SPACE_ID)
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="5" type="sequence" name="DATABASES__SEQ">
<tns:sql><![CDATA[
CREATE SEQUENCE DATABASES__SEQ
]]>
</tns:sql>
</tns:Object>
<tns:Object order="6" type="trigger" name="DATABASES__AUTOINC">
<tns:sql><![CDATA[
CREATE OR REPLACE TRIGGER DATABASES__AUTOINC
BEFORE INSERT ON DATABASES_
FOR EACH ROW
WHEN (new.DB_ID IS NULL)
BEGIN
SELECT DATABASES__SEQ.NEXTVAL INTO :new.DB_ID FROM DUAL;
END;]]>
</tns:sql>
</tns:Object>
<tns:Object order="7" type="table" name="TABLES">
<tns:sql><![CDATA[
CREATE TABLE TABLES (
TID NUMBER(10) NOT NULL PRIMARY KEY,
DB_ID INT NOT NULL,
TABLE_NAME VARCHAR2(128) NOT NULL,
TABLE_TYPE VARCHAR2(128) NOT NULL,
PATH VARCHAR2(4000),
STORE_TYPE CHAR(16),
FOREIGN KEY (DB_ID) REFERENCES DATABASES_ (DB_ID)
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="8" type="sequence" name="TABLES_SEQ">
<tns:sql><![CDATA[
CREATE SEQUENCE TABLES_SEQ
]]>
</tns:sql>
</tns:Object>
<tns:Object order="9" type="trigger" name="TABLES_AUTOINC">
<tns:sql><![CDATA[
CREATE OR REPLACE TRIGGER TABLES_AUTOINC
BEFORE INSERT ON TABLES
FOR EACH ROW
WHEN (new.TID IS NULL)
BEGIN
SELECT TABLES_SEQ.NEXTVAL INTO :new.TID FROM DUAL;
END;]]>
</tns:sql>
</tns:Object>
<tns:Object order="10" type="index" name="TABLES_IDX_DB_ID" dependsOn="TABLES">
<tns:sql><![CDATA[CREATE INDEX TABLES_IDX_DB_ID on TABLES (DB_ID)]]></tns:sql>
</tns:Object>
<tns:Object order="11" type="index" name="TABLES_IDX_TABLE_ID" dependsOn="TABLES">
<tns:sql><![CDATA[CREATE UNIQUE INDEX TABLES_IDX_TABLE_ID on TABLES (DB_ID, TABLE_NAME)]]></tns:sql>
</tns:Object>
<tns:Object order="12" type="table" name="COLUMNS">
<tns:sql><![CDATA[
CREATE TABLE COLUMNS (
TID INT NOT NULL,
COLUMN_NAME VARCHAR2(255) NOT NULL,
ORDINAL_POSITION INT NOT NULL,
NESTED_FIELD_NUM INT NOT NULL,
DATA_TYPE CHAR(16),
TYPE_LENGTH INTEGER,
CONSTRAINT COLUMNS_PKEY PRIMARY KEY (TID, ORDINAL_POSITION),
FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="13" type="table" name="OPTIONS">
<tns:sql><![CDATA[
CREATE TABLE OPTIONS (
TID INT NOT NULL,
KEY_ VARCHAR2(255) NOT NULL,
VALUE_ VARCHAR2(4000) NOT NULL,
CONSTRAINT OPTIONS_PKEY PRIMARY KEY (TID, KEY_),
FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="14" type="table" name="INDEXES">
<tns:sql><![CDATA[
CREATE TABLE INDEXES (
INDEX_ID NUMBER(10) NOT NULL PRIMARY KEY,
DB_ID INT NOT NULL,
TID INT NOT NULL,
INDEX_NAME VARCHAR2(128) NOT NULL,
INDEX_TYPE CHAR(32) NOT NULL,
PATH VARCHAR(4096) NOT NULL,
COLUMN_NAMES VARCHAR(256) NOT NULL, -- array of column names
DATA_TYPES VARCHAR(128) NOT NULL, -- array of column types
ORDERS VARCHAR(128) NOT NULL, -- array of column orders
NULL_ORDERS VARCHAR(128) NOT NULL, -- array of null orderings
IS_UNIQUE CHAR NOT NULL,
IS_CLUSTERED CHAR NOT NULL,
IS_ASCENDING CHAR NOT NULL,
FOREIGN KEY (DB_ID) REFERENCES DATABASES_ (DB_ID) ON DELETE CASCADE,
FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="15" type="index" name="INDEXES_IDX_TID_COLUMN_NAME" dependsOn="INDEXES">
<tns:sql><![CDATA[CREATE INDEX INDEXES_IDX_TID_COLUMN_NAME on INDEXES (TID, COLUMN_NAME)]]></tns:sql>
</tns:Object>
<tns:Object order="16" type="table" name="STATS">
<tns:sql><![CDATA[
CREATE TABLE STATS (
TID INT NOT NULL PRIMARY KEY,
NUM_ROWS NUMBER(38),
NUM_BYTES NUMBER(38),
FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="17" type="table" name="PARTITION_METHODS">
<tns:sql><![CDATA[
CREATE TABLE PARTITION_METHODS (
TID INT NOT NULL PRIMARY KEY,
PARTITION_TYPE VARCHAR2(10) NOT NULL,
EXPRESSION VARCHAR2(1024) NOT NULL,
EXPRESSION_SCHEMA RAW(1024) NOT NULL,
FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="18" type="table" name="PARTITIONS">
<tns:sql><![CDATA[
CREATE TABLE PARTITIONS (
PARTITION_ID INT NOT NULL PRIMARY KEY,
TID INT NOT NULL,
PARTITION_NAME VARCHAR2(767),
PATH VARCHAR2(4000),
FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="19" type="sequence" name="PARTITIONS_SEQ">
<tns:sql><![CDATA[
CREATE SEQUENCE PARTITIONS_SEQ
]]>
</tns:sql>
</tns:Object>
<tns:Object order="20" type="trigger" name="PARTITIONS_AUTOINC">
<tns:sql><![CDATA[
CREATE OR REPLACE TRIGGER PARTITIONS_AUTOINC
BEFORE INSERT ON PARTITIONS
FOR EACH ROW
WHEN (new.PARTITION_ID IS NULL)
BEGIN
SELECT PARTITIONS_SEQ.NEXTVAL INTO :new.PARTITION_ID FROM DUAL;
END;]]>
</tns:sql>
</tns:Object>
<tns:Object order="21" type="table" name="PARTITION_KEYS">
<tns:sql><![CDATA[
CREATE TABLE PARTITION_KEYS (
PARTITION_ID INT NOT NULL,
COLUMN_NAME VARCHAR2(255) NOT NULL,
PARTITION_VALUE VARCHAR(255) NULL,
FOREIGN KEY (PARTITION_ID) REFERENCES PARTITIONS (PARTITION_ID) ON DELETE CASCADE
)]]>
</tns:sql>
</tns:Object>
<tns:Object order="23" type="index" name="PARTITION_KEYS_IDX" dependsOn="PARTITION_KEYS">
<tns:sql><![CDATA[CREATE INDEX PARTITION_KEYS_IDX on PARTITION_KEYS (PARTITION_ID, COLUMN_NAME, PARTITION_VALUE)]]></tns:sql>
</tns:Object>
</tns:objects>
</tns:base>
<tns:existQueries>
<tns:existQuery type="trigger">
<tns:sql><![CDATA[SELECT TRIGGER_NAME FROM USER_TRIGGERS]]></tns:sql>
</tns:existQuery>
<tns:existQuery type="sequence">
<tns:sql><![CDATA[SELECT SEQUENCE_NAME FROM USER_SEQUENCES]]></tns:sql>
</tns:existQuery>
<tns:existQuery type="view">
<tns:sql><![CDATA[SELECT VIEW_NAME FROM USER_VIEWS]]></tns:sql>
</tns:existQuery>
<tns:existQuery type="index">
<tns:sql><![CDATA[SELECT INDEX_NAME FROM USER_INDEXES]]></tns:sql>
</tns:existQuery>
</tns:existQueries>
<tns:dropStatements>
<tns:dropStatement type="table">
<tns:sql><![CDATA[DROP TABLE ? CASCADE CONSTRAINT]]></tns:sql>
</tns:dropStatement>
</tns:dropStatements>
</tns:store>