diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 1076dfd4c10e51c7a6ba1ad9101941bc473da483..5cdf10b2a20a248f8db98e79283b597548d8facf 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -862,7 +862,7 @@ private String unparseExprForValuesClause(ASTNode expr) throws SemanticException return expr.getText(); case HiveParser.StringLiteral: - return PlanUtils.stripQuotes(expr.getText()); + return BaseSemanticAnalyzer.unescapeSQLString(expr.getText()); case HiveParser.KW_FALSE: // UDFToBoolean casts any non-empty string to true, so set this to false diff --git a/ql/src/test/queries/clientpositive/insertvalues_espchars.q b/ql/src/test/queries/clientpositive/insertvalues_espchars.q new file mode 100644 index 0000000000000000000000000000000000000000..675786b8ebab44ec3498ffa82a9073967ea217ff --- /dev/null +++ b/ql/src/test/queries/clientpositive/insertvalues_espchars.q @@ -0,0 +1,5 @@ +drop table if exists escstr; +create table escstr(val string); +insert into escstr values('It\'s a simple test'); +select * from escstr; + diff --git a/ql/src/test/results/clientpositive/insertvalues_espchars.q.out b/ql/src/test/results/clientpositive/insertvalues_espchars.q.out new file mode 100644 index 0000000000000000000000000000000000000000..caa35d603b7ec85407c662d81ad142304731980b --- /dev/null +++ b/ql/src/test/results/clientpositive/insertvalues_espchars.q.out @@ -0,0 +1,30 @@ +PREHOOK: query: drop table if exists escstr +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists escstr +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table escstr(val string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@escstr +POSTHOOK: query: create table escstr(val string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@escstr +PREHOOK: query: insert into escstr values('It\'s a simple test') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@escstr +POSTHOOK: query: insert into escstr values('It\'s a simple test') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@escstr +POSTHOOK: Lineage: escstr.val SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from escstr +PREHOOK: type: QUERY +PREHOOK: Input: default@escstr +#### A masked pattern was here #### +POSTHOOK: query: select * from escstr +POSTHOOK: type: QUERY +POSTHOOK: Input: default@escstr +#### A masked pattern was here #### +It's a simple test