*** ./COPYRIGHT 2002-06-02 12:41:33.000000000 +0900 --- ../red-mammoth-php4-second/./COPYRIGHT 2006-03-01 21:39:15.000000000 +0900 *************** *** 1,5 **** /* ! * Copyright (C) 2002 Tatsuo Ishii * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby --- 1,5 ---- /* ! * Copyright (C) 2002-2006 Tatsuo Ishii * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby *** ./ex5/lib/pgmetadata.inc 2002-07-04 18:25:33.000000000 +0900 --- ../red-mammoth-php4-second/./ex5/lib/pgmetadata.inc 2006-03-01 21:39:15.000000000 +0900 *************** *** 48,56 **** --- 48,84 ---- AND a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid ORDER BY a.attnum EOF; + /* + $sql = <<< EOF + SELECT + c.column_name AS attname, + u.udt_name AS typname, + 16 AS attlen, + 0 AS atttypmod, + c.is_nullable = 'YES' AS attnotnull, + c.column_default AS atthasdef + FROM information_schema.columns AS c, information_schema.column_udt_usage AS u + WHERE + c.table_schema = u.table_schema AND + c.table_name = u.table_name AND + c.column_name = u.column_name AND + c.table_name = '$this->table_name'; + EOF; + */ + /* + SELECT + column_name AS attname, + data_type AS typname, + 16 AS attlen, + 0 AS atttypmod, + is_nullable = 'YES' AS attnotnull, + column_default AS atthasdef + FROM information_schema.columns AS u WHERE u.table_name = '$this->table_name'; + */ $result = $this->db->doQuery($sql); // selectを実行 $rows = pg_num_rows($result); + for ($i=0;$i<$rows;$i++) { $this->md[$i]["name"] = pg_fetch_result($result,$i,"attname"); $this->md[$i]["typename"] = pg_fetch_result($result,$i,"typname"); *************** *** 73,79 **** obj_description(p.oid) as description FROM pg_proc p, pg_type t0, pg_type t1, pg_type t2,pg_operator o WHERE t1.typname = '$typename' ! AND p.prorettype = t0.oid AND RegprocToOid(o.oprcode) = p.oid AND p.pronargs = 2 AND o.oprleft = t1.oid AND o.oprright = t2.oid AND t0.typname = 'bool' AND t1.typname = t2.typname EOF; --- 101,107 ---- obj_description(p.oid) as description FROM pg_proc p, pg_type t0, pg_type t1, pg_type t2,pg_operator o WHERE t1.typname = '$typename' ! AND p.prorettype = t0.oid AND o.oprcode = p.oid AND p.pronargs = 2 AND o.oprleft = t1.oid AND o.oprright = t2.oid AND t0.typname = 'bool' AND t1.typname = t2.typname EOF; *** ./ex6/lib/pgmetadata.inc 2002-07-04 18:26:02.000000000 +0900 --- ../red-mammoth-php4-second/./ex6/lib/pgmetadata.inc 2006-03-01 21:39:15.000000000 +0900 *************** *** 81,87 **** obj_description(p.oid) as description FROM pg_proc p, pg_type t0, pg_type t1, pg_type t2,pg_operator o WHERE t1.typname = '$typename' ! AND p.prorettype = t0.oid AND RegprocToOid(o.oprcode) = p.oid AND p.pronargs = 2 AND o.oprleft = t1.oid AND o.oprright = t2.oid AND t0.typname = 'bool' AND t1.typname = t2.typname EOF; --- 81,87 ---- obj_description(p.oid) as description FROM pg_proc p, pg_type t0, pg_type t1, pg_type t2,pg_operator o WHERE t1.typname = '$typename' ! AND p.prorettype = t0.oid AND o.oprcode = p.oid AND p.pronargs = 2 AND o.oprleft = t1.oid AND o.oprright = t2.oid AND t0.typname = 'bool' AND t1.typname = t2.typname EOF; *************** *** 99,105 **** // 制約に関する情報の取得 function getConstraint() { $sql = <<< EOF ! SELECT rcname,rcsrc FROM pg_relcheck WHERE rcrelid = '$this->table_oid' EOF; $result = $this->db->doQuery($sql); // selectを実行 $rows = pg_num_rows($result); --- 99,105 ---- // 制約に関する情報の取得 function getConstraint() { $sql = <<< EOF ! SELECT * FROM pg_constraint WHERE conrelid = '$this->table_oid' EOF; $result = $this->db->doQuery($sql); // selectを実行 $rows = pg_num_rows($result); *************** *** 110,129 **** return; } ! // 連想配列に制約名と制約値を格納 for ($i=0;$i<$rows;$i++) { ! $constraints[$i]["rcname"] = pg_fetch_result($result,$i,"rcname"); // 制約名 ! $constraints[$i]["rcsrc"] = pg_fetch_result($result,$i,"rcsrc"); // 制約 } pg_free_result($result); for ($i=0;$imd);$i++) { ! // 列制約の名前は「テーブル名_列名」 ! $colname = $this->table_name . "_" . $this->md[$i]["name"]; for ($j=0;$jmd[$i]["constraint"] = $constraints[$j]["rcsrc"]; ! $constraints[$j]["rcname"] = ""; // チェック済の制約名を無効にする break; } } --- 110,132 ---- return; } ! // 連想配列にCHECK制約の制約名と制約値を格納 for ($i=0;$i<$rows;$i++) { ! if (pg_fetch_result($result, $i, "contype") == 'c') // CHECK制約? ! { ! $constraints[$i]["conname"] = pg_fetch_result($result,$i,"conname"); // 制約名 ! $constraints[$i]["consrc"] = pg_fetch_result($result,$i,"consrc"); // 制約 ! } } pg_free_result($result); for ($i=0;$imd);$i++) { ! // 列制約の名前は「テーブル名_列名_check」 ! $colname = $this->table_name . "_" . $this->md[$i]["name"] . "_check"; for ($j=0;$jmd[$i]["constraint"] = $constraints[$j]["consrc"]; ! $constraints[$j]["conname"] = ""; // チェック済の制約名を無効にする break; } } *************** *** 131,139 **** // 列制約をすべて無効にし、残ったのがテーブル制約 for ($j=0;$jtable_constraints[$rcname] = $constraints[$j]["rcsrc"]; } } } --- 134,142 ---- // 列制約をすべて無効にし、残ったのがテーブル制約 for ($j=0;$jtable_constraints[$conname] = $constraints[$j]["consrc"]; } } } *************** *** 250,255 **** --- 253,259 ---- $this->printFormFooter(); } + /* // SQL文の生成 function makeSQL() { if (!isset($_POST["atrlist"])) { *************** *** 298,304 **** } return($sql); } ! // --------------- データ登録用メンバ関数 ---------------------------- //
の表示 function printDataInputFormHeader() { --- 302,308 ---- } return($sql); } ! */ // --------------- データ登録用メンバ関数 ---------------------------- // の表示 function printDataInputFormHeader() { *** ./ex7/lib/pgmetadata.inc 2002-07-04 18:27:18.000000000 +0900 --- ../red-mammoth-php4-second/./ex7/lib/pgmetadata.inc 2006-03-01 21:39:15.000000000 +0900 *************** *** 88,94 **** obj_description(p.oid) as description FROM pg_proc p, pg_type t0, pg_type t1, pg_type t2,pg_operator o WHERE t1.typname = '$typename' ! AND p.prorettype = t0.oid AND RegprocToOid(o.oprcode) = p.oid AND p.pronargs = 2 AND o.oprleft = t1.oid AND o.oprright = t2.oid AND t0.typname = 'bool' AND t1.typname = t2.typname EOF; --- 88,94 ---- obj_description(p.oid) as description FROM pg_proc p, pg_type t0, pg_type t1, pg_type t2,pg_operator o WHERE t1.typname = '$typename' ! AND p.prorettype = t0.oid AND o.oprcode = p.oid AND p.pronargs = 2 AND o.oprleft = t1.oid AND o.oprright = t2.oid AND t0.typname = 'bool' AND t1.typname = t2.typname EOF; *************** *** 106,112 **** // 制約に関する情報の取得 function getConstraint() { $sql = <<< EOF ! SELECT rcname,rcsrc FROM pg_relcheck WHERE rcrelid = '$this->table_oid' EOF; $result = $this->db->doQuery($sql); // selectを実行 $rows = pg_num_rows($result); --- 106,112 ---- // 制約に関する情報の取得 function getConstraint() { $sql = <<< EOF ! SELECT * FROM pg_constraint WHERE conrelid = '$this->table_oid' EOF; $result = $this->db->doQuery($sql); // selectを実行 $rows = pg_num_rows($result); *************** *** 119,136 **** // 連想配列に制約名と制約値を格納 for ($i=0;$i<$rows;$i++) { ! $constraints[$i]["rcname"] = pg_fetch_result($result,$i,"rcname"); // 制約名 ! $constraints[$i]["rcsrc"] = pg_fetch_result($result,$i,"rcsrc"); // 制約 } pg_free_result($result); for ($i=0;$imd);$i++) { ! // 列制約の名前は「テーブル名_列名」 ! $colname = $this->table_name . "_" . $this->md[$i]["name"]; for ($j=0;$jmd[$i]["constraint"] = $constraints[$j]["rcsrc"]; ! $constraints[$j]["rcname"] = ""; // チェック済の制約名を無効にする break; } } --- 119,139 ---- // 連想配列に制約名と制約値を格納 for ($i=0;$i<$rows;$i++) { ! if (pg_fetch_result($result, $i, "contype") == 'c') // CHECK制約? ! { ! $constraints[$i]["conname"] = pg_fetch_result($result,$i,"conname"); // 制約名 ! $constraints[$i]["consrc"] = pg_fetch_result($result,$i,"consrc"); // 制約 ! } } pg_free_result($result); for ($i=0;$imd);$i++) { ! // 列制約の名前は「テーブル名_列名_check」 ! $colname = $this->table_name . "_" . $this->md[$i]["name"] . "_check"; for ($j=0;$jmd[$i]["constraint"] = $constraints[$j]["consrc"]; ! $constraints[$j]["conname"] = ""; // チェック済の制約名を無効にする break; } } *************** *** 138,146 **** // 列制約をすべて無効にし、残ったのがテーブル制約 for ($j=0;$jtable_constraints[$rcname] = $constraints[$j]["rcsrc"]; } } } --- 141,149 ---- // 列制約をすべて無効にし、残ったのがテーブル制約 for ($j=0;$jtable_constraints[$conname] = $constraints[$j]["consrc"]; } } } *************** *** 260,266 **** // 現在の行を取り出す function getRow($lock = false) { ! $sql = "SELECT oid,* FROM $this->table_name WHERE ctid = '$this->tid'"; if ($lock) { $sql .= " FOR UPDATE"; } --- 263,269 ---- // 現在の行を取り出す function getRow($lock = false) { ! $sql = "SELECT * FROM $this->table_name WHERE ctid = '$this->tid'"; if ($lock) { $sql .= " FOR UPDATE"; }