Written by Takashi Ikebe (iktaka at gmail.com)
--- browscap.module.org	2008-08-27 19:54:42.000000000 +0900
+++ browscap.module	2008-08-27 23:21:26.000000000 +0900
@@ -201,7 +201,7 @@
   $result = pager_query($query, 50, 0, $query_cnt);
 
   while ($useragent = db_fetch_object($result)) {
-    if (db_result(db_query_range('SELECT useragent FROM {browscap} WHERE useragent = "%s"', $useragent->parent, 0, 1))) {
+    if (db_result(db_query_range("SELECT useragent FROM {browscap} WHERE useragent = '%s'", $useragent->parent, 0, 1))) {
       $parent = l($useragent->parent, 'admin/reports/browscap/useragent/'. urlencode($useragent->parent));
     }
     else {
@@ -332,7 +332,18 @@
       }
       $useragent = strtr($key, '*?', '%_');
       $e = array_change_key_case($e);
-      db_query("REPLACE INTO {browscap} (useragent, data) VALUES('%s','%s')", $useragent, serialize($e));
+			switch ($GLOBALS['db_type']) {
+      case 'mysql':
+    	case 'mysqli':
+	      db_query("REPLACE INTO {browscap} (useragent, data) VALUES('%s','%s')", $useragent, serialize($e));
+			case 'pgsql':
+				$ret = db_result(db_query("SELECT useragent FROM {browscap} WHERE useragent= '%s'", $useragent));
+				if($ret==FALSE){
+		      db_query("INSERT INTO {browscap} (useragent, data) VALUES('%s','%s')", $useragent, serialize($e));
+				}else{
+		      db_query("UPDATE {browscap} SET (useragent, data) VALUES('%s','%s') WHERE useragent=%s'", $useragent, serialize($e), $useragent);
+				}
+			}
     }
     
     cache_clear_all('*', 'cache_browscap', TRUE);
