From f999884397471e47b574293e33c85e91f3a0d695 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Tue, 20 Jul 2010 21:14:42 +0000 Subject: [PATCH] Fix: Error in creating function with postgresql --- htdocs/install/etape1.php | 8 ++++---- htdocs/install/etape2.php | 14 ++++++++------ htdocs/install/pgsql/functions/functions.sql | 7 ++++++- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index efbd24a4c3b..15b0dae5b9c 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -201,7 +201,7 @@ if ($_POST["action"] == "set") } } } - + // Force https $_POST["main_force_https"] = ((isset($_POST["main_force_https"]) && $_POST["main_force_https"] == "on")?'1':'0'); @@ -356,7 +356,7 @@ if ($_POST["action"] == "set") print $langs->trans("DatabaseCreation").' : '; print $dolibarr_main_db_name; print '</td>'; - print '<td>'.$langs->trans("Error").' '.$db->lasterrno().'</td></tr>'; + print '<td>'.$langs->trans("Error").' '.$db->lasterrno().'<br>'.$db->lasterror().'</td></tr>'; // Affiche aide diagnostique print '<tr><td colspan="2"><br>'; @@ -365,7 +365,7 @@ if ($_POST["action"] == "set") print '<br>'; print '</td></tr>'; - dolibarr_install_syslog('etape1: Failed to create database '.$dolibarr_main_db_name.' '.$db->lasterrno(), LOG_ERR); + dolibarr_install_syslog('etape1: Failed to create database '.$dolibarr_main_db_name.' '.$db->lasterrno().' '.$db->lasterror(), LOG_ERR); $error++; } $db->close(); @@ -562,7 +562,7 @@ function write_conf_file($conffile) /* Authentication */ fputs($fp, '$dolibarr_main_authentication=\'dolibarr\';'); fputs($fp,"\n"); - + fputs($fp, '$dolibarr_main_force_https=\''.$_POST["main_force_https"].'\';'); fputs($fp,"\n"); diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index 83392bfe2cd..f0775cb2902 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -388,14 +388,14 @@ if ($_POST["action"] == "set") $buf = fgets($fp, 4096); if (substr($buf, 0, 2) <> '--') { - $buffer .= $buf; + $buffer .= $buf."§"; } } fclose($fp); } + //$buffer=preg_replace('/;\';/',";'§",$buffer); - // Si plusieurs requetes, on boucle sur chaque - $buffer=preg_replace('/;\';/',";'§",$buffer); + // If several requests, we loop on each of them $listesql=explode('§',$buffer); foreach ($listesql as $buffer) { @@ -403,6 +403,7 @@ if ($_POST["action"] == "set") if ($buffer) { dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + print "<!-- Insert line : ".$buffer."<br>-->\n"; $resql=$db->query($buffer); if ($resql) { @@ -411,14 +412,15 @@ if ($_POST["action"] == "set") } else { - if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') + if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS' + || $db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS') { - // print "<tr><td>Insertion ligne : $buffer</td><td> + //print "Insert line : ".$buffer."<br>\n"; } else { $ok = 0; - print $langs->trans("ErrorSQL")." : ".$db->errno()." - '$buffer' - ".$db->lastqueryerror()."<br>"; + print $langs->trans("ErrorSQL")." : ".$db->errno()." - '".$buffer."'<br>\n"; } } } diff --git a/htdocs/install/pgsql/functions/functions.sql b/htdocs/install/pgsql/functions/functions.sql index a44d6f7de3e..47c4a2540dc 100644 --- a/htdocs/install/pgsql/functions/functions.sql +++ b/htdocs/install/pgsql/functions/functions.sql @@ -1,5 +1,6 @@ -- ============================================================================ --- Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> +-- Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> +-- Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net> -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -18,6 +19,9 @@ -- $Id$ -- ============================================================================ +CREATE LANGUAGE plpgsql; + + CREATE OR REPLACE FUNCTION UNIX_TIMESTAMP(TIMESTAMP WITHOUT TIME ZONE) RETURNS BIGINT LANGUAGE SQL IMMUTABLE STRICT AS 'SELECT EXTRACT(EPOCH FROM $1)::bigint;'; CREATE OR REPLACE FUNCTION UNIX_TIMESTAMP(TIMESTAMP WITH TIME ZONE) RETURNS BIGINT LANGUAGE SQL IMMUTABLE STRICT AS 'SELECT EXTRACT(EPOCH FROM $1)::bigint;'; @@ -33,6 +37,7 @@ CREATE OR REPLACE FUNCTION MONTH(TIMESTAMP WITH TIME ZONE) RETURNS INTEGER AS $$ CREATE OR REPLACE FUNCTION MONTH(DATE) RETURNS INTEGER AS $$ SELECT EXTRACT(MONTH FROM $1)::INTEGER; $$ LANGUAGE SQL IMMUTABLE; + CREATE OR REPLACE FUNCTION DAY(TIMESTAMP without TIME ZONE) RETURNS INTEGER AS $$ SELECT EXTRACT(DAY FROM $1)::INTEGER; $$ LANGUAGE SQL IMMUTABLE; CREATE OR REPLACE FUNCTION DAY(TIMESTAMP WITH TIME ZONE) RETURNS INTEGER AS $$ SELECT EXTRACT(DAY FROM $1)::INTEGER; $$ LANGUAGE SQL STABLE; -- GitLab