This is an automated email from the ASF dual-hosted git repository.
ayushtkn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new fb6ea615f98 HIVE-29782: ALTER VIEW ADD PARTITION does not honor non
string partition columns (#6658)
fb6ea615f98 is described below
commit fb6ea615f98f39ce0283c8179b65fa84eec0e58c
Author: ramitg254 <[email protected]>
AuthorDate: Tue Aug 18 07:34:45 2026 +0530
HIVE-29782: ALTER VIEW ADD PARTITION does not honor non string partition
columns (#6658)
---
.../src/test/queries/positive/iceberg_view.q | 21 ++-
.../src/test/results/positive/iceberg_view.q.out | 68 ++++++++
.../add/AlterViewAddPartitionAnalyzer.java | 27 ++-
.../ql/ddl/view/create/CreateViewAnalyzer.java | 10 +-
.../partitioned_view_add_parts_complex.q | 5 +
.../clientpositive/partitioned_view_add_parts.q | 32 ++++
.../partitioned_view_add_parts_complex.q.out | 19 ++
.../llap/partitioned_view_add_parts.q.out | 193 +++++++++++++++++++++
8 files changed, 370 insertions(+), 5 deletions(-)
diff --git a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_view.q
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_view.q
index 037b67371b1..4ac94d06a12 100644
--- a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_view.q
+++ b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_view.q
@@ -75,6 +75,25 @@ select * from v_hive;
desc formatted v_hive;
drop view v_hive;
+-----------------------------------------------------------------------------------------
+-- Native Hive partitioned view on Iceberg base table
+-----------------------------------------------------------------------------------------
+
+create view v_hive_part partitioned on (dept_id) as
+ select first_name, last_name, dept_id from src_ice;
+
+alter view v_hive_part add partition (dept_id=1);
+
+show partitions v_hive_part;
+
+select first_name from v_hive_part where dept_id=1 order by first_name;
+
+alter view v_hive_part drop partition (dept_id=1);
+
+show partitions v_hive_part;
+
+drop view v_hive_part;
+
-----------------------------------------------------------------------------------------
-- Replace Iceberg logical view with a Hive-native logical view
-----------------------------------------------------------------------------------------
@@ -84,4 +103,4 @@ as select first_name from src_ice where dept_id = 2;
select * from v_ice;
desc formatted v_ice;
-drop view v_ice;
\ No newline at end of file
+drop view v_ice;
diff --git
a/iceberg/iceberg-handler/src/test/results/positive/iceberg_view.q.out
b/iceberg/iceberg-handler/src/test/results/positive/iceberg_view.q.out
index ad072ca1c23..e9e352e5248 100644
--- a/iceberg/iceberg-handler/src/test/results/positive/iceberg_view.q.out
+++ b/iceberg/iceberg-handler/src/test/results/positive/iceberg_view.q.out
@@ -309,6 +309,74 @@ POSTHOOK: query: drop view v_hive
POSTHOOK: type: DROPVIEW
POSTHOOK: Input: ice_native_view_db@v_hive
POSTHOOK: Output: ice_native_view_db@v_hive
+PREHOOK: query: create view v_hive_part partitioned on (dept_id) as
+ select first_name, last_name, dept_id from src_ice
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: ice_native_view_db@src_ice
+PREHOOK: Output: database:ice_native_view_db
+PREHOOK: Output: ice_native_view_db@v_hive_part
+POSTHOOK: query: create view v_hive_part partitioned on (dept_id) as
+ select first_name, last_name, dept_id from src_ice
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: ice_native_view_db@src_ice
+POSTHOOK: Output: database:ice_native_view_db
+POSTHOOK: Output: ice_native_view_db@v_hive_part
+POSTHOOK: Lineage: v_hive_part.first_name SIMPLE
[(src_ice)src_ice.FieldSchema(name:first_name, type:string, comment:null), ]
+POSTHOOK: Lineage: v_hive_part.last_name SIMPLE
[(src_ice)src_ice.FieldSchema(name:last_name, type:string, comment:null), ]
+PREHOOK: query: alter view v_hive_part add partition (dept_id=1)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: ice_native_view_db@src_ice
+PREHOOK: Input: ice_native_view_db@v_hive_part
+PREHOOK: Output: ice_native_view_db@v_hive_part
+POSTHOOK: query: alter view v_hive_part add partition (dept_id=1)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: ice_native_view_db@src_ice
+POSTHOOK: Input: ice_native_view_db@v_hive_part
+POSTHOOK: Output: ice_native_view_db@v_hive_part
+POSTHOOK: Output: ice_native_view_db@v_hive_part@dept_id=1
+PREHOOK: query: show partitions v_hive_part
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: ice_native_view_db@v_hive_part
+POSTHOOK: query: show partitions v_hive_part
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: ice_native_view_db@v_hive_part
+dept_id=1
+PREHOOK: query: select first_name from v_hive_part where dept_id=1 order by
first_name
+PREHOOK: type: QUERY
+PREHOOK: Input: ice_native_view_db@src_ice
+PREHOOK: Input: ice_native_view_db@v_hive_part
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: select first_name from v_hive_part where dept_id=1 order by
first_name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: ice_native_view_db@src_ice
+POSTHOOK: Input: ice_native_view_db@v_hive_part
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+fn1
+fn2
+fn3
+fn4
+PREHOOK: query: alter view v_hive_part drop partition (dept_id=1)
+PREHOOK: type: ALTERTABLE_DROPPARTS
+PREHOOK: Input: ice_native_view_db@v_hive_part
+PREHOOK: Output: ice_native_view_db@v_hive_part@dept_id=1
+POSTHOOK: query: alter view v_hive_part drop partition (dept_id=1)
+POSTHOOK: type: ALTERTABLE_DROPPARTS
+POSTHOOK: Input: ice_native_view_db@v_hive_part
+POSTHOOK: Output: ice_native_view_db@v_hive_part@dept_id=1
+PREHOOK: query: show partitions v_hive_part
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: ice_native_view_db@v_hive_part
+POSTHOOK: query: show partitions v_hive_part
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: ice_native_view_db@v_hive_part
+PREHOOK: query: drop view v_hive_part
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: ice_native_view_db@v_hive_part
+PREHOOK: Output: ice_native_view_db@v_hive_part
+POSTHOOK: query: drop view v_hive_part
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: ice_native_view_db@v_hive_part
+POSTHOOK: Output: ice_native_view_db@v_hive_part
PREHOOK: query: create or replace view v_ice
as select first_name from src_ice where dept_id = 2
PREHOOK: type: CREATEVIEW
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
index 213d59e636c..35a180b778d 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
@@ -22,6 +22,7 @@
import java.util.Map;
import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.ql.Driver;
import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.QueryState;
@@ -32,6 +33,15 @@
import org.apache.hadoop.hive.ql.metadata.Table;
import org.apache.hadoop.hive.ql.parse.HiveParser;
import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
+import org.apache.hadoop.hive.serde.serdeConstants;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters;
+import
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.BaseCharTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
/**
* Analyzer for add partition commands for views.
@@ -80,10 +90,10 @@ protected void postProcess(TableName tableName, Table
table, AlterTableAddPartit
} else {
where.append(" AND ");
}
+ FieldSchema partCol = table.getColumnByName(entry.getKey());
where.append(HiveUtils.unparseIdentifier(entry.getKey(), conf));
- where.append(" = '");
- where.append(HiveUtils.escapeString(entry.getValue()));
- where.append("'");
+ where.append(" = ");
+ where.append(formatPartitionLiteral(partCol, entry.getValue()));
}
where.append(")");
}
@@ -98,4 +108,15 @@ protected void postProcess(TableName tableName, Table
table, AlterTableAddPartit
inputs.addAll(driver.getPlan().getInputs());
}
}
+
+ private static String formatPartitionLiteral(FieldSchema partCol, String
partSpecValue) {
+ TypeInfo typeInfo =
TypeInfoFactory.getPrimitiveTypeInfo(partCol.getType());
+ if (typeInfo.getTypeName().equals(serdeConstants.STRING_TYPE_NAME) ||
typeInfo instanceof BaseCharTypeInfo) {
+ return "'" + HiveUtils.escapeString(partSpecValue) + "'";
+ }
+ ObjectInspector partColOI =
TypeInfoUtils.getStandardJavaObjectInspectorFromTypeInfo(typeInfo);
+ Object converted = ObjectInspectorConverters.getConverter(
+ PrimitiveObjectInspectorFactory.javaStringObjectInspector,
partColOI).convert(partSpecValue);
+ return new ExprNodeConstantDesc(typeInfo, converted).getExprString();
+ }
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/CreateViewAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/CreateViewAnalyzer.java
index 4b18ff89720..3b88c001188 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/CreateViewAnalyzer.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/CreateViewAnalyzer.java
@@ -32,9 +32,9 @@
import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.QueryState;
-import org.apache.hadoop.hive.ql.ddl.DDLWork;
import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
import org.apache.hadoop.hive.ql.ddl.DDLUtils;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
import org.apache.hadoop.hive.ql.exec.TaskFactory;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.metadata.HiveStorageHandler;
@@ -46,6 +46,9 @@
import org.apache.hadoop.hive.ql.parse.SemanticAnalyzer;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.parse.StorageFormat;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
/**
* Analyzer for create view commands.
@@ -190,6 +193,11 @@ private List<FieldSchema> getPartitionColumns(List<String>
partitionColumnNames)
while (columnNameIterator.hasNext()) {
String columnName = columnNameIterator.next();
FieldSchema fieldSchema = schemaIterator.next();
+ TypeInfo typeInfo =
TypeInfoUtils.getTypeInfoFromTypeString(fieldSchema.getType());
+ if (typeInfo.getCategory() != ObjectInspector.Category.PRIMITIVE) {
+ throw new
SemanticException(ErrorMsg.PARTITION_COLUMN_NON_PRIMITIVE.getMsg() + " Found "
+ + columnName + " of type: " + fieldSchema.getType());
+ }
if (!fieldSchema.getName().equals(columnName)) {
throw new SemanticException(ErrorMsg.VIEW_PARTITION_MISMATCH.getMsg());
}
diff --git
a/ql/src/test/queries/clientnegative/partitioned_view_add_parts_complex.q
b/ql/src/test/queries/clientnegative/partitioned_view_add_parts_complex.q
new file mode 100644
index 00000000000..034aa7e81b1
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/partitioned_view_add_parts_complex.q
@@ -0,0 +1,5 @@
+-- Negative: non-primitive partition column on CREATE VIEW
(PARTITION_COLUMN_NON_PRIMITIVE)
+create table pv_complex_src (id int, p struct<f:string>) stored as orc;
+insert into pv_complex_src values (1, named_struct('f', 'x'));
+
+create view pv_complex partitioned on (p) as select id, p from pv_complex_src;
diff --git a/ql/src/test/queries/clientpositive/partitioned_view_add_parts.q
b/ql/src/test/queries/clientpositive/partitioned_view_add_parts.q
new file mode 100644
index 00000000000..db317f307de
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/partitioned_view_add_parts.q
@@ -0,0 +1,32 @@
+create table src_t (
+ label string,
+ p_int int,
+ p_bool boolean,
+ p_date date,
+ p_dec decimal(10,2)
+) stored as orc;
+
+insert into src_t values
+ ('row1', 42, true, '2024-06-01', 99.50);
+
+create view vp_int partitioned on (p_int) as select label, p_int from src_t;
+alter view vp_int add partition (p_int=42);
+show partitions vp_int;
+
+create view vp_bool partitioned on (p_bool) as select label, p_bool from src_t;
+alter view vp_bool add partition (p_bool=true);
+show partitions vp_bool;
+
+create view vp_date partitioned on (p_date) as select label, p_date from src_t;
+alter view vp_date add partition (p_date='2024-06-01');
+show partitions vp_date;
+
+create view vp_dec partitioned on (p_dec) as select label, p_dec from src_t;
+alter view vp_dec add partition (p_dec=99.50);
+show partitions vp_dec;
+
+drop view vp_int;
+drop view vp_bool;
+drop view vp_date;
+drop view vp_dec;
+drop table src_t;
diff --git
a/ql/src/test/results/clientnegative/partitioned_view_add_parts_complex.q.out
b/ql/src/test/results/clientnegative/partitioned_view_add_parts_complex.q.out
new file mode 100644
index 00000000000..0e9fa008275
--- /dev/null
+++
b/ql/src/test/results/clientnegative/partitioned_view_add_parts_complex.q.out
@@ -0,0 +1,19 @@
+PREHOOK: query: create table pv_complex_src (id int, p struct<f:string>)
stored as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@pv_complex_src
+POSTHOOK: query: create table pv_complex_src (id int, p struct<f:string>)
stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@pv_complex_src
+PREHOOK: query: insert into pv_complex_src values (1, named_struct('f', 'x'))
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@pv_complex_src
+POSTHOOK: query: insert into pv_complex_src values (1, named_struct('f', 'x'))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@pv_complex_src
+POSTHOOK: Lineage: pv_complex_src.id SCRIPT []
+POSTHOOK: Lineage: pv_complex_src.p SCRIPT []
+FAILED: SemanticException [Error 10126]: Partition column must be of primitive
type. Found p of type: struct<f:string>
diff --git
a/ql/src/test/results/clientpositive/llap/partitioned_view_add_parts.q.out
b/ql/src/test/results/clientpositive/llap/partitioned_view_add_parts.q.out
new file mode 100644
index 00000000000..035ca5781a7
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/partitioned_view_add_parts.q.out
@@ -0,0 +1,193 @@
+PREHOOK: query: create table src_t (
+ label string,
+ p_int int,
+ p_bool boolean,
+ p_date date,
+ p_dec decimal(10,2)
+) stored as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_t
+POSTHOOK: query: create table src_t (
+ label string,
+ p_int int,
+ p_bool boolean,
+ p_date date,
+ p_dec decimal(10,2)
+) stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_t
+PREHOOK: query: insert into src_t values
+ ('row1', 42, true, '2024-06-01', 99.50)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@src_t
+POSTHOOK: query: insert into src_t values
+ ('row1', 42, true, '2024-06-01', 99.50)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@src_t
+POSTHOOK: Lineage: src_t.label SCRIPT []
+POSTHOOK: Lineage: src_t.p_bool SCRIPT []
+POSTHOOK: Lineage: src_t.p_date SCRIPT []
+POSTHOOK: Lineage: src_t.p_dec SCRIPT []
+POSTHOOK: Lineage: src_t.p_int SCRIPT []
+PREHOOK: query: create view vp_int partitioned on (p_int) as select label,
p_int from src_t
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@src_t
+PREHOOK: Output: database:default
+PREHOOK: Output: default@vp_int
+POSTHOOK: query: create view vp_int partitioned on (p_int) as select label,
p_int from src_t
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@src_t
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@vp_int
+POSTHOOK: Lineage: vp_int.label SIMPLE [(src_t)src_t.FieldSchema(name:label,
type:string, comment:null), ]
+PREHOOK: query: alter view vp_int add partition (p_int=42)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: default@src_t
+PREHOOK: Input: default@vp_int
+PREHOOK: Output: default@vp_int
+POSTHOOK: query: alter view vp_int add partition (p_int=42)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: default@src_t
+POSTHOOK: Input: default@vp_int
+POSTHOOK: Output: default@vp_int
+POSTHOOK: Output: default@vp_int@p_int=42
+PREHOOK: query: show partitions vp_int
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: default@vp_int
+POSTHOOK: query: show partitions vp_int
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: default@vp_int
+p_int=42
+PREHOOK: query: create view vp_bool partitioned on (p_bool) as select label,
p_bool from src_t
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@src_t
+PREHOOK: Output: database:default
+PREHOOK: Output: default@vp_bool
+POSTHOOK: query: create view vp_bool partitioned on (p_bool) as select label,
p_bool from src_t
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@src_t
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@vp_bool
+POSTHOOK: Lineage: vp_bool.label SIMPLE [(src_t)src_t.FieldSchema(name:label,
type:string, comment:null), ]
+PREHOOK: query: alter view vp_bool add partition (p_bool=true)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: default@src_t
+PREHOOK: Input: default@vp_bool
+PREHOOK: Output: default@vp_bool
+POSTHOOK: query: alter view vp_bool add partition (p_bool=true)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: default@src_t
+POSTHOOK: Input: default@vp_bool
+POSTHOOK: Output: default@vp_bool
+POSTHOOK: Output: default@vp_bool@p_bool=true
+PREHOOK: query: show partitions vp_bool
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: default@vp_bool
+POSTHOOK: query: show partitions vp_bool
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: default@vp_bool
+p_bool=true
+PREHOOK: query: create view vp_date partitioned on (p_date) as select label,
p_date from src_t
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@src_t
+PREHOOK: Output: database:default
+PREHOOK: Output: default@vp_date
+POSTHOOK: query: create view vp_date partitioned on (p_date) as select label,
p_date from src_t
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@src_t
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@vp_date
+POSTHOOK: Lineage: vp_date.label SIMPLE [(src_t)src_t.FieldSchema(name:label,
type:string, comment:null), ]
+PREHOOK: query: alter view vp_date add partition (p_date='2024-06-01')
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: default@src_t
+PREHOOK: Input: default@vp_date
+PREHOOK: Output: default@vp_date
+POSTHOOK: query: alter view vp_date add partition (p_date='2024-06-01')
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: default@src_t
+POSTHOOK: Input: default@vp_date
+POSTHOOK: Output: default@vp_date
+POSTHOOK: Output: default@vp_date@p_date=2024-06-01
+PREHOOK: query: show partitions vp_date
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: default@vp_date
+POSTHOOK: query: show partitions vp_date
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: default@vp_date
+p_date=2024-06-01
+PREHOOK: query: create view vp_dec partitioned on (p_dec) as select label,
p_dec from src_t
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@src_t
+PREHOOK: Output: database:default
+PREHOOK: Output: default@vp_dec
+POSTHOOK: query: create view vp_dec partitioned on (p_dec) as select label,
p_dec from src_t
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@src_t
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@vp_dec
+POSTHOOK: Lineage: vp_dec.label SIMPLE [(src_t)src_t.FieldSchema(name:label,
type:string, comment:null), ]
+PREHOOK: query: alter view vp_dec add partition (p_dec=99.50)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: default@src_t
+PREHOOK: Input: default@vp_dec
+PREHOOK: Output: default@vp_dec
+POSTHOOK: query: alter view vp_dec add partition (p_dec=99.50)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: default@src_t
+POSTHOOK: Input: default@vp_dec
+POSTHOOK: Output: default@vp_dec
+POSTHOOK: Output: default@vp_dec@p_dec=99.5
+PREHOOK: query: show partitions vp_dec
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: default@vp_dec
+POSTHOOK: query: show partitions vp_dec
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: default@vp_dec
+p_dec=99.5
+PREHOOK: query: drop view vp_int
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@vp_int
+PREHOOK: Output: default@vp_int
+POSTHOOK: query: drop view vp_int
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@vp_int
+POSTHOOK: Output: default@vp_int
+PREHOOK: query: drop view vp_bool
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@vp_bool
+PREHOOK: Output: default@vp_bool
+POSTHOOK: query: drop view vp_bool
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@vp_bool
+POSTHOOK: Output: default@vp_bool
+PREHOOK: query: drop view vp_date
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@vp_date
+PREHOOK: Output: default@vp_date
+POSTHOOK: query: drop view vp_date
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@vp_date
+POSTHOOK: Output: default@vp_date
+PREHOOK: query: drop view vp_dec
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@vp_dec
+PREHOOK: Output: default@vp_dec
+POSTHOOK: query: drop view vp_dec
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@vp_dec
+POSTHOOK: Output: default@vp_dec
+PREHOOK: query: drop table src_t
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@src_t
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_t
+POSTHOOK: query: drop table src_t
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@src_t
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_t