? views-571548-1.patch
Index: includes/query.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/query.inc,v
retrieving revision 1.50.2.4
diff -u -p -r1.50.2.4 query.inc
--- includes/query.inc	2 Dec 2009 22:59:18 -0000	1.50.2.4
+++ includes/query.inc	25 Jan 2010 23:30:06 -0000
@@ -641,11 +641,16 @@ class views_query {
       $alias = $table . '_' . $field;
     }
 
-    $name = $alias ? $alias : $field;
+    $alias = $alias ? $alias : $field;
+
+    // PostgreSQL truncates aliases to 63 characters: http://drupal.org/node/571548
+
+    // We limit the length of the original alias up to 60 characters
+    // to get a unique alias later if its have duplicates
+    if(strlen($alias) >= 60){ $alias = 'views_'.md5($alias); }//$alias = substr($alias, 0, 60);
 
-    // @todo FIXME -- $alias, then $name is inconsistent
     if (empty($this->fields[$alias])) {
-      $this->fields[$name] = array(
+      $this->fields[$alias] = array(
         'field' => $field,
         'table' => $table,
         'alias' => $alias,
@@ -653,10 +658,10 @@ class views_query {
     }
 
     foreach ((array)$params as $key => $value) {
-      $this->fields[$name][$key] = $value;
+      $this->fields[$alias][$key] = $value;
     }
 
-    return $name;
+    return $alias;
   }
 
   /**
@@ -833,7 +838,7 @@ class views_query {
     }
 
     if ($field) {
-      $this->add_field($table, $field, $as);
+      $as = $this->add_field($table, $field, $as, $params);
     }
 
     $this->orderby[] = "$as " . strtoupper($order);
