FAQ
Repository: hive
Updated Branches:
   refs/heads/master 1b6303849 -> 99f1e5457


HIVE-12946: alter table should also add default scheme and authority for the location similar to create table (Aihua Xu, reviewed by Yongzhi Chen)


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

Branch: refs/heads/master
Commit: 99f1e54571044308e58115524dd17d69d23397d2
Parents: 1b63038
Author: Aihua Xu <aihuaxu@apache.org>
Authored: Fri Jan 29 15:24:11 2016 -0500
Committer: Aihua Xu <aihuaxu@apache.org>
Committed: Wed Feb 3 10:09:27 2016 -0500

----------------------------------------------------------------------
  .../hadoop/hive/metastore/HiveMetaStore.java | 19 +++++++++++
  .../org/apache/hadoop/hive/ql/ErrorMsg.java | 2 +-
  .../org/apache/hadoop/hive/ql/exec/DDLTask.java | 3 +-
  .../alter_table_wrong_location2.q | 3 ++
  .../queries/clientpositive/schemeAuthority3.q | 7 ++++
  .../alter_table_wrong_location2.q.out | 14 ++++++++
  .../clientpositive/schemeAuthority3.q.out | 35 ++++++++++++++++++++
  7 files changed, 80 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index dde253a..bb33693 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -3350,6 +3350,15 @@ public class HiveMetaStore extends ThriftHiveMetastore {
          }
        }

+ // Adds the missing scheme/authority for the new partition location
+ if (new_part.getSd() != null) {
+ String newLocation = new_part.getSd().getLocation();
+ if (org.apache.commons.lang.StringUtils.isNotEmpty(newLocation)) {
+ Path tblPath = wh.getDnsPath(new Path(newLocation));
+ new_part.getSd().setLocation(tblPath.toString());
+ }
+ }
+
        Partition oldPart = null;
        Exception ex = null;
        try {
@@ -3545,6 +3554,16 @@ public class HiveMetaStore extends ThriftHiveMetastore {
          newTable.putToParameters(hive_metastoreConstants.DDL_TIME, Long.toString(System
              .currentTimeMillis() / 1000));
        }
+
+ // Adds the missing scheme/authority for the new table location
+ if (newTable.getSd() != null) {
+ String newLocation = newTable.getSd().getLocation();
+ if (org.apache.commons.lang.StringUtils.isNotEmpty(newLocation)) {
+ Path tblPath = wh.getDnsPath(new Path(newLocation));
+ newTable.getSd().setLocation(tblPath.toString());
+ }
+ }
+
        boolean success = false;
        Exception ex = null;
        try {

http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
index 08bc654..d46c71f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
@@ -350,7 +350,7 @@ public enum ErrorMsg {
    TABLE_NOT_PARTITIONED(10241, "Table {0} is not a partitioned table", true),
    DATABSAE_ALREADY_EXISTS(10242, "Database {0} already exists", true),
    CANNOT_REPLACE_COLUMNS(10243, "Replace columns is not supported for table {0}. SerDe may be incompatible.", true),
- BAD_LOCATION_VALUE(10244, "{0} is not absolute or has no scheme information. Please specify a complete absolute uri with scheme information."),
+ BAD_LOCATION_VALUE(10244, "{0} is not absolute. Please specify a complete absolute uri."),
    UNSUPPORTED_ALTER_TBL_OP(10245, "{0} alter table options is not supported"),
    INVALID_BIGTABLE_MAPJOIN(10246, "{0} table chosen for streaming is not valid", true),
    MISSING_OVER_CLAUSE(10247, "Missing over clause for function : "),

http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
index 2e45913..be6ea63 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
@@ -3504,8 +3504,7 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
        String newLocation = alterTbl.getNewLocation();
        try {
          URI locUri = new URI(newLocation);
- if (!locUri.isAbsolute() || locUri.getScheme() == null
- || locUri.getScheme().trim().equals("")) {
+ if (!new Path(locUri).isAbsolute()) {
            throw new HiveException(ErrorMsg.BAD_LOCATION_VALUE, newLocation);
          }
          sd.setLocation(newLocation);

http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/ql/src/test/queries/clientnegative/alter_table_wrong_location2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/alter_table_wrong_location2.q b/ql/src/test/queries/clientnegative/alter_table_wrong_location2.q
new file mode 100644
index 0000000..ab2800e
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/alter_table_wrong_location2.q
@@ -0,0 +1,3 @@
+create table testwrongloc(id int);
+
+alter table testwrongloc set location "relative/testwrongloc";

http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/ql/src/test/queries/clientpositive/schemeAuthority3.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schemeAuthority3.q b/ql/src/test/queries/clientpositive/schemeAuthority3.q
new file mode 100644
index 0000000..4a7f5c5
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schemeAuthority3.q
@@ -0,0 +1,7 @@
+set hive.mapred.mode=nonstrict;
+
+create table noschemeTable(key string) partitioned by (value string, value2 string) row format delimited fields terminated by '\\t' stored as textfile;
+insert into noschemeTable partition(value='0', value2='clusterA') select key from src where (key = 10) order by key;
+
+alter table noschemeTable set location '/tmp/newtest';
+alter table noschemeTable partition (value='0', value2='clusterA') set location '/tmp/newtest2/value=0/value2=clusterA';

http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/ql/src/test/results/clientnegative/alter_table_wrong_location2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/alter_table_wrong_location2.q.out b/ql/src/test/results/clientnegative/alter_table_wrong_location2.q.out
new file mode 100644
index 0000000..b50786a
--- /dev/null
+++ b/ql/src/test/results/clientnegative/alter_table_wrong_location2.q.out
@@ -0,0 +1,14 @@
+PREHOOK: query: create table testwrongloc(id int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@testwrongloc
+POSTHOOK: query: create table testwrongloc(id int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@testwrongloc
+PREHOOK: query: alter table testwrongloc set location "relative/testwrongloc"
+PREHOOK: type: ALTERTABLE_LOCATION
+PREHOOK: Input: default@testwrongloc
+PREHOOK: Output: default@testwrongloc
+#### A masked pattern was here ####
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. {0} is not absolute. Please specify a complete absolute uri. relative/testwrongloc

http://git-wip-us.apache.org/repos/asf/hive/blob/99f1e545/ql/src/test/results/clientpositive/schemeAuthority3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schemeAuthority3.q.out b/ql/src/test/results/clientpositive/schemeAuthority3.q.out
new file mode 100644
index 0000000..b26bf42
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schemeAuthority3.q.out
@@ -0,0 +1,35 @@
+PREHOOK: query: create table noschemeTable(key string) partitioned by (value string, value2 string) row format delimited fields terminated by '\\t' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@noschemeTable
+POSTHOOK: query: create table noschemeTable(key string) partitioned by (value string, value2 string) row format delimited fields terminated by '\\t' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@noschemeTable
+PREHOOK: query: insert into noschemeTable partition(value='0', value2='clusterA') select key from src where (key = 10) order by key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@noschemetable@value=0/value2=clusterA
+POSTHOOK: query: insert into noschemeTable partition(value='0', value2='clusterA') select key from src where (key = 10) order by key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@noschemetable@value=0/value2=clusterA
+POSTHOOK: Lineage: noschemetable PARTITION(value=0,value2=clusterA).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+#### A masked pattern was here ####
+PREHOOK: type: ALTERTABLE_LOCATION
+PREHOOK: Input: default@noschemetable
+PREHOOK: Output: default@noschemetable
+#### A masked pattern was here ####
+POSTHOOK: type: ALTERTABLE_LOCATION
+POSTHOOK: Input: default@noschemetable
+POSTHOOK: Output: default@noschemetable
+#### A masked pattern was here ####
+PREHOOK: type: ALTERPARTITION_LOCATION
+PREHOOK: Input: default@noschemetable
+PREHOOK: Output: default@noschemetable@value=0/value2=clusterA
+#### A masked pattern was here ####
+POSTHOOK: type: ALTERPARTITION_LOCATION
+POSTHOOK: Input: default@noschemetable
+POSTHOOK: Input: default@noschemetable@value=0/value2=clusterA
+POSTHOOK: Output: default@noschemetable@value=0/value2=clusterA
+#### A masked pattern was here ####

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 1 | next ›
Discussion Overview
groupcommits @
categorieshive, hadoop
postedFeb 3, '16 at 3:10p
activeFeb 3, '16 at 3:10p
posts1
users1
websitehive.apache.org

1 user in discussion

Aihuaxu: 1 post

People

Translate

site design / logo © 2021 Grokbase