diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 0f83799..bc39e55 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -1637,6 +1637,8 @@ command_no_begin(const char *query)
 		if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0)
 			return true;
 
+		/* ALTER TYPE name ADD VALUE isn't allowed in xacts */
+
 		return false;
 	}
 
@@ -1662,6 +1664,24 @@ command_no_begin(const char *query)
 			return true;
 		if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0)
 			return true;
+
+		/* DROP INDEX CONCURRENTLY isn't allowed in xacts */
+		if (wordlen == 5 && pg_strncasecmp(query, "index", 5) == 0)
+		{
+			query += wordlen;
+
+			query = skip_white_space(query);
+
+			wordlen = 0;
+			while (isalpha((unsigned char) query[wordlen]))
+				wordlen += PQmblen(&query[wordlen], pset.encoding);
+
+			if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0)
+				return true;
+
+			return false;
+		}
+
 		return false;
 	}
 
diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out
index 3764127..8745a84 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -2123,3 +2123,47 @@ execute q;
 +------------------+-------------------+
 
 deallocate q;
+--
+-- AUTOCOMMIT
+--
+-- Enable autocommit-off mode, make sure we are not inside a transaction
+\set AUTOCOMMIT OFF
+SELECT 1;
++-[ RECORD 1 ]---+
+| ?column? | 1   |
++----------+-----+
+
+ROLLBACK;
+--
+-- Commands which cannot be executed within a transaction
+-- should not return an error, as we have not begun a transaction yet.
+--
+-- Statements that call PreventTransactionChain() should not implicitly create a transaction.
+--
+-- ALTER SYSTEM
+ALTER SYSTEM SET authentication_timeout = 400;
+ALTER SYSTEM RESET authentication_timeout;
+-- CREATE database
+CREATE DATABASE autocommitregress;
+\c autocommitregress
+-- ALTER TYPE name ADD VALUE
+CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
+COMMIT;
+-- ALTER TYPE mood ADD VALUE ('buggy'); #This doesn't work correctly yet
+-- CREATE INDEX CONCURRENTLY
+CREATE TABLE mytest(i integer);
+COMMIT;
+CREATE INDEX CONCURRENTLY concurindex on mytest(i);
+DROP INDEX CONCURRENTLY concurindex;
+-- REINDEX DATABASE
+SET client_min_messages TO WARNING;
+COMMIT;
+REINDEX DATABASE autocommitregress;
+SET client_min_messages TO DEFAULT;
+-- DROP database
+\c postgres
+DROP DATABASE autocommitregress;
+--
+--
+-- Cleanup
+--
diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql
index 5ccc68f..2d8ab13 100644
--- a/src/test/regress/sql/psql.sql
+++ b/src/test/regress/sql/psql.sql
@@ -276,3 +276,54 @@ execute q;
 execute q;
 
 deallocate q;
+
+
+--
+-- AUTOCOMMIT
+--
+-- Enable autocommit-off mode, make sure we are not inside a transaction
+\set AUTOCOMMIT OFF
+SELECT 1;
+ROLLBACK;
+--
+-- Commands which cannot be executed within a transaction
+-- should not return an error, as we have not begun a transaction yet.
+--
+-- Statements that call PreventTransactionChain() should not implicitly create a transaction.
+--
+
+-- ALTER SYSTEM
+ALTER SYSTEM SET authentication_timeout = 400;
+ALTER SYSTEM RESET authentication_timeout;
+
+-- CREATE database
+CREATE DATABASE autocommitregress;
+
+\c autocommitregress
+-- ALTER TYPE name ADD VALUE
+CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
+COMMIT;
+-- ALTER TYPE mood ADD VALUE ('buggy'); #This doesn't work correctly yet
+
+-- CREATE INDEX CONCURRENTLY
+CREATE TABLE mytest(i integer);
+COMMIT;
+CREATE INDEX CONCURRENTLY concurindex on mytest(i);
+DROP INDEX CONCURRENTLY concurindex;
+
+-- REINDEX DATABASE
+SET client_min_messages TO WARNING;
+COMMIT;
+REINDEX DATABASE autocommitregress;
+SET client_min_messages TO DEFAULT;
+
+-- DROP database
+\c postgres
+DROP DATABASE autocommitregress;
+
+--
+
+
+--
+-- Cleanup
+--
