http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/DBMSSchemaDefinition.xsd
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/DBMSSchemaDefinition.xsd
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/DBMSSchemaDefinition.xsd
new file mode 100644
index 0000000..be37807
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/DBMSSchemaDefinition.xsd
@@ -0,0 +1,177 @@
+<?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.
+  -->
+<schema targetNamespace="http://tajo.apache.org/catalogstore"; 
+       elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"; 
+       xmlns:tns="http://tajo.apache.org/catalogstore";>
+
+    <simpleType name="DatabaseObjectsType">
+       <annotation>
+               <documentation>
+                       PostgreSQL defines its database objects in this
+                       following link
+                       
(http://www.postgresql.org/docs/9.3/static/server-programming.html).
+                       We also need to define these objects type to support in
+                       our catalog stores.
+               </documentation>
+       </annotation>
+       <restriction base="string">
+               <enumeration value="table"></enumeration>
+               <enumeration value="view"></enumeration>
+               <enumeration value="function"></enumeration>
+               <enumeration value="operator"></enumeration>
+               <enumeration value="data"></enumeration>
+               <enumeration value="domain"></enumeration>
+               <enumeration value="trigger"></enumeration>
+               <enumeration value="rule"></enumeration>
+               <enumeration value="sequence"></enumeration>
+               <enumeration value="index"></enumeration>
+       </restriction>
+    </simpleType>
+
+    <simpleType name="ExecutionOrderType">
+       <restriction base="int">
+               <minInclusive value="0"></minInclusive>
+       </restriction>
+    </simpleType>
+    
+    <complexType name="ObjectsType">
+       <sequence minOccurs="0" maxOccurs="unbounded">
+               <element name="Object" type="tns:ObjectType" minOccurs="1" 
maxOccurs="unbounded"></element>
+       </sequence>
+    </complexType>
+    
+    <complexType name="ObjectType">
+       <sequence>
+               <element name="sql" type="tns:SqlType" minOccurs="1"></element>
+       </sequence>
+       <attributeGroup ref="tns:ObjectAttributeGroup"></attributeGroup>
+    </complexType>
+    
+    <attributeGroup name="ObjectAttributeGroup">
+        <attribute name="name" type="tns:ObjectNameType" 
use="required"></attribute>
+        <attribute name="order" type="tns:ExecutionOrderType"></attribute>
+       <attribute name="dependsOn" type="tns:ObjectNameType"></attribute>
+       <attribute name="type" type="tns:DatabaseObjectsType"
+               use="required">
+       </attribute>
+    </attributeGroup>
+
+    <simpleType name="SqlType">
+       <restriction base="string"></restriction>
+    </simpleType>
+
+    <complexType name="PatchesType">
+       <sequence>
+               <element name="patch" type="tns:PatchType" minOccurs="0" 
maxOccurs="unbounded"></element>
+       </sequence>
+    </complexType>
+    
+    <complexType name="BaseSchemaType">
+       <sequence>
+               <element name="objects" type="tns:ObjectsType" minOccurs="0" 
maxOccurs="1"></element>
+       </sequence>
+        <attributeGroup ref="tns:BaseSchemaAttributeGroup"></attributeGroup>
+    </complexType>
+
+    <attributeGroup name="BaseSchemaAttributeGroup">
+        <attribute name="schemaname" type="tns:SchemaNameType" 
use="optional"></attribute>
+        <attribute name="version" type="tns:SchemaVersionType"
+               use="required">
+       </attribute>
+    </attributeGroup>
+
+    <simpleType name="SchemaVersionType">
+       <restriction base="int">
+               <minInclusive value="0"></minInclusive>
+       </restriction>
+    </simpleType>
+
+    <complexType name="PatchType">
+       <sequence>
+               <element name="objects" type="tns:ObjectsType" minOccurs="0" 
maxOccurs="1"></element>
+       </sequence>
+        <attributeGroup ref="tns:PatchAttributeGroup"></attributeGroup>
+    </complexType>
+    
+    <simpleType name="ObjectNameType">
+       <restriction base="string">
+               <minLength value="1"></minLength>
+       </restriction>
+    </simpleType>
+
+    <simpleType name="SchemaNameType">
+       <restriction base="string">
+               <minLength value="1"></minLength>
+       </restriction>
+    </simpleType>
+
+    <attributeGroup name="PatchAttributeGroup">
+       <attribute name="priorVersion" type="tns:SchemaVersionType"
+               use="required">
+       </attribute>
+       <attribute name="nextVersion" type="tns:SchemaVersionType"></attribute>
+    </attributeGroup>
+
+    <complexType name="CatalogStoreType">
+       <sequence>
+               <element name="base" type="tns:BaseSchemaType" minOccurs="0"
+                       maxOccurs="1">
+               </element>
+               <element name="patches" type="tns:PatchesType" minOccurs="0"
+                       maxOccurs="1">
+               </element>
+               <element name="existQueries" type="tns:ExistsQueriesType"
+                       minOccurs="0" maxOccurs="1">
+               </element>
+               <element name="dropStatements" type="tns:DropStatementsType" 
minOccurs="0" maxOccurs="1"></element>
+       </sequence>
+    </complexType>
+
+    <element name="store" type="tns:CatalogStoreType"></element>
+
+    <complexType name="ExistsQueryType">
+       <sequence>
+               <element name="sql" type="tns:SqlType" minOccurs="1" 
maxOccurs="1"></element>
+       </sequence>
+       <attribute name="type" type="tns:DatabaseObjectsType"
+               use="required">
+       </attribute>
+    </complexType>
+
+    <complexType name="ExistsQueriesType">
+       <sequence>
+               <element name="existQuery" type="tns:ExistsQueryType" 
minOccurs="0" maxOccurs="unbounded"></element>
+       </sequence>
+    </complexType>
+
+    <complexType name="DropStatementsType">
+       <sequence>
+               <element name="dropStatement" type="tns:DropStatementType" 
minOccurs="0" maxOccurs="unbounded"></element>
+       </sequence>
+    </complexType>
+
+    <complexType name="DropStatementType">
+       <sequence>
+               <element name="sql" type="tns:SqlType" minOccurs="1" 
maxOccurs="1"></element>
+       </sequence>
+       <attribute name="type" type="tns:DatabaseObjectsType"
+               use="required">
+       </attribute>
+    </complexType>
+</schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/columns.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/columns.sql 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/columns.sql
deleted file mode 100644
index e274f3c..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/columns.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-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 CHAR(16),
-  TYPE_LENGTH INTEGER,
-  CONSTRAINT COLUMNS_PK PRIMARY KEY (TID, COLUMN_NAME)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases.sql
deleted file mode 100644
index 8cabb14..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-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)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases_idx.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases_idx.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases_idx.sql
deleted file mode 100644
index c9c7d4e..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/databases_idx.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE UNIQUE INDEX idx_database_db_id on DATABASES_ (DB_ID)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/derby.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/derby.xml 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/derby.xml
new file mode 100644
index 0000000..db2473b
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/derby.xml
@@ -0,0 +1,186 @@
+<?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 ">
+       <tns:base version="2">
+               <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_ID" dependsOn="DATABASES_">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
idx_database_db_id on DATABASES_ (DB_ID)]]></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),
+                               STORE_TYPE CHAR(16),
+                               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 CHAR(16),
+                               TYPE_LENGTH INTEGER,
+                               CONSTRAINT COLUMNS_PK PRIMARY KEY (TID, 
COLUMN_NAME)
+                               )]]>
+                               </tns:sql>
+                       </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, COLUMN_NAME)]]></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(255) NOT NULL,
+                               CONSTRAINT C_OPTIONS_UNIQUE UNIQUE (TID, KEY_, 
VALUE_)
+                               )]]>
+                               </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 (
+                               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,
+                               COLUMN_NAME VARCHAR(128) NOT NULL,
+                               DATA_TYPE VARCHAR(128) NOT NULL,
+                               INDEX_TYPE CHAR(32) NOT NULL,
+                               IS_UNIQUE BOOLEAN NOT NULL,
+                               IS_CLUSTERED BOOLEAN NOT NULL,
+                               IS_ASCENDING BOOLEAN NOT NULL,
+                               CONSTRAINT C_INDEXES_PK PRIMARY KEY (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_indexes_columns ON INDEXES (DB_ID,column_name)]]></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 (
+                               PID 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(255),
+                               ORDINAL_POSITION INT NOT NULL,
+                               PARTITION_VALUE VARCHAR(1024),
+                               PATH VARCHAR(1024),
+                               CONSTRAINT C_PARTITION_PK PRIMARY KEY (PID),
+                               CONSTRAINT C_PARTITION_UNIQUE UNIQUE (TID, 
PARTITION_NAME)
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="IDX_PARTITIONS_TABLE_NAME" 
type="index" dependsOn="PARTITIONS" order="19">
+                               <tns:sql><![CDATA[CREATE INDEX 
idx_partitions_table_name ON PARTITIONS(TID)]]></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>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/indexes.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/indexes.sql 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/indexes.sql
deleted file mode 100644
index c4cfc25..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/indexes.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-CREATE TABLE INDEXES (
-  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,
-  COLUMN_NAME VARCHAR(128) NOT NULL,
-  DATA_TYPE VARCHAR(128) NOT NULL,
-  INDEX_TYPE CHAR(32) NOT NULL,
-  IS_UNIQUE BOOLEAN NOT NULL,
-  IS_CLUSTERED BOOLEAN NOT NULL,
-  IS_ASCENDING BOOLEAN NOT NULL,
-  CONSTRAINT C_INDEXES_PK PRIMARY KEY (DB_ID, INDEX_NAME)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partition_methods.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partition_methods.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partition_methods.sql
deleted file mode 100644
index 4ad4c60..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partition_methods.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-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
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partitions.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partitions.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partitions.sql
deleted file mode 100644
index 24ee422..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/partitions.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-CREATE TABLE PARTITIONS (
-  PID 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(255),
-  ORDINAL_POSITION INT NOT NULL,
-  PARTITION_VALUE VARCHAR(1024),
-  PATH VARCHAR(1024),
-  CONSTRAINT C_PARTITION_PK PRIMARY KEY (PID),
-  CONSTRAINT C_PARTITION_UNIQUE UNIQUE (TID, PARTITION_NAME)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/stats.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/stats.sql 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/stats.sql
deleted file mode 100644
index bba8ee7..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/stats.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-CREATE TABLE STATS (
-  TID INT NOT NULL PRIMARY KEY,
-  NUM_ROWS BIGINT,
-  NUM_BYTES BIGINT,
-  FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/table_properties.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/table_properties.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/table_properties.sql
deleted file mode 100644
index 2b2d89a..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/table_properties.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-CREATE TABLE OPTIONS (
-  TID INT NOT NULL REFERENCES TABLES (TID) ON DELETE CASCADE,
-  KEY_ VARCHAR(255) NOT NULL,
-  VALUE_ VARCHAR(255) NOT NULL,
-  CONSTRAINT C_OPTIONS_UNIQUE UNIQUE (TID, KEY_, VALUE_)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tables.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tables.sql 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tables.sql
deleted file mode 100644
index 3e15c5b..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tables.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-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),
-  STORE_TYPE CHAR(16),
-  CONSTRAINT TABLES_PK PRIMARY KEY (TID),
-  CONSTRAINT C_TABLE_ID_UNIQ UNIQUE (DB_ID, TABLE_NAME)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tablespaces.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tablespaces.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tablespaces.sql
deleted file mode 100644
index c2af3ae..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/tablespaces.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-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)
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/oracle/oracle.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/oracle/oracle.xml 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/oracle/oracle.xml
new file mode 100644
index 0000000..8945fca
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/oracle/oracle.xml
@@ -0,0 +1,218 @@
+<?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 ">
+  <tns:base version="2">
+    <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,
+                                       DATA_TYPE CHAR(16),
+                                       TYPE_LENGTH INTEGER,
+                                       CONSTRAINT COLUMNS_PKEY PRIMARY KEY 
(TID, COLUMN_NAME),
+                                       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(255) 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 (
+                                       DB_ID INT NOT NULL,
+                                       TID INT NOT NULL,
+                                       INDEX_NAME VARCHAR2(128) NOT NULL,
+                                       COLUMN_NAME VARCHAR2(128) NOT NULL,
+                                       DATA_TYPE VARCHAR2(128) NOT NULL,
+                                       INDEX_TYPE CHAR(32) NOT NULL,
+                                       IS_UNIQUE CHAR NOT NULL,
+                                       IS_CLUSTERED CHAR NOT NULL,
+                                       IS_ASCENDING CHAR NOT NULL,
+                                       CONSTRAINT INDEXES_PKEY PRIMARY KEY 
(DB_ID, INDEX_NAME),
+                                       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 (
+                                       PID INT NOT NULL PRIMARY KEY,
+                                       TID INT NOT NULL,
+                                       PARTITION_NAME VARCHAR2(128),
+                                       ORDINAL_POSITION INT NOT NULL,
+                                       PARTITION_VALUE VARCHAR2(1024),
+                                       PATH VARCHAR2(4000),
+                                       FOREIGN KEY (TID) REFERENCES TABLES 
(TID) ON DELETE CASCADE,
+                                       CONSTRAINT C_PARTITION_UNIQUE UNIQUE 
(TID, PARTITION_NAME)
+                               )]]>
+                               </tns:sql>
+               </tns:Object>
+               <tns:Object order="19" type="index" name="PARTITIONS_IDX_TID" 
dependsOn="PARTITIONS">
+                       <tns:sql><![CDATA[CREATE INDEX PARTITIONS_IDX_TID on 
PARTITIONS (TID)]]></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>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/indexes.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/indexes.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/indexes.sql
deleted file mode 100644
index cbb28fc..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/indexes.sql
+++ /dev/null
@@ -1,14 +0,0 @@
-CREATE TABLE INDEXES (
-  DB_ID INT NOT NULL,
-  TID INT NOT NULL,
-  INDEX_NAME VARCHAR(128) NOT NULL,
-  COLUMN_NAME VARCHAR(128) NOT NULL,
-  DATA_TYPE VARCHAR(128) NOT NULL,
-  INDEX_TYPE CHAR(32) NOT NULL,
-  IS_UNIQUE BOOLEAN NOT NULL,
-  IS_CLUSTERED BOOLEAN NOT NULL,
-  IS_ASCENDING BOOLEAN NOT NULL,
-  CONSTRAINT INDEXES_PKEY PRIMARY KEY (DB_ID, INDEX_NAME),
-  FOREIGN KEY (DB_ID) REFERENCES DATABASES_ (DB_ID) ON DELETE CASCADE,
-  FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/postgresql.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/postgresql.xml
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/postgresql.xml
new file mode 100644
index 0000000..8e5cbcc
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/postgresql.xml
@@ -0,0 +1,203 @@
+<?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 ">
+       <tns:base version="2">
+               <tns:objects>
+                       <tns:Object name="META" type="table" order="0">
+                               <tns:sql><![CDATA[CREATE TABLE META (VERSION 
INT NOT NULL)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="TABLESPACES" type="table" order="1">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE TABLESPACES (
+                               SPACE_ID SERIAL NOT NULL PRIMARY KEY,
+                               SPACE_NAME VARCHAR(128) NOT NULL UNIQUE,
+                               SPACE_HANDLER VARCHAR (1024) DEFAULT 'HDFS',
+                               SPACE_URI VARCHAR (4096) NOT NULL
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="TABLESPACES_IDX_NAME" type="index" 
order="2" dependsOn="TABLESPACES">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
TABLESPACES_IDX_NAME on TABLESPACES (SPACE_NAME)]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="DATABASES_" type="table" order="3">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE DATABASES_ (
+                               DB_ID SERIAL NOT NULL PRIMARY KEY,
+                               DB_NAME VARCHAR(128) NOT NULL UNIQUE,
+                               SPACE_ID INT NOT NULL,
+                               FOREIGN KEY (SPACE_ID) REFERENCES TABLESPACES 
(SPACE_ID)
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="DATABASES__IDX_NAME" type="index" 
order="4" dependsOn="DATABASES_">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
DATABASES__IDX_NAME on DATABASES_ (DB_NAME)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="TABLES" type="table" order="5">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE TABLES (
+                               TID SERIAL NOT NULL PRIMARY KEY,
+                               DB_ID INT NOT NULL,
+                               TABLE_NAME VARCHAR(128) NOT NULL,
+                               TABLE_TYPE VARCHAR(128) NOT NULL,
+                               PATH VARCHAR(4096),
+                               STORE_TYPE CHAR(16),
+                               FOREIGN KEY (DB_ID) REFERENCES DATABASES_ 
(DB_ID)
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="TABLES_IDX_DB_ID" type="index" 
order="6" dependsOn="TABLES">
+                               <tns:sql><![CDATA[CREATE INDEX TABLES_IDX_DB_ID 
on TABLES (DB_ID)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="TABLES_IDX_TABLE_ID" type="index" 
order="7" dependsOn="TABLES">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
TABLES_IDX_TABLE_ID on TABLES (DB_ID, TABLE_NAME)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="COLUMNS" type="table" order="8">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE COLUMNS (
+                               TID INT NOT NULL,
+                               COLUMN_NAME VARCHAR(255) NOT NULL,
+                               ORDINAL_POSITION INT NOT NULL,
+                               DATA_TYPE CHAR(16),
+                               TYPE_LENGTH INTEGER,
+                               CONSTRAINT COLUMNS_PKEY PRIMARY KEY (TID, 
COLUMN_NAME),
+                               FOREIGN KEY (TID) REFERENCES TABLES (TID) ON 
DELETE CASCADE
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="OPTIONS" type="table" order="9">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE OPTIONS (
+                               TID INT NOT NULL,
+                               KEY_ VARCHAR(255) NOT NULL,
+                               VALUE_ VARCHAR(255) NOT NULL,
+                               CONSTRAINT OPTIONS_PKEY PRIMARY KEY (TID, KEY_),
+                               FOREIGN KEY (TID) REFERENCES TABLES (TID) ON 
DELETE CASCADE
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="INDEXES" type="table" order="10">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE INDEXES (
+                               DB_ID INT NOT NULL,
+                               TID INT NOT NULL,
+                               INDEX_NAME VARCHAR(128) NOT NULL,
+                               COLUMN_NAME VARCHAR(128) NOT NULL,
+                               DATA_TYPE VARCHAR(128) NOT NULL,
+                               INDEX_TYPE CHAR(32) NOT NULL,
+                               IS_UNIQUE BOOLEAN NOT NULL,
+                               IS_CLUSTERED BOOLEAN NOT NULL,
+                               IS_ASCENDING BOOLEAN NOT NULL,
+                               CONSTRAINT INDEXES_PKEY PRIMARY KEY (DB_ID, 
INDEX_NAME),
+                               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 name="INDEXES_IDX_DB_ID_NAME" type="index" 
order="11" dependsOn="INDEXES">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
INDEXES_IDX_DB_ID_NAME on INDEXES (DB_ID, INDEX_NAME)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="INDEXES_IDX_TID_COLUMN_NAME" 
type="index" order="12" dependsOn="INDEXES">
+                               <tns:sql><![CDATA[CREATE INDEX 
INDEXES_IDX_TID_COLUMN_NAME on INDEXES (TID, COLUMN_NAME)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="STATS" type="table" order="13">
+                               <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 name="PARTITION_METHODS" type="table" 
order="14">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE PARTITION_METHODS (
+                               TID INT NOT NULL PRIMARY KEY,
+                               PARTITION_TYPE VARCHAR(10) NOT NULL,
+                               EXPRESSION VARCHAR(1024) NOT NULL,
+                               EXPRESSION_SCHEMA BYTEA NOT NULL,
+                               FOREIGN KEY (TID) REFERENCES TABLES (TID) ON 
DELETE CASCADE
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="PARTITIONS" type="table" order="15">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE PARTITIONS (
+                               PID INT NOT NULL PRIMARY KEY,
+                               TID INT NOT NULL,
+                               PARTITION_NAME VARCHAR(128),
+                               ORDINAL_POSITION INT NOT NULL,
+                               PARTITION_VALUE VARCHAR(1024),
+                               PATH VARCHAR(4096),
+                               FOREIGN KEY (TID) REFERENCES TABLES (TID) ON 
DELETE CASCADE,
+                               CONSTRAINT C_PARTITION_UNIQUE UNIQUE (TID, 
PARTITION_NAME)
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object name="PARTITIONS_IDX_TID" type="index" 
order="16" dependsOn="PARTITIONS">
+                               <tns:sql><![CDATA[CREATE INDEX 
PARTITIONS_IDX_TID on PARTITIONS (TID)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object name="IDX_TID_NAME" type="index" order="17" 
dependsOn="PARTITIONS">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
IDX_TID_NAME on PARTITIONS (TID, PARTITION_NAME)]]></tns:sql>
+                       </tns:Object>
+               </tns:objects>
+       </tns:base>
+       <tns:existQueries>
+               <tns:existQuery type="table">
+                       <tns:sql><![CDATA[
+                       select c.relname from pg_class c, pg_roles r 
+                       where c.relowner = r.oid and r.rolname = current_user 
and c.relkind = 'r'::char]]>
+                 </tns:sql>
+               </tns:existQuery>
+               <tns:existQuery type="view">
+                       <tns:sql><![CDATA[
+                       select c.relname from pg_class c, pg_roles r 
+                       where c.relowner = r.oid and r.rolname = current_user 
and c.relkind = 'v'::char]]>
+                       </tns:sql>
+               </tns:existQuery>
+               <tns:existQuery type="index">
+                       <tns:sql><![CDATA[
+                       select c.relname from pg_class c, pg_roles r 
+                       where c.relowner = r.oid and r.rolname = current_user 
and c.relkind = 'i'::char]]>
+                       </tns:sql>
+               </tns:existQuery>
+               <tns:existQuery type="sequence">
+                       <tns:sql><![CDATA[
+                       select c.relname from pg_class c, pg_roles r 
+                       where c.relowner = r.oid and r.rolname = current_user 
and c.relkind = 'S'::char]]>
+                       </tns:sql>
+               </tns:existQuery>
+               <tns:existQuery type="trigger">
+                       <tns:sql><![CDATA[
+                       select tgname from pg_trigger t 
+                       where t.tgrelid in 
+                               (select c.oid from pg_class c, pg_roles r 
+                               where c.relowner = r.oid and r.rolname = 
current_user and c.relkind = 'r'::char)]]>
+                       </tns:sql>
+               </tns:existQuery>
+       </tns:existQueries>
+       <tns:dropStatements>
+               <tns:dropStatement type="table">
+                       <tns:sql><![CDATA[DROP TABLE ? CASCADE]]></tns:sql>
+               </tns:dropStatement>
+       </tns:dropStatements>
+</tns:store>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/stats.sql
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/stats.sql
 
b/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/stats.sql
deleted file mode 100644
index bba8ee7..0000000
--- 
a/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/stats.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-CREATE TABLE STATS (
-  TID INT NOT NULL PRIMARY KEY,
-  NUM_ROWS BIGINT,
-  NUM_BYTES BIGINT,
-  FOREIGN KEY (TID) REFERENCES TABLES (TID) ON DELETE CASCADE
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/store/TestXMLCatalogSchemaManager.java
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/store/TestXMLCatalogSchemaManager.java
 
b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/store/TestXMLCatalogSchemaManager.java
new file mode 100644
index 0000000..fdb8556
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/store/TestXMLCatalogSchemaManager.java
@@ -0,0 +1,496 @@
+/**
+ * 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.
+ */
+
+package org.apache.tajo.catalog.store;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.Matchers.*;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.tajo.catalog.CatalogConstants;
+import org.apache.tajo.catalog.store.object.DatabaseObject;
+import org.apache.tajo.catalog.store.object.DatabaseObjectType;
+import org.apache.tajo.catalog.store.object.SchemaPatch;
+import org.apache.tajo.util.CommonTestingUtil;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Matcher;
+import org.hamcrest.Matchers;
+import org.hamcrest.TypeSafeDiagnosingMatcher;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExternalResource;
+import org.junit.runner.Description;
+import org.junit.runners.model.InitializationError;
+
+public class TestXMLCatalogSchemaManager {
+  
+  private static Path testPath;
+  private Path testDatabasePath;
+  private Connection conn;
+  private Driver driver;
+  
+  @Retention(RetentionPolicy.RUNTIME)
+  @Target(ElementType.METHOD)
+  @interface SetupPrepMethods {
+    boolean makeJDBCConnection() default true;
+  }
+  
+  @Rule
+  public ExternalResource resource = new ExternalResource() {
+    
+    private Description description;
+
+    @Override
+    public org.junit.runners.model.Statement 
apply(org.junit.runners.model.Statement base, 
+        Description description) {
+      this.description = description;
+      return super.apply(base, description);
+    }
+
+    @Override
+    protected void before() throws Throwable {
+      SetupPrepMethods prepMethod = 
this.description.getAnnotation(SetupPrepMethods.class);
+      
+      if (prepMethod == null || prepMethod.makeJDBCConnection()) {
+        setUpJDBC();
+      }
+    }
+
+    @Override
+    protected void after() {
+      SetupPrepMethods prepMethod = 
this.description.getAnnotation(SetupPrepMethods.class);
+      
+      if (prepMethod == null || prepMethod.makeJDBCConnection()) {
+        try {
+          tearDownJDBC();
+        } catch (Exception e) {
+          fail(e.getMessage());
+        }
+      }
+    }
+    
+  };
+  
+  private class CollectionMatcher<T> extends 
TypeSafeDiagnosingMatcher<Iterable<? extends T>> {
+    
+    private final Matcher<? extends T> matcher;
+    
+    public CollectionMatcher(Matcher<? extends T> matcher) {
+      this.matcher = matcher;
+    }
+
+    @Override
+    public void describeTo(org.hamcrest.Description description) {
+      description.appendText("a collection containing 
").appendDescriptionOf(this.matcher);
+    }
+
+    @Override
+    protected boolean matchesSafely(Iterable<? extends T> item, 
org.hamcrest.Description mismatchDescription) {
+      boolean isFirst = true;
+      Iterator<? extends T> iterator = item.iterator();
+      
+      while (iterator.hasNext()) {
+        T obj = iterator.next();
+        if (this.matcher.matches(obj)) {
+          return true;
+        }
+        
+        if (!isFirst) {
+          mismatchDescription.appendText(", ");
+        }
+        
+        this.matcher.describeMismatch(obj, mismatchDescription);
+        isFirst = false;
+      }
+      return false;
+    }
+    
+  }
+  
+  private <T> Matcher<Iterable<? extends T>> hasItem(Matcher<? extends T> 
matcher) {
+    return new CollectionMatcher<T>(matcher);
+  }
+  
+  @BeforeClass
+  public static void setUpClass() throws Exception {
+    testPath = CommonTestingUtil.getTestDir();
+  }
+  
+  @AfterClass
+  public static void tearDownClass() throws Exception {
+    CommonTestingUtil.cleanupTestDir(testPath.toUri().getPath());
+  }
+
+  public void setUpJDBC() throws Exception {
+    testDatabasePath = CommonTestingUtil.getTestDir();
+
+    driver = new org.apache.derby.jdbc.EmbeddedDriver();
+    DriverManager.registerDriver(driver);
+    conn = 
DriverManager.getConnection("jdbc:derby:"+testDatabasePath.toUri().getPath()+"/db;create=true");
+    
+    if (conn == null) {
+      throw new InitializationError("JDBC connection is null.");
+    }
+  }
+  
+  public void tearDownJDBC() throws Exception {
+    try {
+      DriverManager.getConnection("jdbc:derby:;shutdown=true");
+    } catch (SQLException se) { 
+      if ((se.getErrorCode() != 50000) || (!se.getSQLState().equals("XJ015"))) 
{
+        throw se;
+      }
+    }
+    
+    conn = null;
+    CommonTestingUtil.cleanupTestDir(testDatabasePath.toUri().getPath());
+    DriverManager.deregisterDriver(driver);
+  }
+  
+  protected <T> BaseMatcher<T> hasItemInResultSet(final String expected, final 
String columnName) {
+    return new BaseMatcher<T>() {
+      private final List<String> results = new ArrayList<String>();
+
+      @Override
+      public boolean matches(Object item) {
+        boolean result = false;
+        
+        if (item instanceof ResultSet) {
+          ResultSet rs = (ResultSet) item;
+          
+          try {
+            while (rs.next()) {
+              results.add(rs.getString(columnName));
+              if (expected.equals(rs.getString(columnName))) {
+                result = true;
+                break;
+              }
+            }
+          } catch (SQLException e) {
+          }
+        }
+        
+        return result;
+      }
+
+      @Override
+      public void describeTo(org.hamcrest.Description description) {
+        description.appendText(expected);
+      }
+
+      @Override
+      public void describeMismatch(Object item, org.hamcrest.Description 
description) {
+        description.appendText("were ").appendText(results.toString());
+      }
+    };
+  }
+  
+  protected Path createTestJar() throws Exception {
+    Path jarPath = new Path(testPath, "testxml.jar");
+    Manifest manifest = new Manifest();
+    manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
+    JarOutputStream jarOut = new JarOutputStream(new FileOutputStream(new 
File(jarPath.toUri())), manifest);
+    JarEntry entry = new JarEntry("schemas/jartest/");
+    jarOut.putNextEntry(entry);
+    jarOut.closeEntry();
+    entry = new JarEntry("schemas/jartest/test.xml");
+    jarOut.putNextEntry(entry);
+    InputStream xmlInputStream = 
+        new 
BufferedInputStream(ClassLoader.getSystemResourceAsStream("schemas/derbytest/loadtest/derby.xml"));
+    byte[] buffer = new byte[1024];
+    int readSize = -1;
+    
+    while ((readSize = xmlInputStream.read(buffer)) > -1) {
+      jarOut.write(buffer, 0, readSize);
+    }
+    jarOut.closeEntry();
+    jarOut.close();
+    xmlInputStream.close();
+    
+    return jarPath;
+  }
+
+  @Test
+  @SetupPrepMethods(makeJDBCConnection=false)
+  public void testListJarResources() throws Exception {
+    XMLCatalogSchemaManager manager;
+    Path jarPath;
+    URL jarUrl;
+    
+    jarPath = createTestJar();
+    jarUrl = jarPath.toUri().toURL();
+    
+    URLClassLoader classLoader = (URLClassLoader) 
ClassLoader.getSystemClassLoader();
+    Method addURLMethod = URLClassLoader.class.getDeclaredMethod("addURL", 
URL.class);
+    addURLMethod.setAccessible(true);
+    addURLMethod.invoke(classLoader, jarUrl);
+    
+    assertThat(classLoader.getURLs(), hasItemInArray(jarUrl));
+    
+    manager = new XMLCatalogSchemaManager("schemas/jartest");
+    
+    assertThat(manager.isLoaded(), is(true));
+    assertNotNull("Base Schema object cannot be null", 
manager.getCatalogStore().getSchema());
+    assertThat(manager.getCatalogStore().getSchema().getObjects(), 
not(empty()));
+  }
+  
+  @Test
+  public void testCreateBaseSchema() throws Exception {
+    XMLCatalogSchemaManager manager;
+    Statement stmt;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/loadtest");
+    assertThat(manager.isLoaded(), is(true));
+    
+    stmt = conn.createStatement();
+    stmt.addBatch("create schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("set current schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.executeBatch();
+    manager.createBaseSchema(conn);
+    
+    DatabaseMetaData metadata = conn.getMetaData();
+    ResultSet tables = 
+      metadata.getTables(null, 
manager.getCatalogStore().getSchema().getSchemaName().toUpperCase(), 
+          CatalogConstants.TB_PARTITION_METHODS, new String[] {"TABLE"});
+    
+    assertTrue(tables.next());
+    assertEquals(CatalogConstants.TB_PARTITION_METHODS, 
tables.getString("TABLE_NAME"));
+    
+    ResultSet triggers =
+        stmt.executeQuery("select a.TRIGGERNAME from SYS.SYSTRIGGERS a inner 
join SYS.SYSSCHEMAS b " +
+            " on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = 'TAJO'");
+    
+    assertThat(triggers, hasItemInResultSet("TABLESPACES_HIST_TRG", 
"TRIGGERNAME"));
+  }
+  
+  @Test
+  public void testIsInitialized() throws Exception {
+    XMLCatalogSchemaManager manager;
+    Statement stmt;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/querytest");
+    assertThat(manager.isLoaded(), is(true));
+    
+    stmt = conn.createStatement();
+    stmt.executeUpdate("CREATE SCHEMA " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.executeUpdate("SET CURRENT SCHEMA " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.executeUpdate("CREATE TABLE TESTTABLE1 (COL1 INT, COL2 VARCHAR(10))");
+    
+    assertThat(manager.isInitialized(conn), is(false));
+    
+    stmt.addBatch("CREATE TABLE TESTTABLE2 (COL1 INT, COL2 VARCHAR(10))");
+    stmt.addBatch("CREATE INDEX TESTINDEX1 ON TESTTABLE1 (COL1)");
+    stmt.addBatch("CREATE TRIGGER TESTTRIGGER1 " +
+        " AFTER INSERT ON TESTTABLE1 " +
+        " REFERENCING NEW AS NEWROW " +
+        " FOR EACH ROW " +
+        "   INSERT INTO TESTTABLE2 " +
+        "   (COL1, COL2) " +
+        "   VALUES " +
+        "   (NEWROW.COL1, NEWROW.COL2)");
+    stmt.addBatch("CREATE SEQUENCE TESTSEQ AS INT");
+    stmt.addBatch("CREATE VIEW TESTVIEW (TESTTEXT) AS VALUES 'Text1', 
'Text2'");
+    stmt.executeBatch();
+    
+    assertThat(manager.isInitialized(conn), is(true));
+  }
+  
+  @Test
+  public void testDropBaseSchema() throws Exception {
+    XMLCatalogSchemaManager manager;
+    DatabaseMetaData meta;
+    Statement stmt;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/querytest");
+    assertThat(manager.isLoaded(), is(true));
+    assertThat(manager.getCatalogStore().getDropStatements(), hasSize(1));
+    
+    stmt = conn.createStatement();
+    stmt.addBatch("CREATE SCHEMA " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("SET CURRENT SCHEMA " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("CREATE TABLE TESTTABLE1 (COL1 INT, COL2 VARCHAR(10))");
+    stmt.addBatch("CREATE TABLE TESTTABLE2 (COL1 INT, COL2 VARCHAR(10))");
+    stmt.addBatch("CREATE INDEX TESTINDEX1 ON TESTTABLE1 (COL1)");
+    stmt.addBatch("CREATE TRIGGER TESTTRIGGER1 " +
+        " AFTER INSERT ON TESTTABLE1 " +
+        " REFERENCING NEW AS NEWROW " +
+        " FOR EACH ROW " +
+        "   INSERT INTO TESTTABLE2 " +
+        "   (COL1, COL2) " +
+        "   VALUES " +
+        "   (NEWROW.COL1, NEWROW.COL2)");
+    stmt.addBatch("CREATE SEQUENCE TESTSEQ AS INT");
+    stmt.addBatch("CREATE VIEW TESTVIEW (TESTTEXT) AS VALUES 'Text1', 
'Text2'");
+    stmt.executeBatch();
+    
+    meta = conn.getMetaData();
+    assertThat(meta.getTables(null, 
manager.getCatalogStore().getSchema().getSchemaName().toUpperCase(), 
+        null, new String[] {"TABLE"}),
+        allOf(hasItemInResultSet("TESTTABLE1", "TABLE_NAME"),
+            hasItemInResultSet("TESTTABLE2", "TABLE_NAME")));
+    assertThat(meta.getIndexInfo(null, 
manager.getCatalogStore().getSchema().getSchemaName().toUpperCase(), 
+        "TESTTABLE1", false, true), hasItemInResultSet("TESTINDEX1", 
"INDEX_NAME"));
+    
+    manager.dropBaseSchema(conn);
+    
+    assertThat(meta.getTables(null, 
manager.getCatalogStore().getSchema().getSchemaName().toUpperCase(), 
+        null, new String[] {"TABLE"}),
+        allOf(not(hasItemInResultSet("TESTTABLE1", "TABLE_NAME")),
+            not(hasItemInResultSet("TESTTABLE2", "TABLE_NAME"))));
+    ResultSet triggers =
+        stmt.executeQuery("select a.TRIGGERNAME from SYS.SYSTRIGGERS a inner 
join SYS.SYSSCHEMAS b " +
+            " on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = '" +
+            
manager.getCatalogStore().getSchema().getSchemaName().toUpperCase() + "'");
+    assertThat(triggers, not(hasItemInResultSet("TESTTRIGGER1", 
"TRIGGERNAME")));
+    ResultSet views =
+        stmt.executeQuery("select a.TABLENAME from SYS.SYSTABLES a inner join 
SYS.SYSSCHEMAS b " +
+            " on a.SCHEMAID = b.SCHEMAID where a.TABLETYPE = 'V' and 
b.SCHEMANAME = '" +
+            
manager.getCatalogStore().getSchema().getSchemaName().toUpperCase() + "'");
+    assertThat(views, not(hasItemInResultSet("TESTVIEW", "TABLENAME")));
+  }
+  
+  @Test
+  public void testCheckExistance() throws Exception {
+    XMLCatalogSchemaManager manager;
+    Statement stmt;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/querytest");
+    assertThat(manager.isLoaded(), is(true));
+    
+    stmt = conn.createStatement();
+    stmt.addBatch("create schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("set current schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.executeBatch();
+    manager.createBaseSchema(conn);
+    
+    assertThat(manager.checkExistance(conn, DatabaseObjectType.TABLE, 
"TESTTABLE1"), is(true));
+    assertThat(manager.checkExistance(conn, DatabaseObjectType.TABLE, 
"TESTTABLE3"), is(false));
+    assertThat(manager.checkExistance(conn, DatabaseObjectType.INDEX, 
"testtable1", "TESTINDEX1"), is(true));
+    assertThat(manager.checkExistance(conn, DatabaseObjectType.TRIGGER, 
"TESTTRIGGER1"), is(true));
+    assertThat(manager.checkExistance(conn, DatabaseObjectType.SEQUENCE, 
"TESTSEQ"), is(true));
+    assertThat(manager.checkExistance(conn, DatabaseObjectType.VIEW, 
"TESTVIEW"), is(true));
+  }
+  
+  @Test
+  public void testContinueSchemaCreation() throws Exception {
+    XMLCatalogSchemaManager manager;
+    Statement stmt;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/querytest");
+    assertThat(manager.isLoaded(), is(true));
+    
+    stmt = conn.createStatement();
+    stmt.addBatch("create schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("set current schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("CREATE TABLE TESTTABLE1 (COL1 INT, COL2 VARCHAR(10))");
+    stmt.addBatch("CREATE INDEX TESTINDEX1 ON TESTTABLE1 (COL1)");
+    stmt.executeBatch();
+    manager.createBaseSchema(conn);
+    
+    assertTrue(manager.checkExistance(conn, DatabaseObjectType.TABLE, 
"TESTTABLE2"));
+  }
+  
+  @Test
+  @SetupPrepMethods(makeJDBCConnection=false)
+  public void testMergeSchemaFile() throws Exception {
+    XMLCatalogSchemaManager manager;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/mergetest");
+    assertThat(manager.isLoaded(), is(true));
+    
+    assertThat(manager.getCatalogStore().getSchema().getObjects(), hasSize(4));
+    assertThat(manager.getCatalogStore().getSchema().getObjects(),
+        hasItem(Matchers.<DatabaseObject>hasProperty("name", 
is("TESTINDEX1"))));
+    assertThat(manager.getCatalogStore().getSchema().getObjects(), 
+        hasItem(Matchers.<DatabaseObject>hasProperty("name", 
is("TESTTRIGGER1"))));
+    assertThat(manager.getCatalogStore().getSchema().getObjects(),
+        hasItem(Matchers.<DatabaseObject>hasProperty("order", is(3))));
+    assertThat(manager.getCatalogStore().getPatches(), hasSize(1));
+    assertThat(manager.getCatalogStore().getPatches(),
+        hasItem(Matchers.<SchemaPatch>hasProperty("priorVersion", is(1))));
+    assertThat(manager.getCatalogStore().getPatches(),
+        hasItem(Matchers.<SchemaPatch>hasProperty("nextVersion", is(2))));
+  }
+  
+  @Test
+  public void testUpgradeSchemaObjects() throws Exception {
+    XMLCatalogSchemaManager manager;
+    Statement stmt;
+    
+    manager = new XMLCatalogSchemaManager("schemas/derbytest/upgradetest");
+    assertThat(manager.isLoaded(), is(true));
+    assertThat(manager.getCatalogStore().getPatches(), hasSize(1));
+    assertThat(manager.getCatalogStore().getPatches().get(0).getObjects(), 
hasSize(2));
+    
+    stmt = conn.createStatement();
+    stmt.addBatch("create schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("set current schema " + 
manager.getCatalogStore().getSchema().getSchemaName());
+    stmt.addBatch("CREATE TABLE TESTTABLE1 (COL1 INT, COL2 VARCHAR(10))");
+    stmt.addBatch("CREATE INDEX TESTINDEX1 ON TESTTABLE1 (COL1)");
+    stmt.addBatch("CREATE TABLE TESTTABLE2 (COL1 INT, COL2 VARCHAR(10))");
+    stmt.executeBatch();
+    manager.upgradeBaseSchema(conn, 1);
+    
+    DatabaseMetaData metadata = conn.getMetaData();
+    ResultSet columns = metadata.getColumns(null, 
+        manager.getCatalogStore().getSchema().getSchemaName().toUpperCase(), 
+        "TESTTABLE2", "COL2");
+    
+    assertThat(columns.next(), is(true));
+    assertThat(columns.getInt("DATA_TYPE"), is(Types.VARCHAR));
+    assertThat(columns.getInt("COLUMN_SIZE"), is(20));
+    
+    columns = metadata.getColumns(null, 
+        manager.getCatalogStore().getSchema().getSchemaName().toUpperCase(), 
+        "TESTTABLE2", "COL3");
+    
+    assertThat(columns.next(), is(true));
+    assertThat(columns.getInt("DATA_TYPE"), is(Types.VARCHAR));
+    assertThat(columns.getInt("COLUMN_SIZE"), is(25));
+  }
+  
+}

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/loadtest/derby.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/loadtest/derby.xml
 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/loadtest/derby.xml
new file mode 100644
index 0000000..86fd5e8
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/loadtest/derby.xml
@@ -0,0 +1,191 @@
+<?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 ">
+       <tns:base version="2" schemaname="tajo">
+               <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_ID" dependsOn="DATABASES_">
+                               <tns:sql><![CDATA[CREATE UNIQUE INDEX 
idx_database_db_id on DATABASES_ (DB_ID)]]></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),
+                               STORE_TYPE CHAR(16),
+                               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 CHAR(16),
+                               TYPE_LENGTH INTEGER,
+                               CONSTRAINT COLUMNS_PK PRIMARY KEY (TID, 
COLUMN_NAME)
+                               )]]>
+                               </tns:sql>
+                       </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, COLUMN_NAME)]]></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(255) NOT NULL,
+                               CONSTRAINT C_OPTIONS_UNIQUE UNIQUE (TID, KEY_, 
VALUE_)
+                               )]]>
+                               </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 (
+                               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,
+                               COLUMN_NAME VARCHAR(128) NOT NULL,
+                               DATA_TYPE VARCHAR(128) NOT NULL,
+                               INDEX_TYPE CHAR(32) NOT NULL,
+                               IS_UNIQUE BOOLEAN NOT NULL,
+                               IS_CLUSTERED BOOLEAN NOT NULL,
+                               IS_ASCENDING BOOLEAN NOT NULL,
+                               CONSTRAINT C_INDEXES_PK PRIMARY KEY (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_indexes_columns ON INDEXES (DB_ID,column_name)]]></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 order="18" type="table" 
name="TABLESPACES_HIST">
+                               <tns:sql><![CDATA[
+                               CREATE TABLE TABLESPACES_HIST (
+                               SPACE_HIST_ID int NOT NULL GENERATED ALWAYS AS 
IDENTITY (START WITH 1, INCREMENT BY 1),
+                               SPACE_NAME VARCHAR(128) NOT NULL CONSTRAINT 
SPACE_HIST_UNIQUE UNIQUE,
+                               SPACE_HANDLER VARCHAR (1024) DEFAULT 'HDFS',
+                               SPACE_URI VARCHAR (4096) NOT NULL,
+                               CONSTRAINT C_SPACE_HIST_PK PRIMARY KEY 
(SPACE_HIST_ID)
+                               )]]>
+                               </tns:sql>
+                       </tns:Object>
+                       <tns:Object order="19" type="trigger" 
name="TABLESPACES_HIST_TRG">
+                               <tns:sql><![CDATA[
+                               CREATE TRIGGER TABLESPACES_HIST_TRG
+                               AFTER INSERT ON TABLESPACES
+                               REFERENCING NEW AS NEWROW
+                               FOR EACH ROW
+                                 INSERT INTO TABLESPACES_HIST
+                                 (SPACE_NAME, SPACE_URI)
+                                 VALUES
+                                 (NEWROW.SPACE_NAME, NEWROW.SPACE_URI)
+                               ]]>
+                               </tns:sql>
+                       </tns:Object>
+               </tns:objects>
+       </tns:base>
+       <tns:existQueries>
+         <tns:existQuery type="trigger">
+           <tns:sql><![CDATA[
+           select a.TRIGGERNAME from SYS.SYSTRIGGERS a inner join 
SYS.SYSSCHEMAS b
+           on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = ?
+           ]]></tns:sql>
+         </tns:existQuery>
+         <tns:existQuery type="sequence">
+           <tns:sql><![CDATA[
+           select a.SEQUENCENAME from SYS.SYSSEQUENCES a inner join 
SYS.SYSSCHEMAS b
+           on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = ?
+           ]]></tns:sql>
+         </tns:existQuery>
+         <tns:existQuery type="view">
+           <tns:sql><![CDATA[
+           select a.TABLENAME from SYS.SYSTABLES a inner join SYS.SYSSCHEMAS b
+           on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = ? and a.TABLETYPE = 
'V'
+           ]]></tns:sql>
+         </tns:existQuery>
+       </tns:existQueries>     
+</tns:store>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_1.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_1.xml
 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_1.xml
new file mode 100644
index 0000000..5c44d29
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_1.xml
@@ -0,0 +1,35 @@
+<?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 
../../../../../main/resources/schemas/DBMSSchemaDefinition.xsd ">
+       <tns:base version="1">
+               <tns:objects>
+                       <tns:Object order="0" type="table" name="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE1 (COL1 
INT, COL2 VARCHAR(20))]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="1" type="index" name="TESTINDEX1" 
dependsOn="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE INDEX TESTINDEX1 ON 
TESTTABLE1 (COL1)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="2" type="table" name="TESTTABLE2">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE2 (COL1 
INT, COL2 VARCHAR(10))]]></tns:sql>
+                       </tns:Object>
+               </tns:objects>
+       </tns:base>
+</tns:store>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_2.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_2.xml
 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_2.xml
new file mode 100644
index 0000000..706432c
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/mergetest/base_version_2.xml
@@ -0,0 +1,63 @@
+<?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 
../../../../../main/resources/schemas/DBMSSchemaDefinition.xsd ">
+       <tns:base version="2">
+               <tns:objects>
+                 <tns:Object order="0" type="table" name="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE1 (COL1 
INT, COL2 VARCHAR(20))]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="1" type="index" name="TESTINDEX1" 
dependsOn="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE INDEX TESTINDEX1 ON 
TESTTABLE1 (COL1)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="2" type="table" name="TESTTABLE2">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE2 (COL1 
INT, COL2 VARCHAR(10))]]></tns:sql>
+                       </tns:Object>
+                 <tns:Object order="3" type="trigger" name="TESTTRIGGER1">
+                               <tns:sql><![CDATA[
+                               CREATE TRIGGER TESTTRIGGER1
+                               AFTER INSERT ON TESTTABLE1
+                               REFERENCING NEW AS NEWROW
+                               FOR EACH ROW
+                                 INSERT INTO TESTTABLE2
+                                 (COL1, COL2)
+                                 VALUES
+                                 (NEWROW.COL1, NEWROW.COL2)
+                               ]]></tns:sql>
+                       </tns:Object>
+               </tns:objects>
+       </tns:base>
+       <tns:patches>
+               <tns:patch priorVersion="1" nextVersion="2">
+                       <tns:objects>
+                               <tns:Object name="TESTTRIGGER1" type="trigger" 
order="0">
+                                       <tns:sql><![CDATA[
+                                       CREATE TRIGGER TESTTRIGGER1
+                               AFTER INSERT ON TESTTABLE1
+                               REFERENCING NEW AS NEWROW
+                               FOR EACH ROW
+                                 INSERT INTO TESTTABLE2
+                                 (COL1, COL2)
+                                 VALUES
+                                 (NEWROW.COL1, NEWROW.COL2)
+                                 ]]></tns:sql>
+                               </tns:Object>
+                       </tns:objects>
+               </tns:patch>
+       </tns:patches>
+</tns:store>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/querytest/derby.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/querytest/derby.xml
 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/querytest/derby.xml
new file mode 100644
index 0000000..9016ccd
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/querytest/derby.xml
@@ -0,0 +1,78 @@
+<?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 
../../../../../main/resources/schemas/DBMSSchemaDefinition.xsd ">
+       <tns:base version="1" schemaname="tajo">
+               <tns:objects>
+                       <tns:Object order="0" type="table" name="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE1 (COL1 
INT, COL2 VARCHAR(10))]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="1" type="index" name="TESTINDEX1" 
dependsOn="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE INDEX TESTINDEX1 ON 
TESTTABLE1 (COL1)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="2" type="table" name="TESTTABLE2">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE2 (COL1 
INT, COL2 VARCHAR(10))]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="3" type="trigger" 
name="TESTTRIGGER1">
+                               <tns:sql><![CDATA[
+                               CREATE TRIGGER TESTTRIGGER1
+                               AFTER INSERT ON TESTTABLE1
+                               REFERENCING NEW AS NEWROW
+                               FOR EACH ROW
+                                 INSERT INTO TESTTABLE2
+                                 (COL1, COL2)
+                                 VALUES
+                                 (NEWROW.COL1, NEWROW.COL2)
+                               ]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="4" type="sequence" name="TESTSEQ">
+                               <tns:sql><![CDATA[CREATE SEQUENCE TESTSEQ AS 
INT]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="5" type="view" name="TESTVIEW">
+                               <tns:sql><![CDATA[CREATE VIEW TESTVIEW 
(TESTTEXT) AS VALUES 'Text1', 'Text2']]></tns:sql>
+                       </tns:Object>
+               </tns:objects>
+       </tns:base>
+       <tns:existQueries>
+         <tns:existQuery type="trigger">
+           <tns:sql><![CDATA[
+           select a.TRIGGERNAME from SYS.SYSTRIGGERS a inner join 
SYS.SYSSCHEMAS b
+           on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = ?
+           ]]></tns:sql>
+         </tns:existQuery>
+         <tns:existQuery type="sequence">
+           <tns:sql><![CDATA[
+           select a.SEQUENCENAME from SYS.SYSSEQUENCES a inner join 
SYS.SYSSCHEMAS b
+           on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = ?
+           ]]></tns:sql>
+         </tns:existQuery>
+         <tns:existQuery type="view">
+           <tns:sql><![CDATA[
+           select a.TABLENAME from SYS.SYSTABLES a inner join SYS.SYSSCHEMAS b
+           on a.SCHEMAID = b.SCHEMAID where b.SCHEMANAME = ? and a.TABLETYPE = 
'V'
+           ]]></tns:sql>
+         </tns:existQuery>
+       </tns:existQueries>
+       <tns:dropStatements>
+               <tns:dropStatement type="sequence">
+                       <tns:sql>DROP SEQUENCE ? RESTRICT</tns:sql>
+               </tns:dropStatement>
+       </tns:dropStatements>
+</tns:store>

http://git-wip-us.apache.org/repos/asf/tajo/blob/00555685/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/upgradetest/base_version_2.xml
----------------------------------------------------------------------
diff --git 
a/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/upgradetest/base_version_2.xml
 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/upgradetest/base_version_2.xml
new file mode 100644
index 0000000..f6a6675
--- /dev/null
+++ 
b/tajo-catalog/tajo-catalog-server/src/test/resources/schemas/derbytest/upgradetest/base_version_2.xml
@@ -0,0 +1,57 @@
+<?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 
../../../../../main/resources/schemas/DBMSSchemaDefinition.xsd ">
+       <tns:base version="2" schemaname="tajo">
+               <tns:objects>
+                 <tns:Object order="0" type="table" name="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE1 (COL1 
INT, COL2 VARCHAR(20))]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="1" type="index" name="TESTINDEX1" 
dependsOn="TESTTABLE1">
+                               <tns:sql><![CDATA[CREATE INDEX TESTINDEX1 ON 
TESTTABLE1 (COL1)]]></tns:sql>
+                       </tns:Object>
+                       <tns:Object order="2" type="table" name="TESTTABLE2">
+                               <tns:sql><![CDATA[CREATE TABLE TESTTABLE2 (COL1 
INT, COL2 VARCHAR(20), COL3 VARCHAR(25))]]></tns:sql>
+                       </tns:Object>
+                 <tns:Object order="3" type="trigger" name="TESTTRIGGER1">
+                               <tns:sql><![CDATA[
+                               CREATE TRIGGER TESTTRIGGER1
+                               AFTER INSERT ON TESTTABLE1
+                               REFERENCING NEW AS NEWROW
+                               FOR EACH ROW
+                                 INSERT INTO TESTTABLE2
+                                 (COL1, COL2)
+                                 VALUES
+                                 (NEWROW.COL1, NEWROW.COL2)
+                               ]]></tns:sql>
+                       </tns:Object>
+               </tns:objects>
+       </tns:base>
+       <tns:patches>
+               <tns:patch priorVersion="1" nextVersion="2">
+                       <tns:objects>
+                               <tns:Object name="TESTTABLE2" type="table" 
order="0">
+                                       <tns:sql><![CDATA[ALTER TABLE 
TESTTABLE2 ALTER COLUMN COL2 SET DATA TYPE VARCHAR(20)]]></tns:sql>
+                               </tns:Object>
+                               <tns:Object name="TESTTABLE2" type="table" 
order="1">
+                                       <tns:sql><![CDATA[ALTER TABLE 
TESTTABLE2 ADD COLUMN COL3 VARCHAR(25)]]></tns:sql>
+                               </tns:Object>
+                       </tns:objects>
+               </tns:patch>
+       </tns:patches>
+</tns:store>

Reply via email to