From 1b80a6f322b4b4b47ddb050a6d4ade47650f2b7e Mon Sep 17 00:00:00 2001 From: Roland Mas Date: Thu, 17 Nov 2011 19:51:23 +0000 Subject: [PATCH] Use common SQL parser --- src/db/upgrade-db.php | 240 +++++------------------------------------- 1 file changed, 29 insertions(+), 211 deletions(-) diff --git a/src/db/upgrade-db.php b/src/db/upgrade-db.php index b9caf34d0a..e950f97cff 100755 --- a/src/db/upgrade-db.php +++ b/src/db/upgrade-db.php @@ -8,6 +8,7 @@ echo "Entering upgrade-db.php\n"; require_once dirname(__FILE__).'/../www/env.inc.php'; require_once $gfcommon.'include/pre.php'; +require_once $gfcommon.'include/sqlparser.php'; $db_path = dirname(__FILE__).'/'; $date = -1; @@ -16,34 +17,24 @@ $version = ''; // a huge message will warn not to run it without doing a backup first // warning. // Check if table 'database_startpoint' exists -$res = db_query_params('SELECT COUNT(*) AS proceed FROM pg_class WHERE relname = $1 AND relkind = $2', - array('database_startpoint', - 'r')); +if (!db_check_table_exists('database_startpoint')) { + show("ERROR: table 'database_startpoint' does not exist.\nRun startpoint.php first.\n"); + exit(); +} + +// Check if table 'database_startpoint' has proper values +$res = db_query_params('SELECT * FROM database_startpoint', + array()); if (!$res) { // db error - show("DB-ERROR-2: ".db_error()."\n"); + show("DB-ERROR-3: ".db_error()."\n"); exit(); -} else { - $proceed = db_result($res, 0, 'proceed'); - if (!$proceed) { // table does not exist - show("ERROR: table 'database_startpoint' does not exist.\nRun startpoint.php first.\n"); - exit(); - } else { - // Check if table 'database_startpoint' has proper values - $res = db_query_params('SELECT * FROM database_startpoint', - array()); - - if (!$res) { // db error - show("DB-ERROR-3: ".db_error()."\n"); - exit(); - } else if (db_numrows($res) == 0) { // table 'database_startpoint' is empty - show("ERROR: table 'database_startpoint' is empty.\nRun startpoint.php first.\n"); - exit(); - } else { // get the start date from the db - $date = (int) db_result($res, 0, 'db_start_date'); - $version = db_result($res, 0, 'db_version'); - } - } +} else if (db_numrows($res) == 0) { // table 'database_startpoint' is empty + show("ERROR: table 'database_startpoint' is empty.\nRun startpoint.php first.\n"); + exit(); +} else { // get the start date from the db + $date = (int) db_result($res, 0, 'db_start_date'); + $version = db_result($res, 0, 'db_version'); } if (!apply_fixes($version)) { @@ -192,116 +183,26 @@ function run_sql_script($filename) { if (!$file) { return false; } - $content = fread($file, filesize($sql_file)); - fclose($file); - - $content = preg_replace("/--(.*)/", '', $content); - - $parts = explode(";\n", $content); - $queries = array(); - $query_temp = ''; - $is_function = false; - $is_copy_stdin = false; - - for ($i=0;$i name - if (preg_match('/^"(.*)"$/', $name, $match)) { - $name = $match[1]; - } - $res = db_query_params('SELECT COUNT(*) AS exists FROM pg_class WHERE relname=$1 AND relkind=$2', - array ($name, - $kind)); - if (!$res) { - show("ERROR:".db_error()."\n"); - return false; - } - if (db_result($res, 0, 'exists') != '0') { - $res = db_query_params("$command $name $commandSuffix", array()); - if (!$res) { - show("ERROR:".db_error()."\n"); - //db_rollback(); - //exit(); - } - } - return true; -} - -function drop_constraint_if_exists($table, $constraint, $query) { - $res = db_query_params('SELECT COUNT(*) AS exists FROM information_schema.constraint_table_usage WHERE table_name=$1 AND constraint_name=$2', - array($table, - $constraint)); - - if (!$res) { - show("ERROR:".db_error()."\n"); - return false; - } - if (db_result($res, 0, 'exists') != '0') { - $res = db_query_params($query, array()); - if (!$res) { - show("ERROR:".db_error()."\n"); - } - } - return true; -} - -function drop_trigger_if_exists($name, $on) { - $res = db_query_params('SELECT COUNT(*) AS exists FROM pg_trigger WHERE tgname=$1', - array ($name)); - if (!$res) { - show("ERROR:".db_error()."\n"); - return false; - } - if (db_result($res, 0, 'exists') != '0') { - $res = db_query_params("DROP TRIGGER $1 ON $2", array($name, $on)); - if (!$res) { - show("ERROR:".db_error()."\n"); - //db_rollback(); - //exit(); - } - } - return true; -} - function in_string($haystack, $needle, $case_sensitive = false) { if (!$case_sensitive) { $haystack = strtolower($haystack); -- 2.30.2