? .buildpath ? .project ? .settings ? db_rewrite_and_tests-D6.3.patch ? db_rewrite_and_tests-D6.4.patch ? modules/system/tests ? scripts/run-tests.sh ? sites/all/modules ? sites/default/files ? sites/default/settings.php Index: includes/database.mysql.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/Attic/database.mysql.inc,v retrieving revision 1.89.2.1 diff -u -r1.89.2.1 database.mysql.inc --- includes/database.mysql.inc 21 Jul 2009 08:52:29 -0000 1.89.2.1 +++ includes/database.mysql.inc 4 Dec 2009 19:13:21 -0000 @@ -365,7 +365,7 @@ $matches = array(); if (preg_match('/^SELECT(.*?)FROM(.*)/is', $query, $matches)) { $select = preg_replace( - '/((?:^|,)\s*)(?$value) { + if(strstr($value, $qualified_primary_field)) { + $key_found = $key; + break; + } + } + if($key_found!==FALSE) { + $prepend_to_order_by = $order_by_elements[$key_found]; + unset($order_by_elements[$key_found]); + } + else { + $prepend_to_order_by = $qualified_primary_field; + } + array_unshift($order_by_elements, $prepend_to_order_by); + $order_by = 'ORDER BY ' . implode(', ', $order_by_elements); + } + else { + $order_by = ''; + } + $field_to_select = 'DISTINCT ON ('.$qualified_primary_field.') '.$qualified_primary_field; + $field_to_select_count = 'DISTINCT('.$qualified_primary_field.')'; + $patterns = array('/' . preg_quote($qualified_primary_field) . '(?=\s|,|$)/', '/(?<=COUNT\()' . preg_quote($qualified_primary_field) . '(?=\))/'); + $replacements = array($field_to_select, $field_to_select_count); + $select_list_replacement = preg_replace($patterns, $replacements, $matches[1]); + $query = preg_replace($regex,"SELECT $select_list_replacement FROM \\2$order_by\\5", $query); + } + } } + //var_dump($query); return $query; }