Annotation of embedaddon/php/ext/interbase/tests/005.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: InterBase: transactions
        !             3: --SKIPIF--
        !             4: <?php include("skipif.inc"); ?>
        !             5: --FILE--
        !             6: <?php /* $Id: 005.phpt 158958 2004-05-19 08:56:50Z helly $ */
        !             7: 
        !             8:     require("interbase.inc");
        !             9:     
        !            10:     ibase_connect($test_base);
        !            11: 
        !            12:     @ibase_query("create table test5 (i integer)");
        !            13:     @ibase_query("delete from test5");
        !            14:     ibase_close();
        !            15: 
        !            16: 
        !            17:     echo "default transaction:\n";
        !            18:     
        !            19: /*
        !            20: Difference between default and other transactions:
        !            21: default commited when you call  ibase_close().
        !            22: Other transaction doing rollback.
        !            23: 
        !            24: If you not open default transaction with
        !            25: ibase_trans, default transaction open
        !            26: when you call ibase_query(), ibase_prepare(),
        !            27: ibase_blob_create(), ibase_blob_import()  first time.
        !            28: */
        !            29: 
        !            30: /*
        !            31: simple default transaction test without ibase_trans()
        !            32: */
        !            33:     
        !            34:     ibase_connect($test_base);
        !            35: 
        !            36:     echo "empty table\n";
        !            37: 
        !            38:        /*  out_table call ibase_query()
        !            39:       and ibase_query() start default transaction */
        !            40:     out_table("test5");   
        !            41: 
        !            42:     /* in default transaction context */
        !            43:     ibase_query("insert into test5 (i) values (1)");
        !            44: 
        !            45:     echo "one row\n";
        !            46:     out_table("test5");
        !            47: 
        !            48:     ibase_rollback(); /* default rolled */
        !            49: 
        !            50:     echo "after rollback table empty again\n";
        !            51:     out_table("test5");  /* started new default transaction */
        !            52:     
        !            53:     ibase_query("insert into test5 (i) values (2)");
        !            54: 
        !            55:     ibase_close(); /* commit here! */
        !            56:     
        !            57:     ibase_connect($test_base);
        !            58:     
        !            59:     echo "one row\n";
        !            60:     out_table("test5");
        !            61:     ibase_close();
        !            62: 
        !            63: /*
        !            64: default transaction on default link
        !            65: First open transaction on link will be default.
        !            66: $tr_def_l1 may be ommited. All queryes without link and trans
        !            67: parameters run in this context
        !            68: */
        !            69:     
        !            70:     $link_def = ibase_connect($test_base);
        !            71:     
        !            72:     $tr_def_l1 = ibase_trans(IBASE_READ); /* here transaction start */
        !            73:     
        !            74:     /* all default */
        !            75:        $res = ibase_query("select * from test5");
        !            76:     
        !            77:     echo "one row\n";
        !            78:     out_result($res,"test5");
        !            79: 
        !            80:     ibase_free_result($res);
        !            81: 
        !            82:     /* specify transaction context...  */
        !            83:        $res = ibase_query($tr_def_l1, "select * from test5");
        !            84:     
        !            85:     echo "one row... again.\n";
        !            86:     out_result($res,"test5");
        !            87: 
        !            88:     ibase_free_result($res);
        !            89:     
        !            90:     /* specify default transaction on link  */
        !            91:        $res = ibase_query($link_def, "select * from test5");
        !            92:     
        !            93:     echo "one row.\n";
        !            94:     out_result($res,"test5");
        !            95: 
        !            96:     ibase_free_result($res);
        !            97: 
        !            98:     ibase_rollback($link_def); /* just for example */
        !            99: 
        !           100:     ibase_close();
        !           101:     
        !           102: /*
        !           103: three transaction on default link
        !           104: */
        !           105:     ibase_connect($test_base);
        !           106:     
        !           107:        $res = ibase_query("select * from test5");
        !           108:     
        !           109:     echo "one row\n";
        !           110:     out_result($res,"test5");
        !           111: 
        !           112:     ibase_free_result($res);
        !           113: 
        !           114:        $tr_1 = ibase_query("SET TRANSACTION");
        !           115:        $tr_2 = ibase_query("SET TRANSACTION READ ONLY");
        !           116:        $tr_3 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT);    
        !           117:        $tr_4 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_NO_VERSION+IBASE_NOWAIT);      
        !           118:     
        !           119:     /* insert in first transaction context...  */
        !           120:     /* as default */
        !           121:     ibase_query("insert into test5 (i) values (3)");
        !           122:     /* specify context */
        !           123:     ibase_query($tr_1, "insert into test5 (i) values (4)");
        !           124:     
        !           125:        $res = ibase_query("select * from test5");
        !           126:     
        !           127:     echo "two rows\n";
        !           128:     out_result($res,"test5");
        !           129: 
        !           130:     ibase_free_result($res);
        !           131:     
        !           132:        $res = ibase_query($tr_1, "select * from test5");
        !           133:     
        !           134:     echo "two rows again\n";
        !           135:     out_result($res,"test5");
        !           136: 
        !           137:     ibase_free_result($res);
        !           138:     
        !           139:        ibase_commit();
        !           140:     ibase_commit($tr_1);
        !           141: 
        !           142:        $tr_1 = ibase_trans();
        !           143:         ibase_query($tr_1, "insert into test5 (i) values (5)");
        !           144:        
        !           145:        /* tr_2 is IBASE_READ + IBASE_CONCURRENCY + IBASE_WAIT */
        !           146:        $res = ibase_query($tr_2, "select * from test5");
        !           147:     
        !           148:     echo "one row in second transaction\n";
        !           149:     out_result($res,"test5");
        !           150: 
        !           151:     ibase_free_result($res);
        !           152: 
        !           153:        /* tr_3 is IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_WAIT */
        !           154:        $res = ibase_query($tr_3, "select * from test5");
        !           155:     
        !           156:     echo "three rows in third transaction\n";
        !           157:     out_result($res,"test5");
        !           158: 
        !           159:     ibase_free_result($res);
        !           160: 
        !           161:        /* tr_4 IBASE_COMMITED + IBASE_REC_NO_VERSION + IBASE_NOWAIT */
        !           162:        $res = ibase_query($tr_4, "select * from test5");
        !           163:    
        !           164:         echo "three rows in fourth transaction with deadlock\n";
        !           165:     out_result_trap_error($res,"test5");
        !           166: 
        !           167:     ibase_free_result($res); 
        !           168:  
        !           169:         ibase_rollback($tr_1);
        !           170:     ibase_close();
        !           171: /*
        !           172: transactions on second link
        !           173: */
        !           174:     $link_1 = ibase_pconnect($test_base);
        !           175:     $link_2 = ibase_pconnect($test_base);
        !           176:     
        !           177:        $tr_1 = ibase_trans(IBASE_DEFAULT, $link_2);  /* this default transaction also */
        !           178:        $tr_2 = ibase_trans(IBASE_COMMITTED, $link_2);
        !           179:     
        !           180:        $res = ibase_query($tr_1, "select * from test5");
        !           181:     
        !           182:     echo "three rows\n";
        !           183:     out_result($res,"test5");
        !           184: 
        !           185:     ibase_free_result($res);
        !           186: 
        !           187:     ibase_query($tr_1, "insert into test5 (i) values (5)");
        !           188:     
        !           189:        $res = ibase_query($tr_1, "select * from test5");
        !           190:     
        !           191:     echo "four rows\n";
        !           192:     out_result($res,"test5");
        !           193: 
        !           194:     ibase_free_result($res);
        !           195:     
        !           196:     ibase_commit($tr_1);
        !           197:     
        !           198:        $res = ibase_query($tr_2, "select * from test5");
        !           199:     
        !           200:     echo "four rows again\n";
        !           201:     out_result($res,"test5");
        !           202: 
        !           203:     ibase_free_result($res);
        !           204:     
        !           205:     ibase_close($link_1);
        !           206:     ibase_close($link_2);
        !           207: 
        !           208:     echo "end of test\n";
        !           209: ?>
        !           210: --EXPECT--
        !           211: default transaction:
        !           212: empty table
        !           213: --- test5 ---
        !           214: ---
        !           215: one row
        !           216: --- test5 ---
        !           217: 1      
        !           218: ---
        !           219: after rollback table empty again
        !           220: --- test5 ---
        !           221: ---
        !           222: one row
        !           223: --- test5 ---
        !           224: 2      
        !           225: ---
        !           226: one row
        !           227: --- test5 ---
        !           228: 2      
        !           229: ---
        !           230: one row... again.
        !           231: --- test5 ---
        !           232: 2      
        !           233: ---
        !           234: one row.
        !           235: --- test5 ---
        !           236: 2      
        !           237: ---
        !           238: one row
        !           239: --- test5 ---
        !           240: 2      
        !           241: ---
        !           242: two rows
        !           243: --- test5 ---
        !           244: 2      
        !           245: 3      
        !           246: ---
        !           247: two rows again
        !           248: --- test5 ---
        !           249: 2      
        !           250: 4      
        !           251: ---
        !           252: one row in second transaction
        !           253: --- test5 ---
        !           254: 2      
        !           255: ---
        !           256: three rows in third transaction
        !           257: --- test5 ---
        !           258: 2      
        !           259: 3      
        !           260: 4      
        !           261: ---
        !           262: three rows in fourth transaction with deadlock
        !           263: --- test5 ---
        !           264: 2      
        !           265: 3      
        !           266: 4      
        !           267: errmsg [lock conflict on no wait transaction deadlock ]        
        !           268: ---
        !           269: three rows
        !           270: --- test5 ---
        !           271: 2      
        !           272: 3      
        !           273: 4      
        !           274: ---
        !           275: four rows
        !           276: --- test5 ---
        !           277: 2      
        !           278: 3      
        !           279: 4      
        !           280: 5      
        !           281: ---
        !           282: four rows again
        !           283: --- test5 ---
        !           284: 2      
        !           285: 3      
        !           286: 4      
        !           287: 5      
        !           288: ---
        !           289: end of test
        !           290: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>