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>