All pastes #42254 Raw Edit

Something

public text v1 · immutable
#42254 ·published 2006-02-20 19:01 UTC
rendered paste body
Index: modules/core/classes/GalleryStorage/MySqlStorage.class
===================================================================
RCS file: /cvsroot/gallery/gallery2/modules/core/classes/GalleryStorage/MySqlStorage.class,v
retrieving revision 1.3
diff -u -w -r1.3 MySqlStorage.class
--- modules/core/classes/GalleryStorage/MySqlStorage.class	10 Feb 2006 17:02:00 -0000	1.3
+++ modules/core/classes/GalleryStorage/MySqlStorage.class	20 Feb 2006 19:00:21 -0000
@@ -175,6 +175,10 @@
 	    $sql .= ') VALUES ' . $rowList;
 	    break;
 
+	case 'AVG':
+	    $sql = sprintf('AVG(%s)', $args[0]);
+	    break;
+
 	default:
 	    return array(GalleryCoreApi::error(ERROR_UNIMPLEMENTED, __FILE__, __LINE__,
 					      $functionName . ' ' . implode(' ', $args)), null);
Index: modules/core/classes/GalleryStorage/Db2Storage.class
===================================================================
RCS file: /cvsroot/gallery/gallery2/modules/core/classes/GalleryStorage/Db2Storage.class,v
retrieving revision 1.11
diff -u -w -r1.11 Db2Storage.class
--- modules/core/classes/GalleryStorage/Db2Storage.class	17 Feb 2006 23:47:08 -0000	1.11
+++ modules/core/classes/GalleryStorage/Db2Storage.class	20 Feb 2006 19:00:21 -0000
@@ -311,6 +311,14 @@
 	    $sql .= ') VALUES ' . $rowList;
 	    break;
 
+	case 'AVG':
+	    /*
+	     * DB2's AVG's return value is of the same type as the input value. To get the same
+	     * behavior that we expect from MySQL and PostgreSQL, cast the input to double
+	     */
+	    $sql = sprintf('AVG(double(%s))', $args[0]);
+	    break;
+
 	default:
 	    return array(GalleryCoreApi::error(ERROR_UNIMPLEMENTED, __FILE__, __LINE__,
 					      $functionName . ' ' . implode(' ', $args)), null);
Index: modules/core/classes/GalleryStorage/OracleStorage.class
===================================================================
RCS file: /cvsroot/gallery/gallery2/modules/core/classes/GalleryStorage/OracleStorage.class,v
retrieving revision 1.5
diff -u -w -r1.5 OracleStorage.class
--- modules/core/classes/GalleryStorage/OracleStorage.class	10 Feb 2006 17:02:00 -0000	1.5
+++ modules/core/classes/GalleryStorage/OracleStorage.class	20 Feb 2006 19:00:21 -0000
@@ -147,6 +147,10 @@
 	    $sql .= ') ' . $rowList;
 	    break;
 
+	case 'AVG':
+	    $sql = sprintf('AVG(%s)', $args[0]);
+	    break;
+
 	default:
 	    return array(GalleryCoreApi::error(ERROR_UNIMPLEMENTED, __FILE__, __LINE__,
 					      $functionName . ' ' . implode(' ', $args)), null);
Index: modules/core/classes/GalleryStorage/PostgreSqlStorage.class
===================================================================
RCS file: /cvsroot/gallery/gallery2/modules/core/classes/GalleryStorage/PostgreSqlStorage.class,v
retrieving revision 1.8
diff -u -w -r1.8 PostgreSqlStorage.class
--- modules/core/classes/GalleryStorage/PostgreSqlStorage.class	10 Feb 2006 17:02:00 -0000	1.8
+++ modules/core/classes/GalleryStorage/PostgreSqlStorage.class	20 Feb 2006 19:00:21 -0000
@@ -228,6 +228,10 @@
 	    $sql .= ') ' . $rowList;
 	    break;
 
+	case 'AVG':
+	    $sql = sprintf('AVG(%s)', $args[0]);
+	    break;
+
 	default:
 	    return array(GalleryCoreApi::error(ERROR_UNIMPLEMENTED, __FILE__, __LINE__,
 					      $functionName . ' ' . implode(' ', $args)), null);
Index: modules/rating/classes/RatingHelper.class
===================================================================
RCS file: /cvsroot/gallery/gallery2/modules/rating/classes/RatingHelper.class,v
retrieving revision 1.5
diff -u -w -r1.5 RatingHelper.class
--- modules/rating/classes/RatingHelper.class	3 Feb 2006 21:48:03 -0000	1.5
+++ modules/rating/classes/RatingHelper.class	20 Feb 2006 19:00:21 -0000
@@ -219,9 +219,13 @@
 	}
 
 	/* Compute average and update cache table */
+	list ($ret, $avg) = $storage->getFunctionSql('AVG', array('[RatingMap::rating]'));
+	if ($ret) {
+	    return array($ret->wrap(__FILE__, __LINE__), null);
+	}
 	$query = '
 	    SELECT
-	    AVG([RatingMap::rating]),
+	    ' . $avg . ',
 	    COUNT([RatingMap::rating])
 		FROM
 		[RatingMap]