--- spaces/spaces_og/spaces_og.module	2010-08-23 20:43:35.000000000 +0200
+++ /var/www/html/atrium/profiles/openatrium/modules/contrib/spaces/spaces_og/spaces_og.module	2010-12-28 16:53:46.000000000 +0100
@@ -254,11 +254,22 @@
           $private = $space->controllers->variable->get('spaces_og_private');
           if ($op == 'update' && $private != $node->og_private) {
             // Privacy has changed, update og_public flags, and queue a rebuid.
-            db_query("UPDATE {og_access_post} og_p 
-                      INNER JOIN {og_ancestry} og_a ON og_p.nid = og_a.nid
-                      INNER JOIN {node} n ON og_p.nid = n.nid
-                      SET og_public = %d WHERE og_a.group_nid = %d",
-                      !$private, $node->nid);
+            if($GLOBALS['db_type'] != 'pgsql') {
+              db_query("UPDATE {og_access_post} og_p 
+                        INNER JOIN {og_ancestry} og_a ON og_p.nid = og_a.nid
+                        INNER JOIN {node} n ON og_p.nid = n.nid
+                        SET og_public = %d WHERE og_a.group_nid = %d",
+                        !$private, $node->nid);
+            }
+            else {
+              db_query("UPDATE {og_access_post} SET og_public = %d
+                        WHERE nid in (
+                        SELECT og_p.nid FROM {og_access_post} og_p
+                        INNER JOIN {og_ancestry} og_a ON og_p.nid = og_a.nid
+                        INNER JOIN {node} n ON og_p.nid = n.nid
+                        WHERE og_a.group_nid = %d)",
+                        !$private, $node->nid);
+            }
             node_access_needs_rebuild(TRUE);
           }
           $node->og_private = $private === NULL ? FALSE : $private;
