You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2016/09/12 20:25:03 UTC

[31/31] hive git commit: HIVE-14644 : use metastore information on the read path appropriately (Sergey Shelukhin)

HIVE-14644 : use metastore information on the read path appropriately (Sergey Shelukhin)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3e481b47
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3e481b47
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3e481b47

Branch: refs/heads/hive-14535
Commit: 3e481b4719f49a5c15ce1d745b05392f5d0f2627
Parents: 815e069
Author: Sergey Shelukhin <se...@apache.org>
Authored: Mon Sep 12 13:20:59 2016 -0700
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Mon Sep 12 13:20:59 2016 -0700

----------------------------------------------------------------------
 .../hadoop/hive/common/ValidWriteIds.java       |  158 +
 itests/pom.xml                                  |   28 -
 itests/qtest-spark/pom.xml                      |   54 +-
 metastore/if/hive_metastore.thrift              |   12 +
 .../upgrade/derby/037-HIVE-14637.derby.sql      |    4 +-
 .../upgrade/derby/hive-schema-2.2.0.derby.sql   |    2 +-
 .../upgrade/mssql/022-HIVE-14637.mssql.sql      |    4 +-
 .../upgrade/mssql/hive-schema-2.2.0.mssql.sql   |    4 +-
 .../upgrade/mysql/037-HIVE-14637.mysql.sql      |    4 +-
 .../upgrade/mysql/hive-schema-2.2.0.mysql.sql   |    4 +-
 .../upgrade/oracle/037-HIVE-14637.oracle.sql    |    4 +-
 .../upgrade/oracle/hive-schema-2.2.0.oracle.sql |    4 +-
 .../postgres/036-HIVE-14637.postgres.sql        |    4 +-
 .../postgres/hive-schema-2.2.0.postgres.sql     |    4 +-
 .../gen/thrift/gen-cpp/ThriftHiveMetastore.cpp  | 2403 +++++-----
 .../gen/thrift/gen-cpp/ThriftHiveMetastore.h    |  126 +
 .../ThriftHiveMetastore_server.skeleton.cpp     |    5 +
 .../gen/thrift/gen-cpp/hive_metastore_types.cpp |  533 ++-
 .../gen/thrift/gen-cpp/hive_metastore_types.h   |  115 +
 .../metastore/api/GetAllFunctionsResponse.java  |   36 +-
 .../metastore/api/GetValidWriteIdsRequest.java  |  490 ++
 .../metastore/api/GetValidWriteIdsResult.java   |  740 +++
 .../hive/metastore/api/ThriftHiveMetastore.java | 4242 +++++++++++-------
 .../gen-php/metastore/ThriftHiveMetastore.php   | 1448 +++---
 .../src/gen/thrift/gen-php/metastore/Types.php  |  288 +-
 .../hive_metastore/ThriftHiveMetastore-remote   |    7 +
 .../hive_metastore/ThriftHiveMetastore.py       | 1379 +++---
 .../gen/thrift/gen-py/hive_metastore/ttypes.py  |  212 +-
 .../gen/thrift/gen-rb/hive_metastore_types.rb   |   44 +
 .../gen/thrift/gen-rb/thrift_hive_metastore.rb  |   54 +
 .../hadoop/hive/metastore/HiveMetaStore.java    |  167 +-
 .../hive/metastore/HiveMetaStoreClient.java     |    6 +
 .../hadoop/hive/metastore/IMetaStoreClient.java |    3 +
 .../hive/metastore/MetaStoreDirectSql.java      |    9 +-
 .../hadoop/hive/metastore/ObjectStore.java      |  128 +-
 .../apache/hadoop/hive/metastore/RawStore.java  |   11 +
 .../hadoop/hive/metastore/hbase/HBaseStore.java |   27 +-
 metastore/src/model/package.jdo                 |   16 +-
 .../DummyRawStoreControlledCommit.java          |   12 +
 .../DummyRawStoreForJdoConnection.java          |   13 +-
 .../java/org/apache/hadoop/hive/ql/Driver.java  |   38 +
 .../hadoop/hive/ql/exec/FetchOperator.java      |    5 +
 .../apache/hadoop/hive/ql/exec/FetchTask.java   |    5 +
 .../hadoop/hive/ql/exec/FileSinkOperator.java   |   49 +-
 .../apache/hadoop/hive/ql/exec/MoveTask.java    |   14 +-
 .../apache/hadoop/hive/ql/exec/Utilities.java   |   52 +-
 .../org/apache/hadoop/hive/ql/io/AcidUtils.java |    4 -
 .../hadoop/hive/ql/io/HiveInputFormat.java      |   59 +-
 .../apache/hadoop/hive/ql/metadata/Hive.java    |   94 +-
 .../hive/ql/optimizer/GenMapRedUtils.java       |    2 +-
 .../physical/AnnotateRunTimeStatsOptimizer.java |    3 +-
 .../hadoop/hive/ql/parse/TaskCompiler.java      |    2 +-
 .../org/apache/hadoop/hive/ql/plan/MapWork.java |    2 +
 .../apache/hadoop/hive/ql/plan/PlanUtils.java   |   14 -
 .../apache/hadoop/hive/ql/plan/TableDesc.java   |    3 +-
 ql/src/test/queries/clientpositive/mm_current.q |    3 +-
 .../clientpositive/llap/mm_current.q.out        |    8 +-
 57 files changed, 8788 insertions(+), 4373 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/common/src/java/org/apache/hadoop/hive/common/ValidWriteIds.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/common/ValidWriteIds.java b/common/src/java/org/apache/hadoop/hive/common/ValidWriteIds.java
new file mode 100644
index 0000000..b25a72d
--- /dev/null
+++ b/common/src/java/org/apache/hadoop/hive/common/ValidWriteIds.java
@@ -0,0 +1,158 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.common;
+
+import java.util.Arrays;
+import java.util.HashSet;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.PathFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ValidWriteIds {
+  public static final ValidWriteIds NO_WRITE_IDS = new ValidWriteIds(-1, -1, false, null);
+
+  private static final String MM_PREFIX = "mm";
+
+  private final static Logger LOG = LoggerFactory.getLogger(ValidWriteIds.class);
+
+  private static final String VALID_WRITEIDS_PREFIX = "hive.valid.write.ids.";
+  private final long lowWatermark, highWatermark;
+  private final boolean areIdsValid;
+  private final HashSet<Long> ids;
+  private String source = null;
+
+  public ValidWriteIds(
+      long lowWatermark, long highWatermark, boolean areIdsValid, HashSet<Long> ids) {
+    this.lowWatermark = lowWatermark;
+    this.highWatermark = highWatermark;
+    this.areIdsValid = areIdsValid;
+    this.ids = ids;
+  }
+
+  public static ValidWriteIds createFromConf(Configuration conf, String dbName, String tblName) {
+    return createFromConf(conf, dbName + "." + tblName);
+  }
+
+  public static ValidWriteIds createFromConf(Configuration conf, String fullTblName) {
+    String idStr = conf.get(createConfKey(fullTblName), null);
+    if (idStr == null || idStr.isEmpty()) return null;
+    return new ValidWriteIds(idStr);
+  }
+
+  private static String createConfKey(String dbName, String tblName) {
+    return createConfKey(dbName + "." + tblName);
+  }
+
+  private static String createConfKey(String fullName) {
+    return VALID_WRITEIDS_PREFIX + fullName;
+  }
+
+  private ValidWriteIds(String src) {
+    // TODO: lifted from ACID config implementation... optimize if needed? e.g. ranges, base64
+    String[] values = src.split(":");
+    highWatermark = Long.parseLong(values[0]);
+    lowWatermark = Long.parseLong(values[1]);
+    if (values.length > 2) {
+      areIdsValid = Long.parseLong(values[2]) > 0;
+      ids = new HashSet<Long>();
+      for(int i = 3; i < values.length; ++i) {
+        ids.add(Long.parseLong(values[i]));
+      }
+    } else {
+      areIdsValid = false;
+      ids = null;
+    }
+  }
+
+  public void addToConf(Configuration conf, String dbName, String tblName) {
+    if (source == null) {
+      source = toString();
+    }
+    if (LOG.isDebugEnabled()) {
+      LOG.debug("Setting " + createConfKey(dbName, tblName) + " => " + source);
+    }
+    conf.set(createConfKey(dbName, tblName), source);
+  }
+
+  public String toString() {
+    // TODO: lifted from ACID config implementation... optimize if needed? e.g. ranges, base64
+    StringBuilder buf = new StringBuilder();
+    buf.append(highWatermark);
+    buf.append(':');
+    buf.append(lowWatermark);
+    if (ids != null) {
+      buf.append(':');
+      buf.append(areIdsValid ? 1 : 0);
+      for (long id : ids) {
+        buf.append(':');
+        buf.append(id);
+      }
+    }
+    return buf.toString();
+  }
+
+  public boolean isValid(long writeId) {
+    if (writeId < 0) throw new RuntimeException("Incorrect write ID " + writeId);
+    if (writeId <= lowWatermark) return true;
+    if (writeId >= highWatermark) return false;
+    return ids != null && (areIdsValid == ids.contains(writeId));
+  }
+
+  public boolean isValidInput(Path file) {
+    String fileName = file.getName();
+    String[] parts = fileName.split("_", 3);
+    if (parts.length < 2 || !MM_PREFIX.equals(parts[0])) {
+      LOG.info("Ignoring unknown file for a MM table: " + file
+          + " (" + Arrays.toString(parts) + ")");
+      return false;
+    }
+    long writeId = -1;
+    try {
+      writeId = Long.parseLong(parts[1]);
+    } catch (NumberFormatException ex) {
+      LOG.info("Ignoring unknown file for a MM table: " + file
+          + "; parsing " + parts[1] + " got " + ex.getMessage());
+      return false;
+    }
+    return isValid(writeId);
+  }
+
+  public static String getMmFilePrefix(long mmWriteId) {
+    return MM_PREFIX + "_" + mmWriteId;
+  }
+
+
+  public static class IdPathFilter implements PathFilter {
+    private final String prefix, tmpPrefix;
+    private final boolean isMatch;
+    public IdPathFilter(long writeId, boolean isMatch) {
+      this.prefix = ValidWriteIds.getMmFilePrefix(writeId);
+      this.tmpPrefix = "_tmp." + prefix;
+      this.isMatch = isMatch;
+    }
+
+    @Override
+    public boolean accept(Path path) {
+      String name = path.getName();
+      return isMatch == (name.startsWith(prefix) || name.startsWith(tmpPrefix));
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/itests/pom.xml
----------------------------------------------------------------------
diff --git a/itests/pom.xml b/itests/pom.xml
index a452db3..8b5b6b7 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -72,34 +72,6 @@
                   <target>
                     <echo file="target/download.sh">
                       set -x
-                      /bin/pwd
-                      BASE_DIR=./target
-                      HIVE_ROOT=$BASE_DIR/../../../
-                      DOWNLOAD_DIR=./../thirdparty
-                      download() {
-                        url=$1;
-                        finalName=$2
-                        tarName=$(basename $url)
-                        rm -rf $BASE_DIR/$finalName
-                        if [[ ! -f $DOWNLOAD_DIR/$tarName ]]
-                        then
-                         curl -Sso $DOWNLOAD_DIR/$tarName $url
-                        else
-                          local md5File="$tarName".md5sum
-                          curl -Sso $DOWNLOAD_DIR/$md5File "$url".md5sum
-                          cd $DOWNLOAD_DIR
-                          if ! md5sum -c $md5File; then
-                            curl -Sso $DOWNLOAD_DIR/$tarName $url || return 1
-                          fi
-
-                          cd -
-                        fi
-                        tar -zxf $DOWNLOAD_DIR/$tarName -C $BASE_DIR
-                        mv $BASE_DIR/spark-${spark.version}-bin-hadoop2-without-hive $BASE_DIR/$finalName
-                      }
-                      mkdir -p $DOWNLOAD_DIR
-                      download "http://d3jw87u4immizc.cloudfront.net/spark-tarball/spark-${spark.version}-bin-hadoop2-without-hive.tgz" "spark"
-                      cp -f $HIVE_ROOT/data/conf/spark/log4j2.properties $BASE_DIR/spark/conf/
                     </echo>
                   </target>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/itests/qtest-spark/pom.xml
----------------------------------------------------------------------
diff --git a/itests/qtest-spark/pom.xml b/itests/qtest-spark/pom.xml
index 1e6c3a2..07282fb 100644
--- a/itests/qtest-spark/pom.xml
+++ b/itests/qtest-spark/pom.xml
@@ -348,6 +348,38 @@
         </executions>
       </plugin>
       <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>${maven.build-helper.plugin.version}</version>
+        <executions>
+          <execution>
+            <id>add-test-sources</id>
+            <phase>generate-test-sources</phase>
+            <goals>
+              <goal>add-test-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>target/generated-test-sources/java</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+<profiles>
+  <profile>
+    <id>spark-test</id>
+    <activation>
+      <property>
+        <name>!skipSparkTests</name>
+      </property>
+    </activation>
+  <build>
+    <plugins>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
@@ -388,26 +420,8 @@
           </execution>
         </executions>
       </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <version>${maven.build-helper.plugin.version}</version>
-        <executions>
-          <execution>
-            <id>add-test-sources</id>
-            <phase>generate-test-sources</phase>
-            <goals>
-              <goal>add-test-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>target/generated-test-sources/java</source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
     </plugins>
   </build>
-
+</profile>
+</profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/if/hive_metastore.thrift
----------------------------------------------------------------------
diff --git a/metastore/if/hive_metastore.thrift b/metastore/if/hive_metastore.thrift
index 95eee27..0101eab 100755
--- a/metastore/if/hive_metastore.thrift
+++ b/metastore/if/hive_metastore.thrift
@@ -918,6 +918,17 @@ struct HeartbeatWriteIdRequest {
 struct HeartbeatWriteIdResult {
 }
 
+struct GetValidWriteIdsRequest {
+  1: required string dbName,
+  2: required string tblName
+}
+struct GetValidWriteIdsResult {
+  1: required i64 lowWatermarkId,
+  2: required i64 highWatermarkId,
+  3: optional bool areIdsValid,
+  4: optional list<i64> ids
+}
+
 
 struct GetAllFunctionsResponse {
   1: optional list<Function> functions
@@ -1470,6 +1481,7 @@ service ThriftHiveMetastore extends fb303.FacebookService
   GetNextWriteIdResult get_next_write_id(1:GetNextWriteIdRequest req)
   FinalizeWriteIdResult finalize_write_id(1:FinalizeWriteIdRequest req)
   HeartbeatWriteIdResult heartbeat_write_id(1:HeartbeatWriteIdRequest req)
+  GetValidWriteIdsResult get_valid_write_ids(1:GetValidWriteIdsRequest req)
 }
 
 // * Note about the DDL_TIME: When creating or altering a table or a partition,

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/derby/037-HIVE-14637.derby.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/derby/037-HIVE-14637.derby.sql b/metastore/scripts/upgrade/derby/037-HIVE-14637.derby.sql
index 8cea9f1..88a48f0 100644
--- a/metastore/scripts/upgrade/derby/037-HIVE-14637.derby.sql
+++ b/metastore/scripts/upgrade/derby/037-HIVE-14637.derby.sql
@@ -1,5 +1,5 @@
-ALTER TABLE "TBLS" ADD "MM_WATERMARK_WRITE_ID" BIGINT;
-ALTER TABLE "TBLS" ADD "MM_NEXT_WRITE_ID" BIGINT;
+ALTER TABLE "TBLS" ADD "MM_WATERMARK_WRITE_ID" BIGINT DEFAULT -1;
+ALTER TABLE "TBLS" ADD "MM_NEXT_WRITE_ID" BIGINT DEFAULT 0;
 CREATE TABLE "APP"."TBL_WRITES" ("TW_ID" BIGINT NOT NULL, "TBL_ID" BIGINT NOT NULL, "WRITE_ID" BIGINT NOT NULL, "STATE" CHAR(1) NOT NULL, "LAST_HEARTBEAT" BIGINT);
 ALTER TABLE "APP"."TBL_WRITES" ADD CONSTRAINT "TBL_WRITES_PK" PRIMARY KEY ("TW_ID");
 ALTER TABLE "APP"."TBL_WRITES" ADD CONSTRAINT "TBL_WRITES_FK1" FOREIGN KEY ("TBL_ID") REFERENCES "APP"."TBLS" ("TBL_ID") ON DELETE NO ACTION ON UPDATE NO ACTION;

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql b/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
index 3c4ba4b..f86ee4a 100644
--- a/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
+++ b/metastore/scripts/upgrade/derby/hive-schema-2.2.0.derby.sql
@@ -60,7 +60,7 @@ CREATE TABLE "APP"."COLUMNS" ("SD_ID" BIGINT NOT NULL, "COMMENT" VARCHAR(256), "
 
 CREATE TABLE "APP"."ROLES" ("ROLE_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "OWNER_NAME" VARCHAR(128), "ROLE_NAME" VARCHAR(128));
 
-CREATE TABLE "APP"."TBLS" ("TBL_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "DB_ID" BIGINT, "LAST_ACCESS_TIME" INTEGER NOT NULL, "OWNER" VARCHAR(767), "RETENTION" INTEGER NOT NULL, "SD_ID" BIGINT, "TBL_NAME" VARCHAR(128), "TBL_TYPE" VARCHAR(128), "VIEW_EXPANDED_TEXT" LONG VARCHAR, "VIEW_ORIGINAL_TEXT" LONG VARCHAR, "MM_WATERMARK_WRITE_ID" BIGINT, "MM_NEXT_WRITE_ID" BIGINT);
+CREATE TABLE "APP"."TBLS" ("TBL_ID" BIGINT NOT NULL, "CREATE_TIME" INTEGER NOT NULL, "DB_ID" BIGINT, "LAST_ACCESS_TIME" INTEGER NOT NULL, "OWNER" VARCHAR(767), "RETENTION" INTEGER NOT NULL, "SD_ID" BIGINT, "TBL_NAME" VARCHAR(128), "TBL_TYPE" VARCHAR(128), "VIEW_EXPANDED_TEXT" LONG VARCHAR, "VIEW_ORIGINAL_TEXT" LONG VARCHAR, "MM_WATERMARK_WRITE_ID" BIGINT DEFAULT -1, "MM_NEXT_WRITE_ID" BIGINT DEFAULT 0);
 
 CREATE TABLE "APP"."PARTITION_KEYS" ("TBL_ID" BIGINT NOT NULL, "PKEY_COMMENT" VARCHAR(4000), "PKEY_NAME" VARCHAR(128) NOT NULL, "PKEY_TYPE" VARCHAR(767) NOT NULL, "INTEGER_IDX" INTEGER NOT NULL);
 

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/mssql/022-HIVE-14637.mssql.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/mssql/022-HIVE-14637.mssql.sql b/metastore/scripts/upgrade/mssql/022-HIVE-14637.mssql.sql
index bb42935..5d6f99f 100644
--- a/metastore/scripts/upgrade/mssql/022-HIVE-14637.mssql.sql
+++ b/metastore/scripts/upgrade/mssql/022-HIVE-14637.mssql.sql
@@ -1,5 +1,5 @@
-ALTER TABLE TBLS ADD MM_WATERMARK_WRITE_ID BIGINT NULL;
-ALTER TABLE TBLS ADD MM_NEXT_WRITE_ID BIGINT NULL;
+ALTER TABLE TBLS ADD MM_WATERMARK_WRITE_ID BIGINT DEFAULT -1;
+ALTER TABLE TBLS ADD MM_NEXT_WRITE_ID BIGINT DEFAULT 0;
 
 CREATE TABLE TBL_WRITES 
 (

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql b/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
index 6bd0d87..26b2ab3 100644
--- a/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
+++ b/metastore/scripts/upgrade/mssql/hive-schema-2.2.0.mssql.sql
@@ -359,8 +359,8 @@ CREATE TABLE TBLS
     TBL_TYPE nvarchar(128) NULL,
     VIEW_EXPANDED_TEXT text NULL,
     VIEW_ORIGINAL_TEXT text NULL,
-    MM_WATERMARK_WRITE_ID BIGINT NULL,
-    MM_NEXT_WRITE_ID BIGINT NULL
+    MM_WATERMARK_WRITE_ID BIGINT NULL DEFAULT -1,
+    MM_NEXT_WRITE_ID BIGINT NULL DEFAULT 0
 );
 
 ALTER TABLE TBLS ADD CONSTRAINT TBLS_PK PRIMARY KEY (TBL_ID);

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/mysql/037-HIVE-14637.mysql.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/mysql/037-HIVE-14637.mysql.sql b/metastore/scripts/upgrade/mysql/037-HIVE-14637.mysql.sql
index 1b740d5..c024584 100644
--- a/metastore/scripts/upgrade/mysql/037-HIVE-14637.mysql.sql
+++ b/metastore/scripts/upgrade/mysql/037-HIVE-14637.mysql.sql
@@ -1,5 +1,5 @@
-alter table `TBLS` ADD COLUMN `MM_WATERMARK_WRITE_ID` bigint(20);
-alter table `TBLS` ADD COLUMN `MM_NEXT_WRITE_ID` bigint(20);
+alter table `TBLS` ADD COLUMN `MM_WATERMARK_WRITE_ID` bigint(20) DEFAULT -1;
+alter table `TBLS` ADD COLUMN `MM_NEXT_WRITE_ID` bigint(20) DEFAULT 0;
 
 CREATE TABLE IF NOT EXISTS `TBL_WRITES`
 (

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql b/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
index f7ef948..b295950 100644
--- a/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
+++ b/metastore/scripts/upgrade/mysql/hive-schema-2.2.0.mysql.sql
@@ -587,8 +587,8 @@ CREATE TABLE IF NOT EXISTS `TBLS` (
   `TBL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
   `VIEW_EXPANDED_TEXT` mediumtext,
   `VIEW_ORIGINAL_TEXT` mediumtext,
-  `MM_WATERMARK_WRITE_ID` bigint(20),
-  `MM_NEXT_WRITE_ID` bigint(20),
+  `MM_WATERMARK_WRITE_ID` bigint(20) DEFAULT -1,
+  `MM_NEXT_WRITE_ID` bigint(20) DEFAULT 0,
   PRIMARY KEY (`TBL_ID`),
   UNIQUE KEY `UNIQUETABLE` (`TBL_NAME`,`DB_ID`),
   KEY `TBLS_N50` (`SD_ID`),

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/oracle/037-HIVE-14637.oracle.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/oracle/037-HIVE-14637.oracle.sql b/metastore/scripts/upgrade/oracle/037-HIVE-14637.oracle.sql
index bc5fb6b..9f6dbb2 100644
--- a/metastore/scripts/upgrade/oracle/037-HIVE-14637.oracle.sql
+++ b/metastore/scripts/upgrade/oracle/037-HIVE-14637.oracle.sql
@@ -1,5 +1,5 @@
-ALTER TABLE TBLS ADD MM_WATERMARK_WRITE_ID NUMBER;
-ALTER TABLE TBLS ADD MM_NEXT_WRITE_ID NUMBER;
+ALTER TABLE TBLS ADD MM_WATERMARK_WRITE_ID NUMBER DEFAULT -1;
+ALTER TABLE TBLS ADD MM_NEXT_WRITE_ID NUMBER DEFAULT 0;
 
 CREATE TABLE TBL_WRITES
 (

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql b/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
index 503ce09..6972c20 100644
--- a/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
+++ b/metastore/scripts/upgrade/oracle/hive-schema-2.2.0.oracle.sql
@@ -376,8 +376,8 @@ CREATE TABLE TBLS
     TBL_TYPE VARCHAR2(128) NULL,
     VIEW_EXPANDED_TEXT CLOB NULL,
     VIEW_ORIGINAL_TEXT CLOB NULL,
-    MM_WATERMARK_WRITE_ID NUMBER NULL,
-    MM_NEXT_WRITE_ID NUMBER NULL
+    MM_WATERMARK_WRITE_ID NUMBER DEFAULT -1,
+    MM_NEXT_WRITE_ID NUMBER DEFAULT 0
 );
 
 ALTER TABLE TBLS ADD CONSTRAINT TBLS_PK PRIMARY KEY (TBL_ID);

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/postgres/036-HIVE-14637.postgres.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/postgres/036-HIVE-14637.postgres.sql b/metastore/scripts/upgrade/postgres/036-HIVE-14637.postgres.sql
index d94c19d..f153837 100644
--- a/metastore/scripts/upgrade/postgres/036-HIVE-14637.postgres.sql
+++ b/metastore/scripts/upgrade/postgres/036-HIVE-14637.postgres.sql
@@ -1,6 +1,6 @@
 
-ALTER TABLE "TBLS" ADD COLUMN "MM_WATERMARK_WRITE_ID" bigint;
-ALTER TABLE "TBLS" ADD COLUMN "MM_NEXT_WRITE_ID" bigint;
+ALTER TABLE "TBLS" ADD COLUMN "MM_WATERMARK_WRITE_ID" bigint DEFAULT -1;
+ALTER TABLE "TBLS" ADD COLUMN "MM_NEXT_WRITE_ID" bigint DEFAULT 0;
 
 CREATE TABLE "TBL_WRITES"
 (

http://git-wip-us.apache.org/repos/asf/hive/blob/3e481b47/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
----------------------------------------------------------------------
diff --git a/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql b/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
index bf1d769..de997d3 100644
--- a/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
+++ b/metastore/scripts/upgrade/postgres/hive-schema-2.2.0.postgres.sql
@@ -373,8 +373,8 @@ CREATE TABLE "TBLS" (
     "TBL_TYPE" character varying(128) DEFAULT NULL::character varying,
     "VIEW_EXPANDED_TEXT" text,
     "VIEW_ORIGINAL_TEXT" text,
-    "MM_WATERMARK_WRITE_ID" bigint,
-    "MM_NEXT_WRITE_ID" bigint
+    "MM_WATERMARK_WRITE_ID" bigint DEFAULT -1,
+    "MM_NEXT_WRITE_ID" bigint DEFAULT 0
 );