diff --git a/src/test/regress/expected/variable.out b/src/test/regress/expected/variable.out
new file mode 100644
index 0000000..fa62672
--- /dev/null
+++ b/src/test/regress/expected/variable.out
@@ -0,0 +1,168 @@
+--
+-- VARIABLE (src/backend/commands/variable.c)
+--
+-- Should fail. Ensure non-existent ROLEs throw error on SET ROLE / SET SESSION AUTHORIZATION
+SET ROLE role_var1;
+ERROR:  role "role_var1" does not exist
+SET SESSION AUTHORIZATION role_var1;
+ERROR:  role "role_var1" does not exist
+/*-- SET SESSION AUTHORIZATION should throw an error when in hung transaction state
+BEGIN TRANSACTION;
+INVALID_COMMAND;
+SET SESSION AUTHORIZATION role_var1;
+ROLLBACK;*/
+BEGIN TRANSACTION;
+INVALID_COMMAND;
+ERROR:  syntax error at or near "INVALID_COMMAND"
+LINE 1: INVALID_COMMAND;
+        ^
+SET ROLE role_var1;
+ERROR:  current transaction is aborted, commands ignored until end of transaction block
+ROLLBACK;
+-- Should work. Valid values / methods used
+SET SEED = 0.5;
+SET SEED TO 0.4;
+SELECT setseed(0.5);
+ setseed 
+---------
+ 
+(1 row)
+
+-- Should fail. SET TRANSACTION NOT DEFERRABLE not possible within a Sub transaction
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY;
+SAVEPOINT savepoint_var1;
+SET TRANSACTION NOT DEFERRABLE;
+ERROR:  SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction
+ROLLBACK TO SAVEPOINT savepoint_var1;
+ROLLBACK TRANSACTION;
+-- Should fail. SET TRANSACTION DEFERRABLE not possible within a Sub transaction
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY;
+SAVEPOINT savepoint_var2;
+SET TRANSACTION DEFERRABLE;
+ERROR:  SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction
+ROLLBACK TO SAVEPOINT savepoint_var2;
+ROLLBACK TRANSACTION;
+-- Should fail. SET TRANSACTION DEFERRABLE not possible if not first statement of transaction;
+BEGIN TRANSACTION;
+SELECT 1;
+ ?column? 
+----------
+        1
+(1 row)
+
+SET TRANSACTION NOT DEFERRABLE;
+ERROR:  SET TRANSACTION [NOT] DEFERRABLE must be called before any query
+ROLLBACK TRANSACTION;
+-- Should work. Ensure correct messages are displayed for all TRANSACTION ISOLATION LEVELs
+BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SHOW TRANSACTION ISOLATION LEVEL;
+ transaction_isolation 
+-----------------------
+ read committed
+(1 row)
+
+ROLLBACK TRANSACTION;
+BEGIN TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+SHOW TRANSACTION ISOLATION LEVEL;
+ transaction_isolation 
+-----------------------
+ read uncommitted
+(1 row)
+
+ROLLBACK TRANSACTION;
+BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
+SHOW TRANSACTION ISOLATION LEVEL;
+ transaction_isolation 
+-----------------------
+ repeatable read
+(1 row)
+
+ROLLBACK TRANSACTION;
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SHOW TRANSACTION ISOLATION LEVEL;
+ transaction_isolation 
+-----------------------
+ serializable
+(1 row)
+
+ROLLBACK TRANSACTION;
+-- Should fail. Ensure that change in ISOLATION LEVEL should happen before first transaction
+BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SELECT 1;
+ ?column? 
+----------
+        1
+(1 row)
+
+SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+ERROR:  SET TRANSACTION ISOLATION LEVEL must be called before any query
+SHOW TRANSACTION ISOLATION LEVEL;
+ERROR:  current transaction is aborted, commands ignored until end of transaction block
+ROLLBACK TRANSACTION;
+-- Should fail. Ensure that change in ISOLATION LEVEL should not happen within a sub-transaction
+BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SAVEPOINT savepoint_var3;
+SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+ERROR:  SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction
+ROLLBACK TO SAVEPOINT savepoint_var3;
+ROLLBACK TRANSACTION;
+-- Should fail. Invalid DATESTYLE arguments
+SET DATESTYLE = ISO, SQL;
+ERROR:  invalid value for parameter "DateStyle": "iso, sql"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = SQL, ISO;
+ERROR:  invalid value for parameter "DateStyle": "sql, iso"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = ISO, POSTGRES;
+ERROR:  invalid value for parameter "DateStyle": "iso, postgres"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = POSTGRES, ISO;
+ERROR:  invalid value for parameter "DateStyle": "postgres, iso"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = ISO, GERMAN;
+ERROR:  invalid value for parameter "DateStyle": "iso, german"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = GERMAN, ISO;
+ERROR:  invalid value for parameter "DateStyle": "german, iso"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = DMY, MDY;
+ERROR:  invalid value for parameter "DateStyle": "dmy, mdy"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = YMD, DMY;
+ERROR:  invalid value for parameter "DateStyle": "ymd, dmy"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = YMD, EURO;
+ERROR:  invalid value for parameter "DateStyle": "ymd, euro"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = YMD, MDY;
+ERROR:  invalid value for parameter "DateStyle": "ymd, mdy"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = YMD, US;
+ERROR:  invalid value for parameter "DateStyle": "ymd, us"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = YMD, NONEURO;
+ERROR:  invalid value for parameter "DateStyle": "ymd, noneuro"
+DETAIL:  Conflicting "datestyle" specifications.
+SET DATESTYLE = ISO, DEFAULT;
+ERROR:  syntax error at or near "DEFAULT"
+LINE 1: SET DATESTYLE = ISO, DEFAULT;
+                             ^
+SET DATESTYLE = DEFAULT, ISO;
+ERROR:  syntax error at or near ","
+LINE 1: SET DATESTYLE = DEFAULT, ISO;
+                               ^
+SET DATESTYLE = invalid_keyword;
+ERROR:  invalid value for parameter "DateStyle": "invalid_keyword"
+DETAIL:  Unrecognized key word: "invalid_keyword".
+-- Should work. Valid value for SET TIMEZONE INTERVAL
+SET DATESTYLE = DEFAULT;
+-- Should work. Valid value for SET TIMEZONE INTERVAL
+SET TIME ZONE INTERVAL '+05:30' HOUR TO MINUTE;
+-- Should fail. Invalid values for INTERVAL in SET TIMEZONE INTERVAL
+SET TIME ZONE INTERVAL '1 month +05:30' HOUR TO MINUTE;
+ERROR:  invalid value for parameter "TimeZone": "INTERVAL '@ 1 mon 5 hours 30 mins'"
+DETAIL:  Cannot specify months in time zone interval.
+SET TIME ZONE INTERVAL '1 day +05:30' HOUR TO MINUTE;
+ERROR:  invalid value for parameter "TimeZone": "INTERVAL '@ 1 day 5 hours 30 mins'"
+DETAIL:  Cannot specify days in time zone interval.
+SET TIME ZONE INTERVAL '+05:30:60' HOUR;
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index 2af28b1..ebf61f2 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -83,7 +83,7 @@ test: select_into select_distinct select_distinct_on select_implicit select_havi
 # ----------
 # Another group of parallel tests
 # ----------
-test: privileges security_label collate matview
+test: privileges security_label collate matview variable
 
 # ----------
 # Another group of parallel tests
diff --git a/src/test/regress/sql/variable.sql b/src/test/regress/sql/variable.sql
new file mode 100644
index 0000000..bba4081
--- /dev/null
+++ b/src/test/regress/sql/variable.sql
@@ -0,0 +1,103 @@
+--
+-- VARIABLE (src/backend/commands/variable.c)
+--
+
+-- Should fail. Ensure non-existent ROLEs throw error on SET ROLE / SET SESSION AUTHORIZATION
+SET ROLE role_var1;
+SET SESSION AUTHORIZATION role_var1;
+
+/*-- SET SESSION AUTHORIZATION should throw an error when in hung transaction state
+BEGIN TRANSACTION;
+INVALID_COMMAND;
+SET SESSION AUTHORIZATION role_var1;
+ROLLBACK;*/
+
+
+BEGIN TRANSACTION;
+INVALID_COMMAND;
+SET ROLE role_var1;
+ROLLBACK;
+
+-- Should work. Valid values / methods used
+SET SEED = 0.5;
+SET SEED TO 0.4;
+SELECT setseed(0.5);
+
+-- Should fail. SET TRANSACTION NOT DEFERRABLE not possible within a Sub transaction
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY;
+SAVEPOINT savepoint_var1;
+SET TRANSACTION NOT DEFERRABLE;
+ROLLBACK TO SAVEPOINT savepoint_var1;
+ROLLBACK TRANSACTION;
+
+-- Should fail. SET TRANSACTION DEFERRABLE not possible within a Sub transaction
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY;
+SAVEPOINT savepoint_var2;
+SET TRANSACTION DEFERRABLE;
+ROLLBACK TO SAVEPOINT savepoint_var2;
+ROLLBACK TRANSACTION;
+
+-- Should fail. SET TRANSACTION DEFERRABLE not possible if not first statement of transaction;
+BEGIN TRANSACTION;
+SELECT 1;
+SET TRANSACTION NOT DEFERRABLE;
+ROLLBACK TRANSACTION;
+
+-- Should work. Ensure correct messages are displayed for all TRANSACTION ISOLATION LEVELs
+BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SHOW TRANSACTION ISOLATION LEVEL;
+ROLLBACK TRANSACTION;
+BEGIN TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+SHOW TRANSACTION ISOLATION LEVEL;
+ROLLBACK TRANSACTION;
+BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
+SHOW TRANSACTION ISOLATION LEVEL;
+ROLLBACK TRANSACTION;
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SHOW TRANSACTION ISOLATION LEVEL;
+ROLLBACK TRANSACTION;
+
+-- Should fail. Ensure that change in ISOLATION LEVEL should happen before first transaction
+BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SELECT 1;
+SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+SHOW TRANSACTION ISOLATION LEVEL;
+ROLLBACK TRANSACTION;
+
+-- Should fail. Ensure that change in ISOLATION LEVEL should not happen within a sub-transaction
+BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SAVEPOINT savepoint_var3;
+SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+ROLLBACK TO SAVEPOINT savepoint_var3;
+ROLLBACK TRANSACTION;
+
+-- Should fail. Invalid DATESTYLE arguments
+SET DATESTYLE = ISO, SQL;
+SET DATESTYLE = SQL, ISO;
+SET DATESTYLE = ISO, POSTGRES;
+SET DATESTYLE = POSTGRES, ISO;
+SET DATESTYLE = ISO, GERMAN;
+SET DATESTYLE = GERMAN, ISO;
+SET DATESTYLE = DMY, MDY;
+SET DATESTYLE = DMY, YMD;
+SET DATESTYLE = YMD, DMY;
+SET DATESTYLE = YMD, EURO;
+SET DATESTYLE = YMD, MDY;
+SET DATESTYLE = YMD, US;
+SET DATESTYLE = YMD, NONEURO;
+SET DATESTYLE = ISO, DEFAULT;
+SET DATESTYLE = DEFAULT, ISO;
+SET DATESTYLE = invalid_keyword;
+
+-- Should work. Valid value for SET TIMEZONE INTERVAL
+SET DATESTYLE TO DEFAULT;
+
+-- Should work. Valid value for SET TIMEZONE INTERVAL
+SET TIME ZONE INTERVAL '+05:30' HOUR TO MINUTE;
+
+-- Should fail. Invalid values for INTERVAL in SET TIMEZONE INTERVAL
+SET TIME ZONE INTERVAL '1 month +05:30' HOUR TO MINUTE;
+SET TIME ZONE INTERVAL '1 day +05:30' HOUR TO MINUTE;
+SET TIME ZONE INTERVAL '+05:30:60' HOUR;
+
+
