You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by px...@apache.org on 2015/12/15 19:23:41 UTC
hive git commit: HIVE-12663: Support quoted table names/columns when
ACID is on (Pengcheng Xiong, reviewed by Eugene Koifman)
Repository: hive
Updated Branches:
refs/heads/master c5b2c0ebb -> be98f0133
HIVE-12663: Support quoted table names/columns when ACID is on (Pengcheng Xiong, reviewed by Eugene Koifman)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/be98f013
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/be98f013
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/be98f013
Branch: refs/heads/master
Commit: be98f01332fd3ce232631d75bbc35a8252828454
Parents: c5b2c0e
Author: Pengcheng Xiong <px...@apache.org>
Authored: Tue Dec 15 10:18:27 2015 -0800
Committer: Pengcheng Xiong <px...@apache.org>
Committed: Tue Dec 15 10:18:27 2015 -0800
----------------------------------------------------------------------
.../ql/parse/UpdateDeleteSemanticAnalyzer.java | 21 ++++--
..._after_multiple_inserts_special_characters.q | 25 +++++++
...er_multiple_inserts_special_characters.q.out | 78 ++++++++++++++++++++
3 files changed, 117 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/be98f013/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
index 4c69534..5b4365c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
@@ -35,6 +35,7 @@ import org.apache.hadoop.hive.ql.hooks.WriteEntity;
import org.apache.hadoop.hive.ql.io.AcidUtils;
import org.apache.hadoop.hive.ql.lib.Node;
import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.HiveUtils;
import org.apache.hadoop.hive.ql.metadata.InvalidTableException;
import org.apache.hadoop.hive.ql.metadata.Table;
import org.apache.hadoop.hive.ql.metadata.VirtualColumn;
@@ -143,16 +144,20 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
List<String> bucketingCols = mTable.getBucketCols();
rewrittenQueryStr.append("insert into table ");
- rewrittenQueryStr.append(getDotName(tableName));
+ rewrittenQueryStr.append(getDotName(new String[] {
+ HiveUtils.unparseIdentifier(tableName[0], this.conf),
+ HiveUtils.unparseIdentifier(tableName[1], this.conf) }));
// If the table is partitioned we have to put the partition() clause in
if (partCols != null && partCols.size() > 0) {
rewrittenQueryStr.append(" partition (");
boolean first = true;
for (FieldSchema fschema : partCols) {
- if (first) first = false;
- else rewrittenQueryStr.append(", ");
- rewrittenQueryStr.append(fschema.getName());
+ if (first)
+ first = false;
+ else
+ rewrittenQueryStr.append(", ");
+ rewrittenQueryStr.append(HiveUtils.unparseIdentifier(fschema.getName(), this.conf));
}
rewrittenQueryStr.append(")");
}
@@ -214,7 +219,7 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
rewrittenQueryStr.append(',');
String name = nonPartCols.get(i).getName();
ASTNode setCol = setCols.get(name);
- rewrittenQueryStr.append(name);
+ rewrittenQueryStr.append(HiveUtils.unparseIdentifier(name, this.conf));
if (setCol != null) {
// This is one of the columns we're setting, record it's position so we can come back
// later and patch it up.
@@ -228,11 +233,13 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
if (partCols != null) {
for (FieldSchema fschema : partCols) {
rewrittenQueryStr.append(", ");
- rewrittenQueryStr.append(fschema.getName());
+ rewrittenQueryStr.append(HiveUtils.unparseIdentifier(fschema.getName(), this.conf));
}
}
rewrittenQueryStr.append(" from ");
- rewrittenQueryStr.append(getDotName(tableName));
+ rewrittenQueryStr.append(getDotName(new String[] {
+ HiveUtils.unparseIdentifier(tableName[0], this.conf),
+ HiveUtils.unparseIdentifier(tableName[1], this.conf) }));
ASTNode where = null;
int whereIndex = deleting() ? 1 : 2;
http://git-wip-us.apache.org/repos/asf/hive/blob/be98f013/ql/src/test/queries/clientpositive/update_after_multiple_inserts_special_characters.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/update_after_multiple_inserts_special_characters.q b/ql/src/test/queries/clientpositive/update_after_multiple_inserts_special_characters.q
new file mode 100644
index 0000000..65d3fb3
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/update_after_multiple_inserts_special_characters.q
@@ -0,0 +1,25 @@
+set hive.mapred.mode=nonstrict;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+
+-- SORT_QUERY_RESULTS
+
+create table `aci/d_u/ami`(i int,
+ `d?*de e` decimal(5,2),
+ vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true');
+
+insert into table `aci/d_u/ami` values
+ (1, 109.23, 'mary had a little lamb'),
+ (6553, 923.19, 'its fleece was white as snow');
+
+insert into table `aci/d_u/ami` values
+ (10, 119.23, 'and everywhere that mary went'),
+ (65530, 823.19, 'the lamb was sure to go');
+
+select * from `aci/d_u/ami` order by `d?*de e`;
+
+update `aci/d_u/ami` set `d?*de e` = 3.14 where `d?*de e` = 109.23 or `d?*de e` = 119.23;
+
+select * from `aci/d_u/ami` order by `d?*de e`;
http://git-wip-us.apache.org/repos/asf/hive/blob/be98f013/ql/src/test/results/clientpositive/update_after_multiple_inserts_special_characters.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/update_after_multiple_inserts_special_characters.q.out b/ql/src/test/results/clientpositive/update_after_multiple_inserts_special_characters.q.out
new file mode 100644
index 0000000..b85db4f
--- /dev/null
+++ b/ql/src/test/results/clientpositive/update_after_multiple_inserts_special_characters.q.out
@@ -0,0 +1,78 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+create table `aci/d_u/ami`(i int,
+ `d?*de e` decimal(5,2),
+ vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@aci/d_u/ami
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+create table `aci/d_u/ami`(i int,
+ `d?*de e` decimal(5,2),
+ vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@aci/d_u/ami
+PREHOOK: query: insert into table `aci/d_u/ami` values
+ (1, 109.23, 'mary had a little lamb'),
+ (6553, 923.19, 'its fleece was white as snow')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@aci/d_u/ami
+POSTHOOK: query: insert into table `aci/d_u/ami` values
+ (1, 109.23, 'mary had a little lamb'),
+ (6553, 923.19, 'its fleece was white as snow')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@aci/d_u/ami
+POSTHOOK: Lineage: aci/d_u/ami.d?*de e EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: aci/d_u/ami.i EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: aci/d_u/ami.vc EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+PREHOOK: query: insert into table `aci/d_u/ami` values
+ (10, 119.23, 'and everywhere that mary went'),
+ (65530, 823.19, 'the lamb was sure to go')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@aci/d_u/ami
+POSTHOOK: query: insert into table `aci/d_u/ami` values
+ (10, 119.23, 'and everywhere that mary went'),
+ (65530, 823.19, 'the lamb was sure to go')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@aci/d_u/ami
+POSTHOOK: Lineage: aci/d_u/ami.d?*de e EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: aci/d_u/ami.i EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: aci/d_u/ami.vc EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+PREHOOK: query: select * from `aci/d_u/ami` order by `d?*de e`
+PREHOOK: type: QUERY
+PREHOOK: Input: default@aci/d_u/ami
+#### A masked pattern was here ####
+POSTHOOK: query: select * from `aci/d_u/ami` order by `d?*de e`
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@aci/d_u/ami
+#### A masked pattern was here ####
+1 109.23 mary had a little lamb
+10 119.23 and everywhere that mary went
+6553 923.19 its fleece was white as snow
+65530 823.19 the lamb was sure to go
+PREHOOK: query: update `aci/d_u/ami` set `d?*de e` = 3.14 where `d?*de e` = 109.23 or `d?*de e` = 119.23
+PREHOOK: type: QUERY
+PREHOOK: Input: default@aci/d_u/ami
+PREHOOK: Output: default@aci/d_u/ami
+POSTHOOK: query: update `aci/d_u/ami` set `d?*de e` = 3.14 where `d?*de e` = 109.23 or `d?*de e` = 119.23
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@aci/d_u/ami
+POSTHOOK: Output: default@aci/d_u/ami
+PREHOOK: query: select * from `aci/d_u/ami` order by `d?*de e`
+PREHOOK: type: QUERY
+PREHOOK: Input: default@aci/d_u/ami
+#### A masked pattern was here ####
+POSTHOOK: query: select * from `aci/d_u/ami` order by `d?*de e`
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@aci/d_u/ami
+#### A masked pattern was here ####
+1 3.14 mary had a little lamb
+10 3.14 and everywhere that mary went
+6553 923.19 its fleece was white as snow
+65530 823.19 the lamb was sure to go