dssysolyatin commented on code in PR #3177:
URL: https://github.com/apache/calcite/pull/3177#discussion_r1817172397


##########
babel/src/test/java/org/apache/calcite/test/BabelParserTest.java:
##########
@@ -358,41 +358,82 @@ private void checkParseInfixCast(String sqlType) {
         .ok("SELECT (ARRAY['a', 'b'])");
   }
 
-  @Test void testPostgresqlShow() {
+  @Test void testPostgresSqlShow() {
     SqlParserFixture f = fixture().withDialect(PostgresqlSqlDialect.DEFAULT);
     f.sql("SHOW autovacuum")
         .ok("SHOW \"autovacuum\"");
+    f.sql("SHOW \"autovacuum\"")
+        .same();
+    f.sql("SHOW ALL")
+        .ok("SHOW \"all\"");
+    f.sql("SHOW TIME ZONE")
+        .ok("SHOW \"timezone\"");
+    f.sql("SHOW SESSION AUTHORIZATION")
+        .ok("SHOW \"session_authorization\"");
     f.sql("SHOW TRANSACTION ISOLATION LEVEL")
         .ok("SHOW \"transaction_isolation\"");
   }
 
-  @Test void testPostgresqlSetOption() {
+  @Test void testPostgresSqlSetOption() {
     SqlParserFixture f = fixture().withDialect(PostgresqlSqlDialect.DEFAULT);
     f.sql("SET SESSION autovacuum = true")
-        .ok("ALTER SESSION SET \"autovacuum\" = TRUE");
+        .ok("SET \"autovacuum\" = TRUE");
     f.sql("SET SESSION autovacuum = DEFAULT")
-        .ok("ALTER SESSION SET \"autovacuum\" = DEFAULT");
+        .ok("SET \"autovacuum\" = DEFAULT");
     f.sql("SET LOCAL autovacuum TO 'DEFAULT'")
-        .ok("ALTER LOCAL SET \"autovacuum\" = 'DEFAULT'");
+        .ok("SET LOCAL \"autovacuum\" = 'DEFAULT'");
 
     f.sql("SET SESSION TIME ZONE DEFAULT")
-        .ok("ALTER SESSION SET \"timezone\" = DEFAULT");
+        .ok("SET TIME ZONE DEFAULT");

Review Comment:
   Previous output was wrong. If execute previous query against PostgreSQL
   ```
   ALTER SESSION SET "timezone" = DEFAULT;
   ```
   PostgreSQL throws an exception:
   ```
   psql:commands.sql:1: ERROR:  syntax error at or near "SESSION"
   LINE 1: ALTER SESSION SET "timezone" = DEFAULT;
   ```
   
   The valid sql is SET TIME ZONE DEFAULT



##########
core/src/main/java/org/apache/calcite/sql/SqlBasicFunction.java:
##########
@@ -42,7 +42,7 @@
  * behavior only by providing strategy objects, not by overriding methods in a
  * subclass.
  */
-public class SqlBasicFunction extends SqlFunction {
+public final class SqlBasicFunction extends SqlFunction {

Review Comment:
    I'll remove it. I don’t remember why I added it—thanks for pointing it out.



##########
babel/src/test/java/org/apache/calcite/test/BabelParserTest.java:
##########
@@ -358,41 +358,82 @@ private void checkParseInfixCast(String sqlType) {
         .ok("SELECT (ARRAY['a', 'b'])");
   }
 
-  @Test void testPostgresqlShow() {
+  @Test void testPostgresSqlShow() {
     SqlParserFixture f = fixture().withDialect(PostgresqlSqlDialect.DEFAULT);
     f.sql("SHOW autovacuum")
         .ok("SHOW \"autovacuum\"");
+    f.sql("SHOW \"autovacuum\"")
+        .same();
+    f.sql("SHOW ALL")
+        .ok("SHOW \"all\"");
+    f.sql("SHOW TIME ZONE")
+        .ok("SHOW \"timezone\"");
+    f.sql("SHOW SESSION AUTHORIZATION")
+        .ok("SHOW \"session_authorization\"");
     f.sql("SHOW TRANSACTION ISOLATION LEVEL")
         .ok("SHOW \"transaction_isolation\"");
   }
 
-  @Test void testPostgresqlSetOption() {
+  @Test void testPostgresSqlSetOption() {
     SqlParserFixture f = fixture().withDialect(PostgresqlSqlDialect.DEFAULT);
     f.sql("SET SESSION autovacuum = true")
-        .ok("ALTER SESSION SET \"autovacuum\" = TRUE");
+        .ok("SET \"autovacuum\" = TRUE");
     f.sql("SET SESSION autovacuum = DEFAULT")
-        .ok("ALTER SESSION SET \"autovacuum\" = DEFAULT");
+        .ok("SET \"autovacuum\" = DEFAULT");
     f.sql("SET LOCAL autovacuum TO 'DEFAULT'")
-        .ok("ALTER LOCAL SET \"autovacuum\" = 'DEFAULT'");
+        .ok("SET LOCAL \"autovacuum\" = 'DEFAULT'");
 
     f.sql("SET SESSION TIME ZONE DEFAULT")
-        .ok("ALTER SESSION SET \"timezone\" = DEFAULT");
+        .ok("SET TIME ZONE DEFAULT");
     f.sql("SET SESSION TIME ZONE LOCAL")
-        .ok("ALTER SESSION SET \"timezone\" = 'LOCAL'");
-    f.sql("SET TIME ZONE 'PST8PDT'")
-        .ok("SET \"timezone\" = 'PST8PDT'");
-    f.sql("SET TIME ZONE INTERVAL '-08:00' HOUR TO MINUTE")
-        .ok("SET \"timezone\" = INTERVAL '-08:00' HOUR TO MINUTE");
+        .ok("SET TIME ZONE LOCAL");
+    f.sql("SET TIME ZONE 'PST8PDT'").same();
+    f.sql("SET TIME ZONE INTERVAL '-08:00' HOUR TO MINUTE").same();
+    f.sql("SET timezone = 'PST8PDT'")
+            .ok("SET \"timezone\" = 'PST8PDT'");
+
+    f.sql("SET SESSION AUTHORIZATION DEFAULT")
+        .ok("SET \"session_authorization\" = DEFAULT");
+    f.sql("SET SESSION AUTHORIZATION DEFAULT")
+        .ok("SET \"session_authorization\" = DEFAULT");
 
     f.sql("SET search_path = public,public,\"$user\"")
         .ok("SET \"search_path\" = \"public\", \"public\", \"$user\"");
     f.sql("SET SCHEMA public,public,\"$user\"")
         .ok("SET \"search_path\" = \"public\", \"public\", \"$user\"");
     f.sql("SET NAMES iso_8859_15_to_utf8")
         .ok("SET \"client_encoding\" = \"iso_8859_15_to_utf8\"");
+
+
+    f.sql("SET TRANSACTION READ ONLY").same();
+    f.sql("SET TRANSACTION READ WRITE").same();
+    f.sql("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE").same();
+    f.sql("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY, 
DEFERRABLE").same();
+    f.sql("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ WRITE, NOT 
DEFERRABLE").same();
+
+    f.sql("SET TRANSACTION SNAPSHOT '000003A1-1'").same();
+
+    f.sql("SET ROLE NONE").same();
+    f.sql("SET ROLE 'paul'").same();
+  }
+
+  @Test void testPostgresSqlReset() {
+    SqlParserFixture f = fixture().withDialect(PostgresqlSqlDialect.DEFAULT);
+
+    f.sql("RESET ALL").same();
+    f.sql("RESET ROLE")
+        .ok("RESET \"role\"");
+    f.sql("RESET SESSION AUTHORIZATION")
+        .ok("RESET \"session_authorization\"");

Review Comment:
   This is correct.
   
   RESET SESSION AUTHORIZATION is equivalent to RESET \"session_authorization\".
   
   SESSION AUTHORIZATION is simply syntactic sugar.
   
   See 
https://github.com/postgres/postgres/blob/924e03917d6f7c7536b2a1228b5422f175f58f9e/src/backend/parser/gram.y#L1767
   
   I'll add a comment to the test to clarify.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to