http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
index 9fcde76..14217e3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
@@ -701,7 +701,7 @@ public class TypeCheckProcFactory {
 
   }
 
-  private static ExprNodeDesc toExprNodeDesc(ColumnInfo colInfo) {
+  static ExprNodeDesc toExprNodeDesc(ColumnInfo colInfo) {
     ObjectInspector inspector = colInfo.getObjectInspector();
     if (inspector instanceof ConstantObjectInspector &&
         inspector instanceof PrimitiveObjectInspector) {

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java 
b/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java
index e3a9e62..2accad3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java
@@ -139,8 +139,10 @@ public final class OpProcFactory {
   }
 
   private static void removeOperator(Operator<? extends OperatorDesc> 
operator) {
-    List<Operator<? extends OperatorDesc>> children = 
operator.getChildOperators();
-    List<Operator<? extends OperatorDesc>> parents = 
operator.getParentOperators();
+    // since removeParent/removeChild updates the childOperators and 
parentOperators list in place
+    // we need to make a copy of list to iterator over them
+    List<Operator<? extends OperatorDesc>> children = new 
ArrayList<>(operator.getChildOperators());
+    List<Operator<? extends OperatorDesc>> parents = new 
ArrayList<>(operator.getParentOperators());
     for (Operator<? extends OperatorDesc> parent : parents) {
       parent.getChildOperators().addAll(children);
       parent.removeChild(operator);

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEnforceNotNullConstraint.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEnforceNotNullConstraint.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEnforceNotNullConstraint.java
new file mode 100644
index 0000000..6c469bf
--- /dev/null
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEnforceNotNullConstraint.java
@@ -0,0 +1,76 @@
+/**
+ * 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.ql.udf.generic;
+
+import org.apache.hadoop.hive.ql.exec.Description;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
+import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.BooleanWritable;
+
+/**
+ * GenericUDFAbs.
+ *
+ */
+@Description(name = "enforce_constraint",
+    value = "_FUNC_(x) - Internal UDF to enforce NOT NULL constraint",
+    extended = "For internal use only")
+public class GenericUDFEnforceNotNullConstraint extends GenericUDF {
+  private final BooleanWritable resultBool = new BooleanWritable();
+  private transient BooleanObjectInspector boi;
+
+  @Override
+  public ObjectInspector initialize(ObjectInspector[] arguments) throws 
UDFArgumentException {
+    if (arguments.length > 1) {
+      throw new UDFArgumentLengthException(
+          "Invalid number of arguments. enforce_constraint UDF expected one 
argument but received: "
+              + arguments.length);
+    }
+
+    boi = (BooleanObjectInspector) arguments[0];
+    return PrimitiveObjectInspectorFactory.writableBooleanObjectInspector;
+  }
+
+  @Override
+  public Object evaluate(DeferredObject[] arguments) throws HiveException {
+
+    Object a = arguments[0].get();
+    boolean result = boi.get(a);
+
+    if(!result) {
+      throw new UDFArgumentLengthException(
+          "NOT NULL constraint violated!");
+    }
+    resultBool.set(true);
+    return resultBool;
+  }
+
+  @Override
+  protected String getFuncName() {
+    return "enforce_constraint";
+  }
+
+  @Override
+  public String getDisplayString(String[] children) {
+    return getStandardDisplayString(getFuncName(), children);
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/alter_notnull_constraint_violation.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/alter_notnull_constraint_violation.q 
b/ql/src/test/queries/clientnegative/alter_notnull_constraint_violation.q
new file mode 100644
index 0000000..b09d90f
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/alter_notnull_constraint_violation.q
@@ -0,0 +1,5 @@
+CREATE TABLE t1(i int, j int);
+insert into t1 values(1,2);
+
+alter table t1 change j j int constraint nn0 not null enforced;
+insert into t1 values(2,null);

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/create_with_constraints_enable.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/create_with_constraints_enable.q 
b/ql/src/test/queries/clientnegative/create_with_constraints_enable.q
deleted file mode 100644
index 59ebb1e..0000000
--- a/ql/src/test/queries/clientnegative/create_with_constraints_enable.q
+++ /dev/null
@@ -1 +0,0 @@
-CREATE TABLE table1 (a STRING, b STRING, primary key (a) enable);

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/create_with_constraints_enforced.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/create_with_constraints_enforced.q 
b/ql/src/test/queries/clientnegative/create_with_constraints_enforced.q
deleted file mode 100644
index 5b90c0e..0000000
--- a/ql/src/test/queries/clientnegative/create_with_constraints_enforced.q
+++ /dev/null
@@ -1 +0,0 @@
-CREATE TABLE table1 (a STRING, b STRING, primary key (a) enforced);

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/create_with_fk_constraints_enforced.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/create_with_fk_constraints_enforced.q 
b/ql/src/test/queries/clientnegative/create_with_fk_constraints_enforced.q
new file mode 100644
index 0000000..73a3e59
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/create_with_fk_constraints_enforced.q
@@ -0,0 +1,3 @@
+CREATE TABLE table2 (a INT PRIMARY KEY DISABLE, b STRING);
+CREATE TABLE table1 (a STRING, b STRING, CONSTRAINT fk1 FOREIGN KEY (b) 
REFERENCES table2(a) ENFORCED);
+

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/create_with_pk_constraints_enforced.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/create_with_pk_constraints_enforced.q 
b/ql/src/test/queries/clientnegative/create_with_pk_constraints_enforced.q
new file mode 100644
index 0000000..5b90c0e
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/create_with_pk_constraints_enforced.q
@@ -0,0 +1 @@
+CREATE TABLE table1 (a STRING, b STRING, primary key (a) enforced);

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/create_with_unique_constraints_enforced.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/create_with_unique_constraints_enforced.q 
b/ql/src/test/queries/clientnegative/create_with_unique_constraints_enforced.q
new file mode 100644
index 0000000..52ef89d
--- /dev/null
+++ 
b/ql/src/test/queries/clientnegative/create_with_unique_constraints_enforced.q
@@ -0,0 +1 @@
+CREATE TABLE table1 (a STRING UNIQUE ENFORCED, b STRING);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/insert_into_acid_notnull.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/insert_into_acid_notnull.q 
b/ql/src/test/queries/clientnegative/insert_into_acid_notnull.q
new file mode 100644
index 0000000..da9aba3
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/insert_into_acid_notnull.q
@@ -0,0 +1,9 @@
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table acid_uami(i int,
+                 de decimal(5,2) not null enforced,
+                 vc varchar(128) not null enforced) clustered by (i) into 2 
buckets stored as orc TBLPROPERTIES ('transactional'='true');
+
+
+insert into table acid_uami select 1, null, null;

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/insert_into_notnull_constraint.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/insert_into_notnull_constraint.q 
b/ql/src/test/queries/clientnegative/insert_into_notnull_constraint.q
new file mode 100644
index 0000000..da35b02
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/insert_into_notnull_constraint.q
@@ -0,0 +1,3 @@
+create table nullConstraintCheck(i int NOT NULL enforced, j int);
+insert into nullConstraintCheck values(null,2);
+

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/insert_multi_into_notnull.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/insert_multi_into_notnull.q 
b/ql/src/test/queries/clientnegative/insert_multi_into_notnull.q
new file mode 100644
index 0000000..2c4ec1e
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/insert_multi_into_notnull.q
@@ -0,0 +1,6 @@
+create table src_multi1 (a STRING NOT NULL ENFORCED, b STRING);
+create table src_multi2 (i STRING, j STRING NOT NULL ENFORCED);
+
+from src
+insert overwrite table src_multi1 select * where key < 10
+insert overwrite table src_multi2 select key, null where key > 10 and key < 20;

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/insert_overwrite_notnull_constraint.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/insert_overwrite_notnull_constraint.q 
b/ql/src/test/queries/clientnegative/insert_overwrite_notnull_constraint.q
new file mode 100644
index 0000000..64fe4e4
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/insert_overwrite_notnull_constraint.q
@@ -0,0 +1,3 @@
+create table nullConstraintCheck(i int NOT NULL enforced, j int);
+insert overwrite table nullConstraintCheck values(null,2);
+

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/merge_constraint_notnull.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/merge_constraint_notnull.q 
b/ql/src/test/queries/clientnegative/merge_constraint_notnull.q
new file mode 100644
index 0000000..8ba869b
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/merge_constraint_notnull.q
@@ -0,0 +1,17 @@
+set hive.mapred.mode=nonstrict;
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table nonacid (key int, a1 string, value string) stored as orc;
+insert into nonacid values(1, null, 'value');
+
+create table testT (key int NOT NULL enable, a1 string NOT NULL enforced, 
value string)
+clustered by (value) into 2 buckets stored as orc
+tblproperties ("transactional"="true");
+insert into testT values(2,'a1masking', 'valuemasking');
+
+MERGE INTO testT as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key > 5 THEN DELETE
+WHEN MATCHED AND s.key < 3 THEN UPDATE set a1 = '1'
+WHEN NOT MATCHED THEN INSERT VALUES (s.key, s.a1, s.value);
+

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientnegative/update_notnull_constraint.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/update_notnull_constraint.q 
b/ql/src/test/queries/clientnegative/update_notnull_constraint.q
new file mode 100644
index 0000000..0ae8561
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/update_notnull_constraint.q
@@ -0,0 +1,9 @@
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table acid_uami(i int,
+                 de decimal(5,2) constraint nn1 not null enforced,
+                 vc varchar(128) constraint nn2 not null enforced) clustered 
by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true');
+
+insert into acid_uami values(1, 1.4, 'first');
+UPDATE acid_uami set de=null where i=1;

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/queries/clientpositive/enforce_constraint_notnull.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/enforce_constraint_notnull.q 
b/ql/src/test/queries/clientpositive/enforce_constraint_notnull.q
new file mode 100644
index 0000000..b89bcb7
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/enforce_constraint_notnull.q
@@ -0,0 +1,196 @@
+--  SIMPLE TABLE
+-- create table with first and last column with not null
+CREATE TABLE table1 (a STRING NOT NULL ENFORCED, b STRING, c STRING NOT NULL 
ENFORCED);
+
+-- insert value tuples
+explain INSERT INTO table1 values('not', 'null', 'constraint');
+INSERT INTO table1 values('not', 'null', 'constraint');
+SELECT * FROM table1;
+
+-- insert with column specified
+explain insert into table1(a,c) values('1','2');
+insert into table1(a,c) values('1','2');
+
+-- insert from select
+explain INSERT INTO table1 select key, src.value, value from src;
+INSERT INTO table1 select key, src.value, value from src;
+SELECT * FROM table1;
+
+-- insert overwrite
+explain INSERT OVERWRITE TABLE table1 select src.*, value from src;
+INSERT OVERWRITE TABLE table1 select src.*, value from src;
+SELECT * FROM table1;
+
+-- insert overwrite with if not exists
+explain INSERT OVERWRITE TABLE table1 if not exists select src.key, src.key, 
src.value from src;
+INSERT OVERWRITE TABLE table1 if not exists select src.key, src.key, src.value 
from src;
+SELECT * FROM table1;
+
+DROP TABLE table1;
+
+-- multi insert
+create table src_multi1 (a STRING NOT NULL ENFORCED, b STRING);
+create table src_multi2 (i STRING, j STRING NOT NULL ENABLE);
+
+explain
+from src
+insert overwrite table src_multi1 select * where key < 10
+insert overwrite table src_multi2 select * where key > 10 and key < 20;
+
+
+from src
+insert overwrite table src_multi1 select * where key < 10
+insert overwrite table src_multi2 select * where key > 10 and key < 20;
+
+explain
+from src
+insert into table src_multi1 select * where src.key < 10
+insert into table src_multi2 select src.* where key > 10 and key < 20;
+
+from src
+insert into table src_multi1 select * where src.key < 10
+insert into table src_multi2 select src.* where key > 10 and key < 20;
+
+--  ACID TABLE
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+-- SORT_QUERY_RESULTS
+create table acid_uami(i int,
+                 de decimal(5,2) constraint nn1 not null enforced,
+                 vc varchar(128) constraint nn2 not null enforced) clustered 
by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true');
+
+-- insert into values
+explain insert into table acid_uami values
+    (1, 109.23, 'mary had a little lamb'),
+    (6553, 923.19, 'its fleece was white as snow');
+insert into table acid_uami values
+    (1, 109.23, 'mary had a little lamb'),
+    (6553, 923.19, 'its fleece was white as snow');
+select * from acid_uami;
+
+ --insert into select
+explain insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src;
+insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src;
+
+-- select with limit
+explain insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src limit 2;
+
+-- select with order by
+explain insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src
+        order by key limit 2;
+
+-- select with group by
+explain insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src
+        group by key, value order by key limit 2;
+
+ --overwrite
+explain insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src;
+insert into table acid_uami select cast(key as int), cast (key as 
decimal(5,2)), value from src;
+
+-- update
+explain update acid_uami set de = 3.14 where de = 109.23 or de = 119.23;
+update acid_uami set de = 3.14 where de = 109.23 or de = 119.23;
+
+ALTER table acid_uami drop constraint nn1;
+ALTER table acid_uami CHANGE i i int constraint nn0 not null enforced;
+
+explain update acid_uami set de = 3.14159 where de = 3.14 ;
+update acid_uami set de = 3.14159 where de = 3.14 ;
+
+-- multi insert
+explain
+from src
+insert overwrite table acid_uami select cast(key as int), cast(key as 
decimal(5,2)), value where key < 10
+insert overwrite table src_multi2 select * where key > 10 and key < 20;
+
+set hive.exec.dynamic.partition.mode=nonstrict;
+-- Table with partition
+CREATE TABLE tablePartitioned (a STRING NOT NULL ENFORCED, b STRING, c STRING 
NOT NULL ENFORCED)
+    PARTITIONED BY (p1 STRING, p2 INT NOT NULL ENABLE);
+
+-- Insert into
+explain INSERT INTO tablePartitioned partition(p1='today', p2=10) 
values('not', 'null', 'constraint');
+INSERT INTO tablePartitioned partition(p1='today', p2=10) values('not', 
'null', 'constraint');
+
+-- Insert as select
+explain INSERT INTO tablePartitioned partition(p1, p2) select key, value, 
value, key as p1, 3 as p2 from src limit 10;
+INSERT INTO tablePartitioned partition(p1, p2) select key, value, value, key 
as p1, 3 as p2 from src limit 10;
+
+select * from tablePartitioned;
+
+-- multi insert
+explain
+from src
+INSERT INTO tablePartitioned partition(p1, p2) select key, value, value, 
'yesterday' as p1, 3 as p2
+insert overwrite table src_multi2 select * where key > 10 and key < 20;
+
+DROP TABLE src_multi1;
+DROP TABLE src_multi2;
+DROP TABLE acid_uami;
+
+-- MERGE statements
+set hive.mapred.mode=nonstrict;
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table nonacid (key int, a1 string, value string) stored as orc;
+
+create table masking_test (key int NOT NULL enable, a1 string, value string)
+clustered by (value) into 2 buckets stored as orc
+tblproperties ("transactional"="true");
+
+-- with cardinality check off
+set hive.merge.cardinality.check=false;
+explain MERGE INTO masking_test as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key < 5 THEN DELETE
+WHEN MATCHED AND s.key < 3 THEN UPDATE set a1 = '1'
+WHEN NOT MATCHED THEN INSERT VALUES (s.key, s.a1, s.value);
+
+-- with cardinality check on
+set hive.merge.cardinality.check=true;
+explain MERGE INTO masking_test as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key < 5 THEN DELETE
+WHEN MATCHED AND s.key < 3 THEN UPDATE set a1 = '1'
+WHEN NOT MATCHED THEN INSERT VALUES (s.key, s.a1, s.value);
+
+explain MERGE INTO masking_test as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key < 5 THEN DELETE
+WHEN NOT MATCHED THEN INSERT VALUES (s.key, s.a1, s.value);
+
+explain MERGE INTO masking_test as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key < 3 THEN UPDATE set a1 = '1'
+WHEN NOT MATCHED THEN INSERT VALUES (s.key, s.a1, s.value);
+
+-- shouldn't have constraint enforcement
+explain MERGE INTO masking_test as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key < 5 THEN DELETE;
+
+DROP TABLE masking_test;
+DROP TABLE nonacid;
+
+-- Test drop constraint
+create table table2(i int constraint nn5 not null enforced, j int);
+explain insert into table2 values(2, 3);
+alter table table2 drop constraint nn5;
+explain insert into table2 values(2, 3);
+DROP TABLE table2;
+
+-- temporary table
+create temporary table tttemp(i int not null enforced);
+explain insert into tttemp values(1);
+explain insert into tttemp select cast(key as int) from src;
+drop table tttemp;
+
+-- micro-managed table
+set hive.create.as.insert.only=true;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+create table part_mm(key int not null enforced) partitioned by (key_mm int) 
stored as orc tblproperties ("transactional"="true", 
"transactional_properties"="insert_only");
+explain insert into table part_mm partition(key_mm=455) select key from src 
order by value limit 3;
+insert into table part_mm partition(key_mm=455) select key from src order by 
value limit 3;
+select key from src order by value limit 3;
+select * from part_mm;
+drop table part_mm;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/alter_notnull_constraint_violation.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/alter_notnull_constraint_violation.q.out 
b/ql/src/test/results/clientnegative/alter_notnull_constraint_violation.q.out
new file mode 100644
index 0000000..fe5f235
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/alter_notnull_constraint_violation.q.out
@@ -0,0 +1,27 @@
+PREHOOK: query: CREATE TABLE t1(i int, j int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t1
+POSTHOOK: query: CREATE TABLE t1(i int, j int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t1
+PREHOOK: query: insert into t1 values(1,2)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@t1
+POSTHOOK: query: insert into t1 values(1,2)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@t1
+POSTHOOK: Lineage: t1.i SCRIPT []
+POSTHOOK: Lineage: t1.j SCRIPT []
+PREHOOK: query: alter table t1 change j j int constraint nn0 not null enforced
+PREHOOK: type: ALTERTABLE_RENAMECOL
+PREHOOK: Input: default@t1
+PREHOOK: Output: default@t1
+POSTHOOK: query: alter table t1 change j j int constraint nn0 not null enforced
+POSTHOOK: type: ALTERTABLE_RENAMECOL
+POSTHOOK: Input: default@t1
+POSTHOOK: Output: default@t1
+FAILED: UDFArgumentException 
org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: NOT NULL constraint 
violated!

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/create_with_constraints_enable.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/create_with_constraints_enable.q.out 
b/ql/src/test/results/clientnegative/create_with_constraints_enable.q.out
deleted file mode 100644
index 2b24412..0000000
--- a/ql/src/test/results/clientnegative/create_with_constraints_enable.q.out
+++ /dev/null
@@ -1 +0,0 @@
-FAILED: SemanticException [Error 10326]: Invalid Constraint syntax 
ENABLE/ENFORCED feature not supported yet. Please use DISABLE/NOT ENFORCED 
instead.

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/create_with_constraints_enforced.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/create_with_constraints_enforced.q.out 
b/ql/src/test/results/clientnegative/create_with_constraints_enforced.q.out
deleted file mode 100644
index 2b24412..0000000
--- a/ql/src/test/results/clientnegative/create_with_constraints_enforced.q.out
+++ /dev/null
@@ -1 +0,0 @@
-FAILED: SemanticException [Error 10326]: Invalid Constraint syntax 
ENABLE/ENFORCED feature not supported yet. Please use DISABLE/NOT ENFORCED 
instead.

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/create_with_fk_constraints_enforced.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/create_with_fk_constraints_enforced.q.out 
b/ql/src/test/results/clientnegative/create_with_fk_constraints_enforced.q.out
new file mode 100644
index 0000000..38dca87
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/create_with_fk_constraints_enforced.q.out
@@ -0,0 +1,9 @@
+PREHOOK: query: CREATE TABLE table2 (a INT PRIMARY KEY DISABLE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table2
+POSTHOOK: query: CREATE TABLE table2 (a INT PRIMARY KEY DISABLE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table2
+FAILED: SemanticException [Error 10325]: Invalid Foreign Key syntax ENABLE 
feature not supported yet. Please use DISABLE instead.

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/create_with_pk_constraints_enforced.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/create_with_pk_constraints_enforced.q.out 
b/ql/src/test/results/clientnegative/create_with_pk_constraints_enforced.q.out
new file mode 100644
index 0000000..2b24412
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/create_with_pk_constraints_enforced.q.out
@@ -0,0 +1 @@
+FAILED: SemanticException [Error 10326]: Invalid Constraint syntax 
ENABLE/ENFORCED feature not supported yet. Please use DISABLE/NOT ENFORCED 
instead.

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/create_with_unique_constraints_enforced.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/create_with_unique_constraints_enforced.q.out
 
b/ql/src/test/results/clientnegative/create_with_unique_constraints_enforced.q.out
new file mode 100644
index 0000000..2b24412
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/create_with_unique_constraints_enforced.q.out
@@ -0,0 +1 @@
+FAILED: SemanticException [Error 10326]: Invalid Constraint syntax 
ENABLE/ENFORCED feature not supported yet. Please use DISABLE/NOT ENFORCED 
instead.

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/insert_into_acid_notnull.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/insert_into_acid_notnull.q.out 
b/ql/src/test/results/clientnegative/insert_into_acid_notnull.q.out
new file mode 100644
index 0000000..721c7e7
--- /dev/null
+++ b/ql/src/test/results/clientnegative/insert_into_acid_notnull.q.out
@@ -0,0 +1,13 @@
+PREHOOK: query: create table acid_uami(i int,
+                 de decimal(5,2) not null enforced,
+                 vc varchar(128) not null enforced) clustered by (i) into 2 
buckets stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@acid_uami
+POSTHOOK: query: create table acid_uami(i int,
+                 de decimal(5,2) not null enforced,
+                 vc varchar(128) not null enforced) clustered by (i) into 2 
buckets stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@acid_uami
+FAILED: UDFArgumentException 
org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: NOT NULL constraint 
violated!

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/insert_into_notnull_constraint.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/insert_into_notnull_constraint.q.out 
b/ql/src/test/results/clientnegative/insert_into_notnull_constraint.q.out
new file mode 100644
index 0000000..6718ae0
--- /dev/null
+++ b/ql/src/test/results/clientnegative/insert_into_notnull_constraint.q.out
@@ -0,0 +1,9 @@
+PREHOOK: query: create table nullConstraintCheck(i int NOT NULL enforced, j 
int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@nullConstraintCheck
+POSTHOOK: query: create table nullConstraintCheck(i int NOT NULL enforced, j 
int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@nullConstraintCheck
+FAILED: UDFArgumentException 
org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: NOT NULL constraint 
violated!

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/insert_multi_into_notnull.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/insert_multi_into_notnull.q.out 
b/ql/src/test/results/clientnegative/insert_multi_into_notnull.q.out
new file mode 100644
index 0000000..d54e6cf
--- /dev/null
+++ b/ql/src/test/results/clientnegative/insert_multi_into_notnull.q.out
@@ -0,0 +1,17 @@
+PREHOOK: query: create table src_multi1 (a STRING NOT NULL ENFORCED, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_multi1
+POSTHOOK: query: create table src_multi1 (a STRING NOT NULL ENFORCED, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_multi1
+PREHOOK: query: create table src_multi2 (i STRING, j STRING NOT NULL ENFORCED)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_multi2
+POSTHOOK: query: create table src_multi2 (i STRING, j STRING NOT NULL ENFORCED)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_multi2
+FAILED: UDFArgumentException 
org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: NOT NULL constraint 
violated!

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/insert_overwrite_notnull_constraint.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/insert_overwrite_notnull_constraint.q.out 
b/ql/src/test/results/clientnegative/insert_overwrite_notnull_constraint.q.out
new file mode 100644
index 0000000..6718ae0
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/insert_overwrite_notnull_constraint.q.out
@@ -0,0 +1,9 @@
+PREHOOK: query: create table nullConstraintCheck(i int NOT NULL enforced, j 
int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@nullConstraintCheck
+POSTHOOK: query: create table nullConstraintCheck(i int NOT NULL enforced, j 
int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@nullConstraintCheck
+FAILED: UDFArgumentException 
org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: NOT NULL constraint 
violated!

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/merge_constraint_notnull.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/merge_constraint_notnull.q.out 
b/ql/src/test/results/clientnegative/merge_constraint_notnull.q.out
new file mode 100644
index 0000000..088e249
--- /dev/null
+++ b/ql/src/test/results/clientnegative/merge_constraint_notnull.q.out
@@ -0,0 +1,55 @@
+PREHOOK: query: create table nonacid (key int, a1 string, value string) stored 
as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@nonacid
+POSTHOOK: query: create table nonacid (key int, a1 string, value string) 
stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@nonacid
+PREHOOK: query: insert into nonacid values(1, null, 'value')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@nonacid
+POSTHOOK: query: insert into nonacid values(1, null, 'value')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@nonacid
+POSTHOOK: Lineage: nonacid.a1 EXPRESSION []
+POSTHOOK: Lineage: nonacid.key SCRIPT []
+POSTHOOK: Lineage: nonacid.value SCRIPT []
+PREHOOK: query: create table testT (key int NOT NULL enable, a1 string NOT 
NULL enforced, value string)
+clustered by (value) into 2 buckets stored as orc
+tblproperties ("transactional"="true")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@testT
+POSTHOOK: query: create table testT (key int NOT NULL enable, a1 string NOT 
NULL enforced, value string)
+clustered by (value) into 2 buckets stored as orc
+tblproperties ("transactional"="true")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@testT
+PREHOOK: query: insert into testT values(2,'a1masking', 'valuemasking')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@testt
+POSTHOOK: query: insert into testT values(2,'a1masking', 'valuemasking')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@testt
+POSTHOOK: Lineage: testt.a1 SCRIPT []
+POSTHOOK: Lineage: testt.key SCRIPT []
+POSTHOOK: Lineage: testt.value SCRIPT []
+PREHOOK: query: MERGE INTO testT as t using nonacid as s ON t.key = s.key
+WHEN MATCHED AND s.key > 5 THEN DELETE
+WHEN MATCHED AND s.key < 3 THEN UPDATE set a1 = '1'
+WHEN NOT MATCHED THEN INSERT VALUES (s.key, s.a1, s.value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@nonacid
+PREHOOK: Input: default@testt
+PREHOOK: Output: default@merge_tmp_table
+PREHOOK: Output: default@testt
+PREHOOK: Output: default@testt
+PREHOOK: Output: default@testt
+#### A masked pattern was here ####
+FAILED: Execution Error, return code 2 from 
org.apache.hadoop.hive.ql.exec.mr.MapRedTask

http://git-wip-us.apache.org/repos/asf/hive/blob/c50ebb34/ql/src/test/results/clientnegative/update_notnull_constraint.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/update_notnull_constraint.q.out 
b/ql/src/test/results/clientnegative/update_notnull_constraint.q.out
new file mode 100644
index 0000000..427ca4d
--- /dev/null
+++ b/ql/src/test/results/clientnegative/update_notnull_constraint.q.out
@@ -0,0 +1,24 @@
+PREHOOK: query: create table acid_uami(i int,
+                 de decimal(5,2) constraint nn1 not null enforced,
+                 vc varchar(128) constraint nn2 not null enforced) clustered 
by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@acid_uami
+POSTHOOK: query: create table acid_uami(i int,
+                 de decimal(5,2) constraint nn1 not null enforced,
+                 vc varchar(128) constraint nn2 not null enforced) clustered 
by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@acid_uami
+PREHOOK: query: insert into acid_uami values(1, 1.4, 'first')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@acid_uami
+POSTHOOK: query: insert into acid_uami values(1, 1.4, 'first')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@acid_uami
+POSTHOOK: Lineage: acid_uami.de SCRIPT []
+POSTHOOK: Lineage: acid_uami.i SCRIPT []
+POSTHOOK: Lineage: acid_uami.vc SCRIPT []
+FAILED: UDFArgumentException 
org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException: NOT NULL constraint 
violated!

Reply via email to