diff --git a/htdocs/lib/databases/mssql.lib.php b/htdocs/lib/databases/mssql.lib.php
index 4b52dd49c57c6737ed47b311f6c0cf868f7d5e91..153506cb85e5c93c6a84f05a21bec764b81b1add 100644
--- a/htdocs/lib/databases/mssql.lib.php
+++ b/htdocs/lib/databases/mssql.lib.php
@@ -153,12 +153,12 @@ class DoliDb
 
 	/**
 	 *	\brief		Convert a SQL request in mysql syntax to database syntax
-	 * 	\param		request		SQL request to convert
-	 * 	\return		string		SQL request converted
+	 * 	\param		line		SQL request line to convert
+	 * 	\return		string		SQL request line converted
 	 */
-	function convertSQLFromMysql($request)
+	function convertSQLFromMysql($line)
 	{
-		return $request;
+		return $line;
 	}
 
 	/**
diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php
index 1eae22088ec59858f885a20a476425e08096f214..6a703515a55c6371d2edd3715e5e4846f9ef6f34 100644
--- a/htdocs/lib/databases/mysql.lib.php
+++ b/htdocs/lib/databases/mysql.lib.php
@@ -167,19 +167,19 @@ class DoliDb
 
 	/**
 	 *	\brief		Convert a SQL request in mysql syntax to database syntax
-	 * 	\param		request		SQL request to convert
-	 * 	\return		string		SQL request converted
+	 * 	\param		line		SQL request line to convert
+	 * 	\return		string		SQL request line converted
 	 */
-	function convertSQLFromMysql($request)
+	function convertSQLFromMysql($line)
 	{
-		return $request;
+		return $line;
 	}
 
 	/**
-		\brief      Selectionne une database.
-		\param	    database		Nom de la database
-		\return	    boolean         true si ok, false si ko
-		*/
+	 *	\brief      Selectionne une database.
+	 *	\param	    database		Nom de la database
+	 *	\return	    boolean         true si ok, false si ko
+	 */
 	function select_db($database)
 	{
 		return mysql_select_db($database, $this->db);
diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php
index 93cc13568c2ba604e3d2982a81e186850132dcc9..1352f8b36766d8637c1e8e5d4cd5bb4150dff925 100644
--- a/htdocs/lib/databases/mysqli.lib.php
+++ b/htdocs/lib/databases/mysqli.lib.php
@@ -169,18 +169,18 @@ class DoliDb
 
 	/**
 	 *	\brief		Convert a SQL request in mysql syntax to database syntax
-	 * 	\param		request		SQL request to convert
-	 * 	\return		string		SQL request converted
+	 * 	\param		line		SQL request line to convert
+	 * 	\return		string		SQL request line converted
 	 */
-	function convertSQLFromMysql($request)
+	function convertSQLFromMysql($line)
 	{
-		return $request;
+		return $line;
 	}
 
 	/**
-	 \brief      Selectionne une database.
-	 \param	    database		Nom de la database
-	 \return	    boolean         true si ok, false si ko
+	 *	\brief      Selectionne une database.
+	 *	\param	    database		Nom de la database
+	 *	\return	    boolean         true si ok, false si ko
 	 */
 	function select_db($database)
 	{
diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php
index 18f9f7324e0807560afb07ade6253a07ecb150e6..9353c27ca6c4207b233c81e74a574a53968b6ae9 100644
--- a/htdocs/lib/databases/pgsql.lib.php
+++ b/htdocs/lib/databases/pgsql.lib.php
@@ -145,12 +145,189 @@ class DoliDb
     
     /**
 	 *	\brief		Convert a SQL request in mysql syntax to database syntax
-	 * 	\param		request		SQL request to convert
-	 * 	\return		string		SQL request converted
+	 * 	\param		line		SQL request line to convert
+	 * 	\return		string		SQL request line converted
 	 */
-	function convertSQLFromMysql($request)
+	function convertSQLFromMysql($line)
 	{
-		return $request;
+		# comments or empty lines
+    	if (eregi('^-- \$Id',$line)) { 
+    		return '';
+		}
+		# comments or empty lines
+    	if (eregi('^#',$line) || eregi('^$',$line) || eregi('^--',$line))
+    	{
+    		return $line;
+    	}
+    	if ($create_sql != "")
+    	{ 		# we are inside create table statement so lets process datatypes
+    		if (eregi('(ISAM|innodb)',$line)) { # end of create table sequence
+    			$line=eregi_replace('\) *type=(MyISAM|innodb);',');');  
+    			$line=eregi_replace('\) *engine=(MyISAM|innodb);',');');  
+    		} 
+
+            # int, auto_increment -> serial
+//    		} elsif (/^[\s\t]*(\w*)\s*.*int.*auto_increment/i) { 		
+//    			$seq = qq~${table}_${1}_seq~;
+//    			s/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/  $1 SERIAL PRIMARY KEY/ig;
+//    			$create_sql.=$_;
+
+    		# int type conversion
+/*    		} elsif (/(\w*)int\(\d+\)/i) {
+    			$size=$1;
+    			$size =~ tr [A-Z] [a-z];
+    			if ($size eq "tiny" || $size eq "small") {
+    				$out = "int2";
+    			} elsif ($size eq "big") {
+    				$out = "int8";
+    			} else {
+    				$out = "int4";
+    			}
+    			s/\w*int\(\d+\)/$out/g;
+    		}
+*/
+    		$line=eregi_replace('tinyint','smallint');  
+    
+    		# nuke unsigned
+    		if (eregi_replace('(int\w+|smallint)\s+unsigned','smallint',$reg))
+    		{
+    			$line=eregi_replace('(int\w+|smallint)\s+unsigned',$reg[1]);  
+    		}
+
+    
+    		# blob -> text
+   			$line=eregi_replace('\w*blob','text');  
+
+    		# tinytext/mediumtext -> text
+   			$line=eregi_replace('tinytext','text');  
+   			$line=eregi_replace('mediumtext','text');  
+    
+    		# char -> varchar
+    		# PostgreSQL would otherwise pad with spaces as opposed
+    		# to MySQL! Your user interface may depend on this!
+//    		s/(\s+)char/${1}varchar/gi;
+    
+    		# nuke date representation (not supported in PostgreSQL)
+//    		s/datetime default '[^']+'/datetime/i;
+//    		s/date default '[^']+'/datetime/i;
+//    		s/time default '[^']+'/datetime/i;
+    
+    		# change not null datetime field to null valid ones
+    		# (to support remapping of "zero time" to null
+   			$line=eregi_replace('datetime not null','datetime');  
+   			$line=eregi_replace('datetime','timestamp');  
+    
+    		# nuke size of timestamp
+//    		s/timestamp\([^)]*\)/timestamp/i;
+    
+    		# double -> real
+//    		s/^double/real/i;
+//    		s/(\s*)double/${1}real/i;
+    
+    		# unique key(field1,field2)
+/*    		if (/unique key\s*\((\w+\s*,\s*\w+)\)/i) {
+    		    s/unique key\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i;
+                $create_sql.=$_;
+    		    next;
+    		}
+*/
+    		# unique index(field1,field2)
+/*    		if (/unique index\s*\((\w+\s*,\s*\w+)\)/i) {
+                s/unique index\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i;
+                $create_sql.=$_;
+    		    next;
+    		}
+*/    
+            # unique key [name] (field)
+/*            if (/unique key\s*(\w*)\s*\((\w+)\)/i) {
+                s/unique key\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i;
+                my $idxname=($1?"$1":"idx_${table}_$2");
+                $create_sql.=$_;
+                $create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
+                next;
+            }
+*/
+            # unique index [name] (field)
+/*            if (/unique index\s*(\w*)\s*\((\w+)\)/i) {
+                s/unique index\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i;
+                my $idxname=($1?"$1":"idx_${table}_$2");
+                $create_sql.=$_;
+                $create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
+                next;
+            }
+*/
+            # unique (field) et unique (field1, field2 ...)
+/*            if (/unique\s*\(([\w,\s]+)\)/i) {
+                s/unique\s*\(([\w,\s]+)\)/UNIQUE\($1\)/i;
+                my $fieldlist="$1";
+                my $idxname="idx_${table}_${fieldlist}";
+                $idxname =~ s/\W/_/g; $idxname =~ tr/_/_/s;
+                $create_sql.=$_;
+                $create_index .= "CREATE INDEX $idxname ON $table ($fieldlist);\n";
+                next;
+            }
+*/            
+            # index(field)
+/*            if (/index\s*(\w*)\s*\((\w+)\)/i) {
+                my $idxname=($1?"$1":"idx_${table}_$2");
+                $create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
+                next;
+            }
+*/            
+            # primary key
+/*    		if (/\bkey\b/i && !/^\s+primary key\s+/i) {
+    			s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i;		 # hack off name of the non-primary key
+    		}
+*/    
+            # key(xxx)
+/*            if (/key\s*\((\w+)\)/i) {
+                my $idxname="idx_${table}_$1";
+                $create_index .= "CREATE INDEX $idxname ON $table ($1);\n";
+                next;
+            }
+*/            
+    		# Quote column names
+/*    		s/(^\s*)([^\s\-\(]+)(\s*)/$1"$2"$3/gi if (!/\bkey\b/i);
+*/  
+    		# Remap colums with names of existing system attribute 
+/*    		if (/"oid"/i) {
+    			s/"oid"/"_oid"/g;
+    			print STDERR "WARNING: table $table uses column \"oid\" which is renamed to \"_oid\"\nYou should fix application manually! Press return to continue.";
+    			my $wait=<STDIN>;
+    		}
+    		s/oid/_oid/i if (/key/i && /oid/i); # fix oid in key
+    		$create_sql.=$_;
+*/
+    	} #  END of if ($create_sql ne "") i.e. were inside create table statement so processed datatypes
+    	else {	# not inside create table
+    		#---- fix data in inserted data: (from MS world)
+    		# FIX: disabled for now
+/*    		if (00 && /insert into/i) {
+    			s!\x96!-!g;	# --
+    			s!\x93!"!g;	# ``
+    			s!\x94!"!g;	# ''
+    			s!\x85!... !g;	# \ldots
+    			s!\x92!`!g;
+    		}
+*/    
+    		# fix dates '0000-00-00 00:00:00' (should be null)
+/*    		s/'0000-00-00 00:00:00'/null/gi;
+    		s/'0000-00-00'/null/gi;
+    		s/'00:00:00'/null/gi;
+    		s/([12]\d\d\d)([01]\d)([0-3]\d)([0-2]\d)([0-6]\d)([0-6]\d)/'$1-$2-$3 $4:$5:$6'/;
+    
+    		if (/create\s+table\s+(\w+)/i) {
+    			$create_sql = $_;
+    			/create\s*table\s*(\w+)/i;
+    			$table=$1 if (defined($1));
+    		} else {
+    			print OUT $_;
+    		}
+*/
+    	} # end of if inside create_table
+		
+		
+		return $line;
 	}
         
     /**