iliaa           Fri Jan 11 01:47:55 2008 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/pdo    pdo_stmt.c 
    /php-src    NEWS 
  Log:
  
  MFB: Fixed a bug with PDO::FETCH_COLUMN|PDO::FETCH_GROUP mode when a column
  # by which to group by data is specified.
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.118.2.38.2.29&r2=1.118.2.38.2.30&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.29 
php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.30
--- php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.29  Mon Dec 31 07:20:09 2007
+++ php-src/ext/pdo/pdo_stmt.c  Fri Jan 11 01:47:55 2008
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_stmt.c,v 1.118.2.38.2.29 2007/12/31 07:20:09 sebastian Exp $ */
+/* $Id: pdo_stmt.c,v 1.118.2.38.2.30 2008/01/11 01:47:55 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -894,6 +894,7 @@
        int flags = how & PDO_FETCH_FLAGS, idx, old_arg_count = 0;
        zend_class_entry *ce = NULL, *old_ce = NULL;
        zval grp_val, *grp, **pgrp, *retval, *old_ctor_args = NULL;
+       int colno;
 
        if (how == PDO_FETCH_USE_DEFAULT) {
                how = stmt->default_fetch_type;
@@ -909,6 +910,12 @@
                return 1;
        }
 
+       if (flags & PDO_FETCH_GROUP && stmt->fetch.column == -1) {
+               colno = 1;
+       } else {
+               colno = stmt->fetch.column;
+       }
+
        if (return_value) {
                int i = 0;
 
@@ -945,8 +952,12 @@
                                break;
 
                        case PDO_FETCH_COLUMN:
-                               if (stmt->fetch.column >= 0 && 
stmt->fetch.column < stmt->column_count) {
-                                       fetch_value(stmt, return_value, 
stmt->fetch.column, NULL TSRMLS_CC);
+                               if (colno >= 0 && colno < stmt->column_count) {
+                                       if (flags == PDO_FETCH_GROUP && 
stmt->fetch.column == -1) {
+                                               fetch_value(stmt, return_value, 
1, NULL TSRMLS_CC);
+                                       } else {
+                                               fetch_value(stmt, return_value, 
colno, NULL TSRMLS_CC); 
+                                       }
                                        if (!return_all) {
                                                return 1;
                                        } else {
@@ -1049,7 +1060,11 @@
                
                if (return_all && how != PDO_FETCH_KEY_PAIR) {
                        INIT_PZVAL(&grp_val);
-                       fetch_value(stmt, &grp_val, i, NULL TSRMLS_CC);
+                       if (flags == PDO_FETCH_GROUP && how == PDO_FETCH_COLUMN 
&& stmt->fetch.column > 0) {
+                               fetch_value(stmt, &grp_val, colno, NULL 
TSRMLS_CC);
+                       } else {
+                               fetch_value(stmt, &grp_val, i, NULL TSRMLS_CC);
+                       }
                        convert_to_string(&grp_val);
                        if (how == PDO_FETCH_COLUMN) {
                                i = stmt->column_count; /* no more data to 
fetch */
@@ -1527,7 +1542,7 @@
                switch(ZEND_NUM_ARGS()) {
                case 0:
                case 1:
-                       stmt->fetch.column = how & PDO_FETCH_GROUP ? 1 : 0;
+                       stmt->fetch.column = how & PDO_FETCH_GROUP ? -1 : 0;
                        break;
                case 2:
                        convert_to_long(arg2);
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1050&r2=1.2027.2.547.2.1051&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.1050 php-src/NEWS:1.2027.2.547.2.1051
--- php-src/NEWS:1.2027.2.547.2.1050    Wed Jan  9 07:57:23 2008
+++ php-src/NEWS        Fri Jan 11 01:47:55 2008
@@ -4,6 +4,8 @@
 - Fixed weired behavior in CGI parameter parsing. (Dmitry, Hannes Magnusson)
 - Fixed a safe_mode bypass in cURL identified by Maksymilian Arciemowicz.
   (Ilia)
+- Fixed a bug with PDO::FETCH_COLUMN|PDO::FETCH_GROUP mode when a column # by
+  which to group by data is specified. (Ilia)
 
 - Fixed bug #43793 (zlib filter is unable to auto-detect gzip/zlib file 
headers).
   (Greg)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to