--- quota_by_role.install	2008-03-09 08:20:08.000000000 +0100
+++ quota_by_role.install	2008-03-16 20:19:47.000000000 +0100
@@ -6,6 +6,7 @@
 function quota_by_role_install() {
   // Create tables.
   drupal_set_message('Installing Quota by role');
+  $success = FALSE;
 
   switch ($GLOBALS['db_type']) {
     case 'mysqli':
@@ -31,7 +32,33 @@
 
     $success = TRUE;
     break;
-  } // End case
+
+    case 'pgsql':
+    if (db_query("CREATE TABLE {quota_by_role_rules} (
+        qid SERIAL NOT NULL,
+        rid INTEGER NOT NULL DEFAULT 0,
+        limit_to INTEGER NOT NULL DEFAULT 0,
+        per INTEGER NOT NULL DEFAULT 0,
+        weight SMALLINT NOT NULL DEFAULT 0,
+        created INTEGER NOT NULL,
+        PRIMARY KEY  (qid))")) {
+      // Index creation
+      foreach(array('qid', 'rid', 'weight') as $tmp) {
+        db_query("CREATE INDEX {quota_by_roles_rules_" . $tmp . "_idx} ON {quota_by_role_rules} (" . $tmp . ")");
+      }
+
+      if (db_query("CREATE TABLE {quota_by_role_limit_submissions} (
+          qid INTEGER NOT NULL DEFAULT 0,
+          content_type VARCHAR(32) NOT NULL DEFAULT 'all',
+          PRIMARY KEY  (qid,content_type))")) {
+          $success = TRUE;
+      } else {
+        db_query("DROP TABLE {quota_by_role_rules}");
+      }
+    }
+    break;
+
+  } // End switch db_type
 
   if ($success) {
     drupal_set_message(t('Quota by role module installed tables successfully.'));
@@ -48,6 +75,8 @@
   // Remove tables.
   if (db_table_exists('quota_by_role_rules')) {
     db_query("DROP TABLE {quota_by_role_rules}");
+  }
+  if (db_table_exists('quota_by_role_limit_submissions')) {
     db_query("DROP TABLE {quota_by_role_limit_submissions}");
   }
 
