You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2012/11/09 05:17:53 UTC

svn commit: r1407353 [1/2] - in /hive/trunk: metastore/if/ metastore/scripts/upgrade/derby/ metastore/scripts/upgrade/mysql/ metastore/scripts/upgrade/oracle/ metastore/scripts/upgrade/postgres/ metastore/src/gen/thrift/gen-cpp/ metastore/src/gen/thrif...

Author: namit
Date: Fri Nov  9 04:17:48 2012
New Revision: 1407353

URL: http://svn.apache.org/viewvc?rev=1407353&view=rev
Log:
HIVE-3649 Hive List Bucketing - enhance DDL to specify list bucketing table
(Gang Tim Liu via namit)


Added:
    hive/trunk/metastore/scripts/upgrade/derby/010-HIVE-3649.derby.sql
    hive/trunk/metastore/scripts/upgrade/mysql/010-HIVE-3649.mysql.sql
    hive/trunk/metastore/scripts/upgrade/oracle/010-HIVE-3649.oracle.sql
    hive/trunk/metastore/scripts/upgrade/postgres/010-HIVE-3649.postgres.sql
    hive/trunk/ql/src/test/queries/clientnegative/load_stored_as_dirs.q
    hive/trunk/ql/src/test/queries/clientpositive/create_alter_list_bucketing_table1.q
    hive/trunk/ql/src/test/results/clientnegative/load_stored_as_dirs.q.out
    hive/trunk/ql/src/test/results/clientpositive/create_alter_list_bucketing_table1.q.out
Modified:
    hive/trunk/metastore/if/hive_metastore.thrift
    hive/trunk/metastore/scripts/upgrade/derby/hive-schema-0.10.0.derby.sql
    hive/trunk/metastore/scripts/upgrade/derby/upgrade-0.9.0-to-0.10.0.derby.sql
    hive/trunk/metastore/scripts/upgrade/mysql/hive-schema-0.10.0.mysql.sql
    hive/trunk/metastore/scripts/upgrade/mysql/upgrade-0.9.0-to-0.10.0.mysql.sql
    hive/trunk/metastore/scripts/upgrade/oracle/hive-schema-0.10.0.oracle.sql
    hive/trunk/metastore/scripts/upgrade/postgres/hive-schema-0.10.0.postgres.sql
    hive/trunk/metastore/scripts/upgrade/postgres/upgrade-0.9.0-to-0.10.0.postgres.sql
    hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
    hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Database.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/EnvironmentContext.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Index.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Schema.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SkewedInfo.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
    hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
    hive/trunk/metastore/src/gen/thrift/gen-php/hive_metastore/hive_metastore_types.php
    hive/trunk/metastore/src/gen/thrift/gen-php/metastore/Types.php
    hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
    hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
    hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
    hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java
    hive/trunk/metastore/src/model/package.jdo
    hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
    hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java
    hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java
    hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java
    hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableDesc.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/QTestUtil.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java
    hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/Complex.java
    hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MegaStruct.java

Modified: hive/trunk/metastore/if/hive_metastore.thrift
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/if/hive_metastore.thrift?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/if/hive_metastore.thrift (original)
+++ hive/trunk/metastore/if/hive_metastore.thrift Fri Nov  9 04:17:48 2012
@@ -149,8 +149,9 @@ struct StorageDescriptor {
   7: SerDeInfo    serdeInfo,  // serialization and deserialization information
   8: list<string> bucketCols, // reducer grouping columns and clustering columns and bucketing columns`
   9: list<Order>  sortCols,   // sort order of the data in each bucket
-  10: map<string, string> parameters // any user supplied key value hash
-  11: optional SkewedInfo skewedInfo // skewed information
+  10: map<string, string> parameters, // any user supplied key value hash
+  11: optional SkewedInfo skewedInfo, // skewed information
+  12: optional bool   storedAsSubDirectories       // stored as subdirectories or not
 }
 
 // table information

Added: hive/trunk/metastore/scripts/upgrade/derby/010-HIVE-3649.derby.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/derby/010-HIVE-3649.derby.sql?rev=1407353&view=auto
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/derby/010-HIVE-3649.derby.sql (added)
+++ hive/trunk/metastore/scripts/upgrade/derby/010-HIVE-3649.derby.sql Fri Nov  9 04:17:48 2012
@@ -0,0 +1 @@
+ALTER TABLE "SDS" ADD  "IS_STOREDASSUBDIRECTORIES" CHAR(1) NOT NULL;

Modified: hive/trunk/metastore/scripts/upgrade/derby/hive-schema-0.10.0.derby.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/derby/hive-schema-0.10.0.derby.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/derby/hive-schema-0.10.0.derby.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/derby/hive-schema-0.10.0.derby.sql Fri Nov  9 04:17:48 2012
@@ -66,7 +66,7 @@ CREATE TABLE "APP"."PARTITION_KEYS" ("TB
 
 CREATE TABLE "APP"."PART_COL_PRIVS" ("PART_COLUMN_GRANT_ID" BIGINT NOT NULL, "COLUMN_NAME" VARCHAR(128), "CREATE_TIME" INTEGER NOT NULL, "GRANT_OPTION" SMALLINT NOT NULL, "GRANTOR" VARCHAR(128), "GRANTOR_TYPE" VARCHAR(128), "PART_ID" BIGINT, "PRINCIPAL_NAME" VARCHAR(128), "PRINCIPAL_TYPE" VARCHAR(128), "PART_COL_PRIV" VARCHAR(128));
 
-CREATE TABLE "APP"."SDS" ("SD_ID" BIGINT NOT NULL, "INPUT_FORMAT" VARCHAR(4000), "IS_COMPRESSED" CHAR(1) NOT NULL, "LOCATION" VARCHAR(4000), "NUM_BUCKETS" INTEGER NOT NULL, "OUTPUT_FORMAT" VARCHAR(4000), "SERDE_ID" BIGINT, "CD_ID" BIGINT);
+CREATE TABLE "APP"."SDS" ("SD_ID" BIGINT NOT NULL, "INPUT_FORMAT" VARCHAR(4000), "IS_COMPRESSED" CHAR(1) NOT NULL, "LOCATION" VARCHAR(4000), "NUM_BUCKETS" INTEGER NOT NULL, "OUTPUT_FORMAT" VARCHAR(4000), "SERDE_ID" BIGINT, "CD_ID" BIGINT, "IS_STOREDASSUBDIRECTORIES" CHAR(1) NOT NULL);
 
 CREATE TABLE "APP"."SEQUENCE_TABLE" ("SEQUENCE_NAME" VARCHAR(256) NOT NULL, "NEXT_VAL" BIGINT NOT NULL);
 

Modified: hive/trunk/metastore/scripts/upgrade/derby/upgrade-0.9.0-to-0.10.0.derby.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/derby/upgrade-0.9.0-to-0.10.0.derby.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/derby/upgrade-0.9.0-to-0.10.0.derby.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/derby/upgrade-0.9.0-to-0.10.0.derby.sql Fri Nov  9 04:17:48 2012
@@ -1,3 +1,3 @@
 -- Upgrade MetaStore schema from 0.9.0 to 0.10.0
 RUN '010-HIVE-3072.derby.sql';
-
+RUN '010-HIVE-3649.derby.sql';

Added: hive/trunk/metastore/scripts/upgrade/mysql/010-HIVE-3649.mysql.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/mysql/010-HIVE-3649.mysql.sql?rev=1407353&view=auto
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/mysql/010-HIVE-3649.mysql.sql (added)
+++ hive/trunk/metastore/scripts/upgrade/mysql/010-HIVE-3649.mysql.sql Fri Nov  9 04:17:48 2012
@@ -0,0 +1,2 @@
+SELECT '< HIVE-3649: Support stored as directories >' AS ' ';
+ALTER TABLE `SDS` ADD `IS_STOREDASSUBDIRECTORIES` bit(1) ;

Modified: hive/trunk/metastore/scripts/upgrade/mysql/hive-schema-0.10.0.mysql.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/mysql/hive-schema-0.10.0.mysql.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/mysql/hive-schema-0.10.0.mysql.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/mysql/hive-schema-0.10.0.mysql.sql Fri Nov  9 04:17:48 2012
@@ -385,6 +385,7 @@ CREATE TABLE IF NOT EXISTS `SDS` (
   `CD_ID` bigint(20) DEFAULT NULL,
   `INPUT_FORMAT` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
   `IS_COMPRESSED` bit(1) NOT NULL,
+  `IS_STOREDASSUBDIRECTORIES` bit(1) NOT NULL,
   `LOCATION` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
   `NUM_BUCKETS` int(11) NOT NULL,
   `OUTPUT_FORMAT` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,

Modified: hive/trunk/metastore/scripts/upgrade/mysql/upgrade-0.9.0-to-0.10.0.mysql.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/mysql/upgrade-0.9.0-to-0.10.0.mysql.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/mysql/upgrade-0.9.0-to-0.10.0.mysql.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/mysql/upgrade-0.9.0-to-0.10.0.mysql.sql Fri Nov  9 04:17:48 2012
@@ -1,3 +1,4 @@
 SELECT 'Upgrading MetaStore schema from 0.9.0 to 0.10.0' AS ' ';
 SOURCE 010-HIVE-3072.mysql.sql;
+SOURCE 010-HIVE-3649.mysql.sql;
 SELECT 'Finished upgrading MetaStore schema from 0.9.0 to 0.10.0' AS ' ';

Added: hive/trunk/metastore/scripts/upgrade/oracle/010-HIVE-3649.oracle.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/oracle/010-HIVE-3649.oracle.sql?rev=1407353&view=auto
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/oracle/010-HIVE-3649.oracle.sql (added)
+++ hive/trunk/metastore/scripts/upgrade/oracle/010-HIVE-3649.oracle.sql Fri Nov  9 04:17:48 2012
@@ -0,0 +1 @@
+alter table  SDS add IS_STOREDASSUBDIRECTORIES NUMBER(1) NOT NULL;

Modified: hive/trunk/metastore/scripts/upgrade/oracle/hive-schema-0.10.0.oracle.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/oracle/hive-schema-0.10.0.oracle.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/oracle/hive-schema-0.10.0.oracle.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/oracle/hive-schema-0.10.0.oracle.sql Fri Nov  9 04:17:48 2012
@@ -252,7 +252,8 @@ CREATE TABLE SDS
     LOCATION VARCHAR2(4000) NULL,
     NUM_BUCKETS NUMBER (10) NOT NULL,
     OUTPUT_FORMAT VARCHAR2(4000) NULL,
-    SERDE_ID NUMBER NULL
+    SERDE_ID NUMBER NULL,
+    IS_STOREDASSUBDIRECTORIES NUMBER(1) NOT NULL CHECK (IS_STOREDASSUBDIRECTORIES IN (1,0))
 );
 
 ALTER TABLE SDS ADD CONSTRAINT SDS_PK PRIMARY KEY (SD_ID);

Added: hive/trunk/metastore/scripts/upgrade/postgres/010-HIVE-3649.postgres.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/postgres/010-HIVE-3649.postgres.sql?rev=1407353&view=auto
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/postgres/010-HIVE-3649.postgres.sql (added)
+++ hive/trunk/metastore/scripts/upgrade/postgres/010-HIVE-3649.postgres.sql Fri Nov  9 04:17:48 2012
@@ -0,0 +1 @@
+ALTER TABLE "SDS" ADD COLUMN "IS_STOREDASSUBDIRECTORIES" boolean NOT NULL;

Modified: hive/trunk/metastore/scripts/upgrade/postgres/hive-schema-0.10.0.postgres.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/postgres/hive-schema-0.10.0.postgres.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/postgres/hive-schema-0.10.0.postgres.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/postgres/hive-schema-0.10.0.postgres.sql Fri Nov  9 04:17:48 2012
@@ -297,7 +297,8 @@ CREATE TABLE "SDS" (
     "NUM_BUCKETS" bigint NOT NULL,
     "OUTPUT_FORMAT" character varying(4000) DEFAULT NULL::character varying,
     "SERDE_ID" bigint,
-    "CD_ID" bigint
+    "CD_ID" bigint,
+    "IS_STOREDASSUBDIRECTORIES" boolean NOT NULL
 );
 
 

Modified: hive/trunk/metastore/scripts/upgrade/postgres/upgrade-0.9.0-to-0.10.0.postgres.sql
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/scripts/upgrade/postgres/upgrade-0.9.0-to-0.10.0.postgres.sql?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/scripts/upgrade/postgres/upgrade-0.9.0-to-0.10.0.postgres.sql (original)
+++ hive/trunk/metastore/scripts/upgrade/postgres/upgrade-0.9.0-to-0.10.0.postgres.sql Fri Nov  9 04:17:48 2012
@@ -1,3 +1,4 @@
 SELECT 'Upgrading MetaStore schema from 0.9.0 to 0.10.0';
 \i 010-HIVE-3072.postgres.sql;
+\i 010-HIVE-3649.postgres.sql;
 SELECT 'Finished upgrading MetaStore schema from 0.9.0 to 0.10.0';

Modified: hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp Fri Nov  9 04:17:48 2012
@@ -1596,8 +1596,8 @@ void swap(SkewedInfo &a, SkewedInfo &b) 
   swap(a.__isset, b.__isset);
 }
 
-const char* StorageDescriptor::ascii_fingerprint = "BDC4DB93B74677CE1C04198D60E6CB80";
-const uint8_t StorageDescriptor::binary_fingerprint[16] = {0xBD,0xC4,0xDB,0x93,0xB7,0x46,0x77,0xCE,0x1C,0x04,0x19,0x8D,0x60,0xE6,0xCB,0x80};
+const char* StorageDescriptor::ascii_fingerprint = "CA8C9AA5FE4C32643757D8639CEF0CD7";
+const uint8_t StorageDescriptor::binary_fingerprint[16] = {0xCA,0x8C,0x9A,0xA5,0xFE,0x4C,0x32,0x64,0x37,0x57,0xD8,0x63,0x9C,0xEF,0x0C,0xD7};
 
 uint32_t StorageDescriptor::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -1758,6 +1758,14 @@ uint32_t StorageDescriptor::read(::apach
           xfer += iprot->skip(ftype);
         }
         break;
+      case 12:
+        if (ftype == ::apache::thrift::protocol::T_BOOL) {
+          xfer += iprot->readBool(this->storedAsSubDirectories);
+          this->__isset.storedAsSubDirectories = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -1852,6 +1860,11 @@ uint32_t StorageDescriptor::write(::apac
     xfer += this->skewedInfo.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.storedAsSubDirectories) {
+    xfer += oprot->writeFieldBegin("storedAsSubDirectories", ::apache::thrift::protocol::T_BOOL, 12);
+    xfer += oprot->writeBool(this->storedAsSubDirectories);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
@@ -1870,11 +1883,12 @@ void swap(StorageDescriptor &a, StorageD
   swap(a.sortCols, b.sortCols);
   swap(a.parameters, b.parameters);
   swap(a.skewedInfo, b.skewedInfo);
+  swap(a.storedAsSubDirectories, b.storedAsSubDirectories);
   swap(a.__isset, b.__isset);
 }
 
-const char* Table::ascii_fingerprint = "F21F7F0ACA98ECCFC83F6605440D007F";
-const uint8_t Table::binary_fingerprint[16] = {0xF2,0x1F,0x7F,0x0A,0xCA,0x98,0xEC,0xCF,0xC8,0x3F,0x66,0x05,0x44,0x0D,0x00,0x7F};
+const char* Table::ascii_fingerprint = "68640B4B66B355CF317429AF70D2C260";
+const uint8_t Table::binary_fingerprint[16] = {0x68,0x64,0x0B,0x4B,0x66,0xB3,0x55,0xCF,0x31,0x74,0x29,0xAF,0x70,0xD2,0xC2,0x60};
 
 uint32_t Table::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2136,8 +2150,8 @@ void swap(Table &a, Table &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* Partition::ascii_fingerprint = "E5EF1F030CF964C052658DD22257D025";
-const uint8_t Partition::binary_fingerprint[16] = {0xE5,0xEF,0x1F,0x03,0x0C,0xF9,0x64,0xC0,0x52,0x65,0x8D,0xD2,0x22,0x57,0xD0,0x25};
+const char* Partition::ascii_fingerprint = "31A52241B88A426C34087FE38343FF51";
+const uint8_t Partition::binary_fingerprint[16] = {0x31,0xA5,0x22,0x41,0xB8,0x8A,0x42,0x6C,0x34,0x08,0x7F,0xE3,0x83,0x43,0xFF,0x51};
 
 uint32_t Partition::read(::apache::thrift::protocol::TProtocol* iprot) {
 
@@ -2334,8 +2348,8 @@ void swap(Partition &a, Partition &b) {
   swap(a.__isset, b.__isset);
 }
 
-const char* Index::ascii_fingerprint = "BA1090E838C806A4F8D8D137C5085EDD";
-const uint8_t Index::binary_fingerprint[16] = {0xBA,0x10,0x90,0xE8,0x38,0xC8,0x06,0xA4,0xF8,0xD8,0xD1,0x37,0xC5,0x08,0x5E,0xDD};
+const char* Index::ascii_fingerprint = "09EEF655216AC81802850988D6C470A6";
+const uint8_t Index::binary_fingerprint[16] = {0x09,0xEE,0xF6,0x55,0x21,0x6A,0xC8,0x18,0x02,0x85,0x09,0x88,0xD6,0xC4,0x70,0xA6};
 
 uint32_t Index::read(::apache::thrift::protocol::TProtocol* iprot) {
 

Modified: hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h Fri Nov  9 04:17:48 2012
@@ -859,7 +859,7 @@ class SkewedInfo {
 void swap(SkewedInfo &a, SkewedInfo &b);
 
 typedef struct _StorageDescriptor__isset {
-  _StorageDescriptor__isset() : cols(false), location(false), inputFormat(false), outputFormat(false), compressed(false), numBuckets(false), serdeInfo(false), bucketCols(false), sortCols(false), parameters(false), skewedInfo(false) {}
+  _StorageDescriptor__isset() : cols(false), location(false), inputFormat(false), outputFormat(false), compressed(false), numBuckets(false), serdeInfo(false), bucketCols(false), sortCols(false), parameters(false), skewedInfo(false), storedAsSubDirectories(false) {}
   bool cols;
   bool location;
   bool inputFormat;
@@ -871,15 +871,16 @@ typedef struct _StorageDescriptor__isset
   bool sortCols;
   bool parameters;
   bool skewedInfo;
+  bool storedAsSubDirectories;
 } _StorageDescriptor__isset;
 
 class StorageDescriptor {
  public:
 
-  static const char* ascii_fingerprint; // = "BDC4DB93B74677CE1C04198D60E6CB80";
-  static const uint8_t binary_fingerprint[16]; // = {0xBD,0xC4,0xDB,0x93,0xB7,0x46,0x77,0xCE,0x1C,0x04,0x19,0x8D,0x60,0xE6,0xCB,0x80};
+  static const char* ascii_fingerprint; // = "CA8C9AA5FE4C32643757D8639CEF0CD7";
+  static const uint8_t binary_fingerprint[16]; // = {0xCA,0x8C,0x9A,0xA5,0xFE,0x4C,0x32,0x64,0x37,0x57,0xD8,0x63,0x9C,0xEF,0x0C,0xD7};
 
-  StorageDescriptor() : location(), inputFormat(), outputFormat(), compressed(0), numBuckets(0) {
+  StorageDescriptor() : location(), inputFormat(), outputFormat(), compressed(0), numBuckets(0), storedAsSubDirectories(0) {
   }
 
   virtual ~StorageDescriptor() throw() {}
@@ -895,6 +896,7 @@ class StorageDescriptor {
   std::vector<Order>  sortCols;
   std::map<std::string, std::string>  parameters;
   SkewedInfo skewedInfo;
+  bool storedAsSubDirectories;
 
   _StorageDescriptor__isset __isset;
 
@@ -943,6 +945,11 @@ class StorageDescriptor {
     __isset.skewedInfo = true;
   }
 
+  void __set_storedAsSubDirectories(const bool val) {
+    storedAsSubDirectories = val;
+    __isset.storedAsSubDirectories = true;
+  }
+
   bool operator == (const StorageDescriptor & rhs) const
   {
     if (!(cols == rhs.cols))
@@ -969,6 +976,10 @@ class StorageDescriptor {
       return false;
     else if (__isset.skewedInfo && !(skewedInfo == rhs.skewedInfo))
       return false;
+    if (__isset.storedAsSubDirectories != rhs.__isset.storedAsSubDirectories)
+      return false;
+    else if (__isset.storedAsSubDirectories && !(storedAsSubDirectories == rhs.storedAsSubDirectories))
+      return false;
     return true;
   }
   bool operator != (const StorageDescriptor &rhs) const {
@@ -1004,8 +1015,8 @@ typedef struct _Table__isset {
 class Table {
  public:
 
-  static const char* ascii_fingerprint; // = "F21F7F0ACA98ECCFC83F6605440D007F";
-  static const uint8_t binary_fingerprint[16]; // = {0xF2,0x1F,0x7F,0x0A,0xCA,0x98,0xEC,0xCF,0xC8,0x3F,0x66,0x05,0x44,0x0D,0x00,0x7F};
+  static const char* ascii_fingerprint; // = "68640B4B66B355CF317429AF70D2C260";
+  static const uint8_t binary_fingerprint[16]; // = {0x68,0x64,0x0B,0x4B,0x66,0xB3,0x55,0xCF,0x31,0x74,0x29,0xAF,0x70,0xD2,0xC2,0x60};
 
   Table() : tableName(), dbName(), owner(), createTime(0), lastAccessTime(0), retention(0), viewOriginalText(), viewExpandedText(), tableType() {
   }
@@ -1141,8 +1152,8 @@ typedef struct _Partition__isset {
 class Partition {
  public:
 
-  static const char* ascii_fingerprint; // = "E5EF1F030CF964C052658DD22257D025";
-  static const uint8_t binary_fingerprint[16]; // = {0xE5,0xEF,0x1F,0x03,0x0C,0xF9,0x64,0xC0,0x52,0x65,0x8D,0xD2,0x22,0x57,0xD0,0x25};
+  static const char* ascii_fingerprint; // = "31A52241B88A426C34087FE38343FF51";
+  static const uint8_t binary_fingerprint[16]; // = {0x31,0xA5,0x22,0x41,0xB8,0x8A,0x42,0x6C,0x34,0x08,0x7F,0xE3,0x83,0x43,0xFF,0x51};
 
   Partition() : dbName(), tableName(), createTime(0), lastAccessTime(0) {
   }
@@ -1245,8 +1256,8 @@ typedef struct _Index__isset {
 class Index {
  public:
 
-  static const char* ascii_fingerprint; // = "BA1090E838C806A4F8D8D137C5085EDD";
-  static const uint8_t binary_fingerprint[16]; // = {0xBA,0x10,0x90,0xE8,0x38,0xC8,0x06,0xA4,0xF8,0xD8,0xD1,0x37,0xC5,0x08,0x5E,0xDD};
+  static const char* ascii_fingerprint; // = "09EEF655216AC81802850988D6C470A6";
+  static const uint8_t binary_fingerprint[16]; // = {0x09,0xEE,0xF6,0x55,0x21,0x6A,0xC8,0x18,0x02,0x85,0x09,0x88,0xD6,0xC4,0x70,0xA6};
 
   Index() : indexName(), indexHandlerClass(), dbName(), origTableName(), createTime(0), lastAccessTime(0), indexTableName(), deferredRebuild(0) {
   }

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Database.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Database.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Database.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Database.java Fri Nov  9 04:17:48 2012
@@ -708,7 +708,7 @@ public class Database implements org.apa
                 for (int _i79 = 0; _i79 < _map78.size; ++_i79)
                 {
                   String _key80; // required
-                  String _val81; // required
+                  String _val81; // optional
                   _key80 = iprot.readString();
                   _val81 = iprot.readString();
                   struct.parameters.put(_key80, _val81);
@@ -858,7 +858,7 @@ public class Database implements org.apa
           for (int _i85 = 0; _i85 < _map84.size; ++_i85)
           {
             String _key86; // required
-            String _val87; // required
+            String _val87; // optional
             _key86 = iprot.readString();
             _val87 = iprot.readString();
             struct.parameters.put(_key86, _val87);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/EnvironmentContext.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/EnvironmentContext.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/EnvironmentContext.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/EnvironmentContext.java Fri Nov  9 04:17:48 2012
@@ -356,7 +356,7 @@ public class EnvironmentContext implemen
                 for (int _i247 = 0; _i247 < _map246.size; ++_i247)
                 {
                   String _key248; // required
-                  String _val249; // required
+                  String _val249; // optional
                   _key248 = iprot.readString();
                   _val249 = iprot.readString();
                   struct.properties.put(_key248, _val249);
@@ -439,7 +439,7 @@ public class EnvironmentContext implemen
           for (int _i253 = 0; _i253 < _map252.size; ++_i253)
           {
             String _key254; // required
-            String _val255; // required
+            String _val255; // optional
             _key254 = iprot.readString();
             _val255 = iprot.readString();
             struct.properties.put(_key254, _val255);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Index.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Index.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Index.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Index.java Fri Nov  9 04:17:48 2012
@@ -1145,7 +1145,7 @@ public class Index implements org.apache
                 for (int _i211 = 0; _i211 < _map210.size; ++_i211)
                 {
                   String _key212; // required
-                  String _val213; // required
+                  String _val213; // optional
                   _key212 = iprot.readString();
                   _val213 = iprot.readString();
                   struct.parameters.put(_key212, _val213);
@@ -1362,7 +1362,7 @@ public class Index implements org.apache
           for (int _i217 = 0; _i217 < _map216.size; ++_i217)
           {
             String _key218; // required
-            String _val219; // required
+            String _val219; // optional
             _key218 = iprot.readString();
             _val219 = iprot.readString();
             struct.parameters.put(_key218, _val219);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java Fri Nov  9 04:17:48 2012
@@ -1005,7 +1005,7 @@ public class Partition implements org.ap
                 for (int _i196 = 0; _i196 < _map195.size; ++_i196)
                 {
                   String _key197; // required
-                  String _val198; // required
+                  String _val198; // optional
                   _key197 = iprot.readString();
                   _val198 = iprot.readString();
                   struct.parameters.put(_key197, _val198);
@@ -1219,7 +1219,7 @@ public class Partition implements org.ap
           for (int _i207 = 0; _i207 < _map206.size; ++_i207)
           {
             String _key208; // required
-            String _val209; // required
+            String _val209; // optional
             _key208 = iprot.readString();
             _val209 = iprot.readString();
             struct.parameters.put(_key208, _val209);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java Fri Nov  9 04:17:48 2012
@@ -580,7 +580,7 @@ public class PrincipalPrivilegeSet imple
                 for (int _i25 = 0; _i25 < _map24.size; ++_i25)
                 {
                   String _key26; // required
-                  List<PrivilegeGrantInfo> _val27; // required
+                  List<PrivilegeGrantInfo> _val27; // optional
                   _key26 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TList _list28 = iprot.readListBegin();
@@ -611,7 +611,7 @@ public class PrincipalPrivilegeSet imple
                 for (int _i32 = 0; _i32 < _map31.size; ++_i32)
                 {
                   String _key33; // required
-                  List<PrivilegeGrantInfo> _val34; // required
+                  List<PrivilegeGrantInfo> _val34; // optional
                   _key33 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TList _list35 = iprot.readListBegin();
@@ -642,7 +642,7 @@ public class PrincipalPrivilegeSet imple
                 for (int _i39 = 0; _i39 < _map38.size; ++_i39)
                 {
                   String _key40; // required
-                  List<PrivilegeGrantInfo> _val41; // required
+                  List<PrivilegeGrantInfo> _val41; // optional
                   _key40 = iprot.readString();
                   {
                     org.apache.thrift.protocol.TList _list42 = iprot.readListBegin();
@@ -827,7 +827,7 @@ public class PrincipalPrivilegeSet imple
           for (int _i58 = 0; _i58 < _map57.size; ++_i58)
           {
             String _key59; // required
-            List<PrivilegeGrantInfo> _val60; // required
+            List<PrivilegeGrantInfo> _val60; // optional
             _key59 = iprot.readString();
             {
               org.apache.thrift.protocol.TList _list61 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
@@ -852,7 +852,7 @@ public class PrincipalPrivilegeSet imple
           for (int _i65 = 0; _i65 < _map64.size; ++_i65)
           {
             String _key66; // required
-            List<PrivilegeGrantInfo> _val67; // required
+            List<PrivilegeGrantInfo> _val67; // optional
             _key66 = iprot.readString();
             {
               org.apache.thrift.protocol.TList _list68 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
@@ -877,7 +877,7 @@ public class PrincipalPrivilegeSet imple
           for (int _i72 = 0; _i72 < _map71.size; ++_i72)
           {
             String _key73; // required
-            List<PrivilegeGrantInfo> _val74; // required
+            List<PrivilegeGrantInfo> _val74; // optional
             _key73 = iprot.readString();
             {
               org.apache.thrift.protocol.TList _list75 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Schema.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Schema.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Schema.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Schema.java Fri Nov  9 04:17:48 2012
@@ -476,7 +476,7 @@ public class Schema implements org.apach
                 for (int _i232 = 0; _i232 < _map231.size; ++_i232)
                 {
                   String _key233; // required
-                  String _val234; // required
+                  String _val234; // optional
                   _key233 = iprot.readString();
                   _val234 = iprot.readString();
                   struct.properties.put(_key233, _val234);
@@ -597,7 +597,7 @@ public class Schema implements org.apach
           for (int _i243 = 0; _i243 < _map242.size; ++_i243)
           {
             String _key244; // required
-            String _val245; // required
+            String _val245; // optional
             _key244 = iprot.readString();
             _val245 = iprot.readString();
             struct.properties.put(_key244, _val245);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java Fri Nov  9 04:17:48 2012
@@ -534,7 +534,7 @@ public class SerDeInfo implements org.ap
                 for (int _i89 = 0; _i89 < _map88.size; ++_i89)
                 {
                   String _key90; // required
-                  String _val91; // required
+                  String _val91; // optional
                   _key90 = iprot.readString();
                   _val91 = iprot.readString();
                   struct.parameters.put(_key90, _val91);
@@ -647,7 +647,7 @@ public class SerDeInfo implements org.ap
           for (int _i95 = 0; _i95 < _map94.size; ++_i95)
           {
             String _key96; // required
-            String _val97; // required
+            String _val97; // optional
             _key96 = iprot.readString();
             _val97 = iprot.readString();
             struct.parameters.put(_key96, _val97);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SkewedInfo.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SkewedInfo.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SkewedInfo.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SkewedInfo.java Fri Nov  9 04:17:48 2012
@@ -613,7 +613,7 @@ public class SkewedInfo implements org.a
                 for (int _i108 = 0; _i108 < _map107.size; ++_i108)
                 {
                   List<String> _key109; // required
-                  String _val110; // required
+                  String _val110; // optional
                   {
                     org.apache.thrift.protocol.TList _list111 = iprot.readListBegin();
                     _key109 = new ArrayList<String>(_list111.size);
@@ -815,7 +815,7 @@ public class SkewedInfo implements org.a
           for (int _i134 = 0; _i134 < _map133.size; ++_i134)
           {
             List<String> _key135; // required
-            String _val136; // required
+            String _val136; // optional
             {
               org.apache.thrift.protocol.TList _list137 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
               _key135 = new ArrayList<String>(_list137.size);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java Fri Nov  9 04:17:48 2012
@@ -45,6 +45,7 @@ public class StorageDescriptor implement
   private static final org.apache.thrift.protocol.TField SORT_COLS_FIELD_DESC = new org.apache.thrift.protocol.TField("sortCols", org.apache.thrift.protocol.TType.LIST, (short)9);
   private static final org.apache.thrift.protocol.TField PARAMETERS_FIELD_DESC = new org.apache.thrift.protocol.TField("parameters", org.apache.thrift.protocol.TType.MAP, (short)10);
   private static final org.apache.thrift.protocol.TField SKEWED_INFO_FIELD_DESC = new org.apache.thrift.protocol.TField("skewedInfo", org.apache.thrift.protocol.TType.STRUCT, (short)11);
+  private static final org.apache.thrift.protocol.TField STORED_AS_SUB_DIRECTORIES_FIELD_DESC = new org.apache.thrift.protocol.TField("storedAsSubDirectories", org.apache.thrift.protocol.TType.BOOL, (short)12);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -63,6 +64,7 @@ public class StorageDescriptor implement
   private List<Order> sortCols; // required
   private Map<String,String> parameters; // required
   private SkewedInfo skewedInfo; // optional
+  private boolean storedAsSubDirectories; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -76,7 +78,8 @@ public class StorageDescriptor implement
     BUCKET_COLS((short)8, "bucketCols"),
     SORT_COLS((short)9, "sortCols"),
     PARAMETERS((short)10, "parameters"),
-    SKEWED_INFO((short)11, "skewedInfo");
+    SKEWED_INFO((short)11, "skewedInfo"),
+    STORED_AS_SUB_DIRECTORIES((short)12, "storedAsSubDirectories");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -113,6 +116,8 @@ public class StorageDescriptor implement
           return PARAMETERS;
         case 11: // SKEWED_INFO
           return SKEWED_INFO;
+        case 12: // STORED_AS_SUB_DIRECTORIES
+          return STORED_AS_SUB_DIRECTORIES;
         default:
           return null;
       }
@@ -155,8 +160,9 @@ public class StorageDescriptor implement
   // isset id assignments
   private static final int __COMPRESSED_ISSET_ID = 0;
   private static final int __NUMBUCKETS_ISSET_ID = 1;
+  private static final int __STOREDASSUBDIRECTORIES_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private _Fields optionals[] = {_Fields.SKEWED_INFO};
+  private _Fields optionals[] = {_Fields.SKEWED_INFO,_Fields.STORED_AS_SUB_DIRECTORIES};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -187,6 +193,8 @@ public class StorageDescriptor implement
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
     tmpMap.put(_Fields.SKEWED_INFO, new org.apache.thrift.meta_data.FieldMetaData("skewedInfo", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SkewedInfo.class)));
+    tmpMap.put(_Fields.STORED_AS_SUB_DIRECTORIES, new org.apache.thrift.meta_data.FieldMetaData("storedAsSubDirectories", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(StorageDescriptor.class, metaDataMap);
   }
@@ -279,6 +287,7 @@ public class StorageDescriptor implement
     if (other.isSetSkewedInfo()) {
       this.skewedInfo = new SkewedInfo(other.skewedInfo);
     }
+    this.storedAsSubDirectories = other.storedAsSubDirectories;
   }
 
   public StorageDescriptor deepCopy() {
@@ -300,6 +309,8 @@ public class StorageDescriptor implement
     this.sortCols = null;
     this.parameters = null;
     this.skewedInfo = null;
+    setStoredAsSubDirectoriesIsSet(false);
+    this.storedAsSubDirectories = false;
   }
 
   public int getColsSize() {
@@ -609,6 +620,28 @@ public class StorageDescriptor implement
     }
   }
 
+  public boolean isStoredAsSubDirectories() {
+    return this.storedAsSubDirectories;
+  }
+
+  public void setStoredAsSubDirectories(boolean storedAsSubDirectories) {
+    this.storedAsSubDirectories = storedAsSubDirectories;
+    setStoredAsSubDirectoriesIsSet(true);
+  }
+
+  public void unsetStoredAsSubDirectories() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __STOREDASSUBDIRECTORIES_ISSET_ID);
+  }
+
+  /** Returns true if field storedAsSubDirectories is set (has been assigned a value) and false otherwise */
+  public boolean isSetStoredAsSubDirectories() {
+    return EncodingUtils.testBit(__isset_bitfield, __STOREDASSUBDIRECTORIES_ISSET_ID);
+  }
+
+  public void setStoredAsSubDirectoriesIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __STOREDASSUBDIRECTORIES_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case COLS:
@@ -699,6 +732,14 @@ public class StorageDescriptor implement
       }
       break;
 
+    case STORED_AS_SUB_DIRECTORIES:
+      if (value == null) {
+        unsetStoredAsSubDirectories();
+      } else {
+        setStoredAsSubDirectories((Boolean)value);
+      }
+      break;
+
     }
   }
 
@@ -737,6 +778,9 @@ public class StorageDescriptor implement
     case SKEWED_INFO:
       return getSkewedInfo();
 
+    case STORED_AS_SUB_DIRECTORIES:
+      return Boolean.valueOf(isStoredAsSubDirectories());
+
     }
     throw new IllegalStateException();
   }
@@ -770,6 +814,8 @@ public class StorageDescriptor implement
       return isSetParameters();
     case SKEWED_INFO:
       return isSetSkewedInfo();
+    case STORED_AS_SUB_DIRECTORIES:
+      return isSetStoredAsSubDirectories();
     }
     throw new IllegalStateException();
   }
@@ -886,6 +932,15 @@ public class StorageDescriptor implement
         return false;
     }
 
+    boolean this_present_storedAsSubDirectories = true && this.isSetStoredAsSubDirectories();
+    boolean that_present_storedAsSubDirectories = true && that.isSetStoredAsSubDirectories();
+    if (this_present_storedAsSubDirectories || that_present_storedAsSubDirectories) {
+      if (!(this_present_storedAsSubDirectories && that_present_storedAsSubDirectories))
+        return false;
+      if (this.storedAsSubDirectories != that.storedAsSubDirectories)
+        return false;
+    }
+
     return true;
   }
 
@@ -948,6 +1003,11 @@ public class StorageDescriptor implement
     if (present_skewedInfo)
       builder.append(skewedInfo);
 
+    boolean present_storedAsSubDirectories = true && (isSetStoredAsSubDirectories());
+    builder.append(present_storedAsSubDirectories);
+    if (present_storedAsSubDirectories)
+      builder.append(storedAsSubDirectories);
+
     return builder.toHashCode();
   }
 
@@ -1069,6 +1129,16 @@ public class StorageDescriptor implement
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetStoredAsSubDirectories()).compareTo(typedOther.isSetStoredAsSubDirectories());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStoredAsSubDirectories()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storedAsSubDirectories, typedOther.storedAsSubDirectories);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1170,6 +1240,12 @@ public class StorageDescriptor implement
       }
       first = false;
     }
+    if (isSetStoredAsSubDirectories()) {
+      if (!first) sb.append(", ");
+      sb.append("storedAsSubDirectories:");
+      sb.append(this.storedAsSubDirectories);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1334,7 +1410,7 @@ public class StorageDescriptor implement
                 for (int _i150 = 0; _i150 < _map149.size; ++_i150)
                 {
                   String _key151; // required
-                  String _val152; // required
+                  String _val152; // optional
                   _key151 = iprot.readString();
                   _val152 = iprot.readString();
                   struct.parameters.put(_key151, _val152);
@@ -1355,6 +1431,14 @@ public class StorageDescriptor implement
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 12: // STORED_AS_SUB_DIRECTORIES
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.storedAsSubDirectories = iprot.readBool();
+              struct.setStoredAsSubDirectoriesIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1450,6 +1534,11 @@ public class StorageDescriptor implement
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetStoredAsSubDirectories()) {
+        oprot.writeFieldBegin(STORED_AS_SUB_DIRECTORIES_FIELD_DESC);
+        oprot.writeBool(struct.storedAsSubDirectories);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1501,7 +1590,10 @@ public class StorageDescriptor implement
       if (struct.isSetSkewedInfo()) {
         optionals.set(10);
       }
-      oprot.writeBitSet(optionals, 11);
+      if (struct.isSetStoredAsSubDirectories()) {
+        optionals.set(11);
+      }
+      oprot.writeBitSet(optionals, 12);
       if (struct.isSetCols()) {
         {
           oprot.writeI32(struct.cols.size());
@@ -1560,12 +1652,15 @@ public class StorageDescriptor implement
       if (struct.isSetSkewedInfo()) {
         struct.skewedInfo.write(oprot);
       }
+      if (struct.isSetStoredAsSubDirectories()) {
+        oprot.writeBool(struct.storedAsSubDirectories);
+      }
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, StorageDescriptor struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(11);
+      BitSet incoming = iprot.readBitSet(12);
       if (incoming.get(0)) {
         {
           org.apache.thrift.protocol.TList _list161 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
@@ -1639,7 +1734,7 @@ public class StorageDescriptor implement
           for (int _i171 = 0; _i171 < _map170.size; ++_i171)
           {
             String _key172; // required
-            String _val173; // required
+            String _val173; // optional
             _key172 = iprot.readString();
             _val173 = iprot.readString();
             struct.parameters.put(_key172, _val173);
@@ -1652,6 +1747,10 @@ public class StorageDescriptor implement
         struct.skewedInfo.read(iprot);
         struct.setSkewedInfoIsSet(true);
       }
+      if (incoming.get(11)) {
+        struct.storedAsSubDirectories = iprot.readBool();
+        struct.setStoredAsSubDirectoriesIsSet(true);
+      }
     }
   }
 

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java Fri Nov  9 04:17:48 2012
@@ -1423,7 +1423,7 @@ public class Table implements org.apache
                 for (int _i178 = 0; _i178 < _map177.size; ++_i178)
                 {
                   String _key179; // required
-                  String _val180; // required
+                  String _val180; // optional
                   _key179 = iprot.readString();
                   _val180 = iprot.readString();
                   struct.parameters.put(_key179, _val180);
@@ -1723,7 +1723,7 @@ public class Table implements org.apache
           for (int _i189 = 0; _i189 < _map188.size; ++_i189)
           {
             String _key190; // required
-            String _val191; // required
+            String _val191; // optional
             _key190 = iprot.readString();
             _val191 = iprot.readString();
             struct.parameters.put(_key190, _val191);

Modified: hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java Fri Nov  9 04:17:48 2012
@@ -16721,7 +16721,7 @@ public class ThriftHiveMetastore {
                   for (int _i273 = 0; _i273 < _map272.size; ++_i273)
                   {
                     String _key274; // required
-                    Type _val275; // required
+                    Type _val275; // optional
                     _key274 = iprot.readString();
                     _val275 = new Type();
                     _val275.read(iprot);
@@ -16825,7 +16825,7 @@ public class ThriftHiveMetastore {
             for (int _i279 = 0; _i279 < _map278.size; ++_i279)
             {
               String _key280; // required
-              Type _val281; // required
+              Type _val281; // optional
               _key280 = iprot.readString();
               _val281 = new Type();
               _val281.read(iprot);
@@ -59785,7 +59785,7 @@ public class ThriftHiveMetastore {
                   for (int _i523 = 0; _i523 < _map522.size; ++_i523)
                   {
                     String _key524; // required
-                    String _val525; // required
+                    String _val525; // optional
                     _key524 = iprot.readString();
                     _val525 = iprot.readString();
                     struct.success.put(_key524, _val525);
@@ -59888,7 +59888,7 @@ public class ThriftHiveMetastore {
             for (int _i529 = 0; _i529 < _map528.size; ++_i529)
             {
               String _key530; // required
-              String _val531; // required
+              String _val531; // optional
               _key530 = iprot.readString();
               _val531 = iprot.readString();
               struct.success.put(_key530, _val531);
@@ -60502,7 +60502,7 @@ public class ThriftHiveMetastore {
                   for (int _i533 = 0; _i533 < _map532.size; ++_i533)
                   {
                     String _key534; // required
-                    String _val535; // required
+                    String _val535; // optional
                     _key534 = iprot.readString();
                     _val535 = iprot.readString();
                     struct.part_vals.put(_key534, _val535);
@@ -60634,7 +60634,7 @@ public class ThriftHiveMetastore {
             for (int _i539 = 0; _i539 < _map538.size; ++_i539)
             {
               String _key540; // required
-              String _val541; // required
+              String _val541; // optional
               _key540 = iprot.readString();
               _val541 = iprot.readString();
               struct.part_vals.put(_key540, _val541);
@@ -62137,7 +62137,7 @@ public class ThriftHiveMetastore {
                   for (int _i543 = 0; _i543 < _map542.size; ++_i543)
                   {
                     String _key544; // required
-                    String _val545; // required
+                    String _val545; // optional
                     _key544 = iprot.readString();
                     _val545 = iprot.readString();
                     struct.part_vals.put(_key544, _val545);
@@ -62269,7 +62269,7 @@ public class ThriftHiveMetastore {
             for (int _i549 = 0; _i549 < _map548.size; ++_i549)
             {
               String _key550; // required
-              String _val551; // required
+              String _val551; // optional
               _key550 = iprot.readString();
               _val551 = iprot.readString();
               struct.part_vals.put(_key550, _val551);

Modified: hive/trunk/metastore/src/gen/thrift/gen-php/hive_metastore/hive_metastore_types.php
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-php/hive_metastore/hive_metastore_types.php?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-php/hive_metastore/hive_metastore_types.php (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-php/hive_metastore/hive_metastore_types.php Fri Nov  9 04:17:48 2012
@@ -2083,6 +2083,7 @@ class StorageDescriptor {
   public $sortCols = null;
   public $parameters = null;
   public $skewedInfo = null;
+  public $storedAsSubDirectories = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -2155,6 +2156,10 @@ class StorageDescriptor {
           'type' => TType::STRUCT,
           'class' => 'SkewedInfo',
           ),
+        12 => array(
+          'var' => 'storedAsSubDirectories',
+          'type' => TType::BOOL,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -2191,6 +2196,9 @@ class StorageDescriptor {
       if (isset($vals['skewedInfo'])) {
         $this->skewedInfo = $vals['skewedInfo'];
       }
+      if (isset($vals['storedAsSubDirectories'])) {
+        $this->storedAsSubDirectories = $vals['storedAsSubDirectories'];
+      }
     }
   }
 
@@ -2337,6 +2345,13 @@ class StorageDescriptor {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 12:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->storedAsSubDirectories);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -2460,6 +2475,11 @@ class StorageDescriptor {
       $xfer += $this->skewedInfo->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->storedAsSubDirectories !== null) {
+      $xfer += $output->writeFieldBegin('storedAsSubDirectories', TType::BOOL, 12);
+      $xfer += $output->writeBool($this->storedAsSubDirectories);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

Modified: hive/trunk/metastore/src/gen/thrift/gen-php/metastore/Types.php
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-php/metastore/Types.php?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-php/metastore/Types.php (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-php/metastore/Types.php Fri Nov  9 04:17:48 2012
@@ -2073,6 +2073,7 @@ class StorageDescriptor {
   public $sortCols = null;
   public $parameters = null;
   public $skewedInfo = null;
+  public $storedAsSubDirectories = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -2145,6 +2146,10 @@ class StorageDescriptor {
           'type' => TType::STRUCT,
           'class' => '\metastore\SkewedInfo',
           ),
+        12 => array(
+          'var' => 'storedAsSubDirectories',
+          'type' => TType::BOOL,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -2181,6 +2186,9 @@ class StorageDescriptor {
       if (isset($vals['skewedInfo'])) {
         $this->skewedInfo = $vals['skewedInfo'];
       }
+      if (isset($vals['storedAsSubDirectories'])) {
+        $this->storedAsSubDirectories = $vals['storedAsSubDirectories'];
+      }
     }
   }
 
@@ -2327,6 +2335,13 @@ class StorageDescriptor {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 12:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->storedAsSubDirectories);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -2450,6 +2465,11 @@ class StorageDescriptor {
       $xfer += $this->skewedInfo->write($output);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->storedAsSubDirectories !== null) {
+      $xfer += $output->writeFieldBegin('storedAsSubDirectories', TType::BOOL, 12);
+      $xfer += $output->writeBool($this->storedAsSubDirectories);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;

Modified: hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py Fri Nov  9 04:17:48 2012
@@ -1372,6 +1372,7 @@ class StorageDescriptor:
    - sortCols
    - parameters
    - skewedInfo
+   - storedAsSubDirectories
   """
 
   thrift_spec = (
@@ -1387,9 +1388,10 @@ class StorageDescriptor:
     (9, TType.LIST, 'sortCols', (TType.STRUCT,(Order, Order.thrift_spec)), None, ), # 9
     (10, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 10
     (11, TType.STRUCT, 'skewedInfo', (SkewedInfo, SkewedInfo.thrift_spec), None, ), # 11
+    (12, TType.BOOL, 'storedAsSubDirectories', None, None, ), # 12
   )
 
-  def __init__(self, cols=None, location=None, inputFormat=None, outputFormat=None, compressed=None, numBuckets=None, serdeInfo=None, bucketCols=None, sortCols=None, parameters=None, skewedInfo=None,):
+  def __init__(self, cols=None, location=None, inputFormat=None, outputFormat=None, compressed=None, numBuckets=None, serdeInfo=None, bucketCols=None, sortCols=None, parameters=None, skewedInfo=None, storedAsSubDirectories=None,):
     self.cols = cols
     self.location = location
     self.inputFormat = inputFormat
@@ -1401,6 +1403,7 @@ class StorageDescriptor:
     self.sortCols = sortCols
     self.parameters = parameters
     self.skewedInfo = skewedInfo
+    self.storedAsSubDirectories = storedAsSubDirectories
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -1491,6 +1494,11 @@ class StorageDescriptor:
           self.skewedInfo.read(iprot)
         else:
           iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.BOOL:
+          self.storedAsSubDirectories = iprot.readBool();
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -1558,6 +1566,10 @@ class StorageDescriptor:
       oprot.writeFieldBegin('skewedInfo', TType.STRUCT, 11)
       self.skewedInfo.write(oprot)
       oprot.writeFieldEnd()
+    if self.storedAsSubDirectories is not None:
+      oprot.writeFieldBegin('storedAsSubDirectories', TType.BOOL, 12)
+      oprot.writeBool(self.storedAsSubDirectories)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 

Modified: hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb Fri Nov  9 04:17:48 2012
@@ -322,6 +322,7 @@ class StorageDescriptor
   SORTCOLS = 9
   PARAMETERS = 10
   SKEWEDINFO = 11
+  STOREDASSUBDIRECTORIES = 12
 
   FIELDS = {
     COLS => {:type => ::Thrift::Types::LIST, :name => 'cols', :element => {:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
@@ -334,7 +335,8 @@ class StorageDescriptor
     BUCKETCOLS => {:type => ::Thrift::Types::LIST, :name => 'bucketCols', :element => {:type => ::Thrift::Types::STRING}},
     SORTCOLS => {:type => ::Thrift::Types::LIST, :name => 'sortCols', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Order}},
     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
-    SKEWEDINFO => {:type => ::Thrift::Types::STRUCT, :name => 'skewedInfo', :class => ::SkewedInfo, :optional => true}
+    SKEWEDINFO => {:type => ::Thrift::Types::STRUCT, :name => 'skewedInfo', :class => ::SkewedInfo, :optional => true},
+    STOREDASSUBDIRECTORIES => {:type => ::Thrift::Types::BOOL, :name => 'storedAsSubDirectories', :optional => true}
   }
 
   def struct_fields; FIELDS; end

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java Fri Nov  9 04:17:48 2012
@@ -1008,6 +1008,7 @@ public class ObjectStore implements RawS
         convertToSkewedValues(msd.getSkewedColValues()),
         covertToSkewedMap(msd.getSkewedColValueLocationMaps()));
     sd.setSkewedInfo(skewedInfo);
+    sd.setStoredAsSubDirectories(msd.isStoredAsSubDirectories());
     return sd;
   }
 
@@ -1120,7 +1121,7 @@ public class ObjectStore implements RawS
         convertToMStringLists((null == sd.getSkewedInfo()) ? null : sd.getSkewedInfo()
             .getSkewedColValues()),
         covertToMapMStringList((null == sd.getSkewedInfo()) ? null : sd.getSkewedInfo()
-            .getSkewedColValueLocationMaps()));
+            .getSkewedColValueLocationMaps()), sd.isStoredAsSubDirectories());
   }
 
   public boolean addPartition(Partition part) throws InvalidObjectException,
@@ -2106,6 +2107,7 @@ public class ObjectStore implements RawS
     oldSd.setSkewedColValueLocationMaps(newSd.getSkewedColValueLocationMaps());
     oldSd.setSortCols(newSd.getSortCols());
     oldSd.setParameters(newSd.getParameters());
+    oldSd.setStoredAsSubDirectories(newSd.isStoredAsSubDirectories());
   }
 
   /**

Modified: hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java (original)
+++ hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java Fri Nov  9 04:17:48 2012
@@ -35,6 +35,7 @@ public class MStorageDescriptor {
   private List<String> skewedColNames;
   private List<MStringList> skewedColValues;
   private Map<MStringList, String> skewedColValueLocationMaps;
+  private boolean isStoredAsSubDirectories;
 
   public MStorageDescriptor() {}
 
@@ -55,7 +56,7 @@ public class MStorageDescriptor {
       String outputFormat, boolean isCompressed, int numBuckets, MSerDeInfo serDeInfo,
       List<String> bucketCols, List<MOrder> sortOrder, Map<String, String> parameters,
       List<String> skewedColNames, List<MStringList> skewedColValues,
-      Map<MStringList, String> skewedColValueLocationMaps) {
+      Map<MStringList, String> skewedColValueLocationMaps, boolean storedAsSubDirectories) {
     this.cd = cd;
     this.location = location;
     this.inputFormat = inputFormat;
@@ -69,6 +70,7 @@ public class MStorageDescriptor {
     this.skewedColNames = skewedColNames;
     this.skewedColValues = skewedColValues;
     this.skewedColValueLocationMaps = skewedColValueLocationMaps;
+    this.isStoredAsSubDirectories = storedAsSubDirectories;
   }
 
 
@@ -256,4 +258,20 @@ public class MStorageDescriptor {
     this.skewedColValueLocationMaps = listBucketColValuesMapping;
   }
 
+
+  /**
+   * @return the storedAsSubDirectories
+   */
+  public boolean isStoredAsSubDirectories() {
+    return isStoredAsSubDirectories;
+  }
+
+
+  /**
+   * @param storedAsSubDirectories the storedAsSubDirectories to set
+   */
+  public void setStoredAsSubDirectories(boolean storedAsSubDirectories) {
+    this.isStoredAsSubDirectories = storedAsSubDirectories;
+  }
+
 }

Modified: hive/trunk/metastore/src/model/package.jdo
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/model/package.jdo?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/model/package.jdo (original)
+++ hive/trunk/metastore/src/model/package.jdo Fri Nov  9 04:17:48 2012
@@ -263,6 +263,9 @@
         <column name="OUTPUT_FORMAT" length="4000" jdbc-type="VARCHAR"/>
       </field>
       <field name="isCompressed"/>
+      <field name="isStoredAsSubDirectories">
+        <column name="IS_STOREDASSUBDIRECTORIES"/>
+      </field>
       <field name="numBuckets">
         <column name="NUM_BUCKETS" jdbc-type="integer"/>
       </field>

Modified: hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java (original)
+++ hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java Fri Nov  9 04:17:48 2012
@@ -178,6 +178,7 @@ public abstract class TestHiveMetaStore 
       sd.getSerdeInfo().getParameters()
           .put(serdeConstants.SERIALIZATION_FORMAT, "1");
       sd.setSortCols(new ArrayList<Order>());
+      sd.setStoredAsSubDirectories(false);
 
       //skewed information
       SkewedInfo skewInfor = new SkewedInfo();
@@ -1605,6 +1606,7 @@ public abstract class TestHiveMetaStore 
       assertEquals(tbl2.getTableName(), tblName);
       assertEquals(tbl2.getSd().getCols().size(), typ1.getFields().size());
       assertFalse(tbl2.getSd().isCompressed());
+      assertFalse(tbl2.getSd().isStoredAsSubDirectories());
       assertEquals(tbl2.getSd().getNumBuckets(), 1);
 
       assertEquals("Use this for comments etc", tbl2.getSd().getParameters()

Modified: hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java (original)
+++ hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java Fri Nov  9 04:17:48 2012
@@ -810,7 +810,7 @@ public class Operator implements org.apa
                 for (int _i25 = 0; _i25 < _map24.size; ++_i25)
                 {
                   String _key26; // required
-                  String _val27; // required
+                  String _val27; // optional
                   _key26 = iprot.readString();
                   _val27 = iprot.readString();
                   struct.operatorAttributes.put(_key26, _val27);
@@ -830,7 +830,7 @@ public class Operator implements org.apa
                 for (int _i29 = 0; _i29 < _map28.size; ++_i29)
                 {
                   String _key30; // required
-                  long _val31; // required
+                  long _val31; // optional
                   _key30 = iprot.readString();
                   _val31 = iprot.readI64();
                   struct.operatorCounters.put(_key30, _val31);
@@ -1003,7 +1003,7 @@ public class Operator implements org.apa
           for (int _i37 = 0; _i37 < _map36.size; ++_i37)
           {
             String _key38; // required
-            String _val39; // required
+            String _val39; // optional
             _key38 = iprot.readString();
             _val39 = iprot.readString();
             struct.operatorAttributes.put(_key38, _val39);
@@ -1018,7 +1018,7 @@ public class Operator implements org.apa
           for (int _i41 = 0; _i41 < _map40.size; ++_i41)
           {
             String _key42; // required
-            long _val43; // required
+            long _val43; // optional
             _key42 = iprot.readString();
             _val43 = iprot.readI64();
             struct.operatorCounters.put(_key42, _val43);

Modified: hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java (original)
+++ hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java Fri Nov  9 04:17:48 2012
@@ -983,7 +983,7 @@ public class Query implements org.apache
                 for (int _i101 = 0; _i101 < _map100.size; ++_i101)
                 {
                   String _key102; // required
-                  String _val103; // required
+                  String _val103; // optional
                   _key102 = iprot.readString();
                   _val103 = iprot.readString();
                   struct.queryAttributes.put(_key102, _val103);
@@ -1003,7 +1003,7 @@ public class Query implements org.apache
                 for (int _i105 = 0; _i105 < _map104.size; ++_i105)
                 {
                   String _key106; // required
-                  long _val107; // required
+                  long _val107; // optional
                   _key106 = iprot.readString();
                   _val107 = iprot.readI64();
                   struct.queryCounters.put(_key106, _val107);
@@ -1239,7 +1239,7 @@ public class Query implements org.apache
           for (int _i118 = 0; _i118 < _map117.size; ++_i118)
           {
             String _key119; // required
-            String _val120; // required
+            String _val120; // optional
             _key119 = iprot.readString();
             _val120 = iprot.readString();
             struct.queryAttributes.put(_key119, _val120);
@@ -1254,7 +1254,7 @@ public class Query implements org.apache
           for (int _i122 = 0; _i122 < _map121.size; ++_i122)
           {
             String _key123; // required
-            long _val124; // required
+            long _val124; // optional
             _key123 = iprot.readString();
             _val124 = iprot.readI64();
             struct.queryCounters.put(_key123, _val124);

Modified: hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java (original)
+++ hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java Fri Nov  9 04:17:48 2012
@@ -911,7 +911,7 @@ public class Stage implements org.apache
                 for (int _i73 = 0; _i73 < _map72.size; ++_i73)
                 {
                   String _key74; // required
-                  String _val75; // required
+                  String _val75; // optional
                   _key74 = iprot.readString();
                   _val75 = iprot.readString();
                   struct.stageAttributes.put(_key74, _val75);
@@ -931,7 +931,7 @@ public class Stage implements org.apache
                 for (int _i77 = 0; _i77 < _map76.size; ++_i77)
                 {
                   String _key78; // required
-                  long _val79; // required
+                  long _val79; // optional
                   _key78 = iprot.readString();
                   _val79 = iprot.readI64();
                   struct.stageCounters.put(_key78, _val79);
@@ -1147,7 +1147,7 @@ public class Stage implements org.apache
           for (int _i90 = 0; _i90 < _map89.size; ++_i90)
           {
             String _key91; // required
-            String _val92; // required
+            String _val92; // optional
             _key91 = iprot.readString();
             _val92 = iprot.readString();
             struct.stageAttributes.put(_key91, _val92);
@@ -1162,7 +1162,7 @@ public class Stage implements org.apache
           for (int _i94 = 0; _i94 < _map93.size; ++_i94)
           {
             String _key95; // required
-            long _val96; // required
+            long _val96; // optional
             _key95 = iprot.readString();
             _val96 = iprot.readI64();
             struct.stageCounters.put(_key95, _val96);

Modified: hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java (original)
+++ hive/trunk/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java Fri Nov  9 04:17:48 2012
@@ -996,7 +996,7 @@ public class Task implements org.apache.
                 for (int _i45 = 0; _i45 < _map44.size; ++_i45)
                 {
                   String _key46; // required
-                  String _val47; // required
+                  String _val47; // optional
                   _key46 = iprot.readString();
                   _val47 = iprot.readString();
                   struct.taskAttributes.put(_key46, _val47);
@@ -1016,7 +1016,7 @@ public class Task implements org.apache.
                 for (int _i49 = 0; _i49 < _map48.size; ++_i49)
                 {
                   String _key50; // required
-                  long _val51; // required
+                  long _val51; // optional
                   _key50 = iprot.readString();
                   _val51 = iprot.readI64();
                   struct.taskCounters.put(_key50, _val51);
@@ -1256,7 +1256,7 @@ public class Task implements org.apache.
           for (int _i62 = 0; _i62 < _map61.size; ++_i62)
           {
             String _key63; // required
-            String _val64; // required
+            String _val64; // optional
             _key63 = iprot.readString();
             _val64 = iprot.readString();
             struct.taskAttributes.put(_key63, _val64);
@@ -1271,7 +1271,7 @@ public class Task implements org.apache.
           for (int _i66 = 0; _i66 < _map65.size; ++_i66)
           {
             String _key67; // required
-            long _val68; // required
+            long _val68; // optional
             _key67 = iprot.readString();
             _val68 = iprot.readI64();
             struct.taskCounters.put(_key67, _val68);

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java Fri Nov  9 04:17:48 2012
@@ -245,7 +245,8 @@ public enum ErrorMsg {
 
   SHOW_CREATETABLE_INDEX(10144, "SHOW CREATE TABLE does not support tables of type INDEX_TABLE."),
 
-
+  LOAD_INTO_STORED_AS_DIR(10195, "A stored-as-directories table cannot be used as target for LOAD"),
+  ALTER_TBL_STOREDASDIR_NOT_SKEWED(10196, "This operation is only valid on skewed table."),
   ALTER_TBL_SKEWED_LOC_NO_LOC(10197, "Alter table skewed location doesn't have locations."),
   ALTER_TBL_SKEWED_LOC_NO_MAP(10198, "Alter table skewed location doesn't have location map."),
   SUPPORT_DIR_MUST_TRUE_FOR_LIST_BUCKETING(

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Fri Nov  9 04:17:48 2012
@@ -3206,6 +3206,8 @@ public class DDLTask extends Task<DDLWor
         tbl.setSkewedColNames(skewedColNames);
         tbl.setSkewedColValues(skewedValues);
       }
+
+      tbl.setStoredAsSubDirectories(alterTbl.isStoredAsSubDirectories());
     } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ALTERSKEWEDLOCATION) {
       // process location one-by-one
       Map<List<String>,String> locMaps = alterTbl.getSkewedLocations();
@@ -3639,6 +3641,8 @@ public class DDLTask extends Task<DDLWor
       tbl.setSkewedColValues(crtTbl.getSkewedColValues());
     }
 
+    tbl.setStoredAsSubDirectories(crtTbl.isStoredAsSubDirectories());
+
     tbl.setInputFormatClass(crtTbl.getInputFormat());
     tbl.setOutputFormatClass(crtTbl.getOutputFormat());
 

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java Fri Nov  9 04:17:48 2012
@@ -558,6 +558,14 @@ public class Table implements Serializab
     tTable.getSd().setSkewedInfo(skewedInfo);
   }
 
+  public boolean isStoredAsSubDirectories() {
+    return tTable.getSd().isStoredAsSubDirectories();
+  }
+
+  public void setStoredAsSubDirectories(boolean storedAsSubDirectories) throws HiveException {
+    tTable.getSd().setStoredAsSubDirectories(storedAsSubDirectories);
+  }
+
   private boolean isField(String col) {
     for (FieldSchema field : getCols()) {
       if (field.getName().equals(col)) {

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java Fri Nov  9 04:17:48 2012
@@ -191,6 +191,9 @@ public final class MetaDataFormatUtils {
     formatOutput("Num Buckets:", String.valueOf(storageDesc.getNumBuckets()), tableInfo);
     formatOutput("Bucket Columns:", storageDesc.getBucketCols().toString(), tableInfo);
     formatOutput("Sort Columns:", storageDesc.getSortCols().toString(), tableInfo);
+    if (storageDesc.isStoredAsSubDirectories()) {// optional parameter
+      formatOutput("Stored As SubDirectories:", "Yes", tableInfo);
+    }
 
     if (null != storageDesc.getSkewedInfo()) {
       List<String> skewedColNames = storageDesc.getSkewedInfo().getSkewedColNames();

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java?rev=1407353&r1=1407352&r2=1407353&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java Fri Nov  9 04:17:48 2012
@@ -21,6 +21,7 @@ package org.apache.hadoop.hive.ql.parse;
 import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -953,4 +954,83 @@ public abstract class BaseSemanticAnalyz
     }
     return result;
   }
+
+  /**
+   * Analyze list bucket column names
+   *
+   * @param skewedColNames
+   * @param child
+   * @return
+   * @throws SemanticException
+   */
+  protected List<String> analyzeSkewedTablDDLColNames(List<String> skewedColNames, ASTNode child)
+      throws SemanticException {
+  Tree nNode = child.getChild(0);
+    if (nNode == null) {
+      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_NAME.getMsg());
+    } else {
+      ASTNode nAstNode = (ASTNode) nNode;
+      if (nAstNode.getToken().getType() != HiveParser.TOK_TABCOLNAME) {
+        throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_NAME.getMsg());
+      } else {
+        skewedColNames = getColumnNames(nAstNode);
+      }
+    }
+    return skewedColNames;
+  }
+
+  /**
+   * Handle skewed values in DDL.
+   *
+   * It can be used by both skewed by ... on () and set skewed location ().
+   *
+   * @param skewedValues
+   * @param child
+   * @throws SemanticException
+   */
+  protected void analyzeDDLSkewedValues(List<List<String>> skewedValues, ASTNode child)
+      throws SemanticException {
+  Tree vNode = child.getChild(1);
+    if (vNode == null) {
+      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+    }
+    ASTNode vAstNode = (ASTNode) vNode;
+    switch (vAstNode.getToken().getType()) {
+      case HiveParser.TOK_TABCOLVALUE:
+        for (String str : getSkewedValueFromASTNode(vAstNode)) {
+          List<String> sList = new ArrayList<String>(Arrays.asList(str));
+          skewedValues.add(sList);
+        }
+        break;
+      case HiveParser.TOK_TABCOLVALUE_PAIR:
+        ArrayList<Node> vLNodes = vAstNode.getChildren();
+        for (Node node : vLNodes) {
+          if ( ((ASTNode) node).getToken().getType() != HiveParser.TOK_TABCOLVALUES) {
+            throw new SemanticException(
+                ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+          } else {
+            skewedValues.add(getSkewedValuesFromASTNode(node));
+          }
+        }
+        break;
+      default:
+        break;
+    }
+  }
+
+  /**
+   * process stored as directories
+   *
+   * @param child
+   * @return
+   */
+  protected boolean analyzeStoredAdDirs(ASTNode child) {
+    boolean storedAsDirs = false;
+    if ((child.getChildCount() == 3)
+        && (((ASTNode) child.getChild(2)).getToken().getType()
+            == HiveParser.TOK_STOREDASDIRS)) {
+      storedAsDirs = true;
+    }
+    return storedAsDirs;
+  }
 }