From f7175805983b5d6f235ff5a0c8dbd0be0b22c7f2 Mon Sep 17 00:00:00 2001 From: rurban Date: Mon, 6 Sep 2004 08:28:00 +0000 Subject: [PATCH] rename genericQuery to genericSqlQuery git-svn-id: svn://svn.code.sf.net/p/phpwiki/code/trunk@3925 96ab9672-09ca-45d6-a79d-3d69d39ca109 --- lib/WikiDB.php | 53 ++++++++++++++++++++++++++++++++++++--- lib/upgrade.php | 66 +++++++++++++++++++++++++++---------------------- 2 files changed, 86 insertions(+), 33 deletions(-) diff --git a/lib/WikiDB.php b/lib/WikiDB.php index e84428dac..8c9d7387e 100644 --- a/lib/WikiDB.php +++ b/lib/WikiDB.php @@ -1,5 +1,5 @@ set('__global', $data); } - // simple select or create/update queries - function genericQuery($sql) { + // SQL result: for simple select or create/update queries + // returns the database specific resource type + function genericSqlQuery($sql) { global $DBParams; if ($DBParams['dbtype'] == 'SQL') { $result = $this->_backend->_dbh->query($sql); @@ -531,6 +532,17 @@ class WikiDB { return false; } + // SQL iter: for simple select or create/update queries + // returns the generic iterator object (count,next) + function genericSqlIter($sql) { + $result = $this->genericSqlQuery($sql); + if ($this->getParam('dbtype') == 'ADODB') { + return new WikiDB_backend_ADODB_generic_iter($this->_backend, $result); + } else { + return new WikiDB_backend_PearDB_generic_iter($this->_backend, $result); + } + } + function getParam($param) { global $DBParams; if (isset($DBParams[$param])) return $DBParams[$param]; @@ -1712,6 +1724,38 @@ class WikiDB_Array_PageIterator } } +/* +class WikiDB_Array_generic_iter +{ + function WikiDB_Array_generic_iter($result) { + // $result may be either an array or a query result + if (is_array($result)) { + $this->_array = $result; + } elseif (is_object($result)) { + $this->_array = $result->asArray(); + } else { + $this->_array = array(); + } + if (!empty($this->_array)) + reset($this->_array); + } + function next() { + $c =& current($this->_array); + next($this->_array); + return $c !== false ? $c : false; + } + function count() { + return count($this->_array); + } + function free() {} + function asArray() { + if (!empty($this->_array)) + reset($this->_array); + return $this->_array; + } +} +*/ + /** * Data cache used by WikiDB. * @@ -1865,6 +1909,9 @@ class WikiDB_cache }; // $Log: not supported by cvs2svn $ +// Revision 1.80 2004/07/09 13:05:34 rurban +// just aesthetics +// // Revision 1.79 2004/07/09 10:06:49 rurban // Use backend specific sortby and sortable_columns method, to be able to // select between native (Db backend) and custom (PageList) sorting. diff --git a/lib/upgrade.php b/lib/upgrade.php index 55848236c..2137821c9 100644 --- a/lib/upgrade.php +++ b/lib/upgrade.php @@ -1,5 +1,5 @@ genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $session_tbl ( sess_id CHAR(32) NOT NULL DEFAULT '', sess_data BLOB NOT NULL, @@ -197,57 +197,57 @@ CREATE TABLE $session_tbl ( INDEX (sess_date) )"); } else { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $session_tbl ( sess_id CHAR(32) NOT NULL DEFAULT '', sess_data ".($backend_type == 'pgsql'?'TEXT':'BLOB')." NOT NULL, sess_date INT, sess_ip CHAR(15) NOT NULL )"); - $dbh->genericQuery("CREATE UNIQUE INDEX sess_id ON $session_tbl (sess_id)"); + $dbh->genericSqlQuery("CREATE UNIQUE INDEX sess_id ON $session_tbl (sess_id)"); } - $dbh->genericQuery("CREATE INDEX sess_date on session (sess_date)"); + $dbh->genericSqlQuery("CREATE INDEX sess_date on session (sess_date)"); break; case 'user': $user_tbl = $prefix.'user'; if ($backend_type == 'mysql') { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $user_tbl ( userid CHAR(48) BINARY NOT NULL UNIQUE, passwd CHAR(48) BINARY DEFAULT '', PRIMARY KEY (userid) )"); } else { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $user_tbl ( userid CHAR(48) NOT NULL, passwd CHAR(48) DEFAULT '' )"); - $dbh->genericQuery("CREATE UNIQUE INDEX userid ON $user_tbl (userid)"); + $dbh->genericSqlQuery("CREATE UNIQUE INDEX userid ON $user_tbl (userid)"); } break; case 'pref': $pref_tbl = $prefix.'pref'; if ($backend_type == 'mysql') { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $pref_tbl ( userid CHAR(48) BINARY NOT NULL UNIQUE, prefs TEXT NULL DEFAULT '', PRIMARY KEY (userid) )"); } else { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $pref_tbl ( userid CHAR(48) NOT NULL, prefs TEXT NULL DEFAULT '', )"); - $dbh->genericQuery("CREATE UNIQUE INDEX userid ON $pref_tbl (userid)"); + $dbh->genericSqlQuery("CREATE UNIQUE INDEX userid ON $pref_tbl (userid)"); } break; case 'member': $member_tbl = $prefix.'member'; if ($backend_type == 'mysql') { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $member_tbl ( userid CHAR(48) BINARY NOT NULL, groupname CHAR(48) BINARY NOT NULL DEFAULT 'users', @@ -255,19 +255,19 @@ CREATE TABLE $member_tbl ( INDEX (groupname) )"); } else { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $member_tbl ( userid CHAR(48) NOT NULL, groupname CHAR(48) NOT NULL DEFAULT 'users', )"); - $dbh->genericQuery("CREATE INDEX userid ON $member_tbl (userid)"); - $dbh->genericQuery("CREATE INDEX groupname ON $member_tbl (groupname)"); + $dbh->genericSqlQuery("CREATE INDEX userid ON $member_tbl (userid)"); + $dbh->genericSqlQuery("CREATE INDEX groupname ON $member_tbl (groupname)"); } break; case 'rating': $rating_tbl = $prefix.'rating'; if ($backend_type == 'mysql') { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $rating_tbl ( dimension INT(4) NOT NULL, raterpage INT(11) NOT NULL, @@ -278,7 +278,7 @@ CREATE TABLE $rating_tbl ( PRIMARY KEY (dimension, raterpage, rateepage) )"); } else { - $dbh->genericQuery(" + $dbh->genericSqlQuery(" CREATE TABLE $rating_tbl ( dimension INT(4) NOT NULL, raterpage INT(11) NOT NULL, @@ -287,7 +287,7 @@ CREATE TABLE $rating_tbl ( rateeversion INT(11) NOT NULL, tstamp TIMESTAMP(14) NOT NULL, )"); - $dbh->genericQuery("CREATE UNIQUE INDEX rating ON $rating_tbl (dimension, raterpage, rateepage)"); + $dbh->genericSqlQuery("CREATE UNIQUE INDEX rating ON $rating_tbl (dimension, raterpage, rateepage)"); } break; } @@ -341,8 +341,10 @@ function CheckDatabaseUpdate(&$request) { $session_tbl = $prefix . $DBParams['db_session_table']; $sess_fields = $dbh->_backend->listOfFields($database, $session_tbl); if (!strstr(strtolower(join(':', $sess_fields)),"sess_ip")) { + // TODO: postgres test (should be able to add columns at the end, but not in between) echo "",_("ADDING"),""," ... "; - $dbh->genericQuery("ALTER TABLE $session_tbl ADD sess_ip CHAR(15) NOT NULL"); + $dbh->genericSqlQuery("ALTER TABLE $session_tbl ADD sess_ip CHAR(15) NOT NULL"); + $dbh->genericSqlQuery("CREATE INDEX sess_date ON $session_tbl (sess_date)"); } else { echo _("OK"); } @@ -359,29 +361,30 @@ function CheckDatabaseUpdate(&$request) { for ($i = 0; $i < $columns; $i++) { if (mysql_field_name($fields, $i) == 'id') { $flags = mysql_field_flags($fields, $i); - //FIXME: something wrong with ADODB here! - if (!strstr(strtolower($flags),"auto_increment")) { - echo "",_("ADDING"),""," ... "; + //DONE: something was wrong with ADODB here. + if (!strstr(strtolower($flags), "auto_increment")) { + echo "",_("ADDING"),""," ... "; // MODIFY col_def valid since mysql 3.22.16, // older mysql's need CHANGE old_col col_def - $dbh->genericQuery("ALTER TABLE $page_tbl CHANGE id id INT NOT NULL AUTO_INCREMENT"); + $dbh->genericSqlQuery("ALTER TABLE $page_tbl CHANGE id id INT NOT NULL AUTO_INCREMENT"); $fields = mysql_list_fields($database, $page_tbl); - if (!strstr(strtolower(mysql_field_flags($fields, $i)),"auto_increment")) - echo " ",_("FAILED"),"
\n"; + if (!strstr(strtolower(mysql_field_flags($fields, $i)), "auto_increment")) + echo " ", _("FAILED"), "
\n"; else - echo _("OK"),"
\n"; + echo _("OK"), "
\n"; } else { - echo _("OK"),"
\n"; + echo _("OK"), "
\n"; } break; } } mysql_free_result($fields); } - // check for mysql 4.1.x/5.0.0a binary search bug. + // check for mysql 4.1.x/5.0.0a binary search problem. // http://bugs.mysql.com/bug.php?id=4398 // "select * from page where LOWER(pagename) like '%search%'" does not apply LOWER! // confirmed for 4.1.0alpha,4.1.3-beta,5.0.0a; not yet tested for 4.1.2alpha, + // TODO: there's a known workaround, not yet applied. on windows only. if (substr($backend_type,0,5) == 'mysql') { echo _("check for mysql 4.1.x/5.0.0 binary search problem")," ..."; $result = mysql_query("SELECT VERSION()",$dbh->_backend->connection()); @@ -390,7 +393,7 @@ function CheckDatabaseUpdate(&$request) { $arr = explode('.',$mysql_version); $version = (string)(($arr[0] * 100) + $arr[1]) . "." . (integer)$arr[2]; if ($version >= 401.0) { - $dbh->genericQuery("ALTER TABLE $page_tbl CHANGE pagename pagename VARCHAR(100) NOT NULL;"); + $dbh->genericSqlQuery("ALTER TABLE $page_tbl CHANGE pagename pagename VARCHAR(100) NOT NULL;"); echo sprintf(_("version %s FIXED"), $mysql_version),"
\n"; } else { echo sprintf(_("version %s not affected"), $mysql_version),"
\n"; @@ -493,6 +496,9 @@ function DoUpgrade($request) { /** $Log: not supported by cvs2svn $ + Revision 1.24 2004/07/05 13:56:22 rurban + sqlite autoincrement fix + Revision 1.23 2004/07/04 10:28:06 rurban DBADMIN_USER fix @@ -540,7 +546,7 @@ function DoUpgrade($request) { reanable admin check without ENABLE_PAGEPERM in the admin plugins Revision 1.12 2004/05/18 13:59:15 rurban - rename simpleQuery to genericQuery + rename simpleQuery to genericSqlQuery Revision 1.11 2004/05/15 13:06:17 rurban skip the HomePage, at first upgrade the ActionPages, then the database, then the rest -- 2.45.2