1--TEST-- 2Basic test for setting Oracle 11gR2 "edition" attribute 3--SKIPIF-- 4<?php 5if (!extension_loaded('oci8')) die("skip no oci8 extension"); 6require(dirname(__FILE__)."/connect.inc"); 7if (strcasecmp($user, "system") && strcasecmp($user, "sys")) { 8 die("skip needs to be run as a DBA user"); 9} 10if ($test_drcp) { 11 die("skip as Output might vary with DRCP"); 12} 13if (preg_match('/Release (1[1]\.2|12)\./', oci_server_version($c), $matches) !== 1) { 14 die("skip expected output only valid when using Oracle 11gR2 or greater databases"); 15} else if (preg_match('/^(11\.2|12)\./', oci_client_version()) != 1) { 16 die("skip test expected to work only with Oracle 11gR2 or greater version of client"); 17} 18?> 19--FILE-- 20<?php 21 22/* In 11.2, there can only be one child edition. So this test will 23 * fail to create the necessary editions if a child edition exists 24 * already 25 */ 26 27require(dirname(__FILE__)."/conn_attr.inc"); 28 29function select_fn($conn) { 30 $s = oci_parse($conn,"select * from view_ed"); 31 oci_execute($s); 32 while ($row = oci_fetch_row($s)) { 33 var_dump($row); 34 } 35} 36/* Create a editon MYEDITION 37 create a view view_ed in MYEDITION1. 38 create the same view 'view_ed' with a different definition in MYEDITION. 39 select from both the editions and verify the contents. */ 40 41set_edit_attr('MYEDITION'); 42$conn = oci_connect('testuser','testuser',$dbase); 43if ($conn === false) { 44 $m = oci_error(); 45 die("Error:" . $m['message']); 46} 47 48$stmtarray = array( 49 "drop table edit_tab", 50 "create table edit_tab (name varchar2(10),age number,job varchar2(50), salary number)", 51 "insert into edit_tab values('mike',30,'Senior engineer',200)", 52 "insert into edit_tab values('juan',25,'engineer',100)", 53 "create or replace editioning view view_ed as select name,age,job from edit_tab", 54); 55 56oci8_test_sql_execute($conn, $stmtarray); 57 58// Check the current edition of the DB and the contents of view_ed. 59get_edit_attr($conn); 60select_fn($conn); 61 62// Create a different version of view_ed in MYEDITION1. 63set_edit_attr('MYEDITION1'); 64$conn2 = oci_new_connect('testuser','testuser',$dbase); 65$stmt = "create or replace editioning view view_ed as select name,age,job,salary from edit_tab"; 66$s = oci_parse($conn2, $stmt); 67oci_execute($s); 68 69// Check the current edition of the DB and the contents of view_ed. 70get_edit_attr($conn2); 71select_fn($conn2); 72 73// Verify the contents in MYEDITION EDITION. 74echo "version of view_ed in MYEDITION \n"; 75get_edit_attr($conn); 76select_fn($conn); 77 78clean_up($c); 79 80oci_close($conn); 81oci_close($conn2); 82echo "Done\n"; 83 84?> 85--EXPECTF-- 86The value of edition has been successfully set 87The value of current EDITION is MYEDITION 88array(3) { 89 [0]=> 90 %unicode|string%(%d) "mike" 91 [1]=> 92 %unicode|string%(%d) "30" 93 [2]=> 94 %unicode|string%(%d) "Senior engineer" 95} 96array(3) { 97 [0]=> 98 %unicode|string%(%d) "juan" 99 [1]=> 100 %unicode|string%(%d) "25" 101 [2]=> 102 %unicode|string%(%d) "engineer" 103} 104 The value of edition has been successfully set 105The value of current EDITION is MYEDITION1 106array(4) { 107 [0]=> 108 %unicode|string%(%d) "mike" 109 [1]=> 110 %unicode|string%(%d) "30" 111 [2]=> 112 %unicode|string%(%d) "Senior engineer" 113 [3]=> 114 %unicode|string%(%d) "200" 115} 116array(4) { 117 [0]=> 118 %unicode|string%(%d) "juan" 119 [1]=> 120 %unicode|string%(%d) "25" 121 [2]=> 122 %unicode|string%(%d) "engineer" 123 [3]=> 124 %unicode|string%(%d) "100" 125} 126version of view_ed in MYEDITION 127The value of current EDITION is MYEDITION 128array(3) { 129 [0]=> 130 %unicode|string%(%d) "mike" 131 [1]=> 132 %unicode|string%(%d) "30" 133 [2]=> 134 %unicode|string%(%d) "Senior engineer" 135} 136array(3) { 137 [0]=> 138 %unicode|string%(%d) "juan" 139 [1]=> 140 %unicode|string%(%d) "25" 141 [2]=> 142 %unicode|string%(%d) "engineer" 143} 144Done 145