forked from Wavyzz/dolibarr
Enhancement for postgresql support
This commit is contained in:
@@ -71,7 +71,7 @@ if (isset($_POST["action"]) && $_POST["action"] == 'update' && empty($_POST["can
|
||||
$file='init_menu_'.$key.'.sql';
|
||||
if (file_exists($dir.$file))
|
||||
{
|
||||
$result=run_sql($dir.$file,1);
|
||||
$result=run_sql($dir.$file,1,'',1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -477,7 +477,7 @@ class DolibarrModules
|
||||
{
|
||||
if (preg_match('/\.sql$/i',$file) && ! preg_match('/\.key\.sql$/i',$file) && substr($file,0,4) == 'llx_' && substr($file,0,4) != 'data')
|
||||
{
|
||||
$result=run_sql($dir.$file,1);
|
||||
$result=run_sql($dir.$file,1,'',1);
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
@@ -491,13 +491,13 @@ class DolibarrModules
|
||||
{
|
||||
if (preg_match('/\.key\.sql$/i',$file) && substr($file,0,4) == 'llx_' && substr($file,0,4) != 'data')
|
||||
{
|
||||
$result=run_sql($dir.$file,1);
|
||||
$result=run_sql($dir.$file,1,'',1);
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
// Run .sql files
|
||||
// Run data_xxx.sql files
|
||||
$handle=@opendir($dir); // Dir may not exist
|
||||
if ($handle)
|
||||
{
|
||||
@@ -505,7 +505,7 @@ class DolibarrModules
|
||||
{
|
||||
if (preg_match('/\.sql$/i',$file) && ! preg_match('/\.key\.sql$/i',$file) && substr($file,0,4) == 'data')
|
||||
{
|
||||
$result=run_sql($dir.$file,1);
|
||||
$result=run_sql($dir.$file,1,'',1);
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
|
||||
@@ -186,7 +186,7 @@ if ($ok)
|
||||
$name = substr($file, 0, strlen($file) - 4);
|
||||
|
||||
// Run sql script
|
||||
$ok=run_sql($dir.$file, 0);
|
||||
$ok=run_sql($dir.$file, 0, '', 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -320,7 +320,7 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
$name = substr($file, 0, strlen($file) - 4);
|
||||
|
||||
// Run sql script
|
||||
$ok=run_sql($dir.$file, 0);
|
||||
$ok=run_sql($dir.$file, 0, '', 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3196,7 +3196,7 @@ function migrate_reload_menu($db,$langs,$conf)
|
||||
$file='init_menu_'.$key.'.sql';
|
||||
if (file_exists($dir.$file))
|
||||
{
|
||||
$result=run_sql($dir.$file,1);
|
||||
$result=run_sql($dir.$file,1,'',1);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@@ -91,9 +91,12 @@ function versiondolibarrarray($fortest=0)
|
||||
/**
|
||||
* \brief Launch a sql file
|
||||
* \param sqlfile Full path to sql file
|
||||
* \param silent 1=Do not output anything, 0=Output line for update page
|
||||
* \param entity Entity targeted for multicompany module
|
||||
* \param usesavepoint 1=Run a savepoint before each request and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* \return int <=0 if KO, >0 if OK
|
||||
*/
|
||||
function run_sql($sqlfile,$silent=1,$entity='')
|
||||
function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1)
|
||||
{
|
||||
global $db, $conf, $langs, $user;
|
||||
|
||||
@@ -153,7 +156,7 @@ function run_sql($sqlfile,$silent=1,$entity='')
|
||||
}
|
||||
|
||||
// Loop on each request to see if there is a __+MAX_table__ key
|
||||
$listofmaxrowid=array();
|
||||
$listofmaxrowid=array(); // This is a cache table
|
||||
foreach($arraysql as $i => $sql)
|
||||
{
|
||||
if ($sql)
|
||||
@@ -224,7 +227,7 @@ function run_sql($sqlfile,$silent=1,$entity='')
|
||||
dol_syslog('Admin.lib::run_sql New Request '.($i+1).' (replacing '.$from.' to '.$to.') sql='.$newsql, LOG_DEBUG);
|
||||
}
|
||||
|
||||
$result=$db->query($newsql);
|
||||
$result=$db->query($newsql,$usesavepoint);
|
||||
if ($result)
|
||||
{
|
||||
if (preg_replace('/insert into ([^\s]+)/i',$newsql,$reg))
|
||||
|
||||
@@ -309,10 +309,11 @@ class DoliDb
|
||||
|
||||
/**
|
||||
* \brief Effectue une requete et renvoi le resultset de reponse de la base
|
||||
* \param query Contenu de la query
|
||||
* \return resource Resultset de la reponse
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* \return resource Resultset of answer
|
||||
*/
|
||||
function query($query)
|
||||
function query($query,$usesavepoint=0)
|
||||
{
|
||||
$query = trim($query);
|
||||
|
||||
@@ -782,11 +783,12 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Liste des tables dans une database.
|
||||
\param database Nom de la database
|
||||
\return resource
|
||||
* \brief List tables into a database.
|
||||
* \param database Name of database
|
||||
* \param table Filter on some tables
|
||||
* \return array Array list of tables
|
||||
*/
|
||||
function DDLListTables($database)
|
||||
function DDLListTables($database,$table='')
|
||||
{
|
||||
$this->results = mssql_list_tables($database, $this->db);
|
||||
return $this->results;
|
||||
@@ -970,7 +972,7 @@ class DoliDb
|
||||
}
|
||||
return $liste;
|
||||
*/
|
||||
return ''; // attente d<EFBFBD>buggage
|
||||
return ''; // attente debuggage
|
||||
}
|
||||
|
||||
function getDefaultCollationDatabase()
|
||||
|
||||
@@ -354,11 +354,13 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Effectue une requete et renvoi le resultset de reponse de la base
|
||||
* \param query Contenu de la query
|
||||
* \return resource Resultset de la reponse
|
||||
* \brief Execute a SQL request and return the resultset
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||
* \return resource Resultset of answer
|
||||
*/
|
||||
function query($query)
|
||||
function query($query,$usesavepoint=0)
|
||||
{
|
||||
$query = trim($query);
|
||||
|
||||
@@ -800,10 +802,10 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Liste des tables dans une database.
|
||||
* \param database Nom de la database
|
||||
* \param table Filtre sur tables a rechercher
|
||||
* \return array Tableau des tables de la base
|
||||
* \brief List tables into a database.
|
||||
* \param database Name of database
|
||||
* \param table Filter on some tables
|
||||
* \return array Array list of tables
|
||||
*/
|
||||
function DDLListTables($database, $table='')
|
||||
{
|
||||
|
||||
@@ -361,11 +361,13 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Effectue une requete et renvoi le resultset de reponse de la base
|
||||
* \param query Contenu de la query
|
||||
* \return resource Resultset de la reponse
|
||||
* \brief Execute a SQL request and return the resultset
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||
* \return resource Resultset of answer
|
||||
*/
|
||||
function query($query)
|
||||
function query($query,$usesavepoint=0)
|
||||
{
|
||||
$query = trim($query);
|
||||
if (! $this->database_name)
|
||||
@@ -811,10 +813,10 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Liste des tables dans une database.
|
||||
* \param database Nom de la database
|
||||
* \param table Filtre sur tables a rechercher
|
||||
* \return array Tableau des tables de la base
|
||||
* \brief List tables into a database.
|
||||
* \param database Name of database
|
||||
* \param table Filter on some tables
|
||||
* \return array Array list of tables
|
||||
*/
|
||||
function DDLListTables($database, $table='')
|
||||
{
|
||||
|
||||
@@ -455,10 +455,11 @@ class DoliDb
|
||||
|
||||
/**
|
||||
* \brief Convert request to PostgreSQL syntax, execute it and return the resultset
|
||||
* \param query query string
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* \return resource Resultset of answer
|
||||
*/
|
||||
function query($query)
|
||||
function query($query,$usesavepoint=0)
|
||||
{
|
||||
$query = trim($query);
|
||||
|
||||
@@ -478,6 +479,11 @@ class DoliDb
|
||||
else $loop=false;
|
||||
}
|
||||
|
||||
if ($usesavepoint)
|
||||
{
|
||||
@pg_query($this->db, 'SAVEPOINT mysavepoint');
|
||||
}
|
||||
|
||||
$ret = @pg_query($this->db, $query);
|
||||
//print $query;
|
||||
if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
|
||||
@@ -490,6 +496,11 @@ class DoliDb
|
||||
$this->lasterrno = $this->errno();
|
||||
//print "\n>> ".$query."<br>\n";
|
||||
//print '>> '.$this->lasterrno.' - '.$this->lasterror.' - '.$this->lastqueryerror."<br>\n";
|
||||
|
||||
if ($usesavepoint)
|
||||
{
|
||||
@pg_query($this->db, 'ROLLBACK TO SAVEPOINT mysavepoint');
|
||||
}
|
||||
}
|
||||
$this->lastquery=$query;
|
||||
$this->results = $ret;
|
||||
@@ -882,10 +893,18 @@ class DoliDb
|
||||
* \param database Nom de la database
|
||||
* \return resource
|
||||
*/
|
||||
function DDLListTables($database)
|
||||
function DDLListTables($database, $table='')
|
||||
{
|
||||
$this->results = pg_query($this->db, "SHOW TABLES");
|
||||
return $this->results;
|
||||
$listtables=array();
|
||||
|
||||
$like = '';
|
||||
if ($table) $like = " AND table_name LIKE '".$table."'";
|
||||
$result = pg_query($this->db, "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'".$like);
|
||||
while($row = $this->fetch_row($result))
|
||||
{
|
||||
$listtables[] = $row[0];
|
||||
}
|
||||
return $listtables;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user