diff --git a/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java b/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java index a8adcfc42b780..3be1eaba80ef2 100644 --- a/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java +++ b/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java @@ -1245,7 +1245,7 @@ protected Void visitInsert(Insert node, Integer indent) public Void visitSetSession(SetSession node, Integer context) { builder.append("SET SESSION ") - .append(node.getName()) + .append(formatName(node.getName())) .append(" = ") .append(formatExpression(node.getValue(), parameters)); @@ -1256,7 +1256,7 @@ public Void visitSetSession(SetSession node, Integer context) public Void visitResetSession(ResetSession node, Integer context) { builder.append("RESET SESSION ") - .append(node.getName()); + .append(formatName(node.getName())); return null; } diff --git a/presto-parser/src/test/java/com/facebook/presto/sql/parser/TestSqlParser.java b/presto-parser/src/test/java/com/facebook/presto/sql/parser/TestSqlParser.java index e97a9655c4334..5e3ec73854a20 100644 --- a/presto-parser/src/test/java/com/facebook/presto/sql/parser/TestSqlParser.java +++ b/presto-parser/src/test/java/com/facebook/presto/sql/parser/TestSqlParser.java @@ -696,6 +696,19 @@ public void testResetSession() assertStatement("RESET SESSION foo", new ResetSession(QualifiedName.of("foo"))); } + @Test + public void testSessionIdentifiers() + { + assertStatement("SET SESSION \"foo-bar\".baz = 'x'", + new SetSession(QualifiedName.of("foo-bar", "baz"), new StringLiteral("x"))); + assertInvalidStatement("SET SESSION foo-bar.name = 'value'", + "mismatched input '-'. Expecting: '.', '='"); + assertStatement("RESET SESSION \"foo-bar\".baz", + new ResetSession(QualifiedName.of("foo-bar", "baz"))); + assertInvalidStatement("RESET SESSION foo-bar.name", + "mismatched input '-'. Expecting: '.', "); + } + @Test public void testShowSession() {