Merge pull request #1 from agozhiy/resurrection

Resurrection
diff --git a/.gitignore b/.gitignore
index 7e5cfd7..8ef36d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,6 +21,7 @@
 framework/resources/Datasources/s3minio/minio/minio_data/.minio.sys
 framework/resources/Datasources/s3minio/minio/minio_data/tstbucket/tmp/ppruning/
 framework/resources/Datasources/s3minio/minio/minio_data/tstbucket/tmp/gitignore
+drill-output/
 
 # Hive stuff
 metastore_db
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 09634b4..7e0e4ea 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -85,6 +85,18 @@
  }
 </code></pre>
 
+The data described in "datasources" section is prepared in several stages. The stages are defined by "mode" field and executed in the following order:  
+- **rm** - remove data specified in "dest" field
+- **cp** - copy data from "src" in local file system to "dest" in the target fs
+- **mkdir** - make directory specified in "dest"
+- **gen** - execute command specified in "src". In case of a file with .ddl extension it will be send to Drill through JDBC
+- **post_rm** - the same as "rm" but executed later
+- **post_cp** - the same as "cp" but executed later
+- **dfs_cp** - copy data between dfs locations
+- **ddl** - executes specified ddl file through JDBC
+
+Note that local paths are based on DRILL_TEST_DATA_DIR property (by default it is framework/resources), and all dfs paths are based on DRILL_TESTDATA property (by default it is /drill/testdata)  
+
 ### Special handling for Drill version in regex based baseline verification
 
 The Drill version in a regex based baseline file can be substituted with "{DRILL_VERSION}". 
diff --git a/README.md b/README.md
index 9a7f2d9..01bcb38 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,25 @@
 
 If you've already downloaded the datasets previously, you can simply skip the download.
 
+If you're going to run tests in docker, you'll need to build the docker image first:
+
+```
+mvn clean install docker:build -DskipTests
+```
+
 ## Execute Tests
 
 In the root directory of your repository, execute the following command to run tests:
 
-`bin/run_tests -s <suites> -g <groups> -t <Timeout> -x <Exclude> -n <Concurrency> -d`
+```
+bin/run_tests -s <suites> -g <groups> -t <Timeout> -x <Exclude> -n <Concurrency> -d`
+```
+
+Alternatively, you can run tests in docker:
+
+```
+mvn docker:start -Dtest.args="-s <suites> -g <groups> -t <Timeout> -x <Exclude> -n <Concurrency> -d"
+```
 
 Example:
  <pre><code> bin/run_tests -s Functional/aggregates,Functional/joins -g functional -x hbase -t 180 -n 20 -d
@@ -57,7 +71,8 @@
   -n concurrency (optional)
      Here, '20' queries can execute concurrently
   -x exclude dependencies (optional)
-     Here, any 'hbase' test suites within the specified directory are excluded
+     Here, any test suites within the specified directory that have specified dependencies are excluded.
+     In case of "-x all" all tests suites that have at least one dependency are excluded
   -h help (optional)
      Use this option to provide the usage of the command, which includes additional options
 </code></pre>
diff --git a/bin/run_tests b/bin/run_tests
index 0186f96..1a37cb1 100755
--- a/bin/run_tests
+++ b/bin/run_tests
@@ -5,6 +5,7 @@
 cd ${bin}/../
 
 default_debug_string="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=50000,server=y,suspend=y"
+JDBC_DRIVER_CP="${DRILL_HOME}/jars/jdbc-driver/drill-jdbc-all-${DRILL_VERSION}.jar"
 
 ARGS=()
 while [[ $# > 0 ]]
@@ -20,6 +21,11 @@
     DRILL_TEST_FRAMEWORK_JAVA_OPTS="$DRILL_TEST_FRAMEWORK_JAVA_OPTS $default_debug_string"
     shift
     ;;
+  --jdbcCP)
+    shift
+    JDBC_DRIVER_CP=$1
+    shift
+    ;;
   *)
     ARGS+=("$1")
     shift
@@ -34,7 +40,7 @@
 # use the following line when testing apache drill JDBC driver
 if [[ $HADOOP_VERSION == *"mapr"* ]]
 then
-  java $DRILL_TEST_FRAMEWORK_JAVA_OPTS -Xss40m -cp .:conf/:${DRILL_HOME}/jars/jdbc-driver/drill-jdbc-all-${DRILL_VERSION}.jar:framework/target/framework-1.0.0-SNAPSHOT-shaded.jar -Dfs.mapr.bailout.on.library.mismatch=false -Djava.io.tmpdir=/tmp/drill/tests -Djava.security.auth.login.config=/opt/mapr/conf/mapr.login.conf -Dzookeeper.sasl.client=false org.apache.drill.test.framework.TestDriver "${ARGS[@]}"
+  java $DRILL_TEST_FRAMEWORK_JAVA_OPTS -Xss40m -cp .:conf/:${JDBC_DRIVER_CP}:framework/target/framework-1.0.0-SNAPSHOT-shaded.jar -Dfs.mapr.bailout.on.library.mismatch=false -Djava.io.tmpdir=/tmp/drill/tests -Djava.security.auth.login.config=/opt/mapr/conf/mapr.login.conf -Dzookeeper.sasl.client=false org.apache.drill.test.framework.TestDriver "${ARGS[@]}"
 else
-  java $DRILL_TEST_FRAMEWORK_JAVA_OPTS -Xss40m -cp .:conf/:${DRILL_HOME}/jars/jdbc-driver/drill-jdbc-all-${DRILL_VERSION}.jar:framework/target/framework-1.0.0-SNAPSHOT-shaded.jar org.apache.drill.test.framework.TestDriver "${ARGS[@]}"
+  java $DRILL_TEST_FRAMEWORK_JAVA_OPTS -Xss40m -cp .:conf/:${JDBC_DRIVER_CP}:framework/target/framework-1.0.0-SNAPSHOT-shaded.jar org.apache.drill.test.framework.TestDriver "${ARGS[@]}"
 fi
diff --git a/conf/logback.xml b/conf/logback.xml
new file mode 100644
index 0000000..91004fb
--- /dev/null
+++ b/conf/logback.xml
@@ -0,0 +1,64 @@
+<?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.

+

+-->

+<configuration>

+

+  <!-- Direct log messages to ./drill.log.timestamp file -->

+  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

+      <fileNamePattern>logs/drill.log.%d{yyyy-MM-dd-HH}</fileNamePattern>

+    </rollingPolicy>

+    <encoder>

+      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</pattern>

+    </encoder>

+  </appender>

+

+  <!-- Direct log messages to stdout -->

+  <appender name="Drill" class="ch.qos.logback.core.ConsoleAppender">

+    <Target>System.out</Target>

+    <encoder>

+      <pattern>%m%n</pattern>

+    </encoder>

+  </appender>

+

+  <!-- Direct log messages to stdout -->

+  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">

+    <Target>System.out</Target>

+    <encoder>

+      <pattern>%m%n</pattern>

+    </encoder>

+  </appender>

+

+

+  <logger name="org.apache.zookeeper" level="WARN"/>

+

+  <logger name="DrillTestLogger" additivity="false" level="INFO">

+    <appender-ref ref="file"/>

+    <appender-ref ref="Drill"/>

+  </logger>

+

+  <logger name="org.apache.curator" level="WARN"/>

+

+  <!-- Root logger option -->

+  <root level="ERROR">

+    <appender-ref ref="stdout"/>

+  </root>

+

+</configuration>

diff --git a/framework/pom.xml b/framework/pom.xml
index 018766a..5bc6536 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -7,12 +7,27 @@
   <version>1.0.0-SNAPSHOT</version>
   <properties>
     <testng.version>6.4</testng.version>
-    <log4j.version>1.2.17</log4j.version>
+    <slf4j.version>1.7.26</slf4j.version>
+    <logback.version>1.2.9</logback.version>
     <jackson.version>2.10.0</jackson.version>
-    <drill.version>${env.DRILL_VERSION}</drill.version>
-    <hadoop.version>${env.HADOOP_VERSION}</hadoop.version>
-    <runtimeDepenencies>${env.DRILL_HOME}/conf</runtimeDepenencies>
+    <guava.version>30.1.1-jre</guava.version>
+    <drill.version>2.0.0-SNAPSHOT</drill.version>
+    <hadoop.version>3.2.2</hadoop.version>
+    <drill.test.framework.root>${project.basedir}/..</drill.test.framework.root>
+    <drill.home>${project.basedir}/../../drill</drill.home>
+    <drill.distribution>${drill.home}/distribution/target/apache-drill-${drill.version}/apache-drill-${drill.version}/</drill.distribution>
+    <drill.jdbc.driver.path>jars/jdbc-driver/drill-jdbc-all-${drill.version}.jar</drill.jdbc.driver.path>
+    <drill.java.exec.path>jars/drill-java-exec-${drill.version}.jar</drill.java.exec.path>
+    <m2.home>${env.HOME}/.m2</m2.home>
+    <runtimeDepenencies>${drill.distribution}/conf</runtimeDepenencies>
     <maven.surefire.plugin.version>2.19.1</maven.surefire.plugin.version>
+    <!-- Docker Plugin Properties -->
+    <maven.docker.plugin.version>0.38.1</maven.docker.plugin.version>
+    <docker.base.image>maven:3.8.4-jdk-11</docker.base.image>
+    <docker.automation.root>/root/testAutomation</docker.automation.root>
+    <docker.drill.test.framework.home>${docker.automation.root}/drill-test-framework</docker.drill.test.framework.home>
+    <docker.drill.home>${docker.automation.root}/apache-drill-${drill.version}</docker.drill.home>
+    <test.args>-s Functional -g empty</test.args>
   </properties>
   <dependencies>
     <dependency>
@@ -24,21 +39,46 @@
       <groupId>org.ojai</groupId>
       <artifactId>ojai</artifactId>
       <version>1.1</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
       <version>3.4.14</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+        <exclusion>
+          <artifactId>log4j</artifactId>
+          <groupId>log4j</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <version>${log4j.version}</version>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>${slf4j.version}</version>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>apache-log4j-extras</artifactId>
-      <version>${log4j.version}</version>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <version>${logback.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-core</artifactId>
+      <version>${logback.version}</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
@@ -58,7 +98,12 @@
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
-      <version>16.0.1</version>
+      <version>${guava.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-aws</artifactId>
+      <version>${hadoop.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
@@ -74,6 +119,10 @@
           <artifactId>slf4j-log4j12</artifactId>
         </exclusion>
         <exclusion>
+          <artifactId>log4j</artifactId>
+          <groupId>log4j</groupId>
+        </exclusion>
+        <exclusion>
           <groupId>org.codehaus.jackson</groupId>
           <artifactId>jackson-mapper-asl</artifactId>
         </exclusion>
@@ -92,7 +141,14 @@
       <groupId>org.apache.drill.exec</groupId>
       <artifactId>drill-jdbc-all</artifactId>
       <version>${drill.version}</version>
-      <systemPath>${env.DRILL_HOME}/jars/jdbc-driver/drill-jdbc-all-${drill.version}.jar</systemPath>
+      <systemPath>${drill.distribution}/${drill.jdbc.driver.path}</systemPath>
+      <scope>system</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.drill.exec</groupId>
+      <artifactId>drill-java-exec</artifactId>
+      <version>${drill.version}</version>
+      <systemPath>${drill.distribution}/${drill.java.exec.path}</systemPath>
       <scope>system</scope>
     </dependency>
     <dependency>
@@ -141,7 +197,7 @@
       <id>mapr-releases</id>
       <url>http://repository.mapr.com/maven/</url>
       <releases>
-        <enabled>true</enabled>
+        <enabled>false</enabled>
       </releases>
       <snapshots>
         <enabled>false</enabled>
@@ -151,6 +207,61 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>io.fabric8</groupId>
+        <artifactId>docker-maven-plugin</artifactId>
+        <version>${maven.docker.plugin.version}</version>
+        <configuration>
+          <showLogs>true</showLogs>
+          <verbose>true</verbose>
+          <images>
+            <image>
+              <name>drill-test-framework</name>
+              <build>
+                <nocache>false</nocache>
+                <from>${docker.base.image}</from>
+              </build>
+              <run>
+                <containerNamePattern>%n_%t_%i</containerNamePattern>
+                <wait>
+                  <exit>0</exit>
+                  <time>1210000000</time>
+                </wait>
+                <volumes>
+                  <bind>
+                    <volume>${drill.test.framework.root}:${docker.drill.test.framework.home}</volume>
+                    <volume>${drill.distribution}:${docker.drill.home}</volume>
+                    <volume>${m2.home}:/root/.m2</volume>
+                  </bind>
+                </volumes>
+                <workingDir>${docker.drill.test.framework.home}</workingDir>
+                <network>
+                  <mode>host</mode>
+                </network>
+                <cmd>
+                  <shell>/bin/bash bin/run_tests --jdbcCP ${docker.drill.home}/${drill.jdbc.driver.path} ${test.args}</shell>
+                </cmd>
+              </run>
+            </image>
+          </images>
+        </configuration>
+        <!--<executions>
+          <execution>
+            <phase>install</phase>
+            <goals>
+              <goal>build</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>start</id>
+            <phase>test</phase>
+            <goals>
+              <goal>run</goal>
+              <goal>stop</goal>
+            </goals>
+          </execution>
+        </executions>-->
+      </plugin>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
         <version>3.1.0</version>
diff --git a/framework/resources/Datasources/ctas/create_tables_complex_parquet.ddl b/framework/resources/Datasources/ctas/create_tables_complex_parquet.ddl
index 0ff2614..5e69767 100644
--- a/framework/resources/Datasources/ctas/create_tables_complex_parquet.ddl
+++ b/framework/resources/Datasources/ctas/create_tables_complex_parquet.ddl
@@ -1,4 +1,4 @@
-CREATE TABLE `complex.json` AS 
+CREATE TABLE dfs.drillTestDirComplexParquet.`complex.json` AS
   SELECT id, 
          gbyi, 
          gbyt, 
diff --git a/framework/resources/Datasources/ctas/create_tables_parquet.ddl b/framework/resources/Datasources/ctas/create_tables_parquet.ddl
index 6814a19..bc187ee 100644
--- a/framework/resources/Datasources/ctas/create_tables_parquet.ddl
+++ b/framework/resources/Datasources/ctas/create_tables_parquet.ddl
@@ -1,6 +1,6 @@
 alter session set `store.format` = 'parquet';
 
-create table ctas_t1(c1, c2, c3, c4) as
+create table dfs.ctas_parquet.ctas_t1(c1, c2, c3, c4) as
 select  j1.c_varchar,
         j2.c_varchar,
         j1.c_date,
@@ -12,7 +12,7 @@
         and j1.c_timestamp IS NOT NULL
 ;
 
-create table ctas_t2(c1, c2) as  
+create table dfs.ctas_parquet.ctas_t2(c1, c2) as
 select  
         j1.c_bigint,
         coalesce(j3.c_bigint, -1000)
@@ -23,19 +23,19 @@
         and j1.d9 > 0
 ;      
 
-create table ctas_t3 as
+create table dfs.ctas_parquet.ctas_t3 as
 select  j4.c_varchar || j2.c_varchar as c1
 from    
         dfs.`ctas`.`j4` right outer join dfs.`ctas`.`j2` on (j2.c_integer = j4.c_integer)
 ;  
 
-create table ctas_t4 as
+create table dfs.ctas_parquet.ctas_t4 as
 select  concat(j4.c_varchar, j2.c_varchar) as c1
 from    
         dfs.`ctas`.`j4` right outer join dfs.`ctas`.`j2` on (j2.c_integer = j4.c_integer)
 ;   
 
-create table ctas_t5(count_star, max_j1_c_int, min_j2_c_int, avg_j1_c_int, avg_j2_c_int) as
+create table dfs.ctas_parquet.ctas_t5(count_star, max_j1_c_int, min_j2_c_int, avg_j1_c_int, avg_j2_c_int) as
 select  
         count(*),
         max(j1.c_integer),
@@ -48,11 +48,11 @@
         j1.c_boolean is false
 ;
 
-/* create table ctas_t6(c1,c2,c3,c4,c5) as select c_integer, c_bigint, c_date, c_time, c_varchar from dfs.`ctas`.`j4` where c_bigint is null; */
+-- create table ctas_t6(c1,c2,c3,c4,c5) as select c_integer, c_bigint, c_date, c_time, c_varchar from dfs.`ctas`.`j4` where c_bigint is null;
 
-create table ctas_t8(c1) as select distinct c_integer from ( select c_integer from dfs.`ctas`.`j1` union all select c_integer from dfs.`ctas`.`j2`) as xyz;
+create table dfs.ctas_parquet.ctas_t8(c1) as select distinct c_integer from ( select c_integer from dfs.`ctas`.`j1` union all select c_integer from dfs.`ctas`.`j2`) as xyz;
 
-create table ctas_t9 as
+create table dfs.ctas_parquet.ctas_t9 as
 select  c_integer          as c1,
         count(c_date)      as c2 
 from    
@@ -63,7 +63,7 @@
         c_integer;
 
 
-create table ctas_t10 (c1, c2) as
+create table dfs.ctas_parquet.ctas_t10 (c1, c2) as
 select  
         count(distinct c_integer),
         sum(c_integer)
@@ -74,7 +74,7 @@
 order by 
         c_date;
 
-create table ctas_t11 as 
+create table dfs.ctas_parquet.ctas_t11 as
 select  
         count(distinct d9) as count_distinct_d9, 
         sum(d9)            as sum_d9 
@@ -92,7 +92,7 @@
         c_date,
         sum(d9) desc nulls first;
 
-create table ctas_t12 (c1, c2, c3) as
+create table dfs.ctas_parquet.ctas_t12 (c1, c2, c3) as
 select
         count(distinct c_bigint) ,
         sum(c_bigint)            ,
@@ -106,7 +106,7 @@
         2
 ;
 
-create table ctas_t13 (c1, c2)  as
+create table dfs.ctas_parquet.ctas_t13 (c1, c2)  as
 select  
         count(distinct d18),
         sum(d18) 
@@ -122,7 +122,7 @@
 group by 
         c_varchar;
 
-create table ctas_t14(x, y) as 
+create table dfs.ctas_parquet.ctas_t14(x, y) as
 select  
         c_date,
         count(distinct c_time)
@@ -133,7 +133,7 @@
 order by 
         c_date limit 10 offset 900;
 
-create table ctas_t15 as 
+create table dfs.ctas_parquet.ctas_t15 as
 select  
         count(distinct c_integer) as count_distinct_1,
         count(distinct c_varchar) as count_distinct_2,
diff --git a/framework/resources/Datasources/ctas/decimal/fragments/decimal_fragments.sh b/framework/resources/Datasources/ctas/decimal/fragments/decimal_fragments.sh
index 2aa524b..4fa6175 100755
--- a/framework/resources/Datasources/ctas/decimal/fragments/decimal_fragments.sh
+++ b/framework/resources/Datasources/ctas/decimal/fragments/decimal_fragments.sh
@@ -1,19 +1,6 @@
 #!/bin/bash
-source conf/drillTestConfig.properties
+DRILL_TEST_DATA_DIR=$1
 
 tar -xzmvf ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_big.tar.gz -C ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments
 tar -xzmvf ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_big_zero_prec.tar.gz -C ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments
 tar -xzmvf ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_big_zero_scale.tar.gz -C ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments
-
-hadoop fs -mkdir -p /drill/testdata/decimal/fragments
-
-hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_big.tsv /drill/testdata/decimal/fragments
-hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_big_zero_prec.tsv /drill/testdata/decimal/fragments
-hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_big_zero_scale.tsv /drill/testdata/decimal/fragments
-
-if [ -z "$PASSWORD" ]
-then
-  ${DRILL_HOME}/bin/sqlline -n ${USERNAME} -u "jdbc:drill:schema=dfs.drillTestDir;drillbit=${DRILL_STORAGE_PLUGIN_SERVER}" --run=${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_fragments.ddl
-else
-  ${DRILL_HOME}/bin/sqlline -n ${USERNAME} -p ${PASSWORD} -u "jdbc:drill:schema=dfs.drillTestDir;drillbit=${DRILL_STORAGE_PLUGIN_SERVER}" --run=${DRILL_TEST_DATA_DIR}/Datasources/ctas/decimal/fragments/decimal_fragments.ddl
-fi
diff --git a/framework/resources/Datasources/ctas_auto_partition/create_tables.ddl b/framework/resources/Datasources/ctas_auto_partition/create_tables.ddl
index 33a3a2a..0ec6eca 100644
--- a/framework/resources/Datasources/ctas_auto_partition/create_tables.ddl
+++ b/framework/resources/Datasources/ctas_auto_partition/create_tables.ddl
@@ -1,8 +1,8 @@
-create table `tpch_single_partition/lineitem` partition by (l_moddate) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 l_moddate from cp.`tpch/lineitem.parquet` l;
-create table `tpch_single_partition/orders` partition by (o_decimal) as select o.*, cast(case when o_orderpriority = '5-LOW' then 2.8 else 2 end as decimal(5,2)) o_decimal from cp.`tpch/orders.parquet` o;
-create table `tpch_single_partition/partsupp` partition by (ps_partkey_int) as select ps.*, cast(ps_partkey as int) ps_partkey_int from cp.`tpch/partsupp.parquet` ps;
-create table `tpch_single_partition/part` partition by (p_mfgr) as select * from cp.`tpch/part.parquet`;
-create table `tpch_single_partition/supplier` partition by (dbl_nationkey) as select s.*, cast(s_nationkey as double) dbl_nationkey from cp.`tpch/supplier.parquet` s;
-create table `tpch_single_partition/nation` partition by (n_rgnkey_float) as select n.*, cast(n_regionkey as float) n_rgnkey_float from cp.`tpch/nation.parquet` n;
-create table `tpch_single_partition/region` partition by (r_regionkey_bigint) as select r.*, cast(r_regionkey+10000000000 as bigint) r_regionkey_bigint from cp.`tpch/region.parquet` r;
-create table `tpch_single_partition/customer` partition by (binary_mktsegment) as select c.*, encode(c_mktsegment, 'UTF-8') binary_mktsegment from cp.`tpch/customer.parquet` c;
+create table dfs.ctasAutoPartition.`tpch_single_partition/lineitem` partition by (l_moddate) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 l_moddate from cp.`tpch/lineitem.parquet` l;
+create table dfs.ctasAutoPartition.`tpch_single_partition/orders` partition by (o_decimal) as select o.*, cast(case when o_orderpriority = '5-LOW' then 2.8 else 2 end as decimal(5,2)) o_decimal from cp.`tpch/orders.parquet` o;
+create table dfs.ctasAutoPartition.`tpch_single_partition/partsupp` partition by (ps_partkey_int) as select ps.*, cast(ps_partkey as int) ps_partkey_int from cp.`tpch/partsupp.parquet` ps;
+create table dfs.ctasAutoPartition.`tpch_single_partition/part` partition by (p_mfgr) as select * from cp.`tpch/part.parquet`;
+create table dfs.ctasAutoPartition.`tpch_single_partition/supplier` partition by (dbl_nationkey) as select s.*, cast(s_nationkey as double) dbl_nationkey from cp.`tpch/supplier.parquet` s;
+create table dfs.ctasAutoPartition.`tpch_single_partition/nation` partition by (n_rgnkey_float) as select n.*, cast(n_regionkey as float) n_rgnkey_float from cp.`tpch/nation.parquet` n;
+create table dfs.ctasAutoPartition.`tpch_single_partition/region` partition by (r_regionkey_bigint) as select r.*, cast(r_regionkey+10000000000 as bigint) r_regionkey_bigint from cp.`tpch/region.parquet` r;
+create table dfs.ctasAutoPartition.`tpch_single_partition/customer` partition by (binary_mktsegment) as select c.*, encode(c_mktsegment, 'UTF-8') binary_mktsegment from cp.`tpch/customer.parquet` c;
diff --git a/framework/resources/Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl b/framework/resources/Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl
index 77c3fec..d90a6c9 100644
--- a/framework/resources/Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl
+++ b/framework/resources/Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl
@@ -1,5 +1,5 @@
-create table `existing_partition_pruning/lineitempart` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/lineitempart`;
-create table `existing_partition_pruning/lineitem` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/lineitem`;
-create table `existing_partition_pruning/lineitem_hierarchical_intstring` partition by (dir0, dir1) as select * from dfs.`/drill/testdata/partition_pruning/hive/text/lineitem_hierarchical_intstring`;
-create table `existing_partition_pruning/ordersjson` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/ordersjson`;
-create table `existing_partition_pruning/orders` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/orders`;
+create table dfs.ctasAutoPartition.`existing_partition_pruning/lineitempart` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/lineitempart`;
+create table dfs.ctasAutoPartition.`existing_partition_pruning/lineitem` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/lineitem`;
+create table dfs.ctasAutoPartition.`existing_partition_pruning/lineitem_hierarchical_intstring` partition by (dir0, dir1) as select * from dfs.`/drill/testdata/partition_pruning/hive/text/lineitem_hierarchical_intstring`;
+create table dfs.ctasAutoPartition.`existing_partition_pruning/ordersjson` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/ordersjson`;
+create table dfs.ctasAutoPartition.`existing_partition_pruning/orders` partition by (dir0) as select * from dfs.`/drill/testdata/partition_pruning/dfs/orders`;
diff --git a/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.ddl b/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.ddl
index d890e70..8f83b94 100644
--- a/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.ddl
+++ b/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.ddl
@@ -1,5 +1,5 @@
-create table `tpch_multiple_partitions/lineitem_twopart` partition by (l_modline, l_moddate) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l;
-create table `tpch_multiple_partitions/lineitem_twopart_ordered` partition by (l_modline, l_moddate) as select l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l order by l_moddate;
-create table `tpch_multiple_partitions/lineitem_twopart_ordered2` partition by (l_modline, l_moddate) as select l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l order by l_modline, l_moddate;
-create table `tpch_multiple_partitions/lineitem_twopart_ordered3` partition by (l_modline, l_moddate) as select l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l order by l_modline;
-create table `tpch_multiple_partitions/lineitem_twopart_zero` partition by (l_modline, l_moddate) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l where 1=0;
+create table dfs.ctasAutoPartition.`tpch_multiple_partitions/lineitem_twopart` partition by (l_modline, l_moddate) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l;
+create table dfs.ctasAutoPartition.`tpch_multiple_partitions/lineitem_twopart_ordered` partition by (l_modline, l_moddate) as select l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l order by l_moddate;
+create table dfs.ctasAutoPartition.`tpch_multiple_partitions/lineitem_twopart_ordered2` partition by (l_modline, l_moddate) as select l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l order by l_modline, l_moddate;
+create table dfs.ctasAutoPartition.`tpch_multiple_partitions/lineitem_twopart_ordered3` partition by (l_modline, l_moddate) as select l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l order by l_modline;
+create table dfs.ctasAutoPartition.`tpch_multiple_partitions/lineitem_twopart_zero` partition by (l_modline, l_moddate) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 l_moddate, mod(l_linenumber,3) l_modline from cp.`tpch/lineitem.parquet` l where 1=0;
diff --git a/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl b/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl
index a9559c6..b47e911 100644
--- a/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl
+++ b/framework/resources/Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl
@@ -1,11 +1,11 @@
-create table `tpch_single_partition1/lineitem` partition by (c1) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 + time '05:30:44.800' as c1 from cp.`tpch/lineitem.parquet` l;
-create table `tpch_single_partition1/orders` partition by (c1) as SELECT o.*, case when `year`(o_orderdate) > 1995 then interval '1 2' day to hour else interval '1 19:30:45' day to second end as c1 from cp.`tpch/orders.parquet` o;
-create table `tpch_single_partition1/partsupp`  partition by (c1) as select ps.*, case when ps_partkey > 1000 then interval '1-2' year to month else interval '1' year end as c1 from cp.`tpch/partsupp.parquet` ps;
-create table `tpch_single_partition1/part` partition by (p_mfgr) as select * from cp.`tpch/part.parquet`;
-create table `tpch_single_partition1/supplier` partition by (dbl_nationkey) as select s.*, cast(s_nationkey as double) dbl_nationkey from cp.`tpch/supplier.parquet` s;
-create table `tpch_single_partition1/nation` partition by (n_regionkey) as select * from cp.`tpch/nation.parquet` n;
-create table `tpch_single_partition1/region` partition by (c1) as select r.*, case when r_regionkey < 3 then time '12:12:12.12' else time '14:13:12.00' end c1 from cp.`tpch/region.parquet` r;
-create table `tpch_single_partition1/customer` partition by (c_bool) as select c.*, case when c_mktsegment = 'MACHINERY' then true else false end as c_bool from cp.`tpch/customer.parquet` c;
-create table `tpch_single_partition1/drill4449` partition by (l_discount) as select * from cp.`tpch/lineitem.parquet`;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/lineitem` partition by (c1) as select l.*, l_shipdate - extract(day from l_shipdate) + 1 + time '05:30:44.800' as c1 from cp.`tpch/lineitem.parquet` l;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/orders` partition by (c1) as SELECT o.*, case when `year`(o_orderdate) > 1995 then interval '1 2' day to hour else interval '1 19:30:45' day to second end as c1 from cp.`tpch/orders.parquet` o;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/partsupp`  partition by (c1) as select ps.*, case when ps_partkey > 1000 then interval '1-2' year to month else interval '1' year end as c1 from cp.`tpch/partsupp.parquet` ps;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/part` partition by (p_mfgr) as select * from cp.`tpch/part.parquet`;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/supplier` partition by (dbl_nationkey) as select s.*, cast(s_nationkey as double) dbl_nationkey from cp.`tpch/supplier.parquet` s;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/nation` partition by (n_regionkey) as select * from cp.`tpch/nation.parquet` n;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/region` partition by (c1) as select r.*, case when r_regionkey < 3 then time '12:12:12.12' else time '14:13:12.00' end c1 from cp.`tpch/region.parquet` r;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/customer` partition by (c_bool) as select c.*, case when c_mktsegment = 'MACHINERY' then true else false end as c_bool from cp.`tpch/customer.parquet` c;
+create table dfs.ctasAutoPartition.`tpch_single_partition1/drill4449` partition by (l_discount) as select * from cp.`tpch/lineitem.parquet`;
 
-refresh table metadata `tpch_single_partition1/drill4449`;
+refresh table metadata dfs.ctasAutoPartition.`tpch_single_partition1/drill4449`;
diff --git a/framework/resources/Datasources/join/crt_tbl_prtnby_nulls.ddl b/framework/resources/Datasources/join/crt_tbl_prtnby_nulls.ddl
index 172342a..9bb818b 100644
--- a/framework/resources/Datasources/join/crt_tbl_prtnby_nulls.ddl
+++ b/framework/resources/Datasources/join/crt_tbl_prtnby_nulls.ddl
@@ -1,6 +1,6 @@
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_chr_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_chr_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_chr_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_chr_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -9,11 +9,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         CASE when columns[3] = '' THEN CAST(null AS char(1)) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_vrchr_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_vrchr_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_vrchr_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_vrchr_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -22,11 +22,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS VARCHAR(2)) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_int_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_int_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_int_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_int_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -35,11 +35,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS INTEGER) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_dbl_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_dbl_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_dbl_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_dbl_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -48,11 +48,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS DOUBLE) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_date_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_date_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_date_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_date_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -61,11 +61,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS DATE) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_time_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_time_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_time_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_time_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -74,11 +74,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS TIME) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_tmstmp_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_tmstmp_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_tmstmp_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_tmstmp_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -87,11 +87,11 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS TIMESTAMP) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
 
-DROP TABLE IF EXISTS tbl_prtnby_all_nulls_intrvlday_col;
+DROP TABLE IF EXISTS dfs.`Join`.tbl_prtnby_all_nulls_intrvlday_col;
 
-CREATE TABLE tbl_prtnby_all_nulls_intrvlday_col
+CREATE TABLE dfs.`Join`.tbl_prtnby_all_nulls_intrvlday_col
 PARTITION BY (c4) 
 AS
 SELECT
@@ -100,4 +100,4 @@
         CAST(columns[2] AS VARCHAR(65)) c3,
         cASe when columns[3] = '' THEN CAST(null AS INTERVAL DAY) END c4,
         CAST(columns[4] AS DATE) c5
-FROM `allNullsInCol.csv`;
+FROM dfs.`Join`.`allNullsInCol.csv`;
diff --git a/framework/resources/Datasources/join/crt_tbls_partition_by_l.ddl b/framework/resources/Datasources/join/crt_tbls_partition_by_l.ddl
index ef5317d..f0566bd 100644
--- a/framework/resources/Datasources/join/crt_tbls_partition_by_l.ddl
+++ b/framework/resources/Datasources/join/crt_tbls_partition_by_l.ddl
@@ -1,22 +1,22 @@
-DROP TABLE IF EXISTS l_tblprtnby_intcl;
-CREATE TABLE l_tblprtnby_intcl PARTITION BY( col_int ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_chrcl;
-CREATE TABLE l_tblprtnby_chrcl PARTITION BY( col_chr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_vrchrcl1;
-CREATE TABLE l_tblprtnby_vrchrcl1 PARTITION BY( col_vrchr1 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_vrchrcl2;
-CREATE TABLE l_tblprtnby_vrchrcl2 PARTITION BY( col_vrchr2 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_dtcl;
-CREATE TABLE l_tblprtnby_dtcl PARTITION BY( col_dt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_timcl;
-CREATE TABLE l_tblprtnby_timcl PARTITION BY( col_tim ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_tmstmpcl;
-CREATE TABLE l_tblprtnby_tmstmpcl PARTITION BY( col_tmstmp ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_fltcl;
-CREATE TABLE l_tblprtnby_fltcl PARTITION BY( col_flt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_intrvlyrcl;
-CREATE TABLE l_tblprtnby_intrvlyrcl PARTITION BY( col_intrvl_yr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_intrvldycl;
-CREATE TABLE l_tblprtnby_intrvldycl PARTITION BY( col_intrvl_day ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
-DROP TABLE IF EXISTS l_tblprtnby_blncl;
-CREATE TABLE l_tblprtnby_blncl PARTITION BY( col_bln ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_intcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_intcl PARTITION BY( col_int ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_chrcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_chrcl PARTITION BY( col_chr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_vrchrcl1;
+CREATE TABLE dfs.`Join`.l_tblprtnby_vrchrcl1 PARTITION BY( col_vrchr1 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_vrchrcl2;
+CREATE TABLE dfs.`Join`.l_tblprtnby_vrchrcl2 PARTITION BY( col_vrchr2 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_dtcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_dtcl PARTITION BY( col_dt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_timcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_timcl PARTITION BY( col_tim ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_tmstmpcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_tmstmpcl PARTITION BY( col_tmstmp ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_fltcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_fltcl PARTITION BY( col_flt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_intrvlyrcl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_intrvlyrcl PARTITION BY( col_intrvl_yr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_intrvldycl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_intrvldycl PARTITION BY( col_intrvl_day ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
+DROP TABLE IF EXISTS dfs.`Join`.l_tblprtnby_blncl;
+CREATE TABLE dfs.`Join`.l_tblprtnby_blncl PARTITION BY( col_bln ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_l`;
diff --git a/framework/resources/Datasources/join/crt_tbls_partition_by_r.ddl b/framework/resources/Datasources/join/crt_tbls_partition_by_r.ddl
index b63e2f6..f9b64d6 100644
--- a/framework/resources/Datasources/join/crt_tbls_partition_by_r.ddl
+++ b/framework/resources/Datasources/join/crt_tbls_partition_by_r.ddl
@@ -1,22 +1,22 @@
-DROP TABLE IF EXISTS r_tblprtnby_intcl;
-CREATE TABLE r_tblprtnby_intcl PARTITION BY( col_int ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_chrcl;
-CREATE TABLE r_tblprtnby_chrcl PARTITION BY( col_chr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_vrchrcl1;
-CREATE TABLE r_tblprtnby_vrchrcl1 PARTITION BY( col_vrchr1 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_vrchrcl2;
-CREATE TABLE r_tblprtnby_vrchrcl2 PARTITION BY( col_vrchr2 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_dtcl;
-CREATE TABLE r_tblprtnby_dtcl PARTITION BY( col_dt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_timcl;
-CREATE TABLE r_tblprtnby_timcl PARTITION BY( col_tim ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_tmstmpcl;
-CREATE TABLE r_tblprtnby_tmstmpcl PARTITION BY( col_tmstmp ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_fltcl;
-CREATE TABLE r_tblprtnby_fltcl PARTITION BY( col_flt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_intrvlyrcl;
-CREATE TABLE r_tblprtnby_intrvlyrcl PARTITION BY( col_intrvl_yr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_intrvldycl;
-CREATE TABLE r_tblprtnby_intrvldycl PARTITION BY( col_intrvl_day ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
-DROP TABLE IF EXISTS r_tblprtnby_blncl;
-CREATE TABLE r_tblprtnby_blncl PARTITION BY( col_bln ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_intcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_intcl PARTITION BY( col_int ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_chrcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_chrcl PARTITION BY( col_chr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_vrchrcl1;
+CREATE TABLE dfs.`Join`.r_tblprtnby_vrchrcl1 PARTITION BY( col_vrchr1 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_vrchrcl2;
+CREATE TABLE dfs.`Join`.r_tblprtnby_vrchrcl2 PARTITION BY( col_vrchr2 ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_dtcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_dtcl PARTITION BY( col_dt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_timcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_timcl PARTITION BY( col_tim ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_tmstmpcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_tmstmpcl PARTITION BY( col_tmstmp ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_fltcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_fltcl PARTITION BY( col_flt ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_intrvlyrcl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_intrvlyrcl PARTITION BY( col_intrvl_yr ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_intrvldycl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_intrvldycl PARTITION BY( col_intrvl_day ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
+DROP TABLE IF EXISTS dfs.`Join`.r_tblprtnby_blncl;
+CREATE TABLE dfs.`Join`.r_tblprtnby_blncl PARTITION BY( col_bln ) AS SELECT * FROM dfs.`/drill/testdata/join/typeall_r`;
diff --git a/framework/resources/Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sql b/framework/resources/Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sql
index 6e5d306..584d123 100644
--- a/framework/resources/Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sql
+++ b/framework/resources/Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sql
@@ -1,3 +1,3 @@
-create or replace view cast_tbl_1_v as select cast(c_varchar as varchar(20)) c_varchar,cast(c_integer as int) c_integer,cast(c_bigint as bigint) c_bigint,cast(c_float as float) c_float,cast(c_double as double) c_double,cast(c_date as date) c_date,cast(c_time as time) c_time, cast(c_timestamp as timestamp) c_timestamp,cast(c_boolean as boolean) c_boolean,cast(d9 as double) d9,cast(d18 as double) d18,cast(d28 as double) d28, cast(d38 as double precision) d38 from `dfs.joins`.cast_tbl_1;
+create or replace view dfs.joins.cast_tbl_1_v as select cast(c_varchar as varchar(20)) c_varchar,cast(c_integer as int) c_integer,cast(c_bigint as bigint) c_bigint,cast(c_float as float) c_float,cast(c_double as double) c_double,cast(c_date as date) c_date,cast(c_time as time) c_time, cast(c_timestamp as timestamp) c_timestamp,cast(c_boolean as boolean) c_boolean,cast(d9 as double) d9,cast(d18 as double) d18,cast(d28 as double) d28, cast(d38 as double precision) d38 from `dfs.joins`.cast_tbl_1;
 
-create or replace view cast_tbl_2_v as select cast(c_varchar as varchar(20)) c_varchar,cast(c_integer as int) c_integer,cast(c_bigint as bigint) c_bigint,cast(c_float as float) c_float,cast(c_double as double) c_double,cast(c_date as date) c_date,cast(c_time as time) c_time, cast(c_timestamp as timestamp) c_timestamp,cast(c_boolean as boolean) c_boolean,cast(d9 as double) d9,cast(d18 as double) d18,cast(d28 as double) d28, cast(d38 as double precision) d38 from `dfs.joins`.cast_tbl_2;
+create or replace view dfs.joins.cast_tbl_2_v as select cast(c_varchar as varchar(20)) c_varchar,cast(c_integer as int) c_integer,cast(c_bigint as bigint) c_bigint,cast(c_float as float) c_float,cast(c_double as double) c_double,cast(c_date as date) c_date,cast(c_time as time) c_time, cast(c_timestamp as timestamp) c_timestamp,cast(c_boolean as boolean) c_boolean,cast(d9 as double) d9,cast(d18 as double) d18,cast(d28 as double) d28, cast(d38 as double precision) d38 from `dfs.joins`.cast_tbl_2;
diff --git a/framework/resources/Datasources/min_max_dir/scripts/refresh_metadata.ddl b/framework/resources/Datasources/min_max_dir/scripts/refresh_metadata.ddl
index 8e9c395..ad16c7b 100755
--- a/framework/resources/Datasources/min_max_dir/scripts/refresh_metadata.ddl
+++ b/framework/resources/Datasources/min_max_dir/scripts/refresh_metadata.ddl
@@ -1 +1 @@
-refresh table metadata min_max_dir_metadatacache;
+refresh table metadata dfs.drillTestDir.min_max_dir_metadatacache;
diff --git a/framework/resources/Datasources/schema_change_empty_batch/json/setup.sh b/framework/resources/Datasources/schema_change_empty_batch/json/setup.sh
index 5fb583e..e1ea2ec 100755
--- a/framework/resources/Datasources/schema_change_empty_batch/json/setup.sh
+++ b/framework/resources/Datasources/schema_change_empty_batch/json/setup.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-source conf/drillTestConfig.properties
+DRILL_TEST_DATA_DIR=$1
 
 set -x
 set -e
@@ -39,21 +39,4 @@
 
 fi
 
-if ! $(hadoop fs -test -d ${DRILL_TESTDATA}/schema_change_empty_batch/json)
-    then
-
-        echo "Copying to hadoop"
-
-        hadoop fs -mkdir -p ${DRILL_TESTDATA}/schema_change_empty_batch/json
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/json/part ${DRILL_TESTDATA}/schema_change_empty_batch/json/
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/json/partsupp ${DRILL_TESTDATA}/schema_change_empty_batch/json/
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/json/empty ${DRILL_TESTDATA}/schema_change_empty_batch/json/
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/json/part_small ${DRILL_TESTDATA}/schema_change_empty_batch/json/
-
-fi
-
 set +x
diff --git a/framework/resources/Datasources/schema_change_empty_batch/text/dfs/setup.sh b/framework/resources/Datasources/schema_change_empty_batch/text/dfs/setup.sh
index 0836dfe..5fca382 100755
--- a/framework/resources/Datasources/schema_change_empty_batch/text/dfs/setup.sh
+++ b/framework/resources/Datasources/schema_change_empty_batch/text/dfs/setup.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-source conf/drillTestConfig.properties
+DRILL_TEST_DATA_DIR=$1
 
 set -x
 set -e
@@ -35,24 +35,7 @@
 
         touch ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/psv/partsupp/partsuppa{f..h}.tbl
 
-        touch ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/psv/empty/empty{a..d}.tbl
-
-fi
-
-if ! $(hadoop fs -test -d ${DRILL_TESTDATA}/schema_change_empty_batch/psv)
-    then
-
-        echo "Copying to hadoop"
-
-        hadoop fs -mkdir -p ${DRILL_TESTDATA}/schema_change_empty_batch/psv
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/psv/part ${DRILL_TESTDATA}/schema_change_empty_batch/psv/
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/psv/partsupp ${DRILL_TESTDATA}/schema_change_empty_batch/psv/
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/psv/empty ${DRILL_TESTDATA}/schema_change_empty_batch/psv/
-
-        hadoop fs -put ${DRILL_TEST_DATA_DIR}/Datasources/schema_change_empty_batch/data/psv/json_field ${DRILL_TESTDATA}/schema_change_empty_batch/psv/
+        touch ${DRILL_TEST_DATA_DIR}/Datasources/spsv/json_field/empty_json_field.tblchema_change_empty_batch/data/psv/empty/empty{a..d}.tbl
 
 fi
 
diff --git a/framework/resources/Datasources/subqueries/create_tables.sql b/framework/resources/Datasources/subqueries/create_tables.sql
index 6456459..25ee260 100644
--- a/framework/resources/Datasources/subqueries/create_tables.sql
+++ b/framework/resources/Datasources/subqueries/create_tables.sql
@@ -1,4 +1,4 @@
 alter session set `store.parquet.reader.int96_as_timestamp`=true;
-create table hive1_parquet_part partition by (create_timestamp1) as select * from hive1_parquet limit 10;
+create table dfs.subqueries.hive1_parquet_part partition by (create_timestamp1) as select * from dfs.subqueries.hive1_parquet limit 10;
 alter session set `store.parquet.reader.int96_as_timestamp`=false;
-refresh table metadata `hive1_parquet_part`;
+refresh table metadata dfs.subqueries.`hive1_parquet_part`;
diff --git a/framework/resources/Datasources/subqueries/create_views.sql b/framework/resources/Datasources/subqueries/create_views.sql
index d5d5951..28e2e71 100644
--- a/framework/resources/Datasources/subqueries/create_views.sql
+++ b/framework/resources/Datasources/subqueries/create_views.sql
@@ -1,4 +1,4 @@
-create or replace view optional_type_v as
+create or replace view dfs.subqueries.optional_type_v as
 select
         cast(c_varchar as varchar(100))		as c_varchar,
         cast(c_integer as integer)		as c_integer,
@@ -10,10 +10,10 @@
         cast(c_timestamp as timestamp)		as c_timestamp,
         cast(c_boolean as boolean)		as c_boolean
 from
-        j1
+    dfs.subqueries.j1
 ;
 
-create or replace view required_type_v as
+create or replace view dfs.subqueries.required_type_v as
 select
         cast(c_varchar as varchar(100))		as c_varchar,
         cast(c_integer as integer)		as c_integer,
@@ -25,5 +25,5 @@
         cast(c_timestamp as timestamp)		as c_timestamp,
         cast(c_boolean as boolean)		as c_boolean
 from
-        j3
+    dfs.subqueries.j3
 ;
diff --git a/framework/resources/Datasources/table_function/DRILL-5166_generate_data.sh b/framework/resources/Datasources/table_function/DRILL-5166_generate_data.sh
index 901bd21..9f4d4de 100755
--- a/framework/resources/Datasources/table_function/DRILL-5166_generate_data.sh
+++ b/framework/resources/Datasources/table_function/DRILL-5166_generate_data.sh
@@ -1,8 +1,7 @@
 #!/bin/bash
-source conf/drillTestConfig.properties
+DRILL_TEST_DATA_DIR=$1
 
 test_dir=${DRILL_TEST_DATA_DIR}/Datasources/table_function
-dfs_location=${DRILL_TESTDATA}/table_function
 
 untar_data () {
     local location=$1
@@ -12,37 +11,21 @@
     tar xzvf $location/$tar_name -C $location ./$file_name
 }
 
-copy_to_dfs () {
-    local location=$1
-    local file_name=$2
-    local file=$location/$file_name
-    local destination=$3
-
-    hadoop fs -test -f $destination/$file_name
-    if [ $? -eq 0 ]
-    then
-	    hadoop fs -rm -r $destination/$file_name
-    fi
-    hadoop fs -put $file $destination/
-}
-
 prepare_dataset () {
     local location=$1
     local file_name=$2
     local file=$test_dir/$file_name
     local tar_name=$3
-    local destination=$4
 
     # Reusing of existing file if exists
     if [ ! -f $file ]
     then
         untar_data $location $tar_name $file_name
-        copy_to_dfs $location $file_name $destination        
     fi
 }
 
 base_file_name="DRILL-5166_NPE_with_table_function"
 tar_name="DRILL-5166_data.tar.gz"
-prepare_dataset $test_dir ${base_file_name}_group_select_1.csv $tar_name $dfs_location
-prepare_dataset $test_dir ${base_file_name}_group_select_2.csv $tar_name $dfs_location
-prepare_dataset $test_dir ${base_file_name}_large_file.csv $tar_name $dfs_location
+prepare_dataset $test_dir ${base_file_name}_group_select_1.csv $tar_name
+prepare_dataset $test_dir ${base_file_name}_group_select_2.csv $tar_name
+prepare_dataset $test_dir ${base_file_name}_large_file.csv $tar_name
diff --git a/framework/resources/Datasources/table_stats/analyze_tables.sql b/framework/resources/Datasources/table_stats/analyze_tables.sql
index bf1c723..3079f3a 100755
--- a/framework/resources/Datasources/table_stats/analyze_tables.sql
+++ b/framework/resources/Datasources/table_stats/analyze_tables.sql
@@ -1,4 +1,5 @@
 set `store.parquet.reader.int96_as_timestamp`=true;
+use dfs.drillTestDir;
 analyze table `table_stats/alltypes_with_nulls` compute statistics;
 analyze table `table_stats/date_intervals` compute statistics;
 analyze table `table_stats/impala_parquet` compute statistics;
diff --git a/framework/resources/Datasources/tpcds/createViewsParquet.sql b/framework/resources/Datasources/tpcds/createViewsParquet.sql
index 76feaee..6c13527 100755
--- a/framework/resources/Datasources/tpcds/createViewsParquet.sql
+++ b/framework/resources/Datasources/tpcds/createViewsParquet.sql
@@ -1,6 +1,6 @@
 use dfs.tpcds_sf1_parquet_views;
 
-create or replace view customer as select
+create or replace view dfs.tpcds_sf1_parquet_views.customer as select
 cast(c_customer_sk as integer)  as c_customer_sk,
 cast(c_customer_id as varchar(200))  as c_customer_id,
 cast(c_current_cdemo_sk as integer)  as c_current_cdemo_sk,
@@ -21,7 +21,7 @@
 cast(c_last_review_date as varchar(200))  as c_last_review_date
 from dfs.`/drill/testdata/tpcds_sf1/parquet/customer`;
 
-create or replace view customer_address as select
+create or replace view dfs.tpcds_sf1_parquet_views.customer_address as select
 cast(ca_address_sk as integer)   as ca_address_sk,
 cast(ca_address_id as varchar(200))  as ca_address_id,
 cast(ca_street_number as varchar(200))  as ca_street_number,
@@ -37,7 +37,7 @@
 cast(ca_location_type as varchar(200))  as ca_location_type
 from dfs.`/drill/testdata/tpcds_sf1/parquet/customer_address`;
 
-create or replace view customer_demographics as select
+create or replace view dfs.tpcds_sf1_parquet_views.customer_demographics as select
 cast( cd_demo_sk as integer)  as cd_demo_sk,
 cast( cd_gender as varchar(200))  as cd_gender ,
 cast( cd_marital_status as varchar(200))  as cd_marital_status,
@@ -49,7 +49,7 @@
 cast( cd_dep_college_count as integer)  as cd_dep_college_count
 from dfs.`/drill/testdata/tpcds_sf1/parquet/customer_demographics`;
 
-create or replace view household_demographics as select
+create or replace view dfs.tpcds_sf1_parquet_views.household_demographics as select
 cast( hd_demo_sk as integer)  as hd_demo_sk,
 cast( hd_income_band_sk as integer)   as hd_income_band_sk,
 cast( hd_buy_potential as varchar(200))  as hd_buy_potential,
@@ -57,7 +57,7 @@
 cast( hd_vehicle_count as integer)   as hd_vehicle_count
 from dfs.`/drill/testdata/tpcds_sf1/parquet/household_demographics`;
 
-create or replace view item as select
+create or replace view dfs.tpcds_sf1_parquet_views.item as select
 cast( i_item_sk as integer)  as i_item_sk,
 cast( i_item_id as varchar(200))   as i_item_id,
 cast( i_rec_start_date as date)  as i_rec_start_date,
@@ -82,7 +82,7 @@
 cast( i_product_name as varchar(200))   as i_product_name
 from dfs.`/drill/testdata/tpcds_sf1/parquet/item`;
 
-create or replace view promotion as select
+create or replace view dfs.tpcds_sf1_parquet_views.promotion as select
 cast( p_promo_sk as integer)  as p_promo_sk,
 cast( p_promo_id as varchar(200))  as p_promo_id,
 cast( p_start_date_sk as integer)  as p_start_date_sk,
@@ -104,7 +104,7 @@
 cast( p_discount_active as varchar(200))  as p_discount_active
 from dfs.`/drill/testdata/tpcds_sf1/parquet/promotion`;
 
-create or replace view time_dim as select
+create or replace view dfs.tpcds_sf1_parquet_views.time_dim as select
 cast( t_time_sk as integer)  as t_time_sk,
 cast( t_time_id as varchar(200))  as t_time_id,
 cast( t_time as integer)  as t_time,
@@ -117,7 +117,7 @@
 cast( t_meal_time as varchar(200))  as t_meal_time
 from dfs.`/drill/testdata/tpcds_sf1/parquet/time_dim`;
 
-create or replace view date_dim as select
+create or replace view dfs.tpcds_sf1_parquet_views.date_dim as select
 cast( d_date_sk as integer)  as d_date_sk,
 cast( d_date_id as varchar(200))  as d_date_id,
 cast( d_date as date)  as d_date,
@@ -148,7 +148,7 @@
 cast( d_current_year as varchar(200))  as d_current_year
 from dfs.`/drill/testdata/tpcds_sf1/parquet/date_dim`;
 
-create or replace view store as select
+create or replace view dfs.tpcds_sf1_parquet_views.store as select
 cast( s_store_sk as integer)  as s_store_sk,
 cast( s_store_id as varchar(200))  as s_store_id,
 cast( s_rec_start_date as date)  as s_rec_start_date,
@@ -180,7 +180,7 @@
 cast( s_tax_precentage as double)  as s_tax_precentage
 from dfs.`/drill/testdata/tpcds_sf1/parquet/store`;
 
-create or replace view store_sales as select
+create or replace view dfs.tpcds_sf1_parquet_views.store_sales as select
 cast( ss_sold_date_sk as integer)  as ss_sold_date_sk,
 cast( ss_sold_time_sk as integer)  as ss_sold_time_sk,
 cast( ss_item_sk as integer)  as ss_item_sk,
@@ -206,7 +206,7 @@
 cast( ss_net_profit as double)  as ss_net_profit
 from dfs.`/drill/testdata/tpcds_sf1/parquet/store_sales`;
 
-create or replace view warehouse as select
+create or replace view dfs.tpcds_sf1_parquet_views.warehouse as select
 cast( w_warehouse_sk as integer)  as w_warehouse_sk,
 cast( w_warehouse_id as varchar(200))  as w_warehouse_id,
 cast( w_warehouse_name as varchar(200))  as w_warehouse_name,
@@ -223,7 +223,7 @@
 cast( w_gmt_offset as double)  as w_gmt_offset
 from dfs.`/drill/testdata/tpcds_sf1/parquet/warehouse`;
 
-create or replace view ship_mode as select
+create or replace view dfs.tpcds_sf1_parquet_views.ship_mode as select
 cast( sm_ship_mode_sk as integer)  as sm_ship_mode_sk,
 cast( sm_ship_mode_id as varchar(200))  as sm_ship_mode_id,
 cast( sm_type as varchar(200))  as sm_type,
@@ -232,19 +232,19 @@
 cast( sm_contract as varchar(200))  as sm_contract
 from dfs.`/drill/testdata/tpcds_sf1/parquet/ship_mode`;
 
-create or replace view reason as select
+create or replace view dfs.tpcds_sf1_parquet_views.reason as select
 cast( r_reason_sk as integer)  as r_reason_sk,
 cast( r_reason_id as varchar(200))  as r_reason_id,
 cast( r_reason_desc as varchar(200))  as r_reason_desc
 from dfs.`/drill/testdata/tpcds_sf1/parquet/reason`;
 
-create or replace view income_band as select
+create or replace view dfs.tpcds_sf1_parquet_views.income_band as select
 cast( ib_income_band_sk as integer)  as ib_income_band_sk,
 cast( ib_lower_bound as integer)  as ib_lower_bound,
 cast( ib_upper_bound as integer)  as ib_upper_bound
 from dfs.`/drill/testdata/tpcds_sf1/parquet/income_band`;
 
-create or replace view call_center as select
+create or replace view dfs.tpcds_sf1_parquet_views.call_center as select
 cast( cc_call_center_sk as integer)  as cc_call_center_sk,
 cast( cc_call_center_id as varchar(200))  as cc_call_center_id,
 cast( cc_rec_start_date as date)  as cc_rec_start_date,
@@ -278,7 +278,7 @@
 cast( cc_tax_percentage as double)  as cc_tax_percentage
 from dfs.`/drill/testdata/tpcds_sf1/parquet/call_center`;
 
-create or replace view web_site as select
+create or replace view dfs.tpcds_sf1_parquet_views.web_site as select
 cast( web_site_sk as integer)  as web_site_sk,
 cast( web_site_id as varchar(200))  as web_site_id,
 cast( web_rec_start_date as date)  as web_rec_start_date,
@@ -307,7 +307,7 @@
 cast( web_tax_percentage as double)  as web_tax_percentage
 from dfs.`/drill/testdata/tpcds_sf1/parquet/web_site`;
 
-create or replace view store_returns as select
+create or replace view dfs.tpcds_sf1_parquet_views.store_returns as select
 cast( sr_returned_date_sk as integer)  as sr_returned_date_sk,
 cast( sr_return_time_sk as integer)  as sr_return_time_sk,
 cast( sr_item_sk as integer)  as sr_item_sk,
@@ -330,7 +330,7 @@
 cast( sr_net_loss as double)  as sr_net_loss
 from dfs.`/drill/testdata/tpcds_sf1/parquet/store_returns`;
 
-create or replace view web_page as select
+create or replace view dfs.tpcds_sf1_parquet_views.web_page as select
 cast( wp_web_page_sk as integer)  as wp_web_page_sk,
 cast( wp_web_page_id as varchar(200))  as wp_web_page_id,
 cast( wp_rec_start_date as date)  as wp_rec_start_date,
@@ -347,7 +347,7 @@
 cast( wp_max_ad_count as integer)  as wp_max_ad_count
 from dfs.`/drill/testdata/tpcds_sf1/parquet/web_page`;
 
-create or replace view catalog_page as select
+create or replace view dfs.tpcds_sf1_parquet_views.catalog_page as select
 cast( cp_catalog_page_sk as integer)  as cp_catalog_page_sk,
 cast( cp_catalog_page_id as varchar(200))  as cp_catalog_page_id,
 cast( cp_start_date_sk as integer)  as cp_start_date_sk,
@@ -359,14 +359,14 @@
 cast( cp_type as varchar(200))  as cp_type
 from dfs.`/drill/testdata/tpcds_sf1/parquet/catalog_page`;
 
-create or replace view inventory as select
+create or replace view dfs.tpcds_sf1_parquet_views.inventory as select
 cast( inv_date_sk as integer)  as inv_date_sk,
 cast( inv_item_sk as integer)  as inv_item_sk,
 cast( inv_warehouse_sk as integer)  as inv_warehouse_sk,
 cast( inv_quantity_on_hand as integer)  as inv_quantity_on_hand
 from dfs.`/drill/testdata/tpcds_sf1/parquet/inventory`;
 
-create or replace view catalog_returns as select
+create or replace view dfs.tpcds_sf1_parquet_views.catalog_returns as select
 cast( cr_returned_date_sk as integer)  as cr_returned_date_sk,
 cast( cr_returned_time_sk as integer)  as cr_returned_time_sk,
 cast( cr_item_sk as integer)  as cr_item_sk,
@@ -396,7 +396,7 @@
 cast( cr_net_loss as double)  as cr_net_loss
 from dfs.`/drill/testdata/tpcds_sf1/parquet/catalog_returns`;
 
-create or replace view web_returns as select
+create or replace view dfs.tpcds_sf1_parquet_views.web_returns as select
 cast( wr_returned_date_sk as integer)  as wr_returned_date_sk,
 cast( wr_returned_time_sk as integer)  as wr_returned_time_sk,
 cast( wr_item_sk as integer)  as wr_item_sk,
@@ -423,7 +423,7 @@
 cast( wr_net_loss as double)  as wr_net_loss
 from dfs.`/drill/testdata/tpcds_sf1/parquet/web_returns`;
 
-create or replace view web_sales as select
+create or replace view dfs.tpcds_sf1_parquet_views.web_sales as select
 cast( ws_sold_date_sk as integer)  as ws_sold_date_sk,
 cast( ws_sold_time_sk as integer)  as ws_sold_time_sk,
 cast( ws_ship_date_sk as integer)  as ws_ship_date_sk,
@@ -460,7 +460,7 @@
 cast( ws_net_profit as double)  as ws_net_profit
 from dfs.`/drill/testdata/tpcds_sf1/parquet/web_sales`;
 
-create or replace view catalog_sales as select
+create or replace view dfs.tpcds_sf1_parquet_views.catalog_sales as select
 cast( cs_sold_date_sk as integer)  as cs_sold_date_sk,
 cast( cs_sold_time_sk as integer)  as cs_sold_time_sk,
 cast( cs_ship_date_sk as integer)  as cs_ship_date_sk,
diff --git a/framework/resources/Functional/complex/parquet/complex.json b/framework/resources/Functional/complex/parquet/complex.json
index 7f55eac..b734509 100644
--- a/framework/resources/Functional/complex/parquet/complex.json
+++ b/framework/resources/Functional/complex/parquet/complex.json
@@ -19,8 +19,18 @@
     ],
     "datasources": [
         {
-            "mode": "gen",
-            "src": "Datasources/ctas/create_tables_complex_parquet.sh",
+            "mode": "rm",
+            "src": "",
+            "dest": "complex/parquet/complex.json"
+        },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "complex/parquet"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/ctas/create_tables_complex_parquet.ddl",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/csv/data/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/csv/data/ctas_auto_partition.json
index 8718d9d..0f7f7be 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/csv/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/csv/data/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "ctas_auto_partition_csv_data_pruning",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        } 
-    ]
+  "testId": "ctas_auto_partition_csv_data_pruning",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/data/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/data/ctas_auto_partition.json
index 63e5532..a59220a 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/data/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "ctas_auto_partition_hierarchical_data",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        } 
-    ]
+  "testId": "ctas_auto_partition_hierarchical_data",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/plan/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/plan/ctas_auto_partition.json
index ca07990..e473772 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/plan/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/hierarchical/plan/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "ctas_auto_partition_csv_plan_pruning",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "regex-no-order"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "ctas_auto_partition_csv_plan_pruning",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "regex-no-order"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/json/data/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/json/data/ctas_auto_partition.json
index 13bc84c..e2bca86 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/json/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/json/data/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "ctas_auto_partition_json_data",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        } 
-    ]
+  "testId": "ctas_auto_partition_json_data",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/data/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/data/ctas_auto_partition.json
index d69ba6f..876c97b 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/data/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "ctas_auto_partition_parquet_data",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        } 
-    ]
+  "testId": "ctas_auto_partition_parquet_data",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/plan/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/plan/ctas_auto_partition.json
index 4975e4a..c6db2d5 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/plan/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/existing_partition_pruning/parquet/plan/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "ctas_auto_partition_parquet_plan",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        } 
-    ]
+  "testId": "ctas_auto_partition_parquet_plan",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/general/data/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/general/data/ctas_auto_partition.json
index b0a5d5c..094cdd2 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/general/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/general/data/ctas_auto_partition.json
@@ -1,46 +1,66 @@
 {
-    "testId": "ctas_auto_partition_csv_data_general",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/ctas_auto_partition/drill-3947",
-                "dest": "/drill/testdata/drill-3947"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_tpch_single_partition1.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "ctas_auto_partition_csv_data_general",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/ctas_auto_partition/drill-3947",
+      "dest": "/drill/testdata/drill-3947"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/tpch_single_partition1"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/tpch_single_partition1"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/general/plan/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/general/plan/ctas_auto_partition.json
index 57fcdd6..e592c61 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/general/plan/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/general/plan/ctas_auto_partition.json
@@ -1,46 +1,66 @@
 {
-    "testId": "ctas_auto_partition_csv_plan_general",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/ctas_auto_partition/drill-3947",
-                "dest": "/drill/testdata/drill-3947"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_tpch_single_partition1.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "ctas_auto_partition_csv_plan_general",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/ctas_auto_partition/drill-3947",
+      "dest": "/drill/testdata/drill-3947"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/tpch_single_partition1"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/tpch_single_partition1"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/data/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/data/ctas_auto_partition.json
index 2eca696..2594f95 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/data/ctas_auto_partition.json
@@ -18,9 +18,18 @@
     ],
     "datasources": [
         {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.sh",
-            "dest": ""
+            "mode": "rm",
+            "src": "",
+            "dest": "ctas_auto_partition/tpch_multiple_partitions"
+        },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "ctas_auto_partition/tpch_multiple_partitions"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.ddl"
         }
     ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/plan/ctas_auto_partition.json b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/plan/ctas_auto_partition.json
index 2e5d321..4bdcbac 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/plan/ctas_auto_partition.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_multiple_partitions/plan/ctas_auto_partition.json
@@ -18,9 +18,18 @@
     ],
     "datasources": [
         {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.sh",
-            "dest": ""
+            "mode": "rm",
+            "src": "",
+            "dest": "ctas_auto_partition/tpch_multiple_partitions"
+        },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "ctas_auto_partition/tpch_multiple_partitions"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/ctas_auto_partition/ctas_tpch_multiple_partitions.ddl"
         }
     ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition/tpch.json b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition/tpch.json
index 825f7e3..b7dfff6 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition/tpch.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition/tpch.json
@@ -58,9 +58,19 @@
             "dest": "Tpch0.01/parquet/orders/orders.parquet"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/setup.sh",
+            "mode": "rm",
+            "src": "",
+            "dest": "ctas_auto_partition/tpch_single_partition"
+        },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "ctas_auto_partition/tpch_single_partition"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/ctas_auto_partition/create_tables.ddl",
             "dest": ""
-        } 
+        }
     ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition1/tpch.json b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition1/tpch.json
index 66f47c0..d38d95e 100644
--- a/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition1/tpch.json
+++ b/framework/resources/Functional/ctas/ctas_auto_partition/tpch0.01_single_partition1/tpch.json
@@ -17,10 +17,20 @@
         }
     ],
     "datasources": [
-       {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_tpch_single_partition1.sh",
-            "dest": ""
-       } 
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "ctas_auto_partition/tpch_single_partition1"
+      },
+      {
+        "mode": "mkdir",
+        "src": "",
+        "dest": "ctas_auto_partition/tpch_single_partition1"
+      },
+      {
+        "mode": "ddl",
+        "src": "Datasources/ctas_auto_partition/ctas_tpch_single_partition1.ddl",
+        "dest": ""
+      }
     ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_flatten/100000rows/ctas_flatten.json b/framework/resources/Functional/ctas/ctas_flatten/100000rows/ctas_flatten.json
index 33324ab..723da34 100644
--- a/framework/resources/Functional/ctas/ctas_flatten/100000rows/ctas_flatten.json
+++ b/framework/resources/Functional/ctas/ctas_flatten/100000rows/ctas_flatten.json
@@ -1,36 +1,36 @@
 {
-    "testId": "CTASFlattenOperators100000Rows",
-    "type": "group",
-    "description": "Test flatten with operators",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.flatten_operators_100000rows",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-	{
-          "mode": "cp",
-          "src": "Datasources/flatten_operators/100000rows",
-          "dest": "flatten_operators/100000rows"
-    	},
-        {
-          "mode": "cp",
-          "src": "Datasources/ctas_flatten",
-          "dest": "ctas_flatten"
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/ctas_flatten/deleteCTASTables.sh",
-           "dest": ""
-        }
-    ]
+  "testId": "CTASFlattenOperators100000Rows",
+  "type": "group",
+  "description": "Test flatten with operators",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.flatten_operators_100000rows",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_flatten"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/flatten_operators/100000rows",
+      "dest": "flatten_operators/100000rows"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/ctas_flatten",
+      "dest": "ctas_flatten"
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_flatten/2rows/ctas_flatten.json b/framework/resources/Functional/ctas/ctas_flatten/2rows/ctas_flatten.json
index e95f621..63d5cb8 100644
--- a/framework/resources/Functional/ctas/ctas_flatten/2rows/ctas_flatten.json
+++ b/framework/resources/Functional/ctas/ctas_flatten/2rows/ctas_flatten.json
@@ -1,36 +1,36 @@
 {
-    "testId": "CTASFlattenOperators2Rows",
-    "type": "group",
-    "description": "Test flatten with operators",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.flatten_operators",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-	{
-          "mode": "cp",
-          "src": "Datasources/flatten_operators/2rows",
-          "dest": "flatten_operators/2rows"
-    	},
-        {
-          "mode": "cp",
-          "src": "Datasources/ctas_flatten",
-          "dest": "ctas_flatten"
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/ctas_flatten/deleteCTASTables.sh",
-           "dest": ""
-        }
-    ]
+  "testId": "CTASFlattenOperators2Rows",
+  "type": "group",
+  "description": "Test flatten with operators",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.flatten_operators",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_flatten"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/flatten_operators/2rows",
+      "dest": "flatten_operators/2rows"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/ctas_flatten",
+      "dest": "ctas_flatten"
+    }
+  ]
 }
diff --git a/framework/resources/Functional/ctas/ctas_joins_aggregates/ctas.json b/framework/resources/Functional/ctas/ctas_joins_aggregates/ctas.json
index bd14793..fe77ca9 100644
--- a/framework/resources/Functional/ctas/ctas_joins_aggregates/ctas.json
+++ b/framework/resources/Functional/ctas/ctas_joins_aggregates/ctas.json
@@ -1,31 +1,42 @@
 {
-    "testId": "ctas_joins",
-    "type": "group",
-    "description": "ctas with joins",
-    "categories": [ "functional" ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.ctas_parquet",
-            "output-format": "tsv",
-            "expected-file": ".*.res",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/ctas",
-            "dest": "ctas"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas/create_tables.sh",
-            "dest": ""
-        }
-
-    ]
+  "testId": "ctas_joins",
+  "type": "group",
+  "description": "ctas with joins",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.ctas_parquet",
+      "output-format": "tsv",
+      "expected-file": ".*.res",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas/parquet"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas/parquet"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/ctas",
+      "dest": "ctas"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas/create_tables_parquet.ddl",
+      "dest": ""
+    }
+  ]
 }
 
diff --git a/framework/resources/Functional/decimal_parquet/decimal_parquet.json b/framework/resources/Functional/decimal_parquet/decimal_parquet.json
index 58d4b9e..ad903e4 100755
--- a/framework/resources/Functional/decimal_parquet/decimal_parquet.json
+++ b/framework/resources/Functional/decimal_parquet/decimal_parquet.json
@@ -44,9 +44,9 @@
       "dest": "decimal/DRILL_6094/decimal.parquet"
     },
     {
-       "mode": "gen",
-       "src": "Datasources/ctas/decimal/create_decimals_test_data.sh",
-       "dest": ""
+      "mode": "ddl",
+      "src": "Datasources/ctas/decimal/createParquetWithDecimals.ddl",
+      "dest": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/drill_fragments/decimal/data/data.json b/framework/resources/Functional/drill_fragments/decimal/data/data.json
index 9410215..ccbe745 100755
--- a/framework/resources/Functional/drill_fragments/decimal/data/data.json
+++ b/framework/resources/Functional/drill_fragments/decimal/data/data.json
@@ -20,8 +20,33 @@
   "datasources": [
     {
        "mode": "gen",
-       "src": "Datasources/ctas/decimal/fragments/decimal_fragments.sh",
+       "src": "Datasources/ctas/decimal/fragments/decimal_fragments.sh $DRILL_TESTDATA_DIR",
        "dest": ""
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "decimal/fragments"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/ctas/decimal/fragments/decimal_big.tsv",
+      "dest": "decimal/fragments/decimal_big.tsv"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/ctas/decimal/fragments/decimal_big_zero_prec.tsv",
+      "dest": "decimal/fragments/decimal_big_zero_prec.tsv"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/ctas/decimal/fragments/decimal_big_zero_scale.tsv",
+      "dest": "decimal/fragments/decimal_big_zero_scale.tsv"
+    },
+    {
+      "mode": "ddl",
+      "src:": "Datasources/ctas/decimal/fragments/decimal_fragments.ddl",
+      "dest": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/drill_fragments/decimal/plan/plan.json b/framework/resources/Functional/drill_fragments/decimal/plan/plan.json
index fe8dc28..08f67a6 100755
--- a/framework/resources/Functional/drill_fragments/decimal/plan/plan.json
+++ b/framework/resources/Functional/drill_fragments/decimal/plan/plan.json
@@ -22,6 +22,36 @@
        "mode": "gen",
        "src": "Datasources/ctas/decimal/fragments/decimal_fragments.sh",
        "dest": ""
+    },
+    {
+      "mode": "gen",
+      "src": "Datasources/ctas/decimal/fragments/decimal_fragments.sh $DRILL_TESTDATA_DIR",
+      "dest": ""
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "decimal/fragments"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/ctas/decimal/fragments/decimal_big.tsv",
+      "dest": "decimal/fragments/decimal_big.tsv"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/ctas/decimal/fragments/decimal_big_zero_prec.tsv",
+      "dest": "decimal/fragments/decimal_big_zero_prec.tsv"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/ctas/decimal/fragments/decimal_big_zero_scale.tsv",
+      "dest": "decimal/fragments/decimal_big_zero_scale.tsv"
+    },
+    {
+      "mode": "ddl",
+      "src:": "Datasources/ctas/decimal/fragments/decimal_fragments.ddl",
+      "dest": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/filter/pushdown/item_star_operator/data.json b/framework/resources/Functional/filter/pushdown/item_star_operator/data.json
index 0a4ab09..0309bc0 100644
--- a/framework/resources/Functional/filter/pushdown/item_star_operator/data.json
+++ b/framework/resources/Functional/filter/pushdown/item_star_operator/data.json
@@ -28,8 +28,19 @@
       "dest": "filter/pushdown/DRILL_6118_complex.parquet"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_execute_ddl.sh"
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_files.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_folders.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_without_partitioning.ddl",
+      "dest": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/filter/pushdown/item_star_operator/plan.json b/framework/resources/Functional/filter/pushdown/item_star_operator/plan.json
index 9af22e6..3a33727 100644
--- a/framework/resources/Functional/filter/pushdown/item_star_operator/plan.json
+++ b/framework/resources/Functional/filter/pushdown/item_star_operator/plan.json
@@ -28,8 +28,19 @@
       "dest": "filter/pushdown/DRILL_6118_complex.parquet"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_execute_ddl.sh"
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_files.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_folders.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_without_partitioning.ddl",
+      "dest": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal.json b/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal.json
index 60f1490..184307b 100644
--- a/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal.json
+++ b/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal.json
@@ -18,6 +18,11 @@
   ],
   "datasources": [
     {
+      "mode": "rm",
+      "src": "",
+      "dest": "filter/pushdown/varchar_decimal"
+    },
+    {
       "mode": "cp",
       "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/no_metadata_file",
       "dest": "filter/pushdown/varchar_decimal/no_metadata_file/"
@@ -33,9 +38,14 @@
       "dest": "filter/pushdown/varchar_decimal/old_metadata_file/"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/copy_metadata.sh",
-      "dest": ""
+      "mode": "post_cp",
+      "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/new_metadata_file",
+      "dest": "filter/pushdown/varchar_decimal/new_metadata_file/"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/old_metadata_file",
+      "dest": "filter/pushdown/varchar_decimal/old_metadata_file/"
     }
   ]
 }
\ No newline at end of file
diff --git a/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal_plan.json b/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal_plan.json
index 7821d03..7db8988 100644
--- a/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal_plan.json
+++ b/framework/resources/Functional/filter/pushdown/varchar_decimal/dfs/varchar_decimal_plan.json
@@ -18,6 +18,11 @@
   ],
   "datasources": [
     {
+      "mode": "rm",
+      "src": "",
+      "dest": "filter/pushdown/varchar_decimal"
+    },
+    {
       "mode": "cp",
       "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/no_metadata_file",
       "dest": "filter/pushdown/varchar_decimal/no_metadata_file/"
@@ -33,9 +38,14 @@
       "dest": "filter/pushdown/varchar_decimal/old_metadata_file/"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/copy_metadata.sh",
-      "dest": ""
+      "mode": "post_cp",
+      "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/new_metadata_file",
+      "dest": "filter/pushdown/varchar_decimal/new_metadata_file/"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/parquet_storage/filter/pushdown/varchar_decimal/old_metadata_file",
+      "dest": "filter/pushdown/varchar_decimal/old_metadata_file/"
     }
   ]
 }
\ No newline at end of file
diff --git a/framework/resources/Functional/group_by_alias/group_by_alias.json b/framework/resources/Functional/group_by_alias/group_by_alias.json
index e54e9fc..9280c5c 100644
--- a/framework/resources/Functional/group_by_alias/group_by_alias.json
+++ b/framework/resources/Functional/group_by_alias/group_by_alias.json
@@ -24,8 +24,8 @@
       "dest": "DRILL-1248/group_by.tsv"
     },
     {
-       "mode": "gen",
-       "src": "Datasources/ctas/DRILL-1248/ctas.sh",
+       "mode": "ddl",
+       "src": "Datasources/ctas/DRILL-1248/group_by.ddl",
        "dest": ""
     }
   ]
diff --git a/framework/resources/Functional/int96/int96_data.json b/framework/resources/Functional/int96/int96_data.json
index 5bdae7d..69df6c6 100644
--- a/framework/resources/Functional/int96/int96_data.json
+++ b/framework/resources/Functional/int96/int96_data.json
@@ -21,8 +21,13 @@
             "dest": "subqueries"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/subqueries/create_tables.sh",
+            "mode": "rm",
+            "src": "",
+            "dest": "subqueries/hive1_parquet_part"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/subqueries/create_tables.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/int96/int96_plan.json b/framework/resources/Functional/int96/int96_plan.json
index a1282cd..6b8813a 100644
--- a/framework/resources/Functional/int96/int96_plan.json
+++ b/framework/resources/Functional/int96/int96_plan.json
@@ -19,6 +19,16 @@
             "mode": "cp",
             "src": "Datasources/subqueries",
             "dest": "subqueries"
+        },
+        {
+            "mode": "rm",
+            "src": "",
+            "dest": "subqueries/hive1_parquet_part"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/subqueries/create_tables.sql",
+            "dest": ""
         }
     ]
 }
diff --git a/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/data/ctas_auto_partition.json b/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/data/ctas_auto_partition.json
index 1282cd9..8742ad9 100644
--- a/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/data/ctas_auto_partition.json
+++ b/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/data/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "interpreted_ctas_auto_partition_hierarchical_data",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        } 
-    ]
+  "testId": "interpreted_ctas_auto_partition_hierarchical_data",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/plan/ctas_auto_partition.json b/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/plan/ctas_auto_partition.json
index 18ab92f..b53b5fd 100644
--- a/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/plan/ctas_auto_partition.json
+++ b/framework/resources/Functional/interpreted_partition_pruning/ctas_auto_partition/hierarchical/plan/ctas_auto_partition.json
@@ -1,36 +1,46 @@
 {
-    "testId": "interpreted_ctas_auto_partition_csv_plan",
-    "type": "group",
-    "description": "Test tpch queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.ctasAutoPartition",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "regex-no-order"
-            ]
-        }
-    ],
-    "datasources": [
-       {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/dfs",
-                "dest": "partition_pruning/dfs"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/partition_pruning/hive",
-                "dest": "partition_pruning/hive"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "interpreted_ctas_auto_partition_csv_plan",
+  "type": "group",
+  "description": "Test tpch queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.ctasAutoPartition",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "regex-no-order"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/dfs",
+      "dest": "partition_pruning/dfs"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/partition_pruning/hive",
+      "dest": "partition_pruning/hive"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "ctas_auto_partition/existing_partition_pruning"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/ctas_auto_partition/ctas_existing_partition_pruning.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/joins/nulleqjoin/nulleqjoin.json b/framework/resources/Functional/joins/nulleqjoin/nulleqjoin.json
index 62aa3c9..83d8438 100644
--- a/framework/resources/Functional/joins/nulleqjoin/nulleqjoin.json
+++ b/framework/resources/Functional/joins/nulleqjoin/nulleqjoin.json
@@ -24,8 +24,18 @@
             "dest": "join"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/join/crt_tbl_prtntd_tbl.sh",
+            "mode": "ddl",
+            "src": "Datasources/join/crt_tbls_partition_by_l.ddl",
+            "dest": ""
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/join/crt_tbls_partition_by_r.ddl",
+            "dest": ""
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/join/crt_tbl_prtnby_nulls.ddl",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/bugs/data/bugs.json b/framework/resources/Functional/limit0/aggregates/aggregation/bugs/data/bugs.json
index b3d59fd..1466432 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/bugs/data/bugs.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/bugs/data/bugs.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/bugs/create_bugs_view.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/bugs/create_bugs_view.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/bugs/plan/bugs.json b/framework/resources/Functional/limit0/aggregates/aggregation/bugs/plan/bugs.json
index 1493dbf..32e2bc3 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/bugs/plan/bugs.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/bugs/plan/bugs.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/bugs/create_bugs_view.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/bugs/create_bugs_view.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/data/count_distinct.json b/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/data/count_distinct.json
index cdd9486..827f200 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/data/count_distinct.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/data/count_distinct.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/plan/count_distinct.json b/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/plan/count_distinct.json
index 67fae1a..fb70678 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/plan/count_distinct.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/count_distinct/plan/count_distinct.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/data/case.json b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/data/case.json
index 4ef74ca..81433f4 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/data/case.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/data/case.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/group_by_case/create_groupByCase_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/group_by_case/create_groupByCase_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/plan/case.json b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/plan/case.json
index 08ddad7..581b2b6 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/plan/case.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_case/plan/case.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/group_by_case/create_groupByCase_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/group_by_case/create_groupByCase_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/data/group_by_expression.json b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/data/group_by_expression.json
index 148ad31..198de8c 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/data/group_by_expression.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/data/group_by_expression.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/plan/group_by_expression.json b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/plan/group_by_expression.json
index 26be65f..d4ec50f 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/plan/group_by_expression.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/group_by_expression/plan/group_by_expression.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/count_distinct/create_count_distinct_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/data/multicolumn.json b/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/data/multicolumn.json
index 871ed7d..b1d8d4e 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/data/multicolumn.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/data/multicolumn.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/multicolumn/create_multicolumn_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/multicolumn/create_multicolumn_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/plan/multicolumn.json b/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/plan/multicolumn.json
index 93295f6..4e3c21c 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/plan/multicolumn.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/multicolumn/plan/multicolumn.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/multicolumn/create_multicolumn_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/multicolumn/create_multicolumn_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/sanity/data/sanity.json b/framework/resources/Functional/limit0/aggregates/aggregation/sanity/data/sanity.json
index 0feecf9..9b71c59 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/sanity/data/sanity.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/sanity/data/sanity.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/sanity/create_sanity_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/sanity/create_sanity_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/sanity/plan/sanity.json b/framework/resources/Functional/limit0/aggregates/aggregation/sanity/plan/sanity.json
index 522cc39..b163185 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/sanity/plan/sanity.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/sanity/plan/sanity.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/sanity/create_sanity_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/sanity/create_sanity_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/scalar/data/scalar.json b/framework/resources/Functional/limit0/aggregates/aggregation/scalar/data/scalar.json
index 884c6fc..934f9a1 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/scalar/data/scalar.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/scalar/data/scalar.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/scalar/create_scalar_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/scalar/create_scalar_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/aggregation/scalar/plan/scalar.json b/framework/resources/Functional/limit0/aggregates/aggregation/scalar/plan/scalar.json
index 98d1e09..61bb91b 100644
--- a/framework/resources/Functional/limit0/aggregates/aggregation/scalar/plan/scalar.json
+++ b/framework/resources/Functional/limit0/aggregates/aggregation/scalar/plan/scalar.json
@@ -21,8 +21,8 @@
             "dest": "aggregation"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/aggregation/scalar/create_scalar_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/aggregation/scalar/create_scalar_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/data/aggregate.json b/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/data/aggregate.json
index bc80b3f..6dcc1f1 100644
--- a/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/data/aggregate.json
+++ b/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/data/aggregate.json
@@ -24,8 +24,8 @@
             "dest": "tpcds_sf1/parquet"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/tpcds_variants/parquet/create_tpcdsVariants_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/tpcds_variants/parquet/create_tpcdsVariants_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/plan/aggregate.json b/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/plan/aggregate.json
index e0676f7..7a426e9 100644
--- a/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/plan/aggregate.json
+++ b/framework/resources/Functional/limit0/aggregates/tpcds_variants/parquet/plan/aggregate.json
@@ -24,8 +24,8 @@
             "dest": "tpcds_sf1/parquet"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/aggregates/tpcds_variants/parquet/create_tpcdsVariants_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/aggregates/tpcds_variants/parquet/create_tpcdsVariants_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/filters/data/data.json b/framework/resources/Functional/limit0/filters/data/data.json
index af3021a..e1880a5 100644
--- a/framework/resources/Functional/limit0/filters/data/data.json
+++ b/framework/resources/Functional/limit0/filters/data/data.json
@@ -1,30 +1,32 @@
 {
-    "testId": "filter_pushdown_limit0_data",
-    "type": "limit 0",
-    "description": "Filter pushdown tests: these tests verify query correctness",
-    "categories": [ "functional" ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.subqueries",
-            "output-format": "tsv",
-            "expected-file": ".*.res",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/subqueries",
-            "dest": "subqueries"
-        },
-        {
-         "mode": "gen",
-         "src": "Datasources/limit0/filters/create_filters_views.sh",
-         "dest": ""
-      }
-    ]
+  "testId": "filter_pushdown_limit0_data",
+  "type": "limit 0",
+  "description": "Filter pushdown tests: these tests verify query correctness",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.subqueries",
+      "output-format": "tsv",
+      "expected-file": ".*.res",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/subqueries",
+      "dest": "subqueries"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/limit0/filters/create_filters_views.sql",
+      "dest": ""
+    }
+  ]
 }
 
diff --git a/framework/resources/Functional/limit0/filters/plan/data.json b/framework/resources/Functional/limit0/filters/plan/data.json
index 183565a..157f1c9 100644
--- a/framework/resources/Functional/limit0/filters/plan/data.json
+++ b/framework/resources/Functional/limit0/filters/plan/data.json
@@ -1,30 +1,32 @@
 {
-    "testId": "filter_pushdown_limit0_plan",
-    "type": "group",
-    "description": "Filter pushdown tests: these tests verify query correctness",
-    "categories": [ "functional" ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.subqueries",
-            "output-format": "tsv",
-            "expected-file": ".*.res",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/subqueries",
-            "dest": "subqueries"
-        },
-        {
-         "mode": "gen",
-         "src": "Datasources/limit0/filters/create_filters_views.sh",
-         "dest": ""
-      }
-    ]
+  "testId": "filter_pushdown_limit0_plan",
+  "type": "group",
+  "description": "Filter pushdown tests: these tests verify query correctness",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.subqueries",
+      "output-format": "tsv",
+      "expected-file": ".*.res",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/subqueries",
+      "dest": "subqueries"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/limit0/filters/create_filters_views.sql",
+      "dest": ""
+    }
+  ]
 }
 
diff --git a/framework/resources/Functional/limit0/functions/data/limit0_functions.json b/framework/resources/Functional/limit0/functions/data/limit0_functions.json
index 71dde64..290ecee 100644
--- a/framework/resources/Functional/limit0/functions/data/limit0_functions.json
+++ b/framework/resources/Functional/limit0/functions/data/limit0_functions.json
@@ -21,11 +21,20 @@
             "dest": "subqueries"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/subqueries/create_views.sh",
+            "mode": "rm",
+            "src": "",
+            "dest": "subqueries/optional_type_v.view.drill"
+        },
+        {
+            "mode": "rm",
+            "src": "",
+            "dest": "subqueries/required_type_v.view.drill"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/subqueries/create_views.sql",
             "dest": ""
         }
-
     ]
 }
 
diff --git a/framework/resources/Functional/limit0/functions/plan/limit0_functions.json b/framework/resources/Functional/limit0/functions/plan/limit0_functions.json
index aa7bb2f..a7b0367 100644
--- a/framework/resources/Functional/limit0/functions/plan/limit0_functions.json
+++ b/framework/resources/Functional/limit0/functions/plan/limit0_functions.json
@@ -21,11 +21,20 @@
             "dest": "subqueries"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/subqueries/create_views.sh",
+            "mode": "rm",
+            "src": "",
+            "dest": "subqueries/optional_type_v.view.drill"
+        },
+        {
+            "mode": "rm",
+            "src": "",
+            "dest": "subqueries/required_type_v.view.drill"
+        },
+        {
+            "mode": "ddl",
+            "src": "Datasources/subqueries/create_views.sql",
             "dest": ""
         }
-
     ]
 }
 
diff --git a/framework/resources/Functional/limit0/implicit_cast_with_views/data/implicit_cast.json b/framework/resources/Functional/limit0/implicit_cast_with_views/data/implicit_cast.json
index bc9e8fe..82924bd 100644
--- a/framework/resources/Functional/limit0/implicit_cast_with_views/data/implicit_cast.json
+++ b/framework/resources/Functional/limit0/implicit_cast_with_views/data/implicit_cast.json
@@ -21,8 +21,8 @@
             "dest": "joins"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/implicit_cast_with_views/plan/implicit_cast.json b/framework/resources/Functional/limit0/implicit_cast_with_views/plan/implicit_cast.json
index 1596be6..8c4ef3c 100644
--- a/framework/resources/Functional/limit0/implicit_cast_with_views/plan/implicit_cast.json
+++ b/framework/resources/Functional/limit0/implicit_cast_with_views/plan/implicit_cast.json
@@ -21,8 +21,8 @@
             "dest": "joins"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/implicit_cast_with_views/create_implicit_cast_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/union/data/queries.json b/framework/resources/Functional/limit0/union/data/queries.json
index 0efb2c9..75fb49a 100644
--- a/framework/resources/Functional/limit0/union/data/queries.json
+++ b/framework/resources/Functional/limit0/union/data/queries.json
@@ -24,8 +24,8 @@
             "dest": "union"
         },
         {
-           "mode": "gen",
-           "src": "Datasources/limit0/union/create_union_views.sh",
+           "mode": "ddl",
+           "src": "Datasources/limit0/union/create_union_views.sql",
            "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/union/plan/queries.json b/framework/resources/Functional/limit0/union/plan/queries.json
index e24c9e9..f705c21 100644
--- a/framework/resources/Functional/limit0/union/plan/queries.json
+++ b/framework/resources/Functional/limit0/union/plan/queries.json
@@ -24,8 +24,8 @@
             "dest": "union"
         },
         {
-           "mode": "gen",
-           "src": "Datasources/limit0/union/create_union_views.sh",
+           "mode": "ddl",
+           "src": "Datasources/limit0/union/create_union_views.sql",
            "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/union_all/prq_union_all/data/prq_union_all.json b/framework/resources/Functional/limit0/union_all/prq_union_all/data/prq_union_all.json
index af88df5..ff0808a 100644
--- a/framework/resources/Functional/limit0/union_all/prq_union_all/data/prq_union_all.json
+++ b/framework/resources/Functional/limit0/union_all/prq_union_all/data/prq_union_all.json
@@ -24,8 +24,8 @@
             "dest": "union_all"
         },
         {
-           "mode": "gen",
-           "src": "Datasources/limit0/union_all/create_union_all_views.sh",
+           "mode": "ddl",
+           "src": "Datasources/limit0/union_all/create_union_all_views.sql",
            "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/union_all/prq_union_all/plan/prq_union_all.json b/framework/resources/Functional/limit0/union_all/prq_union_all/plan/prq_union_all.json
index 41eab72..150851e 100644
--- a/framework/resources/Functional/limit0/union_all/prq_union_all/plan/prq_union_all.json
+++ b/framework/resources/Functional/limit0/union_all/prq_union_all/plan/prq_union_all.json
@@ -24,8 +24,8 @@
             "dest": "union_all"
         },
         {
-           "mode": "gen",
-           "src": "Datasources/limit0/union_all/create_union_all_views.sh",
+           "mode": "ddl",
+           "src": "Datasources/limit0/union_all/create_union_all_views.sql",
            "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/aggregates/data/queries.json b/framework/resources/Functional/limit0/window_functions/aggregates/data/queries.json
index 2a52227..d6b47e7 100644
--- a/framework/resources/Functional/limit0/window_functions/aggregates/data/queries.json
+++ b/framework/resources/Functional/limit0/window_functions/aggregates/data/queries.json
@@ -24,8 +24,8 @@
             "dest": "window_functions"
         },
         {
-           "mode": "gen",
-           "src": "Datasources/limit0/window_functions/aggregates/create_wf_aggregates_views.sh",
+           "mode": "ddl",
+           "src": "Datasources/limit0/window_functions/aggregates/create_wf_aggregates_views.sql",
            "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/aggregates/plan/queries.json b/framework/resources/Functional/limit0/window_functions/aggregates/plan/queries.json
index dda9d24..ecc373a 100644
--- a/framework/resources/Functional/limit0/window_functions/aggregates/plan/queries.json
+++ b/framework/resources/Functional/limit0/window_functions/aggregates/plan/queries.json
@@ -24,9 +24,9 @@
             "dest": "window_functions"
         },
         {
-           "mode": "gen",
-           "src": "Datasources/limit0/window_functions/aggregates/create_wf_aggregates_views.sh",
-           "dest": ""
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/aggregates/create_wf_aggregates_views.sql",
+            "dest": ""
         }
     ]
 }
diff --git a/framework/resources/Functional/limit0/window_functions/bugs/data/bugs.json b/framework/resources/Functional/limit0/window_functions/bugs/data/bugs.json
index 9ac2e5e..57d8475 100644
--- a/framework/resources/Functional/limit0/window_functions/bugs/data/bugs.json
+++ b/framework/resources/Functional/limit0/window_functions/bugs/data/bugs.json
@@ -21,8 +21,8 @@
             "dest": "subqueries"
         },
         { 
-            "mode": "gen", 
-            "src": "Datasources/limit0/window_functions/bugs/create_wf_bugs_views.sh", 
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/bugs/create_wf_bugs_views.sql",
             "dest": "" 
         } 
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/bugs/plan/bugs.json b/framework/resources/Functional/limit0/window_functions/bugs/plan/bugs.json
index ade0036..2c1e1b6 100644
--- a/framework/resources/Functional/limit0/window_functions/bugs/plan/bugs.json
+++ b/framework/resources/Functional/limit0/window_functions/bugs/plan/bugs.json
@@ -21,8 +21,8 @@
             "dest": "subqueries"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/window_functions/bugs/create_wf_bugs_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/bugs/create_wf_bugs_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/empty_over_clause/data/empty_over_clause.json b/framework/resources/Functional/limit0/window_functions/empty_over_clause/data/empty_over_clause.json
index cd7e737..76da3c2 100644
--- a/framework/resources/Functional/limit0/window_functions/empty_over_clause/data/empty_over_clause.json
+++ b/framework/resources/Functional/limit0/window_functions/empty_over_clause/data/empty_over_clause.json
@@ -21,8 +21,8 @@
             "dest": "subqueries"
         },
         { 
-            "mode": "gen", 
-            "src": "Datasources/limit0/window_functions/empty_over_clause/create_wf_empty_over_clause_views.sh", 
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/empty_over_clause/create_wf_empty_over_clause_views.sql",
             "dest": "" 
         } 
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/empty_over_clause/plan/empty_over_clause.json b/framework/resources/Functional/limit0/window_functions/empty_over_clause/plan/empty_over_clause.json
index 59bc50f..ac460f0 100644
--- a/framework/resources/Functional/limit0/window_functions/empty_over_clause/plan/empty_over_clause.json
+++ b/framework/resources/Functional/limit0/window_functions/empty_over_clause/plan/empty_over_clause.json
@@ -21,8 +21,8 @@
             "dest": "subqueries"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/window_functions/empty_over_clause/create_wf_empty_over_clause_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/empty_over_clause/create_wf_empty_over_clause_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/multiple_partitions/data/multiple_partitions.json b/framework/resources/Functional/limit0/window_functions/multiple_partitions/data/multiple_partitions.json
index f92bcff..c8ab261 100644
--- a/framework/resources/Functional/limit0/window_functions/multiple_partitions/data/multiple_partitions.json
+++ b/framework/resources/Functional/limit0/window_functions/multiple_partitions/data/multiple_partitions.json
@@ -21,8 +21,8 @@
             "dest": "subqueries"
         },
         { 
-            "mode": "gen", 
-            "src": "Datasources/limit0/window_functions/multiple_partitions/create_wf_multiple_partitions_views.sh", 
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/multiple_partitions/create_wf_multiple_partitions_views.sql",
             "dest": "" 
         } 
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/multiple_partitions/plan/multiple_partitions.json b/framework/resources/Functional/limit0/window_functions/multiple_partitions/plan/multiple_partitions.json
index 0f98a62..77f8ddb 100644
--- a/framework/resources/Functional/limit0/window_functions/multiple_partitions/plan/multiple_partitions.json
+++ b/framework/resources/Functional/limit0/window_functions/multiple_partitions/plan/multiple_partitions.json
@@ -21,8 +21,8 @@
             "dest": "subqueries"
         },
         {
-            "mode": "gen",
-            "src": "Datasources/limit0/window_functions/multiple_partitions/create_wf_multiple_partitions_views.sh",
+            "mode": "ddl",
+            "src": "Datasources/limit0/window_functions/multiple_partitions/create_wf_multiple_partitions_views.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/limit0/window_functions/tpcds_variants/data/tpcds_parquet_sf1.json b/framework/resources/Functional/limit0/window_functions/tpcds_variants/data/tpcds_parquet_sf1.json
index 06f277f..f71ce6d 100755
--- a/framework/resources/Functional/limit0/window_functions/tpcds_variants/data/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/limit0/window_functions/tpcds_variants/data/tpcds_parquet_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "window_functions_tpcds_sf1_parquet-variants_limit0_data",
-    "type": "limit 0",
-    "description": "Test TPCDS SF 1 queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_parquet_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/parquet",
-            "dest": "tpcds_sf1/parquet"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "window_functions_tpcds_sf1_parquet-variants_limit0_data",
+  "type": "limit 0",
+  "description": "Test TPCDS SF 1 queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_parquet_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/parquet",
+      "dest": "tpcds_sf1/parquet"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/parquet/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsParquet.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/limit0/window_functions/tpcds_variants/plan/tpcds_parquet_sf1.json b/framework/resources/Functional/limit0/window_functions/tpcds_variants/plan/tpcds_parquet_sf1.json
index bbb09a8..1522524 100755
--- a/framework/resources/Functional/limit0/window_functions/tpcds_variants/plan/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/limit0/window_functions/tpcds_variants/plan/tpcds_parquet_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "window_functions_tpcds_sf1_parquet-variants_limit0_plan",
-    "type": "group",
-    "description": "Test TPCDS SF 1 queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_parquet_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/parquet",
-            "dest": "tpcds_sf1/parquet"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "window_functions_tpcds_sf1_parquet-variants_limit0_plan",
+  "type": "group",
+  "description": "Test TPCDS SF 1 queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_parquet_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/parquet",
+      "dest": "tpcds_sf1/parquet"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/parquet/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsParquet.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/metadata_caching/data/metadata_caching_small.json b/framework/resources/Functional/metadata_caching/data/metadata_caching_small.json
index 8cc0cd9..475f5f6 100644
--- a/framework/resources/Functional/metadata_caching/data/metadata_caching_small.json
+++ b/framework/resources/Functional/metadata_caching/data/metadata_caching_small.json
@@ -1,51 +1,157 @@
 {
-    "testId": "Metadata_Caching_Small_Data",
-    "type": "group",
-    "description": "Metadata Caching Tests with smaller data sets",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.metadata_caching",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-	{
-          "mode": "cp",
-          "src": "Datasources/metadata_caching/data/",
-          "dest": "metadata_caching/"
-    	},
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/delete_cache.sh /drill/testdata/metadata_caching/nation",
-           "dest": ""
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/addremove_files.sh",
-           "dest": ""
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/delete_toplevel_cache.sh",
-           "dest": ""
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/delete_toplevel_cache.sh",
-           "dest": ""
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/metadata_caching/refresh_metadata_multilevel.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "Metadata_Caching_Small_Data",
+  "type": "group",
+  "description": "Metadata Caching Tests with smaller data sets",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.metadata_caching",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/nation"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_addfiles"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removefiles"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_adddir"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removedir"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_addautopartitioned_files"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removeautopartitioned_files"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/orders"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/metadata_caching/data/",
+      "dest": "metadata_caching/"
+    },
+    {
+      "mode": "gen",
+      "src": "Datasources/metadata_caching/refresh_metadata_addremovefiles.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "gen",
+      "src": "Datasources/metadata_caching/refresh_metadata_deletecache.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "gen",
+      "src": "Datasources/metadata_caching/refresh_metadata_multilevel.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removefiles/lineitem1.parquet"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removedir/feb"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removeautopartitioned_files/lineitem2.parquet"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/generated_caches"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_deletecache/.drill.parquet_metadata"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/metadata_caching/data/lineitem1.parquet",
+      "dest": "metadata_caching/lineitem_addfiles/lineitem1.parquet"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/metadata_caching/data/feb",
+      "dest": "metadata_caching/lineitem_adddir/"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/metadata_caching/data/lineitem2.parquet",
+      "dest": "metadata_caching/lineitem_addautopartitioned_files/"
+    },
+
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_summary_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    }
+  ]
 }
diff --git a/framework/resources/Functional/metadata_caching/generated_caches/metadata_caching_small.json b/framework/resources/Functional/metadata_caching/generated_caches/metadata_caching_small.json
index 3e1a555..7d17667 100644
--- a/framework/resources/Functional/metadata_caching/generated_caches/metadata_caching_small.json
+++ b/framework/resources/Functional/metadata_caching/generated_caches/metadata_caching_small.json
@@ -1,41 +1,152 @@
 {
-    "testId": "Metadata_Caching_GeneratedCaches",
-    "type": "group",
-    "description": "Metadata Caching Tests with smaller data sets",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.metadata_caching",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-	{
-          "mode": "cp",
-          "src": "Datasources/metadata_caching/data/",
-          "dest": "metadata_caching/"
-    	},
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/delete_cache.sh /drill/testdata/metadata_caching/nation",
-           "dest": ""
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/addremove_files.sh",
-           "dest": ""
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/delete_toplevel_cache.sh",
-           "dest": ""
-        }
-    ]
+  "testId": "Metadata_Caching_GeneratedCaches",
+  "type": "group",
+  "description": "Metadata Caching Tests with smaller data sets",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.metadata_caching",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/nation"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_addfiles"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removefiles"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_adddir"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removedir"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_addautopartitioned_files"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removeautopartitioned_files"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "metadata_caching/orders"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/metadata_caching/data/",
+      "dest": "metadata_caching/"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/metadata_caching/refresh_metadata_addremovefiles.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/metadata_caching/refresh_metadata_deletecache.ddl",
+      "dest": ""
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removefiles/lineitem1.parquet"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removedir/feb"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_removeautopartitioned_files/lineitem2.parquet"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/generated_caches"
+    },
+    {
+      "mode": "post_rm",
+      "src": "",
+      "dest": "metadata_caching/lineitem_deletecache/.drill.parquet_metadata"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/metadata_caching/data/lineitem1.parquet",
+      "dest": "metadata_caching/lineitem_addfiles/lineitem1.parquet"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/metadata_caching/data/feb",
+      "dest": "metadata_caching/lineitem_adddir/"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/metadata_caching/data/lineitem2.parquet",
+      "dest": "metadata_caching/lineitem_addautopartitioned_files/"
+    },
+
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_summary_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    },
+    {
+      "mode": "dfs_cp",
+      "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+      "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+    }
+  ]
 }
diff --git a/framework/resources/Functional/metadata_caching/partition_pruning/data/metadata_caching_pp.json b/framework/resources/Functional/metadata_caching/partition_pruning/data/metadata_caching_pp.json
index ea32505..3c8a044 100644
--- a/framework/resources/Functional/metadata_caching/partition_pruning/data/metadata_caching_pp.json
+++ b/framework/resources/Functional/metadata_caching/partition_pruning/data/metadata_caching_pp.json
@@ -1,31 +1,31 @@
 {
-    "testId": "Metadata_Caching_Small_PP_data",
-    "type": "group",
-    "description": "Metadata Caching Tests with smaller data sets",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.metadata_caching_pp",
-            "output-format": "tsv",
-            "expected-file": ".*.e",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-      {
-          "mode": "cp",
-          "src": "Datasources/metadata_caching/data_pp/",
-          "dest": "metadata_caching_pp/"
-        } ,
-        {
-            "mode": "gen",
-            "src": "Datasources/metadata_caching/refresh_metadata_multilevel.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "Metadata_Caching_Small_PP_data",
+  "type": "group",
+  "description": "Metadata Caching Tests with smaller data sets",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.metadata_caching_pp",
+      "output-format": "tsv",
+      "expected-file": ".*.e",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/metadata_caching/data_pp/",
+      "dest": "metadata_caching_pp/"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/metadata_caching/refresh_metadata_multilevel.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/metadata_caching/partition_pruning/plan/metadata_caching_pp.json b/framework/resources/Functional/metadata_caching/partition_pruning/plan/metadata_caching_pp.json
index 7a4afaf..ce00416 100644
--- a/framework/resources/Functional/metadata_caching/partition_pruning/plan/metadata_caching_pp.json
+++ b/framework/resources/Functional/metadata_caching/partition_pruning/plan/metadata_caching_pp.json
@@ -1,31 +1,31 @@
 {
-    "testId": "Metadata_Caching_Small_PP",
-    "type": "group",
-    "description": "Metadata Caching Tests with smaller data sets",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.metadata_caching_pp",
-            "output-format": "tsv",
-            "expected-file": ".*.e",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-      {
-          "mode": "cp",
-          "src": "Datasources/metadata_caching/data_pp/",
-          "dest": "metadata_caching_pp/"
-        }, 
-       {
-            "mode": "gen",
-            "src": "Datasources/metadata_caching/refresh_metadata_multilevel.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "Metadata_Caching_Small_PP",
+  "type": "group",
+  "description": "Metadata Caching Tests with smaller data sets",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.metadata_caching_pp",
+      "output-format": "tsv",
+      "expected-file": ".*.e",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/metadata_caching/data_pp/",
+      "dest": "metadata_caching_pp/"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/metadata_caching/refresh_metadata_multilevel.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/metadata_caching/plan/metadata_caching_small.json b/framework/resources/Functional/metadata_caching/plan/metadata_caching_small.json
index 7b3bbb2..c036e85 100644
--- a/framework/resources/Functional/metadata_caching/plan/metadata_caching_small.json
+++ b/framework/resources/Functional/metadata_caching/plan/metadata_caching_small.json
@@ -17,25 +17,141 @@
         }
     ],
     "datasources": [
-        {
-          "mode": "cp",
-          "src": "Datasources/metadata_caching/data/",
-          "dest": "metadata_caching/"
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/delete_cache.sh /drill/testdata/metadata_caching/nation",
-           "dest": ""
-        },
-        {
-           "mode": "gen",
-           "src": "Datasources/metadata_caching/addremove_files.sh",
-           "dest": ""
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/metadata_caching/refresh_metadata_multilevel.sh",
-            "dest": ""
-        }
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/nation"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_addfiles"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_removefiles"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_adddir"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_removedir"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_addautopartitioned_files"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_removeautopartitioned_files"
+      },
+      {
+        "mode": "rm",
+        "src": "",
+        "dest": "metadata_caching/orders"
+      },
+      {
+        "mode": "cp",
+        "src": "Datasources/metadata_caching/data/",
+        "dest": "metadata_caching/"
+      },
+      {
+        "mode": "gen",
+        "src": "Datasources/metadata_caching/refresh_metadata_addremovefiles.ddl",
+        "dest": ""
+      },
+      {
+        "mode": "gen",
+        "src": "Datasources/metadata_caching/refresh_metadata_deletecache.ddl",
+        "dest": ""
+      },
+      {
+        "mode": "gen",
+        "src": "Datasources/metadata_caching/refresh_metadata_multilevel.ddl",
+        "dest": ""
+      },
+      {
+        "mode": "post_rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_removefiles/lineitem1.parquet"
+      },
+      {
+        "mode": "post_rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_removedir/feb"
+      },
+      {
+        "mode": "post_rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_removeautopartitioned_files/lineitem2.parquet"
+      },
+      {
+        "mode": "post_rm",
+        "src": "",
+        "dest": "metadata_caching/generated_caches"
+      },
+      {
+        "mode": "post_rm",
+        "src": "",
+        "dest": "metadata_caching/lineitem_deletecache/.drill.parquet_metadata"
+      },
+      {
+        "mode": "post_cp",
+        "src": "Datasources/metadata_caching/data/lineitem1.parquet",
+        "dest": "metadata_caching/lineitem_addfiles/lineitem1.parquet"
+      },
+      {
+        "mode": "post_cp",
+        "src": "Datasources/metadata_caching/data/feb",
+        "dest": "metadata_caching/lineitem_adddir/"
+      },
+      {
+        "mode": "post_cp",
+        "src": "Datasources/metadata_caching/data/lineitem2.parquet",
+        "dest": "metadata_caching/lineitem_addautopartitioned_files/"
+      },
+
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      },
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_summary_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      },
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      },
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      },
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      },
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      },
+      {
+        "mode": "dfs_cp",
+        "src": "metadata_caching/fewtypes/.drill.parquet_file_metadata.v4",
+        "dest": "metadata_caching/generated_caches/fewtypes_cache/parquet_file_metadata.json"
+      }
     ]
 }
diff --git a/framework/resources/Functional/min_max_dir/min_max_dir.json b/framework/resources/Functional/min_max_dir/min_max_dir.json
index 8c35483..cd23d55 100644
--- a/framework/resources/Functional/min_max_dir/min_max_dir.json
+++ b/framework/resources/Functional/min_max_dir/min_max_dir.json
@@ -18,6 +18,11 @@
     ],
     "datasources": [
       {
+        "mode": "rm",
+        "src": "",
+        "dest": "min_max_dir_metadatacache"
+      },
+      {
          "mode": "cp",
          "src": "Datasources/min_max_dir/data",
          "dest": "min_max_dir"
@@ -33,8 +38,8 @@
          "dest": "drill-3474"
       },
       {
-        "mode": "gen",
-        "src": "Datasources/min_max_dir/scripts/refresh_metadata.sh",
+        "mode": "ddl",
+        "src": "Datasources/min_max_dir/scripts/refresh_metadata.ddl",
         "dest": ""
       }
     ]
diff --git a/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/data/parquet_date.json b/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/data/parquet_date.json
index 3f3da0c..7b66d45 100644
--- a/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/data/parquet_date.json
+++ b/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/data/parquet_date.json
@@ -1,36 +1,66 @@
 {
-    "testId": "mcAutoPartitionParquetDate",
-    "type": "group",
-    "description": "Test drill's parquet date compatibility",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs",
-            "output-format": "tsv",
-            "expected-file": ".*.e",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-                "mode": "cp",
-                "src": "Datasources/parquet_date",
-                "dest": "mc_parquet_date"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/parquet_date",
-                "dest": "parquet_date"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/parquet_date/gen.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "mcAutoPartitionParquetDate",
+  "type": "group",
+  "description": "Test drill's parquet date compatibility",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs",
+      "output-format": "tsv",
+      "expected-file": ".*.e",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "parquet_date/metadata_cache"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "parquet_date/auto_partition"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date",
+      "dest": "mc_parquet_date"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date",
+      "dest": "parquet_date"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/metadata_cache/metadata_cache1.2",
+      "dest": "parquet_date/metadata_cache/metadata_cache1.2_autogen"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/metadata_cache/metadata_cache1.6",
+      "dest": "parquet_date/metadata_cache/metadata_cache1.6_autogen"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/auto_partition/item_multipart",
+      "dest": "parquet_date/auto_partition/item_multipart_autorefresh"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/auto_partition/item_single/1.2",
+      "dest": "parquet_date/auto_partition/item_single_1.2"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_date/metadata_cache.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/plan/parquet_date.json b/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/plan/parquet_date.json
index fb80943..59a2118 100644
--- a/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/plan/parquet_date.json
+++ b/framework/resources/Functional/parquet_storage/parquet_date/auto_partition/plan/parquet_date.json
@@ -1,36 +1,66 @@
 {
-    "testId": "mcAutoPartitionParquetDate_Plan",
-    "type": "group",
-    "description": "Test drill's parquet date compatibility",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs",
-            "output-format": "tsv",
-            "expected-file": ".*.e",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-                "mode": "cp",
-                "src": "Datasources/parquet_date",
-                "dest": "mc_parquet_date"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/parquet_date",
-                "dest": "parquet_date"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/parquet_date/gen.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "mcAutoPartitionParquetDate_Plan",
+  "type": "group",
+  "description": "Test drill's parquet date compatibility",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs",
+      "output-format": "tsv",
+      "expected-file": ".*.e",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "parquet_date/metadata_cache"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "parquet_date/auto_partition"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date",
+      "dest": "mc_parquet_date"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date",
+      "dest": "parquet_date"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/metadata_cache/metadata_cache1.2",
+      "dest": "parquet_date/metadata_cache/metadata_cache1.2_autogen"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/metadata_cache/metadata_cache1.6",
+      "dest": "parquet_date/metadata_cache/metadata_cache1.6_autogen"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/auto_partition/item_multipart",
+      "dest": "parquet_date/auto_partition/item_multipart_autorefresh"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/auto_partition/item_single/1.2",
+      "dest": "parquet_date/auto_partition/item_single_1.2"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_date/metadata_cache.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/parquet_storage/parquet_date/mc_parquet_date/parquet_date.json b/framework/resources/Functional/parquet_storage/parquet_date/mc_parquet_date/parquet_date.json
index e98a5eb..f2fa89a 100644
--- a/framework/resources/Functional/parquet_storage/parquet_date/mc_parquet_date/parquet_date.json
+++ b/framework/resources/Functional/parquet_storage/parquet_date/mc_parquet_date/parquet_date.json
@@ -1,36 +1,66 @@
 {
-    "testId": "mcParquetDate",
-    "type": "group",
-    "description": "Test drill's parquet date compatibility",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs",
-            "output-format": "tsv",
-            "expected-file": ".*.e",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-                "mode": "cp",
-                "src": "Datasources/parquet_date",
-                "dest": "mc_parquet_date"
-        },
-        {
-                "mode": "cp",
-                "src": "Datasources/parquet_date",
-                "dest": "parquet_date"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/parquet_date/gen.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "mcParquetDate",
+  "type": "group",
+  "description": "Test drill's parquet date compatibility",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs",
+      "output-format": "tsv",
+      "expected-file": ".*.e",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "parquet_date/metadata_cache"
+    },
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "parquet_date/auto_partition"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date",
+      "dest": "mc_parquet_date"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date",
+      "dest": "parquet_date"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/metadata_cache/metadata_cache1.2",
+      "dest": "parquet_date/metadata_cache/metadata_cache1.2_autogen"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/metadata_cache/metadata_cache1.6",
+      "dest": "parquet_date/metadata_cache/metadata_cache1.6_autogen"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/auto_partition/item_multipart",
+      "dest": "parquet_date/auto_partition/item_multipart_autorefresh"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/parquet_date/auto_partition/item_single/1.2",
+      "dest": "parquet_date/auto_partition/item_single_1.2"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_date/metadata_cache.ddl",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/partition_pruning/dfs/parquet/data/partitionDirectory.json b/framework/resources/Functional/partition_pruning/dfs/parquet/data/partitionDirectory.json
index 0428371..a496cfb 100644
--- a/framework/resources/Functional/partition_pruning/dfs/parquet/data/partitionDirectory.json
+++ b/framework/resources/Functional/partition_pruning/dfs/parquet/data/partitionDirectory.json
@@ -43,8 +43,19 @@
       "dest": "parquet_storage/DRILL_3855/DRILL_3855_test_data"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_execute_ddl.sh"
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_files.ddl",
+      "dst": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_folders.ddl",
+      "dst": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_without_partitioning.ddl",
+      "dst": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/partition_pruning/dfs/parquet/plan/regex_no_order/partitionDirectory.json b/framework/resources/Functional/partition_pruning/dfs/parquet/plan/regex_no_order/partitionDirectory.json
index 0e2ee58..a6afeee 100644
--- a/framework/resources/Functional/partition_pruning/dfs/parquet/plan/regex_no_order/partitionDirectory.json
+++ b/framework/resources/Functional/partition_pruning/dfs/parquet/plan/regex_no_order/partitionDirectory.json
@@ -38,8 +38,19 @@
       "dest": "parquet_storage/DRILL_6118/DRILL_6118_data_source.csv"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_execute_ddl.sh"
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_files.ddl",
+      "dst": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_partitioned_by_folders.ddl",
+      "dst": ""
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/parquet_storage/DRILL-6118/DRILL_6118_parquet_without_partitioning.ddl",
+      "dst": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/schema_change_empty_batch/json/empty_batch_json.json b/framework/resources/Functional/schema_change_empty_batch/json/empty_batch_json.json
index e443a4f..a3e8d16 100644
--- a/framework/resources/Functional/schema_change_empty_batch/json/empty_batch_json.json
+++ b/framework/resources/Functional/schema_change_empty_batch/json/empty_batch_json.json
@@ -20,8 +20,28 @@
   "datasources" : [
     {
       "mode": "gen",
-      "src": "Datasources/schema_change_empty_batch/json/setup.sh",
+      "src": "Datasources/schema_change_empty_batch/json/setup.sh $DRILL_TESTDATA_DIR",
       "dest": ""
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/json/part",
+      "dest": "schema_change_empty_batch/json/part"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/json/partsupp",
+      "dest": "schema_change_empty_batch/json/partsupp"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/json/empty",
+      "dest": "schema_change_empty_batch/json/empty"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/json/part_small",
+      "dest": "schema_change_empty_batch/json/part_small"
     }
   ]
 }
diff --git a/framework/resources/Functional/schema_change_empty_batch/text/dfs/empty_batch_text_dfs.json b/framework/resources/Functional/schema_change_empty_batch/text/dfs/empty_batch_text_dfs.json
index 1852c8a..d77bdfd 100644
--- a/framework/resources/Functional/schema_change_empty_batch/text/dfs/empty_batch_text_dfs.json
+++ b/framework/resources/Functional/schema_change_empty_batch/text/dfs/empty_batch_text_dfs.json
@@ -20,8 +20,28 @@
   "datasources" : [
     {
       "mode": "gen",
-      "src": "Datasources/schema_change_empty_batch/text/dfs/setup.sh",
+      "src": "Datasources/schema_change_empty_batch/text/dfs/setup.sh $DRILL_TESTDATA_DIR",
       "dest": ""
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/psv/part",
+      "dest": "schema_change_empty_batch/psv/part"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/psv/partsupp",
+      "dest": "schema_change_empty_batch/psv/partsupp"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/psv/empty",
+      "dest": "schema_change_empty_batch/psv/empty"
+    },
+    {
+      "mode": "post_cp",
+      "src": "Datasources/schema_change_empty_batch/data/psv/json_field",
+      "dest": "schema_change_empty_batch/psv/json_field"
     }
   ]
 }
diff --git a/framework/resources/Functional/subqueries/subquery_in_select/subquery_in_select.json b/framework/resources/Functional/subqueries/subquery_in_select/subquery_in_select.json
index b971ee1..1bcfd5d 100755
--- a/framework/resources/Functional/subqueries/subquery_in_select/subquery_in_select.json
+++ b/framework/resources/Functional/subqueries/subquery_in_select/subquery_in_select.json
@@ -19,8 +19,8 @@
   ],
   "datasources": [
     {
-       "mode": "gen",
-       "src": "Datasources/ctas/subqueries/subqueries_select.sh",
+       "mode": "ddl",
+       "src": "Datasources/ctas/subqueries/subqueries_select.ddl",
        "dest": ""
     }
   ]
diff --git a/framework/resources/Functional/table_function/positive/data/table_function.json b/framework/resources/Functional/table_function/positive/data/table_function.json
index d125fc4..802b0d4 100644
--- a/framework/resources/Functional/table_function/positive/data/table_function.json
+++ b/framework/resources/Functional/table_function/positive/data/table_function.json
@@ -18,13 +18,13 @@
     ],
     "datasources": [
       {
-         "mode": "cp",
+         "mode": "post_cp",
          "src": "Datasources/table_function",
          "dest": "table_function/"
       },
       {
         "mode": "gen",
-        "src": "Datasources/table_function/DRILL-5166_generate_data.sh",
+        "src": "Datasources/table_function/DRILL-5166_generate_data.sh $DRILL_TESTDATA_DIR",
         "dest": ""
       }
     ]
diff --git a/framework/resources/Functional/table_function/positive/plan/table_function_plan_check.json b/framework/resources/Functional/table_function/positive/plan/table_function_plan_check.json
index 46a628b..cfd242b 100644
--- a/framework/resources/Functional/table_function/positive/plan/table_function_plan_check.json
+++ b/framework/resources/Functional/table_function/positive/plan/table_function_plan_check.json
@@ -18,13 +18,13 @@
   ],
   "datasources": [
     {
-      "mode": "cp",
+      "mode": "post_cp",
       "src": "Datasources/table_function",
       "dest": "table_function/"
     },
     {
       "mode": "gen",
-      "src": "Datasources/table_function/DRILL-5166_generate_data.sh",
+      "src": "Datasources/table_function/DRILL-5166_generate_data.sh $DRILL_TESTDATA_DIR",
       "dest": ""
     }
   ]
diff --git a/framework/resources/Functional/table_stats/stats/positive/stats.json b/framework/resources/Functional/table_stats/stats/positive/stats.json
index d928066..72064df 100644
--- a/framework/resources/Functional/table_stats/stats/positive/stats.json
+++ b/framework/resources/Functional/table_stats/stats/positive/stats.json
@@ -1,31 +1,36 @@
 {
-    "testId": "Stats_positive_tests",
-    "type": "group",
-    "description": "Test queries using stats",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.drillTestDir",
-            "output-format": "tsv",
-            "expected-file": ".*.plan",
-            "verification-type": [
-                "regex"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-                "mode": "cp",
-                "src": "Datasources/table_stats/tables",
-                "dest": "table_stats"
-        },
-        {
-            "mode": "gen",
-            "src": "Datasources/table_stats/table_stats.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "Stats_positive_tests",
+  "type": "group",
+  "description": "Test queries using stats",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.drillTestDir",
+      "output-format": "tsv",
+      "expected-file": ".*.plan",
+      "verification-type": [
+        "regex"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "rm",
+      "src": "",
+      "dest": "table_stats"
+    },
+    {
+      "mode": "cp",
+      "src": "Datasources/table_stats/tables",
+      "dest": "table_stats"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/table_stats/analyze_tables.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/table_stats/stats/query/query.json b/framework/resources/Functional/table_stats/stats/query/query.json
index eb27973..58312a9 100644
--- a/framework/resources/Functional/table_stats/stats/query/query.json
+++ b/framework/resources/Functional/table_stats/stats/query/query.json
@@ -18,13 +18,18 @@
   ],
   "datasources": [
     {
+      "mode": "rm",
+      "src": "",
+      "dest": "table_stats"
+    },
+    {
       "mode": "cp",
       "src": "Datasources/table_stats/tables",
       "dest": "table_stats"
     },
     {
-      "mode": "gen",
-      "src": "Datasources/table_stats/table_stats.sh",
+      "mode": "ddl",
+      "src": "Datasources/table_stats/analyze_tables.sql",
       "dest": ""
     }
   ]
diff --git a/framework/resources/Functional/text_storage/testcases/textReadGroup.json b/framework/resources/Functional/text_storage/testcases/textReadGroup.json
index 3d1eab7..0523c61 100644
--- a/framework/resources/Functional/text_storage/testcases/textReadGroup.json
+++ b/framework/resources/Functional/text_storage/testcases/textReadGroup.json
@@ -18,14 +18,39 @@
   ],
   "datasources": [
     {
+      "mode": "rm",
+      "src": "",
+      "dest": "text_storage/drill-4484"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "text_storage/drill-4484/20160401/3"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "text_storage/drill-4484/20160404"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "text_storage/drill-4484/20160501/1"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "text_storage/drill-4484/20160501/2"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "text_storage/drill-4484/20160502"
+    },
+    {
       "mode": "cp",
       "src": "Datasources/text_storage",
       "dest": "text_storage"
-    },
-    {
-      "mode": "gen",
-      "src": "Datasources/text_storage/drill-4484.sh",
-      "dest": ""
     }
   ]
 }
diff --git a/framework/resources/Functional/tpcds/impala/json/tpcds_sf1_json.json b/framework/resources/Functional/tpcds/impala/json/tpcds_sf1_json.json
index 80c93a6..9e712d1 100755
--- a/framework/resources/Functional/tpcds/impala/json/tpcds_sf1_json.json
+++ b/framework/resources/Functional/tpcds/impala/json/tpcds_sf1_json.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_impala_json",
-    "type": "group",
-    "description": "Test TPCDS SF 1 queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.tpcds_sf1_json_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/json",
-            "dest": "tpcds_sf1/json"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsJson.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_impala_json",
+  "type": "group",
+  "description": "Test TPCDS SF 1 queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.tpcds_sf1_json_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/json",
+      "dest": "tpcds_sf1/json"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/json/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsJson.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/tpcds/impala/parquet/tpcds_parquet_sf1.json b/framework/resources/Functional/tpcds/impala/parquet/tpcds_parquet_sf1.json
index f6cf6cb..d072042 100755
--- a/framework/resources/Functional/tpcds/impala/parquet/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/tpcds/impala/parquet/tpcds_parquet_sf1.json
@@ -22,9 +22,14 @@
             "src": "Datasources/tpcds/sf1/parquet",
             "dest": "tpcds_sf1/parquet"
         },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "tpcds_sf1/parquet/views"
+        },
 	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
+            "mode": "ddl",
+            "src": "Datasources/tpcds/createViewsParquet.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/tpcds/impala/text/tpcds_text_sf1.json b/framework/resources/Functional/tpcds/impala/text/tpcds_text_sf1.json
index 93153f7..e6368c5 100755
--- a/framework/resources/Functional/tpcds/impala/text/tpcds_text_sf1.json
+++ b/framework/resources/Functional/tpcds/impala/text/tpcds_text_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_impala_text",
-    "type": "group",
-    "description": "Test TPCDS SF 1 queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.q",
-            "schema": "dfs.tpcds_sf1_text_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/text",
-            "dest": "tpcds_sf1/text"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsText.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_impala_text",
+  "type": "group",
+  "description": "Test TPCDS SF 1 queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.q",
+      "schema": "dfs.tpcds_sf1_text_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/text",
+      "dest": "tpcds_sf1/text"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/text/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsText.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/tpcds/sanity/json/tpcds_sf1_json.json b/framework/resources/Functional/tpcds/sanity/json/tpcds_sf1_json.json
index 37167bb..13a49e1 100755
--- a/framework/resources/Functional/tpcds/sanity/json/tpcds_sf1_json.json
+++ b/framework/resources/Functional/tpcds/sanity/json/tpcds_sf1_json.json
@@ -22,9 +22,14 @@
             "src": "Datasources/tpcds/sf1/json",
             "dest": "tpcds_sf1/json"
         },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "tpcds_sf1/json/views"
+        },
 	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsJson.sh",
+            "mode": "ddl",
+            "src": "Datasources/tpcds/createViewsJson.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/tpcds/sanity/parquet/tpcds_parquet_sf1.json b/framework/resources/Functional/tpcds/sanity/parquet/tpcds_parquet_sf1.json
index 80995af..5e39bcc 100755
--- a/framework/resources/Functional/tpcds/sanity/parquet/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/tpcds/sanity/parquet/tpcds_parquet_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_sanity_parquet",
-    "type": "group",
-    "description": "Test TPCDS SF 1 queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_parquet_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/parquet",
-            "dest": "tpcds_sf1/parquet"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_sanity_parquet",
+  "type": "group",
+  "description": "Test TPCDS SF 1 queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_parquet_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/parquet",
+      "dest": "tpcds_sf1/parquet"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/parquet/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsParquet.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/tpcds/sanity/text/tpcds_text_sf1.json b/framework/resources/Functional/tpcds/sanity/text/tpcds_text_sf1.json
index 28a91cf..7f49946 100755
--- a/framework/resources/Functional/tpcds/sanity/text/tpcds_text_sf1.json
+++ b/framework/resources/Functional/tpcds/sanity/text/tpcds_text_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_sanity_text",
-    "type": "group",
-    "description": "Test TPCDS SF 1 data sanity queries on text (with views on top) via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_text_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/text",
-            "dest": "tpcds_sf1/text"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsText.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_sanity_text",
+  "type": "group",
+  "description": "Test TPCDS SF 1 data sanity queries on text (with views on top) via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_text_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/text",
+      "dest": "tpcds_sf1/text"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/text/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsText.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/tpcds/variants/json/tpcds_json_sf1.json b/framework/resources/Functional/tpcds/variants/json/tpcds_json_sf1.json
index effb7fc..fc0d317 100755
--- a/framework/resources/Functional/tpcds/variants/json/tpcds_json_sf1.json
+++ b/framework/resources/Functional/tpcds/variants/json/tpcds_json_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_variants_json",
-    "type": "group",
-    "description": "Test TPCDS SF 1 original queries on text (with views on top) via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_json_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/json",
-            "dest": "tpcds_sf1/json"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsJson.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_variants_json",
+  "type": "group",
+  "description": "Test TPCDS SF 1 original queries on text (with views on top) via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_json_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/json",
+      "dest": "tpcds_sf1/json"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/json/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsJson.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/tpcds/variants/parquet/tpcds_parquet_sf1.json b/framework/resources/Functional/tpcds/variants/parquet/tpcds_parquet_sf1.json
index 371ec3a..56074e1 100755
--- a/framework/resources/Functional/tpcds/variants/parquet/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/tpcds/variants/parquet/tpcds_parquet_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_variants_parquet",
-    "type": "group",
-    "description": "Test TPCDS SF 1 queries via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_parquet_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/parquet",
-            "dest": "tpcds_sf1/parquet"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_variants_parquet",
+  "type": "group",
+  "description": "Test TPCDS SF 1 queries via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_parquet_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/parquet",
+      "dest": "tpcds_sf1/parquet"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/parquet/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsParquet.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/tpcds/variants/text/tpcds_text_sf1.json b/framework/resources/Functional/tpcds/variants/text/tpcds_text_sf1.json
index b41512a..59c7fd8 100755
--- a/framework/resources/Functional/tpcds/variants/text/tpcds_text_sf1.json
+++ b/framework/resources/Functional/tpcds/variants/text/tpcds_text_sf1.json
@@ -1,31 +1,36 @@
 {
-    "testId": "tpcds_sf1_variants_text",
-    "type": "group",
-    "description": "Test TPCDS SF 1 original queries on text (with views on top) via jdbc",
-    "categories": [
-        "functional"
-    ],
-    "matrices": [
-        {
-            "query-file": ".*.sql",
-            "schema": "dfs.tpcds_sf1_text_views",
-            "output-format": "tsv",
-            "expected-file": ".*.e_tsv",
-            "verification-type": [
-                "in-memory"
-            ]
-        }
-    ],
-    "datasources": [
-        {
-            "mode": "cp",
-            "src": "Datasources/tpcds/sf1/text",
-            "dest": "tpcds_sf1/text"
-        },
-	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsText.sh",
-            "dest": ""
-        }
-    ]
+  "testId": "tpcds_sf1_variants_text",
+  "type": "group",
+  "description": "Test TPCDS SF 1 original queries on text (with views on top) via jdbc",
+  "categories": [
+    "functional"
+  ],
+  "matrices": [
+    {
+      "query-file": ".*.sql",
+      "schema": "dfs.tpcds_sf1_text_views",
+      "output-format": "tsv",
+      "expected-file": ".*.e_tsv",
+      "verification-type": [
+        "in-memory"
+      ]
+    }
+  ],
+  "datasources": [
+    {
+      "mode": "cp",
+      "src": "Datasources/tpcds/sf1/text",
+      "dest": "tpcds_sf1/text"
+    },
+    {
+      "mode": "mkdir",
+      "src": "",
+      "dest": "tpcds_sf1/text/views"
+    },
+    {
+      "mode": "ddl",
+      "src": "Datasources/tpcds/createViewsText.sql",
+      "dest": ""
+    }
+  ]
 }
diff --git a/framework/resources/Functional/udfs/udfs.json b/framework/resources/Functional/udfs/udfs.json
index 1a52b87..ee22cd4 100644
--- a/framework/resources/Functional/udfs/udfs.json
+++ b/framework/resources/Functional/udfs/udfs.json
@@ -4,7 +4,7 @@
     "description": "Test UDF functions",
     "submit-type": "jdbc",
     "categories": [
-        "functional"
+        "excluded"
     ],
     "matrices": [
         {
diff --git a/framework/resources/Functional/window_functions/tpcds/tpcds_parquet_sf1.json b/framework/resources/Functional/window_functions/tpcds/tpcds_parquet_sf1.json
index fb89cec..8ec6fb4 100755
--- a/framework/resources/Functional/window_functions/tpcds/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/window_functions/tpcds/tpcds_parquet_sf1.json
@@ -22,9 +22,14 @@
             "src": "Datasources/tpcds/sf1/parquet",
             "dest": "tpcds_sf1/parquet"
         },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "tpcds_sf1/parquet/views"
+        },
 	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
+            "mode": "ddl",
+            "src": "Datasources/tpcds/createViewsParquet.sql",
             "dest": ""
         }
     ]
diff --git a/framework/resources/Functional/window_functions/tpcds_variants/tpcds_parquet_sf1.json b/framework/resources/Functional/window_functions/tpcds_variants/tpcds_parquet_sf1.json
index 88575cd..e1b9ec3 100755
--- a/framework/resources/Functional/window_functions/tpcds_variants/tpcds_parquet_sf1.json
+++ b/framework/resources/Functional/window_functions/tpcds_variants/tpcds_parquet_sf1.json
@@ -22,9 +22,14 @@
             "src": "Datasources/tpcds/sf1/parquet",
             "dest": "tpcds_sf1/parquet"
         },
+        {
+            "mode": "mkdir",
+            "src": "",
+            "dest": "tpcds_sf1/parquet/views"
+        },
 	{
-            "mode": "gen",
-            "src": "Datasources/tpcds/createViewsParquet.sh",
+            "mode": "ddl",
+            "src": "Datasources/tpcds/createViewsParquet.sql",
             "dest": ""
         }
     ]
diff --git a/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java b/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java
index 6eca059..e5d5705 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java
@@ -19,7 +19,9 @@
 
 import com.google.common.collect.Queues;
 import com.google.common.annotations.VisibleForTesting;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
@@ -29,7 +31,7 @@
 import java.util.Queue;
 
 public class ConnectionPool implements AutoCloseable {
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private final Map<String, Queue<Connection>> connections;
   private Properties connectionProperties;
 
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java b/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java
index d3b883b..9d643c2 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java
@@ -17,17 +17,19 @@
  */
 package org.apache.drill.test.framework;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.sql.SQLException;
 import java.sql.DatabaseMetaData;
 
-import org.apache.log4j.Logger;
 
 /**
 * Retrieves DataBase MetaData.
 */
 
 public class DBMetaData {
-	private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+	private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
         private DatabaseMetaData md = null;
 	public DBMetaData(DatabaseMetaData md) {
 		this.md = md;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillQueryProfile.java b/framework/src/main/java/org/apache/drill/test/framework/DrillQueryProfile.java
index 83c5b95..2d255fd 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillQueryProfile.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillQueryProfile.java
@@ -3,7 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeName;
-import oadd.org.apache.drill.exec.proto.UserBitShared;
+import org.apache.drill.exec.server.rest.profile.CoreOperatorType;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -208,13 +208,13 @@
      * @param operator
      * @return
      */
-    public long getOptimalMemoryPerOperator(final UserBitShared.CoreOperatorType operator) {
+    public long getOptimalMemoryPerOperator(final CoreOperatorType operator) {
         return this.fragmentProfiles
                 .stream()
                 .flatMap(f -> f.minorFragmentProfiles
                         .stream()
                         .flatMap(m -> m.operatorProfiles.stream())
-                ).filter(o -> o.operatorId == operator.getNumber())
+                ).filter(o -> o.operatorId == operator.getId())
                 .mapToLong(o -> o.optimalMemAllocation)
                 .sum();
     }
@@ -223,14 +223,14 @@
      * Get different operators in the profile.
      * @return a list of operators in the query profile.
      */
-    public List<UserBitShared.CoreOperatorType> getOperatorsFromProfile() {
+    public List<CoreOperatorType> getOperatorsFromProfile() {
         return this.fragmentProfiles
                 .stream().flatMap(f -> f.minorFragmentProfiles
                         .stream()
                         .flatMap(m -> m.operatorProfiles.stream())
                 ).mapToInt(o -> o.operatorId)
                 .distinct()
-                .mapToObj(UserBitShared.CoreOperatorType::forNumber)
+                .mapToObj(CoreOperatorType::valueOf)
                 .collect(Collectors.toList());
     }
 
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java b/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java
index 3c97fc8..f5aef85 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java
@@ -9,7 +9,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.ConfigFactory;
 import com.typesafe.config.ConfigRenderOptions;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -24,7 +25,7 @@
  * Represents a Drill RM Resource Pool configuration.
  */
 public class DrillRMConfig implements DrillConfigRenderer {
-    private static final Logger LOG = Logger.getLogger(DrillRMConfig.class);
+    private static final Logger LOG = LoggerFactory.getLogger(DrillRMConfig.class);
     //Resource Pool Configurations
     public static final String RESOURCE_POOL_NAME_KEY = "pool_name";
     public static final String MEMORY_KEY = "memory";
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestDefaults.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestDefaults.java
index 71b21f1..72bfece 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestDefaults.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestDefaults.java
@@ -24,6 +24,10 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.PropertyResourceBundle;
 import java.util.ResourceBundle;
@@ -149,6 +153,10 @@
    
   private static final Map<String, String> drillProperties;
 
+  private static class DrillDefaultsHolder {
+    private static final Map<String, String> drillDefaults = generateDefaultsMap();
+  }
+
   static {
     drillProperties = getConfigProperties();
     loadConfigProperties();
@@ -158,6 +166,10 @@
     return drillProperties;
   }
 
+  public static Map<String, String> getDrillDefaults() {
+    return DrillDefaultsHolder.drillDefaults;
+  }
+
   /**
 
    * Reads properties from drill test configuration file
@@ -185,6 +197,23 @@
     return ImmutableMap.copyOf(properties);
   }
 
+  private static Map<String, String> generateDefaultsMap() {
+    Field[] fields = DrillTestDefaults.class.getDeclaredFields();
+    Map<String, String> defaults = new HashMap<>();
+    Arrays.stream(fields)
+            .filter(f -> String.class.equals(f.getType()))
+            .filter(f -> Modifier.isPublic(f.getModifiers()))
+            .filter(f -> Modifier.isStatic(f.getModifiers()))
+            .forEach(f -> {
+              try {
+                defaults.put(f.getName(), (String) f.get(null));
+              } catch (IllegalAccessException e) {
+                throw new IllegalStateException(e); // Already filtered for public only fields
+              }
+            });
+    return defaults;
+  }
+
   /**
    * Load configuration properties
    */
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java
index 18e3107..701e25b 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java
@@ -20,10 +20,11 @@
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.Lists;
 import org.apache.drill.test.framework.TestCaseModeler.TestMatrix;
+import org.apache.drill.test.framework.TestVerifier.PlanVerificationException;
 import org.apache.drill.test.framework.TestVerifier.TestStatus;
 import org.apache.drill.test.framework.TestVerifier.VerificationException;
-import org.apache.drill.test.framework.TestVerifier.PlanVerificationException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -33,14 +34,13 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 public class DrillTestJdbc implements DrillTest {
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private static final String LINE_BREAK = "------------------------------------------------------------------------";
 
   private ConnectionPool connectionPool;
@@ -248,7 +248,7 @@
       }
 
       LOG.debug("Result set data types:");
-      LOG.debug(Utils.getTypesInStrings(columnTypes));
+      LOG.debug(Utils.getTypesInStrings(columnTypes).toString());
 
       if (resultSet != null) {
         while (resultSet.next()) {
@@ -258,7 +258,7 @@
         }
       }
     } catch (IllegalArgumentException | IllegalAccessException | IOException e1) {
-		LOG.warn(e1);
+		LOG.warn(e1.getMessage(), e1);
 	} finally {
 	  doneProcessingResultSet.set(true);
       if (resultSet != null) {
@@ -322,7 +322,7 @@
             : new VerificationException(exception + "\n" + msg);
       }
     } catch (IllegalArgumentException | IllegalAccessException e1) {
-      LOG.warn(e1);
+      LOG.warn(e1.getMessage(), e1);
     } finally {
       if (resultSet != null) resultSet.close();
       if (writer != null) writer.close();
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java
index b1830e5..220db6f 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java
@@ -23,7 +23,8 @@
 import org.apache.drill.test.framework.TestVerifier.TestStatus;
 import org.apache.drill.test.framework.TestVerifier.VerificationException;
 import org.apache.drill.test.framework.TestVerifier.PlanVerificationException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -42,7 +43,7 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 
 public class DrillTestOdbc implements DrillTest{
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private String query = null;
   private String outputFilename;
   private volatile TestStatus testStatus = TestStatus.PENDING;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java
index 1933f42..664ecf6 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java
@@ -18,28 +18,15 @@
 package org.apache.drill.test.framework;
 
 import com.google.common.base.Stopwatch;
-import com.google.common.collect.Lists;
 import org.apache.drill.test.framework.TestCaseModeler.TestMatrix;
 import org.apache.drill.test.framework.TestVerifier.TestStatus;
-import org.apache.drill.test.framework.TestVerifier.VerificationException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 public class DrillTestScript implements DrillTest {
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private String query;
   private String outputFilename;
   private volatile TestStatus testStatus = TestStatus.PENDING;
@@ -77,7 +64,7 @@
     try {
 
   	  cmdConsOut = Utils.execCmd(command);
-  	  LOG.info(cmdConsOut);
+  	  LOG.info(cmdConsOut.toString());
 
       switch (cmdConsOut.exitCode) {
       case 0:
diff --git a/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java b/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java
index 079e89a..b0337a5 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java
@@ -22,7 +22,6 @@
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-
 import org.apache.drill.test.framework.TestCaseModeler.DataSource;
 import org.apache.drill.test.framework.TestVerifier.TestStatus;
 import org.apache.hadoop.conf.Configuration;
@@ -31,9 +30,10 @@
 import org.apache.hadoop.fs.FileUtil;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.mapred.FileAlreadyExistsException;
-import org.apache.log4j.Logger;
 import org.ojai.Document;
 import org.ojai.json.Json;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -42,14 +42,25 @@
 import java.io.FileWriter;
 import java.io.IOException;
 import java.net.URISyntaxException;
-import java.util.*;
 import java.sql.Connection;
+import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.sql.DatabaseMetaData;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Random;
+import java.util.Set;
 
 public class TestDriver {
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private Connection connection = null;
   public static String commitId, version;
   private String[] injectionKeys = {"DRILL_VERSION"};
@@ -59,6 +70,7 @@
   private ConnectionPool connectionPool;
   private int countTotalTests;
   private Properties connectionProperties;
+  private static boolean minioEnabled;
 
   private static Configuration conf = new Configuration();
   public static final CmdParam cmdParam = new CmdParam();
@@ -184,8 +196,10 @@
   	  queryMemoryUsage();
     }
 
+    List<String> excludedDependencies = cmdParam.excludeDependenciesAsList();
+    minioEnabled = !excludedDependencies.contains("all") && !excludedDependencies.contains("s3minio");
     // Run Apache Minio server if s3minio tests aren't excluded
-    if(cmdParam.excludeDependencies == null || !cmdParam.excludeDependencies.contains("s3minio")) {
+    if(minioEnabled) {
       Utils.startMinio();
     } else {
       // Disable s3minio storage plugin if Minio server is down
@@ -667,7 +681,7 @@
     	  injections.put(injectionKeys[i], version);
     	  break;
     	default:
-    	  LOG.fatal("Injection parameter not recognized!");
+    	  LOG.error("Injection parameter not recognized!");
     	}    	
       }
       connectionPool.releaseConnection(connection);
@@ -712,7 +726,7 @@
 	connectionPool.releaseConnection(connection);
 
     // Stop Apache Minio server if it was started
-    if(cmdParam.excludeDependencies == null || !cmdParam.excludeDependencies.contains("s3minio")) {
+    if(minioEnabled) {
       Utils.stopMinio();
     }
   }
@@ -728,66 +742,236 @@
 
     boolean restartDrillbits = false;
 
-    CancelingExecutor copyExecutor = new CancelingExecutor(cmdParam.threads, Integer.MAX_VALUE);
-    CancelingExecutor genExecutor = new CancelingExecutor(cmdParam.threads, Integer.MAX_VALUE);
-    List<Cancelable> copyTasks = Lists.newArrayList();
-    List<Cancelable> genTasks = Lists.newArrayList();
+    List<Cancelable> rmTasks = new ArrayList<>();
+    List<Cancelable> copyTasks = new ArrayList<>();
+    List<Cancelable> mkdirTasks = new ArrayList<>();
+    List<Cancelable> genTasks = new ArrayList<>();
+    List<Cancelable> postRmTasks = new ArrayList<>();
+    List<Cancelable> postCopyTasks = new ArrayList<>();
+    List<Cancelable> dfsCopyTasks = new ArrayList<>();
+    List<Cancelable> ddlTasks = new ArrayList<>();
     for (final TestCaseModeler.DataSource datasource : dataSources) {
       String mode = datasource.mode;
-      if (mode.equals("cp")) {
-        Cancelable task = new Cancelable() {
-          @Override
-          public void cancel() {
-            // no op, as this will not time out
-          }
-
-          @Override
-          public void run() {
-            try {
-              Path src = new Path(DrillTestDefaults.TEST_ROOT_DIR + "/" + DrillTestDefaults.DRILL_TESTDATA_DIR + "/" + datasource.src);
-              Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
-              dfsCopy(src, dest, DrillTestDefaults.FS_MODE);
-            } catch (IOException e) {
-              throw new RuntimeException(e);
+      switch (mode) {
+        case "rm": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
             }
-          }
-        };
-        copyTasks.add(task);
-      } else if (mode.equals("gen")) {
-        Cancelable task = new Cancelable() {
-          @Override
-          public void cancel() {
-            // no op, as this will not time out
-          }
 
-          @Override
-          public void run() {
-            runGenerateScript(datasource);
-          }
-        };
-        genTasks.add(task);
-      } else if (mode.equals("restart-drill")) {
-        restartDrillbits = true;
+            @Override
+            public void run() {
+              try {
+                Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
+                dfsDelete(dest, DrillTestDefaults.FS_MODE);
+              } catch (IOException e) {
+                throw new RuntimeException(e);
+              }
+            }
+          };
+          rmTasks.add(task);
+          break;
+        }
+        case "cp": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              try {
+                Path src = new Path(DrillTestDefaults.TEST_ROOT_DIR + "/" + DrillTestDefaults.DRILL_TESTDATA_DIR + "/" + datasource.src);
+                Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
+                dfsCopy(src, dest, DrillTestDefaults.FS_MODE);
+              } catch (IOException e) {
+                throw new RuntimeException(e);
+              }
+            }
+          };
+          copyTasks.add(task);
+          break;
+        }
+        case "mkdir": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              try {
+                Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
+                dfsMkdir(dest, DrillTestDefaults.FS_MODE);
+              } catch (IOException e) {
+                throw new RuntimeException(e);
+              }
+            }
+          };
+          mkdirTasks.add(task);
+          break;
+        }
+        case "gen": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              runGenerateScript(datasource);
+            }
+          };
+          genTasks.add(task);
+          break;
+        }
+        case "post_rm": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              try {
+                Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
+                dfsDelete(dest, DrillTestDefaults.FS_MODE);
+              } catch (IOException e) {
+                throw new RuntimeException(e);
+              }
+            }
+          };
+          postRmTasks.add(task);
+          break;
+        }
+        case "post_cp": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              try {
+                Path src = new Path(DrillTestDefaults.TEST_ROOT_DIR + "/" + DrillTestDefaults.DRILL_TESTDATA_DIR + "/" + datasource.src);
+                Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
+                dfsCopy(src, dest, DrillTestDefaults.FS_MODE);
+              } catch (IOException e) {
+                throw new RuntimeException(e);
+              }
+            }
+          };
+          postCopyTasks.add(task);
+          break;
+        }
+        case "dfs_cp": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              try {
+                Path src = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.src);
+                Path dest = new Path(DrillTestDefaults.DRILL_TESTDATA, datasource.dest);
+                dfsToDfsCopy(src, dest, DrillTestDefaults.FS_MODE);
+              } catch (IOException e) {
+                throw new RuntimeException(e);
+              }
+            }
+          };
+          dfsCopyTasks.add(task);
+          break;
+        }
+        case "ddl": {
+          Cancelable task = new Cancelable() {
+            @Override
+            public void cancel() {
+              // no op, as this will not time out
+            }
+
+            @Override
+            public void run() {
+              Path src = new Path(DrillTestDefaults.TEST_ROOT_DIR + "/" + DrillTestDefaults.DRILL_TESTDATA_DIR + "/" + datasource.src);
+              runDDL(src);
+            }
+          };
+          ddlTasks.add(task);
+          break;
+        }
+        case "restart-drill":
+          restartDrillbits = true;
+          break;
       }
     }
 
     final Stopwatch stopwatch = Stopwatch.createStarted();
-    
-    LOG.info("> Copying Data");
-    copyExecutor.executeAll(copyTasks);
-    copyExecutor.close();
-    LOG.info(">> Copy duration: " + stopwatch + "\n");
-    stopwatch.reset().start();
-    LOG.info("> Generating Data");
-    genExecutor.executeAll(genTasks);
-    genExecutor.close();
-    LOG.info("\n>> Generation duration: " + stopwatch + "\n");
+
+    try (CancelingExecutor executor = new CancelingExecutor(cmdParam.threads, Integer.MAX_VALUE)) {
+      if (!rmTasks.isEmpty()) {
+        LOG.info("> Clearing Data");
+        executor.executeAll(rmTasks);
+      }
+      if (!copyTasks.isEmpty()) {
+        LOG.info("> Copying Data");
+        executor.executeAll(copyTasks);
+        LOG.info(">> Copy duration: " + stopwatch + "\n");
+        stopwatch.reset().start();
+      }
+      if (!mkdirTasks.isEmpty()) {
+        LOG.info("> Making directories");
+        executor.executeAll(mkdirTasks);
+      }
+      if (!genTasks.isEmpty()) {
+        LOG.info("> Generating Data");
+        executor.executeAll(genTasks);
+        LOG.info("\n>> Generation duration: " + stopwatch + "\n");
+      }
+      if (!rmTasks.isEmpty()) {
+        LOG.info("> Clearing Data after generating");
+        executor.executeAll(postRmTasks);
+      }
+      if (!postCopyTasks.isEmpty()) {
+        LOG.info("> Copying generated Data");
+        executor.executeAll(postCopyTasks);
+      }
+      if (!dfsCopyTasks.isEmpty()) {
+        LOG.info("> Rearranging Data on DFS");
+        executor.executeAll(dfsCopyTasks);
+      }
+      if (!ddlTasks.isEmpty()) {
+        LOG.info("> Executing DDL scripts");
+        executor.executeAll(ddlTasks);
+      }
+    }
 
     if (restartDrillbits) {
       Utils.restartDrill();
     }
   }
 
+  private void dfsDelete(Path dest, String fsMode) throws IOException {
+    FileSystem fs;
+
+    if (fsMode.equals("distributedFS")) {
+      fs = FileSystem.get(conf);
+    } else {
+      fs = FileSystem.getLocal(conf);
+    }
+
+    if (fs.exists(dest)) {
+      fs.delete(dest, true);
+    }
+  }
+
   private void dfsCopy(Path src, Path dest, String fsMode)
           throws IOException {
 
@@ -818,31 +1002,95 @@
           LOG.debug("File " + src + " already exists as " + dest);
         }
       }
-    } catch (FileAlreadyExistsException e) {
-      LOG.debug("File " + src + " already exists as " + dest);
     } catch (IOException e) {
       LOG.debug("File " + src + " already exists as " + dest);
     }
   }
 
+  private void dfsToDfsCopy(Path src, Path dest, String fsMode)
+          throws IOException {
+
+    FileSystem fs;
+
+    if (fsMode.equals("distributedFS")) {
+      fs = FileSystem.get(conf);
+    } else {
+      fs = FileSystem.getLocal(conf);
+    }
+
+    try {
+      if (fs.getFileStatus(src).isDirectory()) {
+        for (FileStatus file : fs.listStatus(src)) {
+          Path srcChild = file.getPath();
+          Path newDest = new Path(dest + "/" + srcChild.getName());
+          dfsCopy(srcChild, newDest, fsMode);
+        }
+      } else {
+        if (!fs.exists(dest.getParent())) {
+          fs.mkdirs(dest.getParent());
+        }
+        if (!fs.exists(dest)) {
+          FileUtil.copy(fs, src, fs, dest, false, fs.getConf());
+          LOG.debug("Copying file " + src + " to " + dest);
+        } else {
+          LOG.debug("File " + src + " already exists as " + dest);
+        }
+      }
+    } catch (IOException e) {
+      LOG.debug("File " + src + " already exists as " + dest);
+    }
+  }
+
+  private void dfsMkdir(Path dest, String fsMode) throws IOException {
+    FileSystem fs;
+
+    if (fsMode.equals("distributedFS")) {
+      fs = FileSystem.get(conf);
+    } else {
+      fs = FileSystem.getLocal(conf);
+    }
+
+    if (!fs.exists(dest)) {
+      fs.mkdirs(dest);
+    }
+  }
+
   private void runGenerateScript(DataSource datasource) {
-	String command = DrillTestDefaults.TEST_ROOT_DIR + "/" + DrillTestDefaults.DRILL_TESTDATA_DIR + "/" + datasource.src;
-	LOG.info("Running command " + command);
-	CmdConsOut cmdConsOut;
-	try {
-	  cmdConsOut = Utils.execCmd(command);
-	  LOG.debug(cmdConsOut);
-	} catch (Exception e) {
-	  cmdConsOut = new CmdConsOut();
-	  cmdConsOut.cmd = command;
-	  cmdConsOut.consoleErr = e.getMessage();
-	  LOG.error("Error: Failed to execute the command " + cmdConsOut);
-	  throw new RuntimeException(e);
-	}
-	if (cmdConsOut.exitCode != 0) {
-	  throw new RuntimeException("Error executing the command " + command
-	          + " has return code " + cmdConsOut.exitCode);
-	}
+    String command = DrillTestDefaults.TEST_ROOT_DIR + "/" + DrillTestDefaults.DRILL_TESTDATA_DIR + "/" + datasource.src;
+    if (command.endsWith(".ddl") && command.split(" ").length == 1) {
+      runDDL(new Path(command));
+    } else {
+      command = Utils.substituteArguments(command);
+      LOG.info("Running command " + command);
+      CmdConsOut cmdConsOut;
+      try {
+        cmdConsOut = Utils.execCmd(command);
+        LOG.debug(cmdConsOut.toString());
+      } catch (Exception e) {
+        cmdConsOut = new CmdConsOut();
+        cmdConsOut.cmd = command;
+        cmdConsOut.consoleErr = e.getMessage();
+        LOG.error("Error: Failed to execute the command " + cmdConsOut);
+        throw new RuntimeException(e);
+      }
+      if (cmdConsOut.exitCode != 0) {
+        throw new RuntimeException("Error executing the command " + command
+                + " has return code " + cmdConsOut.exitCode);
+      }
+    }
+  }
+
+  private void runDDL(Path src) {
+    try (Connection conn = connectionPool.getOrCreateConnection()) {
+      String[] queries = Utils.getSqlStatements(src.toString());
+      try (Statement statement = conn.createStatement()) {
+        for (String query : queries) {
+          statement.execute(query);
+        }
+      }
+    } catch (SQLException | IOException e) {
+      LOG.error("Error executing ddl " + src, e);
+    }
   }
   
   private DrillTest getDrillTest(DrillTestCase modeler, ConnectionPool connectionPool, int cloneId, int totalCases) {
@@ -884,7 +1132,7 @@
       }
 
       LOG.debug("Result set data types:");
-      LOG.debug(Utils.getTypesInStrings(types));
+      LOG.debug(Utils.getTypesInStrings(types).toString());
 
       if (resultSet != null) {
         while (resultSet.next()) {
diff --git a/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java b/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java
index 57aedfb..62951ea 100755
--- a/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java
@@ -42,7 +42,8 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Lists;
 import org.apache.drill.test.framework.TestCaseModeler.TestMatrix;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Verification of drill tests by comparing actual query output with expected
@@ -50,7 +51,7 @@
  * 
  */
 public class TestVerifier {
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger"); 
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private static final int MAX_MISMATCH_SIZE = 10;
   public TestStatus testStatus = TestStatus.PENDING;
   private int mapSize = 0;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/Utils.java b/framework/src/main/java/org/apache/drill/test/framework/Utils.java
index 04f0fc2..7fbfb6e 100755
--- a/framework/src/main/java/org/apache/drill/test/framework/Utils.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/Utils.java
@@ -72,7 +72,8 @@
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
@@ -86,7 +87,7 @@
  *
  */
 public class Utils {
-  private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+  private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
   private static final Map<Integer, String> sqlTypes;
   private static final Map<Integer, String> sqlNullabilities;
   private static HttpClient client;
@@ -343,9 +344,11 @@
         }
         boolean skipSuite = false;
         if (modeler.dependencies != null) {
+          List<String> excludedDependencies = TestDriver.cmdParam.excludeDependenciesAsList();
           for (String dependency : modeler.dependencies) {
-            if (TestDriver.cmdParam.excludeDependenciesAsList().contains(dependency)) {
+            if (excludedDependencies.contains("all") || excludedDependencies.contains(dependency)) {
               skipSuite = true;
+              break;
             }
           }
         }
@@ -571,7 +574,7 @@
 	  }
 
 	  LOG.debug("Result set data types:");
-	  LOG.debug(Utils.getTypesInStrings(types));
+	  LOG.debug(Utils.getTypesInStrings(types).toString());
 	  stringBuffer.append(new ColumnList(types, columnLabels).toString()).append("\n");
 
 	  while (resultSet.next()) {
@@ -1156,4 +1159,18 @@
     }
     return String.format("Commit: %s\nAuthor: %s <%s>\n\n%s", commitID, commitAuthor, commitEmail, commitMessage);
   }
+
+  public static String substituteArguments(String cmd) {
+    String[] command = cmd.split(" ");
+    for (int i = 1; i < command.length; i++) {
+      String arg = command[i];
+      if (arg.startsWith("$")) {
+        arg = arg.substring(1);
+        if (DrillTestDefaults.getDrillDefaults().containsKey(arg)) {
+          command[i] = DrillTestDefaults.getDrillDefaults().get(arg);
+        }
+      }
+    }
+    return String.join(" ", command);
+  }
 }
diff --git a/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java b/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java
index d7c3994..90a190d 100644
--- a/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java
+++ b/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java
@@ -2,9 +2,10 @@
 
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
-import oadd.org.apache.drill.exec.proto.UserBitShared;
+import org.apache.drill.exec.server.rest.profile.CoreOperatorType;
 import org.apache.drill.test.framework.common.DrillJavaTestBase;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
@@ -26,7 +27,7 @@
 
 @Test(groups = UNIT_GROUP)
 public class DrillTestFrameworkUnitTests extends DrillJavaTestBase {
-    private static final Logger LOG = Logger.getLogger(DrillTestFrameworkUnitTests.class);
+    private static final Logger LOG = LoggerFactory.getLogger(DrillTestFrameworkUnitTests.class);
 
 
     @BeforeTest(alwaysRun = true)
@@ -182,10 +183,10 @@
             LOG.info("Memory estimated by RM planner: " + rmMemEstimate);
             Assert.assertTrue(rmMemEstimate > 0,
                     "RM estimated memory should be greater than 0");
-            List<UserBitShared.CoreOperatorType> operators = profile.getOperatorsFromProfile();
+            List<CoreOperatorType> operators = profile.getOperatorsFromProfile();
             Assert.assertTrue(operators.size() > 0,
                     "Number of operators in the profile should be greater than 0");
-            operators.forEach(LOG::info);
+            operators.forEach(o -> LOG.info(o.name()));
         } catch (Exception e) {
             e.printStackTrace();
             Assert.fail(e.getMessage());
diff --git a/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java b/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java
index 3bb7b1b..8c70f5c 100644
--- a/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java
+++ b/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java
@@ -4,7 +4,8 @@
 import org.apache.drill.test.framework.ConnectionPool;
 import org.apache.drill.test.framework.Utils;
 import org.apache.drill.test.framework.ssh.DrillCluster;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.AfterSuite;
@@ -20,7 +21,7 @@
 import java.util.Properties;
 
 public class DrillJavaTestBase {
-    private static final Logger LOG = Logger.getLogger(DrillJavaTestBase.class);
+    private static final Logger LOG = LoggerFactory.getLogger(DrillJavaTestBase.class);
     protected ConnectionPool connectionPool;
     protected DrillCluster drillCluster;
 
diff --git a/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java b/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java
index 169e469..875405d 100644
--- a/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java
+++ b/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java
@@ -4,7 +4,8 @@
 import org.apache.drill.test.framework.*;
 import org.apache.drill.test.framework.common.DrillJavaTestBase;
 import org.apache.drill.test.framework.common.DrillTestNGDefaults;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.*;
 
@@ -23,7 +24,7 @@
 @SuppressWarnings("Duplicates")
 @Test(groups = FUNCTIONAL_GROUP)
 public class QueueSelectionTests extends DrillJavaTestBase {
-    private static final Logger LOG = Logger.getLogger(QueueSelectionTests.class);
+    private static final Logger LOG = LoggerFactory.getLogger(QueueSelectionTests.class);
 
     @BeforeClass(alwaysRun = true, description = "Invoked before all tests in the class")
     private void setup() throws IOException {