diff --git a/test/cases/transaction/autocommit.test b/test/cases/transaction/autocommit.test
new file mode 100644
index 0000000000000000000000000000000000000000..4f249a47943354d543bed03e8dcc42b332d8ab1a
--- /dev/null
+++ b/test/cases/transaction/autocommit.test
@@ -0,0 +1,49 @@
+-- @bvt:issue#3364
+set autocommit=1;
+create table t1(a int);
+start transaction;
+insert into t1 values(1);
+start transaction;
+select * from t1;
+insert into t1 values(2);
+select * from t1;
+rollback;
+select * from t1;
+start transaction;
+create table t2(a int);
+insert into t2(1);
+rollback;
+select * from t2;
+start transaction;
+use autocommit;
+start transactions;
+drop table t1;
+commit;
+start transactions;
+set autocommit=1;
+commit;
+start transactions;
+show tables;
+commit;
+set autocommit=0;
+drop table if exists t1;
+create table t1(a int);
+insert into t1 values(1);
+rollback;
+select * from t1;
+insert into t1 values(1);
+insert into t1 values(2);
+set autocommit=1;
+commit;
+set autocommit=1;
+set autocommit=0;
+select * from t1;
+insert into t1 values(3);
+create table t2 (a int);
+rollback;
+select * from t2;
+insert into t1 values(3);
+use autocommit;
+show tables;
+commit;
+-- @bvt:issue
diff --git a/test/result/transaction/autocommit.result b/test/result/transaction/autocommit.result
new file mode 100644
index 0000000000000000000000000000000000000000..27e4022b38a586b4ae0eb123ca36fbeefb16ac6a
--- /dev/null
+++ b/test/result/transaction/autocommit.result
@@ -0,0 +1,66 @@
+set autocommit=1;
+create table t1(a int);
+start transaction;
+insert into t1 values(1);
+start transaction;
+select * from t1;
+a
+1
+insert into t1 values(2);
+select * from t1;
+a
+1
+2
+rollback;
+select * from t1;
+a
+1
+start transaction;
+create table t2(a int);
+insert into t2(1);
+rollback;
+select * from t2;
+table "t2" does not exist
+start transaction;
+use autocommit;
+start transactions;
+drop table t1;
+Only CREATE of DDL is supported in transactions
+commit;
+start transactions;
+set autocommit=1;
+Parameters modification is unsupported in transactions
+commit;
+start transactions;
+show tables;
+tables_in_autocommit
+t1
+commit;
+set autocommit=0;
+drop table if exists t1;
+create table t1(a int);
+insert into t1 values(1);
+rollback;
+select * from t1;
+a
+insert into t1 values(1);
+insert into t1 values(2);
+set autocommit=1;
+Uncommmited transaction exists. Please commit or rollback first.
+commit;
+set autocommit=1;
+set autocommit=0;
+select * from t1;
+a
+1
+2
+insert into t1 values(3);
+create table t2 (a int);
+rollback;
+select * from t2;
+a
+insert into t1 values(3);
+explain select * from t1;
+use autocommit;
+show tables;
+commit;