| <?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 |
| * 13 - 2016-05-10: Apply new type implementation to Schema and Catalog. (TAJO-2129) |
| * 12 - 2015-09-28: Change the variable name storeType to dataFormat (TAJO-1663) |
| * 11 - 2015-09-23: Add contents length and file count for partition directory (TAJO-1493) |
| * 10 - 2015-09-22: Well support for self-describing data formats (TAJO-1832) |
| * 9 - 2015-09-12: Allow external catalog store for unit testing (TAJO-1813) |
| * 8 - 2015-09-02: Wrong table type problem in catalog (TAJO-1808) |
| * 7 - 2015-07-30: Add a column and index for partition keys (TAJO-1346) |
| * 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="12"> |
| <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 int NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), |
| SPACE_NAME VARCHAR(128) NOT NULL CONSTRAINT SPACE_UNIQUE UNIQUE, |
| SPACE_HANDLER VARCHAR (1024) DEFAULT 'HDFS', |
| SPACE_URI VARCHAR (4096) NOT NULL, |
| CONSTRAINT C_SPACE_PK PRIMARY KEY (SPACE_ID) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="2" type="table" name="DATABASES_"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE DATABASES_ ( |
| DB_ID int NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), |
| DB_NAME VARCHAR(128) NOT NULL CONSTRAINT DB_NAME_UNIQ UNIQUE, |
| SPACE_ID INT NOT NULL REFERENCES TABLESPACES (SPACE_ID), |
| CONSTRAINT DATABASES_PK PRIMARY KEY (DB_ID) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="3" type="index" name="IDX_DATABASE_DB_NAME" dependsOn="DATABASES_"> |
| <tns:sql><![CDATA[CREATE UNIQUE INDEX idx_database_db_id on DATABASES_ (DB_NAME)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="4" type="table" name="TABLES"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE TABLES ( |
| TID int NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), |
| DB_ID int NOT NULL REFERENCES DATABASES_ (DB_ID), |
| TABLE_NAME VARCHAR(128) NOT NULL, |
| TABLE_TYPE VARCHAR(128) NOT NULL, |
| PATH VARCHAR(4096), |
| DATA_FORMAT CHAR(16), |
| HAS_SELF_DESCRIBE_SCHEMA BOOLEAN, |
| CONSTRAINT TABLES_PK PRIMARY KEY (TID), |
| CONSTRAINT C_TABLE_ID_UNIQ UNIQUE (DB_ID, TABLE_NAME) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="5" type="index" name="IDX_TABLES_TID" dependsOn="TABLES"> |
| <tns:sql><![CDATA[CREATE UNIQUE INDEX idx_tables_tid on TABLES (TID)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="6" type="index" name="IDX_TABLES_NAME" dependsOn="TABLES"> |
| <tns:sql><![CDATA[CREATE UNIQUE INDEX idx_tables_name on TABLES (DB_ID, TABLE_NAME)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="7" type="table" name="COLUMNS"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE COLUMNS ( |
| TID INT NOT NULL REFERENCES TABLES (TID) ON DELETE CASCADE, |
| COLUMN_NAME VARCHAR(128) NOT NULL, |
| ORDINAL_POSITION INTEGER NOT NULL, |
| DATA_TYPE VARCHAR(8192), |
| CONSTRAINT COLUMNS_PK PRIMARY KEY (TID, ORDINAL_POSITION) |
| )]]> |
| </tns:sql> |
| <!-- |
| The constraint for guaranteeing the unique column name should be added to COLUMNS table. However, it can |
| make this table's schema complicated due to nested fields. Fortunately, columns are always converted |
| into 'schema' which has a functionality of checking duplicated column names. |
| --> |
| </tns:Object> |
| <tns:Object order="8" type="index" name="IDX_FK_COLUMNS_TABLE_NAME" dependsOn="COLUMNS"> |
| <tns:sql><![CDATA[CREATE UNIQUE INDEX idx_fk_columns_table_name on COLUMNS (TID, ORDINAL_POSITION)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="9" type="table" name="OPTIONS"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE OPTIONS ( |
| TID INT NOT NULL REFERENCES TABLES (TID) ON DELETE CASCADE, |
| KEY_ VARCHAR(255) NOT NULL, |
| VALUE_ VARCHAR(4000) NOT NULL, |
| CONSTRAINT OPTIONS_PKEY PRIMARY KEY (TID, KEY_) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="10" type="index" name="IDX_OPTIONS_KEY" dependsOn="OPTIONS"> |
| <tns:sql><![CDATA[CREATE INDEX idx_options_key on OPTIONS (TID)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="11" type="table" name="INDEXES"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE INDEXES ( |
| INDEX_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), |
| DB_ID INT NOT NULL REFERENCES DATABASES_ (DB_ID) ON DELETE CASCADE, |
| TID INT NOT NULL REFERENCES TABLES (TID) ON DELETE CASCADE, |
| INDEX_NAME VARCHAR(128) NOT NULL, |
| INDEX_TYPE CHAR(32) NOT NULL, |
| PATH VARCHAR(4096), |
| COLUMN_NAMES VARCHAR(255) 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 BOOLEAN NOT NULL, |
| IS_CLUSTERED BOOLEAN NOT NULL, |
| FOREIGN KEY (DB_ID) REFERENCES DATABASES_ (DB_ID) ON DELETE CASCADE, |
| FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE, |
| CONSTRAINT INDEXES_PK PRIMARY KEY (INDEX_ID), |
| CONSTRAINT C_INDEXES_UNIQ UNIQUE (DB_ID, INDEX_NAME) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="12" type="index" name="IDX_INDEXES_PK" dependsOn="INDEXES"> |
| <tns:sql><![CDATA[CREATE UNIQUE INDEX idx_indexes_pk ON INDEXES (DB_ID,index_name)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="13" type="index" name="IDX_INDEXES_COLUMNS" dependsOn="INDEXES"> |
| <tns:sql><![CDATA[CREATE INDEX idx_col_names ON INDEXES (DB_ID,TID,column_names)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="14" type="table" name="STATS"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE STATS ( |
| TID INT NOT NULL PRIMARY KEY, |
| NUM_ROWS BIGINT, |
| NUM_BYTES BIGINT, |
| FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="15" type="index" name="IDX_STATS_TABLE_NAME" dependsOn="STATS"> |
| <tns:sql><![CDATA[CREATE UNIQUE INDEX IDX_STATS_TABLE_NAME ON STATS (TID)]]></tns:sql> |
| </tns:Object> |
| <tns:Object order="16" type="table" name="PARTITION_METHODS"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE PARTITION_METHODS ( |
| TID INT NOT NULL REFERENCES TABLES (TID) ON DELETE CASCADE, |
| PARTITION_TYPE VARCHAR(10) NOT NULL, |
| EXPRESSION VARCHAR(1024) NOT NULL, |
| EXPRESSION_SCHEMA VARCHAR(1024) FOR BIT DATA NOT NULL |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object order="17" type="index" name="IDX_PARTITION_METHODS_TABLE_ID" dependsOn="PARTITION_METHODS"> |
| <tns:sql><![CDATA[CREATE INDEX idx_partition_methods_table_id ON PARTITION_METHODS (TID)]]></tns:sql> |
| </tns:Object> |
| <tns:Object name="PARTITIONS" type="table" order="18"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE PARTITIONS ( |
| PARTITION_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), |
| TID INT NOT NULL REFERENCES TABLES (TID) ON DELETE CASCADE, |
| PARTITION_NAME VARCHAR(767), |
| PATH VARCHAR(1024), |
| NUM_BYTES BIGINT, |
| CONSTRAINT C_PARTITIONS_PK PRIMARY KEY (PARTITION_ID), |
| CONSTRAINT C_PARTITIONS_UNIQ UNIQUE (TID, PARTITION_NAME) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object name="PARTITIONS_IDX" type="index" dependsOn="PARTITIONS" order="19"> |
| <tns:sql><![CDATA[CREATE INDEX PARTITIONS_IDX ON PARTITIONS(PARTITION_ID, TID, PARTITION_NAME)]]></tns:sql> |
| </tns:Object> |
| <tns:Object name="PARTITION_KEYS" type="table" order="20"> |
| <tns:sql><![CDATA[ |
| CREATE TABLE PARTITION_KEYS ( |
| PARTITION_ID INT NOT NULL REFERENCES PARTITIONS (PARTITION_ID) ON DELETE CASCADE, |
| TID INT NOT NULL, |
| COLUMN_NAME VARCHAR(128) NOT NULL, |
| PARTITION_VALUE VARCHAR(255) |
| )]]> |
| </tns:sql> |
| </tns:Object> |
| <tns:Object name="PARTITION_KEYS_IDX" type="index" dependsOn="PARTITION_KEYS" order="21"> |
| <tns:sql><![CDATA[CREATE INDEX PARTITION_KEYS_IDX ON PARTITION_KEYS(TID , COLUMN_NAME, PARTITION_VALUE)]]></tns:sql> |
| </tns:Object> |
| </tns:objects> |
| </tns:base> |
| <tns:existQueries> |
| <tns:existQuery type="trigger"> |
| <tns:sql><![CDATA[ |
| select a.TRIGGERNAME from SYS.SYSTRIGGERS a |
| ]]></tns:sql> |
| </tns:existQuery> |
| <tns:existQuery type="sequence"> |
| <tns:sql><![CDATA[ |
| select a.SEQUENCENAME from SYS.SYSSEQUENCES a |
| ]]></tns:sql> |
| </tns:existQuery> |
| <tns:existQuery type="view"> |
| <tns:sql><![CDATA[ |
| select a.TABLENAME from SYS.SYSTABLES a where a.TABLETYPE = 'V' |
| ]]></tns:sql> |
| </tns:existQuery> |
| </tns:existQueries> |
| <tns:dropStatements> |
| <tns:dropStatement type="sequence"> |
| <tns:sql><![CDATA[DROP SEQUENCE ? RESTRICT]]></tns:sql> |
| </tns:dropStatement> |
| </tns:dropStatements> |
| </tns:store> |