Annotation of embedaddon/php/ext/pdo_mysql/tests/pdo_mysql_rollback.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: PDO::rollBack()
! 3: --SKIPIF--
! 4: <?php
! 5: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
! 6: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
! 7: MySQLPDOTest::skip();
! 8: $db = MySQLPDOTest::factory();
! 9: if (false == MySQLPDOTest::detect_transactional_mysql_engine($db))
! 10: die("skip Transactional engine not found");
! 11: ?>
! 12: --FILE--
! 13: <?php
! 14: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
! 15: $db = MySQLPDOTest::factory();
! 16: MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
! 17:
! 18: $db->beginTransaction();
! 19:
! 20: $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
! 21: $num = $row['_num'];
! 22:
! 23: $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
! 24: $num++;
! 25: $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
! 26: if ($row['_num'] != $num)
! 27: printf("[001] INSERT has failed, test will fail\n");
! 28:
! 29: $db->rollBack();
! 30: $num--;
! 31: $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
! 32: if ($row['_num'] != $num)
! 33: printf("[002] ROLLBACK has failed\n");
! 34:
! 35: $db->beginTransaction();
! 36: $db->query("INSERT INTO test(id, label) VALUES (100, 'z')");
! 37: $db->query('DROP TABLE IF EXISTS test2');
! 38: $db->query('CREATE TABLE test2(id INT)');
! 39: $num++;
! 40: $db->rollBack();
! 41: $row = $db->query('SELECT COUNT(*) AS _num FROM test')->fetch(PDO::FETCH_ASSOC);
! 42: if ($row['_num'] != $num)
! 43: printf("[002] ROLLBACK should have no effect because of the implicit COMMIT
! 44: triggered by DROP/CREATE TABLE\n");
! 45:
! 46:
! 47: $db->query('DROP TABLE IF EXISTS test2');
! 48: $db->query('CREATE TABLE test2(id INT) ENGINE=MyISAM');
! 49: $db->beginTransaction();
! 50: $db->query('INSERT INTO test2(id) VALUES (1)');
! 51: $db->rollBack();
! 52: $row = $db->query('SELECT COUNT(*) AS _num FROM test2')->fetch(PDO::FETCH_ASSOC);
! 53: if ($row['_num'] != 1)
! 54: printf("[003] ROLLBACK should have no effect\n");
! 55:
! 56: $db->query('DROP TABLE IF EXISTS test2');
! 57:
! 58: $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
! 59: $db->beginTransaction();
! 60: $db->query('DELETE FROM test');
! 61: $db->rollBack();
! 62: var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
! 63:
! 64: $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
! 65: $db->beginTransaction();
! 66: $db->query('DELETE FROM test');
! 67: $db->rollBack();
! 68: var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
! 69:
! 70: $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
! 71: $db->beginTransaction();
! 72: $db->query('DELETE FROM test');
! 73: $db->commit();
! 74: var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
! 75:
! 76: $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
! 77: $db->beginTransaction();
! 78: $db->query('DELETE FROM test');
! 79: $db->commit();
! 80: var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
! 81:
! 82: print "done!";
! 83: ?>
! 84: --CLEAN--
! 85: <?php
! 86: require dirname(__FILE__) . '/mysql_pdo_test.inc';
! 87: $db = MySQLPDOTest::factory();
! 88: $db->exec('DROP TABLE IF EXISTS test');
! 89: $db->exec('DROP TABLE IF EXISTS test2');
! 90: ?>
! 91: --EXPECTF--
! 92: int(1)
! 93: int(0)
! 94: int(1)
! 95: int(0)
! 96: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>