diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ParseDriver.java ql/src/java/org/apache/hadoop/hive/ql/parse/ParseDriver.java index e8bd719..1e6826f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ParseDriver.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ParseDriver.java @@ -201,7 +201,9 @@ public ASTNode parse(String command, Context ctx) throws ParseException { throw new ParseException(parser.errors); } - return (ASTNode) r.getTree(); + ASTNode tree = (ASTNode) r.getTree(); + tree.setUnknownTokenBoundaries(); + return tree; } diff --git ql/src/test/queries/clientpositive/create_view_translate.q ql/src/test/queries/clientpositive/create_view_translate.q index 2199750..11ba9c8 100644 --- ql/src/test/queries/clientpositive/create_view_translate.q +++ ql/src/test/queries/clientpositive/create_view_translate.q @@ -11,3 +11,14 @@ describe formatted w; drop view v; drop view w; + + +-- HIVE-4116 Can't use views using map datatype. + +CREATE TABLE items (id INT, name STRING, info MAP); + +explain +CREATE VIEW priceview AS SELECT items.id, items.info['price'] FROM items; +CREATE VIEW priceview AS SELECT items.id, items.info['price'] FROM items; + +select * from priceview; diff --git ql/src/test/results/clientpositive/create_view_translate.q.out ql/src/test/results/clientpositive/create_view_translate.q.out index ac9ea8b..ae7d588 100644 --- ql/src/test/results/clientpositive/create_view_translate.q.out +++ ql/src/test/results/clientpositive/create_view_translate.q.out @@ -99,3 +99,52 @@ POSTHOOK: query: drop view w POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@w POSTHOOK: Output: default@w +PREHOOK: query: -- HIVE-4116 Can't use views using map datatype. + +CREATE TABLE items (id INT, name STRING, info MAP) +PREHOOK: type: CREATETABLE +POSTHOOK: query: -- HIVE-4116 Can't use views using map datatype. + +CREATE TABLE items (id INT, name STRING, info MAP) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@items +PREHOOK: query: explain +CREATE VIEW priceview AS SELECT items.id, items.info['price'] FROM items +PREHOOK: type: CREATEVIEW +POSTHOOK: query: explain +CREATE VIEW priceview AS SELECT items.id, items.info['price'] FROM items +POSTHOOK: type: CREATEVIEW +ABSTRACT SYNTAX TREE: + (TOK_CREATEVIEW (TOK_TABNAME priceview) (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME items))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL items) id)) (TOK_SELEXPR ([ (. (TOK_TABLE_OR_COL items) info) 'price')))))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Create View Operator: + Create View + if not exists: false + is alter view as select: false + or replace: false + columns: id int, _c1 string + expanded text: SELECT `items`.`id`, `items`.`info`['price'] FROM `default`.`items` + name: priceview + original text: SELECT items.id, items.info['price'] FROM items + + +PREHOOK: query: CREATE VIEW priceview AS SELECT items.id, items.info['price'] FROM items +PREHOOK: type: CREATEVIEW +POSTHOOK: query: CREATE VIEW priceview AS SELECT items.id, items.info['price'] FROM items +POSTHOOK: type: CREATEVIEW +POSTHOOK: Output: default@priceview +PREHOOK: query: select * from priceview +PREHOOK: type: QUERY +PREHOOK: Input: default@items +PREHOOK: Input: default@priceview +#### A masked pattern was here #### +POSTHOOK: query: select * from priceview +POSTHOOK: type: QUERY +POSTHOOK: Input: default@items +POSTHOOK: Input: default@priceview +#### A masked pattern was here ####