[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_oci/tests bug46274.phpt bug46274_2.phpt /ext/pdo_pgsql pgsql_statement.c /ext/pdo_pgsql/tests bug46274_2.phpt

2009-04-23 Thread Matteo Beccati
mbeccatiThu Apr 23 13:22:12 2009 UTC

  Added files: 
/php-src/ext/pdo_oci/tests  bug46274.phpt bug46274_2.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo_pgsql  pgsql_statement.c 
/php-src/ext/pdo_pgsql/testsbug46274_2.phpt 
  Log:
  - Reverted previous fix for bug #46274 and properly fixed it
  - Fixed bug #48060
  # Also added tests for pdo_oci as it's the only other driver currently
  # using streams: no regression found
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.221&r2=1.222&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.221 php-src/ext/pdo/pdo_stmt.c:1.222
--- php-src/ext/pdo/pdo_stmt.c:1.221Thu Apr  2 16:40:33 2009
+++ php-src/ext/pdo/pdo_stmt.c  Thu Apr 23 13:22:12 2009
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.221 2009/04/02 16:40:33 mbeccati Exp $ */
+/* $Id: pdo_stmt.c,v 1.222 2009/04/23 13:22:12 mbeccati Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -583,6 +583,7 @@
if (value == NULL) {
ZVAL_NULL(dest);
} else if (value_len == 0) {
+   /* Warning, empty strings need to be passed as 
stream */
if (stmt->dbh->stringify || new_type == 
PDO_PARAM_STR) {
char *buf = NULL;
size_t len;
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_pgsql/pgsql_statement.c?r1=1.52&r2=1.53&diff_format=u
Index: php-src/ext/pdo_pgsql/pgsql_statement.c
diff -u php-src/ext/pdo_pgsql/pgsql_statement.c:1.52 
php-src/ext/pdo_pgsql/pgsql_statement.c:1.53
--- php-src/ext/pdo_pgsql/pgsql_statement.c:1.52Sat Mar 28 03:01:38 2009
+++ php-src/ext/pdo_pgsql/pgsql_statement.c Thu Apr 23 13:22:12 2009
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pgsql_statement.c,v 1.52 2009/03/28 03:01:38 mbeccati Exp $ */
+/* $Id: pgsql_statement.c,v 1.53 2009/04/23 13:22:12 mbeccati Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -619,8 +619,14 @@
return 0;
} else {
*ptr = 
php_pdo_pgsql_unescape_bytea(*ptr, &tmp_len);
-   *len = tmp_len;
-   *caller_frees = 1;
+   if (!tmp_len) {
+   /* Empty string, return as 
empty stream */
+   *ptr = (char 
*)php_stream_memory_open(TEMP_STREAM_READONLY, "", 0);
+   *len = 0;
+   } else {
+   *len = tmp_len;
+   *caller_frees = 1;
+   }
}
break;
case PDO_PARAM_NULL:
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_pgsql/tests/bug46274_2.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/pdo_pgsql/tests/bug46274_2.phpt
diff -u php-src/ext/pdo_pgsql/tests/bug46274_2.phpt:1.2 
php-src/ext/pdo_pgsql/tests/bug46274_2.phpt:1.3
--- php-src/ext/pdo_pgsql/tests/bug46274_2.phpt:1.2 Sat Mar 28 02:34:02 2009
+++ php-src/ext/pdo_pgsql/tests/bug46274_2.phpt Thu Apr 23 13:22:12 2009
@@ -47,11 +47,13 @@
 var_dump($x = $res->fetch());
 var_dump(fread($x['blob1'], 10));
 
-// Empty string
+// Resource
 var_dump($res->fetch());
+var_dump(fread($x['blob1'], 10));
 
-// Empty string
+// Resource
 var_dump($res->fetch());
+var_dump(fread($x['blob1'], 10));
 
 // NULL
 var_dump($res->fetch());
@@ -69,16 +71,18 @@
 string(3) "foo"
 array(2) {
   ["blob1"]=>
-  string(0) ""
+  resource(%d) of type (stream)
   [0]=>
-  string(0) ""
+  resource(%d) of type (stream)
 }
+string(0) ""
 array(2) {
   ["blob1"]=>
-  string(0) ""
+  resource(%d) of type (stream)
   [0]=>
-  string(0) ""
+  resource(%d) of type (stream)
 }
+string(0) ""
 array(2) {
   ["blob1"]=>
   NULL

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/tests/bug46274.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo_oci/tests/bug46274.phpt
+++ php-src/ext/pdo_oci/tests/bug46274.phpt
--TEST--
Bug #46274 (pdo_pgsql - Segfault when using PDO::ATTR_STRINGIFY_FETCHES and 
blob)
--SKIPIF--

--FILE--
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);

try {
$db->exec("DROP TABLE test_one_blob");
} catch (Exception $e) {
}

$db->beginTransaction();

$db->query('CREATE TABLE test_one_blob (id INT NOT NULL, blob1 BLOB)');

$stmt = $db->prepare("INSERT INTO test_one_blob (id, blob1

[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_mysql/tests bug44327.phpt pdo_mysql_stmt_errorinfo.phpt pdo_mysql_stmt_multiquery.phpt

2009-03-24 Thread Felipe Pena
felipe  Tue Mar 24 19:32:07 2009 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo_mysql/testsbug44327.phpt 
pdo_mysql_stmt_errorinfo.phpt 
pdo_mysql_stmt_multiquery.phpt 
  Log:
  - Synced pieces of codes
  - Fixed tests
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.217&r2=1.218&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.217 php-src/ext/pdo/pdo_stmt.c:1.218
--- php-src/ext/pdo/pdo_stmt.c:1.217Mon Mar 23 23:02:06 2009
+++ php-src/ext/pdo/pdo_stmt.c  Tue Mar 24 19:32:06 2009
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.217 2009/03/23 23:02:06 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.218 2009/03/24 19:32:06 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2650,6 +2650,7 @@
}
}
if (strcmp(Z_STRVAL_P(member), "queryString") == 0) {
+   zval_ptr_dtor(&return_value);
return std_object_handlers.read_property(object, 
member, IS_STRING TSRMLS_CC);
}
}
@@ -2694,28 +2695,18 @@
 
 static HashTable *row_get_properties(zval *object TSRMLS_DC)
 {
-   zval *tmp;
pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object 
TSRMLS_CC);
int i;
-   HashTable *ht;
-
-   MAKE_STD_ZVAL(tmp);
-   array_init(tmp);
 
for (i = 0; i < stmt->column_count; i++) {
zval *val;
MAKE_STD_ZVAL(val);
fetch_value(stmt, val, i, NULL TSRMLS_CC);
 
-   add_assoc_zval(tmp, stmt->columns[i].name, val);
+   zend_hash_update(stmt->properties, stmt->columns[i].name, 
stmt->columns[i].namelen + 1, (void *)&val, sizeof(zval *), NULL);
}
 
-   ht = Z_ARRVAL_P(tmp);
-
-   ZVAL_NULL(tmp);
-   FREE_ZVAL(tmp);
-
-   return ht;
+   return stmt->properties;
 }
 
 static union _zend_function *row_method_get(
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/tests/bug44327.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_mysql/tests/bug44327.phpt
diff -u php-src/ext/pdo_mysql/tests/bug44327.phpt:1.1 
php-src/ext/pdo_mysql/tests/bug44327.phpt:1.2
--- php-src/ext/pdo_mysql/tests/bug44327.phpt:1.1   Mon Nov  3 15:31:51 2008
+++ php-src/ext/pdo_mysql/tests/bug44327.phpt   Tue Mar 24 19:32:06 2009
@@ -42,22 +42,22 @@
 ?>
 --EXPECTF--
 object(PDORow)#%d (2) {
-  ["queryString"]=>
-  string(17) "SELECT 1 AS "one""
-  ["one"]=>
+  [u"queryString"]=>
+  unicode(17) "SELECT 1 AS "one""
+  [u"one"]=>
   string(1) "1"
 }
-string(1) "1"
-string(1) "1"
-string(17) "SELECT 1 AS "one""
+unicode(1) "1"
+unicode(1) "1"
+unicode(17) "SELECT 1 AS "one""
 --
 object(PDORow)#%d (2) {
-  ["queryString"]=>
-  string(19) "SELECT id FROM test"
-  ["id"]=>
-  string(1) "1"
+  [u"queryString"]=>
+  unicode(19) "SELECT id FROM test"
+  [u"id"]=>
+  unicode(1) "1"
 }
-string(19) "SELECT id FROM test"
+unicode(19) "SELECT id FROM test"
 --
 
 Notice: Trying to get property of non-object in %s on line %d
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt
diff -u php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt:1.1 
php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt:1.2
--- php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt:1.1   Mon Jul 
21 13:05:51 2008
+++ php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_errorinfo.phpt   Tue Mar 24 
19:32:06 2009
@@ -61,9 +61,13 @@
 ?>
 --EXPECTF--
 Testing emulated PS...
-array(1) {
+array(3) {
   [0]=>
   string(0) ""
+  [1]=>
+  NULL
+  [2]=>
+  NULL
 }
 
 Warning: PDOStatement::execute(): SQLSTATE[42S02]: Base table or view not 
found: 1146 Table '%s.ihopeitdoesnotexist' doesn't exist in %s on line %d
@@ -86,17 +90,25 @@
   [2]=>
   string(%d) "Table '%s.test' doesn't exist"
 }
-array(1) {
+array(3) {
   [0]=>
   string(5) "0"
+  [1]=>
+  NULL
+  [2]=>
+  NULL
 }
 Testing native PS...
 
 Warning: PDO::prepare(): SQLSTATE[42S02]: Base table or view not found: 1146 
Table '%s.ihopeitdoesnotexist' doesn't exist in %s on line %d
 bool(false)
-array(1) {
+array(3) {
   [0]=>
   string(0) ""
+  [1]=>
+  NULL
+  [2]=>
+  NULL
 }
 
 Warning: PDOStatement::execute(): SQLSTATE[42S02]: Base table or view not 
found: 1146 Table '%s.test' doesn't exist in %s on line %d
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt
diff -u php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt:1.1 
php-src/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.php

[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests bug_44409.phpt

2009-03-23 Thread Felipe Pena
felipe  Mon Mar 23 23:02:06 2009 UTC

  Added files: 
/php-src/ext/pdo/tests  bug_44409.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fixed bug #44409 (PDO::FETCH_SERIALIZE calls __construct()) 
Patch by: matteo at beccati dot com
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.216&r2=1.217&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.216 php-src/ext/pdo/pdo_stmt.c:1.217
--- php-src/ext/pdo/pdo_stmt.c:1.216Thu Mar 12 16:12:44 2009
+++ php-src/ext/pdo/pdo_stmt.c  Mon Mar 23 23:02:06 2009
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.216 2009/03/12 16:12:44 andrei Exp $ */
+/* $Id: pdo_stmt.c,v 1.217 2009/03/23 23:02:06 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1239,7 +1239,7 @@

switch (how) {
case PDO_FETCH_CLASS:
-   if (ce->constructor && !(flags & 
PDO_FETCH_PROPS_LATE)) {
+   if (ce->constructor && !(flags & 
(PDO_FETCH_PROPS_LATE | PDO_FETCH_SERIALIZE))) {
stmt->fetch.cls.fci.object_ptr = 
return_value;
stmt->fetch.cls.fcc.object_ptr = 
return_value;
if 
(zend_call_function(&stmt->fetch.cls.fci, &stmt->fetch.cls.fcc TSRMLS_CC) == 
FAILURE) {

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_44409.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo/tests/bug_44409.phpt
+++ php-src/ext/pdo/tests/bug_44409.phpt
--TEST--
PDO Common: Bug #44409 (PDO::FETCH_SERIALIZE calls __construct())
--SKIPIF--

--FILE--
exec("CREATE TABLE test (dat varchar(100))");
$db->exec("INSERT INTO test (dat) VALUES ('Data from DB')");

class bug44409 implements Serializable
{
public function __construct() 
{
printf("Method called: %s()\n", __METHOD__); 
}   

public function serialize()
{
return "any data from serizalize()"; 
}

public function unserialize($dat)
{
printf("Method called: %s(%s)\n", __METHOD__, var_export($dat, 
true));
}
}

$stmt = $db->query("SELECT * FROM test");

print_r($stmt->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, "bug44409"));

?>
--EXPECT--
Method called: bug44409::unserialize('Data from DB')
Array
(
[0] => bug44409 Object
(
)

)



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-12-03 Thread Antony Dovgal
tony2001Wed Dec  3 10:11:04 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix possible invalid read
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.212&r2=1.213&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.212 php-src/ext/pdo/pdo_stmt.c:1.213
--- php-src/ext/pdo/pdo_stmt.c:1.212Thu Nov 27 19:02:44 2008
+++ php-src/ext/pdo/pdo_stmt.c  Wed Dec  3 10:11:04 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.212 2008/11/27 19:02:44 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.213 2008/12/03 10:11:04 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2202,11 +2202,15 @@
zstr str;
uint len;
ulong num;
+   int res;
 
-   if (zend_hash_get_current_key_ex(stmt->bound_params, 
&str, &len, &num, 0, &pos) == HASH_KEY_IS_LONG) {
+   res = zend_hash_get_current_key_ex(stmt->bound_params, 
&str, &len, &num, 0, &pos);
+   if (res == HASH_KEY_IS_LONG) {
php_stream_printf(out TSRMLS_CC, "Key: Position 
#%ld:\n", num);
-   } else {
-   php_stream_printf(out TSRMLS_CC, "Key: Name: 
[%d] %.*s\n", len, len, str);
+   } else if (res == HASH_KEY_IS_STRING) {
+   php_stream_printf(out TSRMLS_CC, "Key: Name: 
[%d] %.*s\n", len, len, str.s);
+   } else if (res == HASH_KEY_IS_UNICODE) {
+   php_stream_printf(out TSRMLS_CC, "Key: Name: 
[%d] %.*r\n", len, len, str.u);
}
 
php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] 
\"%.*s\"\nis_param=%d\nparam_type=%d\n",



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_sqlite/tests debugdumpparams_001.phpt

2008-11-05 Thread Felipe Pena
felipe  Wed Nov  5 23:39:09 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo_sqlite/tests   debugdumpparams_001.phpt 
  Log:
  - Fixed wrong check
  - Improved test
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.207&r2=1.208&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.207 php-src/ext/pdo/pdo_stmt.c:1.208
--- php-src/ext/pdo/pdo_stmt.c:1.207Mon Nov  3 23:43:51 2008
+++ php-src/ext/pdo/pdo_stmt.c  Wed Nov  5 23:39:09 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.207 2008/11/03 23:43:51 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.208 2008/11/05 23:39:09 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2200,14 +2200,14 @@
uint len;
ulong num;
 
-   if (zend_hash_get_current_key_ex(stmt->bound_params, 
&str, &len, &num, 0, &pos) == HASH_KEY_IS_STRING) {
-   php_stream_printf(out TSRMLS_CC, "Key: Position 
#%d:\n", num);
+   if (zend_hash_get_current_key_ex(stmt->bound_params, 
&str, &len, &num, 0, &pos) == HASH_KEY_IS_LONG) {
+   php_stream_printf(out TSRMLS_CC, "Key: Position 
#%ld:\n", num);
} else {
php_stream_printf(out TSRMLS_CC, "Key: Name: 
[%d] %.*s\n", len, len, str);
}
 
-   php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] 
%.*s\nis_param=%d\nparam_type=%d\n",
-   param->paramno, param->namelen, param->namelen, 
param->name,
+   php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] 
\"%.*s\"\nis_param=%d\nparam_type=%d\n",
+   param->paramno, param->namelen, param->namelen, 
param->name ? param->name : "",
param->is_param,
param->param_type);

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt
diff -u php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt:1.1 
php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt:1.2
--- php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt:1.1   Mon Nov  3 
20:45:43 2008
+++ php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt   Wed Nov  5 
23:39:09 2008
@@ -9,23 +9,29 @@
 
 $db = new pdo('sqlite:memory');
 
-$x= $db->prepare('select :a, :b');
+$x= $db->prepare('select :a, :b, ?');
 $x->bindValue(':a', 1, PDO::PARAM_INT);
 $x->bindValue(':b', 'foo');
+$x->bindValue(3, 1313);
 var_dump($x->debugDumpParams());
 
 ?>
 --EXPECT--
-SQL: [13] select :a, :b
-Params:  2
-Key: Position #0:
+SQL: [16] select :a, :b, ?
+Params:  3
+Key: Name: [2] :a
 paramno=-1
-name=[2] :a
+name=[2] ":a"
 is_param=1
 param_type=1
-Key: Position #0:
+Key: Name: [2] :b
 paramno=-1
-name=[2] :b
+name=[2] ":b"
+is_param=1
+param_type=2
+Key: Position #2:
+paramno=2
+name=[0] ""
 is_param=1
 param_type=2
 NULL



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_sqlite/tests bug44327_3.phpt

2008-11-03 Thread Felipe Pena
felipe  Mon Nov  3 23:43:51 2008 UTC

  Added files: 
/php-src/ext/pdo_sqlite/tests   bug44327_3.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Improved fix
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.206&r2=1.207&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.206 php-src/ext/pdo/pdo_stmt.c:1.207
--- php-src/ext/pdo/pdo_stmt.c:1.206Mon Nov  3 20:45:43 2008
+++ php-src/ext/pdo/pdo_stmt.c  Mon Nov  3 23:43:51 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.206 2008/11/03 20:45:43 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.207 2008/11/03 23:43:51 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2623,11 +2623,8 @@
pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object 
TSRMLS_CC);
int colno = -1;
 
-   if ((Z_TYPE_P(member) == IS_STRING || Z_TYPE_P(member) == IS_UNICODE) &&
-   memcmp(Z_UNIVAL_P(member).v, "queryString", 
sizeof("queryString")-1)) {
-   return std_object_handlers.read_property(object, member, 
IS_STRING TSRMLS_CC);
-   }
MAKE_STD_ZVAL(return_value);
+   RETVAL_NULL();

if (Z_TYPE_P(member) == IS_LONG) {
if (Z_LVAL_P(member) >= 0 && Z_LVAL_P(member) < 
stmt->column_count) {
@@ -2640,9 +2637,14 @@
for (colno = 0; colno < stmt->column_count; colno++) {
if (strcmp(stmt->columns[colno].name, 
Z_STRVAL_P(member)) == 0) {
fetch_value(stmt, return_value, colno, NULL 
TSRMLS_CC);
-   break;
+   Z_SET_REFCOUNT_P(return_value, 0);
+   Z_UNSET_ISREF_P(return_value);
+   return return_value;
}
}
+   if (strcmp(Z_STRVAL_P(member), "queryString") == 0) {
+   return std_object_handlers.read_property(object, 
member, IS_STRING TSRMLS_CC);
+   }
}
 
Z_SET_REFCOUNT_P(return_value, 0);

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/tests/bug44327_3.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo_sqlite/tests/bug44327_3.phpt
+++ php-src/ext/pdo_sqlite/tests/bug44327_3.phpt
--TEST--
Bug #44327.3 (PDORow::queryString property & numeric offsets / Crash)
--SKIPIF--

--FILE--
query('select 1 as queryStringxx');
$y = $x->fetch(PDO::FETCH_LAZY);
var_dump($y, $y->queryString, $y->queryStringzz, $y->queryStringxx);

print "---\n";

var_dump($y[5], $y->{3});

?>
--EXPECTF--
object(PDORow)#%d (2) {
  ["queryString"]=>
  string(25) "select 1 as queryStringxx"
  ["queryStringxx"]=>
  string(1) "1"
}
string(25) "select 1 as queryStringxx"
NULL
string(1) "1"
---
NULL
NULL



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_sqlite/tests debugdumpparams_001.phpt

2008-11-03 Thread Felipe Pena
felipe  Mon Nov  3 20:45:43 2008 UTC

  Added files: 
/php-src/ext/pdo_sqlite/tests   debugdumpparams_001.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fixed endless loop in PDOStatement::debugDumpParams()
patch by: Jonah H. Harris 
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.205&r2=1.206&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.205 php-src/ext/pdo/pdo_stmt.c:1.206
--- php-src/ext/pdo/pdo_stmt.c:1.205Mon Nov  3 15:31:51 2008
+++ php-src/ext/pdo/pdo_stmt.c  Mon Nov  3 20:45:43 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.205 2008/11/03 15:31:51 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.206 2008/11/03 20:45:43 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2211,6 +2211,7 @@
param->is_param,
param->param_type);

+   zend_hash_move_forward_ex(stmt->bound_params, &pos);
}
}
 

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt
+++ php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt
--TEST--
Testing PDOStatement::debugDumpParams() with bound params
--SKIPIF--

--FILE--
prepare('select :a, :b');
$x->bindValue(':a', 1, PDO::PARAM_INT);
$x->bindValue(':b', 'foo');
var_dump($x->debugDumpParams());

?>
--EXPECT--
SQL: [13] select :a, :b
Params:  2
Key: Position #0:
paramno=-1
name=[2] :a
is_param=1
param_type=1
Key: Position #0:
paramno=-1
name=[2] :b
is_param=1
param_type=2
NULL



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_mysql/tests bug44327.phpt

2008-11-03 Thread Felipe Pena
felipe  Mon Nov  3 15:31:51 2008 UTC

  Added files: 
/php-src/ext/pdo_mysql/testsbug44327.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fixed bug #44327 (PDORow::queryString property & numeric offsets / Crash)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.204&r2=1.205&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.204 php-src/ext/pdo/pdo_stmt.c:1.205
--- php-src/ext/pdo/pdo_stmt.c:1.204Sun Nov  2 21:10:10 2008
+++ php-src/ext/pdo/pdo_stmt.c  Mon Nov  3 15:31:51 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.204 2008/11/02 21:10:10 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.205 2008/11/03 15:31:51 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2622,6 +2622,10 @@
pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object 
TSRMLS_CC);
int colno = -1;
 
+   if ((Z_TYPE_P(member) == IS_STRING || Z_TYPE_P(member) == IS_UNICODE) &&
+   memcmp(Z_UNIVAL_P(member).v, "queryString", 
sizeof("queryString")-1)) {
+   return std_object_handlers.read_property(object, member, 
IS_STRING TSRMLS_CC);
+   }
MAKE_STD_ZVAL(return_value);

if (Z_TYPE_P(member) == IS_LONG) {

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/tests/bug44327.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo_mysql/tests/bug44327.phpt
+++ php-src/ext/pdo_mysql/tests/bug44327.phpt
--TEST--
Bug #44327 (PDORow::queryString property & numeric offsets / Crash)
--SKIPIF--

--FILE--
prepare("SELECT 1 AS \"one\""); 
$stmt->execute(); 
$row = $stmt->fetch(PDO::FETCH_LAZY); 
var_dump($row);
var_dump($row->{0});
var_dump($row->one); 
var_dump($row->queryString);

print "--\n";

@$db->exec("DROP TABLE test");
$db->exec("CREATE TABLE test (id INT)");
$db->exec("INSERT INTO test(id) VALUES (1)");
$stmt = $db->prepare("SELECT id FROM test");
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_LAZY);
var_dump($row);
var_dump($row->queryString);
@$db->exec("DROP TABLE test");

print "--\n";

$stmt = $db->prepare('foo'); 
@$stmt->execute();
$row = $stmt->fetch();
var_dump($row->queryString);

?>
--EXPECTF--
object(PDORow)#%d (2) {
  ["queryString"]=>
  string(17) "SELECT 1 AS "one""
  ["one"]=>
  string(1) "1"
}
string(1) "1"
string(1) "1"
string(17) "SELECT 1 AS "one""
--
object(PDORow)#%d (2) {
  ["queryString"]=>
  string(19) "SELECT id FROM test"
  ["id"]=>
  string(1) "1"
}
string(19) "SELECT id FROM test"
--

Notice: Trying to get property of non-object in %s on line %d
NULL



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_mysql/tests bug46292.phpt

2008-10-14 Thread Felipe Pena
felipe  Tue Oct 14 17:34:11 2008 UTC

  Added files: 
/php-src/ext/pdo_mysql/testsbug46292.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fixed bug #46292 (PDO::setFetchMode() shouldn't requires the 2nd arg when 
using FETCH_CLASSTYPE)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.201&r2=1.202&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.201 php-src/ext/pdo/pdo_stmt.c:1.202
--- php-src/ext/pdo/pdo_stmt.c:1.201Fri Oct 10 19:35:15 2008
+++ php-src/ext/pdo/pdo_stmt.c  Tue Oct 14 17:34:11 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.201 2008/10/10 19:35:15 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.202 2008/10/14 17:34:11 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1939,7 +1939,7 @@
 int pdo_stmt_setup_fetch_mode(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, 
int skip)
 {
long mode = PDO_FETCH_BOTH;
-   int argc = ZEND_NUM_ARGS() - skip;
+   int flags, argc = ZEND_NUM_ARGS() - skip;
zval ***args;
zend_class_entry **cep;

@@ -1972,6 +1972,7 @@

convert_to_long_ex(args[skip]);
mode = Z_LVAL_PP(args[skip]);
+   flags = mode & PDO_FETCH_FLAGS;

if (!pdo_stmt_verify_mode(stmt, mode, 0 TSRMLS_CC)) {
efree(args);
@@ -1999,21 +2000,30 @@
break;
 
case PDO_FETCH_CLASS:
-   if (argc < 2 || argc > 3) {
-   goto fail_out;
-   }
-   convert_to_string_ex(args[skip+1]);
-
-   if (FAILURE == 
zend_lookup_class(Z_STRVAL_PP(args[skip+1]),
-   Z_STRLEN_PP(args[skip+1]), &cep 
TSRMLS_CC)) {
-   goto fail_out;
-   }
+   /* Gets its class name from 1st column */
+   if ((flags & PDO_FETCH_CLASSTYPE) == 
PDO_FETCH_CLASSTYPE) {
+   if (argc != 1) {
+   goto fail_out;
+   }
+   stmt->fetch.cls.ce = NULL;
+   } else {
+   if (argc < 2 || argc > 3) {
+   goto fail_out;
+   }   
+   convert_to_string_ex(args[skip+1]);

-   if (!cep || !*cep) {
-   goto fail_out;
+   if (FAILURE == 
zend_lookup_class(Z_STRVAL_PP(args[skip+1]),
+   Z_STRLEN_PP(args[skip+1]), &cep 
TSRMLS_CC)) {
+   goto fail_out;
+   }
+   
+   if (!cep || !*cep) {
+   goto fail_out;
+   }
+   
+   stmt->fetch.cls.ce = *cep;  

}
-   
-   stmt->fetch.cls.ce = *cep;
+
stmt->fetch.cls.ctor_args = NULL;
 
 #ifdef ilia_0 /* we'll only need this when we have persistent statements, if 
ever */

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/tests/bug46292.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo_mysql/tests/bug46292.phpt
+++ php-src/ext/pdo_mysql/tests/bug46292.phpt
--TEST--
Bug #46292 (PDO::setFetchMode() shouldn't requires the 2nd arg when using 
FETCH_CLASSTYPE)
--FILE--
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$pdoDb->query('DROP TABLE IF EXISTS testz');

$pdoDb->query('CREATE TABLE testz (name VARCHAR(20) NOT NULL, value 
INT)');

$pdoDb->query("INSERT INTO testz VALUES ('myclass', 1), ('myclass2', 
2), ('myclass', NULL), ('myclass3', NULL)");

$stmt = $pdoDb->prepare("SELECT * FROM testz");

var_dump($stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE | 
PDO::FETCH_GROUP));
$stmt->execute();

var_dump($stmt->fetch());
var_dump($stmt->fetch());
var_dump($stmt->fetchAll());

$pdoDb->query('DROP TABLE IF EXISTS testz');

?>
--EXPECTF--
bool(true)
myclass::__construct()
object(myclass)#3 (1) {
  ["value"]=>
  string(1) "1"
}
myclass::__construct()
object(myclass2)#3 (1) {
  ["value"]=>
  string(1) "2"
}
myclass::__construct()
array(2) {
  [0]=>
  object(myclass)#3 (1) {
["value"]=>
NULL
  }
  [1]=>
  object(stdClass)#4 (1) {
["value"]=>
NULL
  }
}



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

[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-10-10 Thread Felipe Pena
felipe  Fri Oct 10 19:35:16 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Static'fication
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.200&r2=1.201&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.200 php-src/ext/pdo/pdo_stmt.c:1.201
--- php-src/ext/pdo/pdo_stmt.c:1.200Fri Oct 10 16:46:10 2008
+++ php-src/ext/pdo/pdo_stmt.c  Fri Oct 10 19:35:15 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.200 2008/10/10 16:46:10 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.201 2008/10/10 19:35:15 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -38,31 +38,44 @@
 #include "php_memory_streams.h"
 
 /* {{{ arginfo */
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_execute, 0, 0, 0)
ZEND_ARG_INFO(0, bound_input_params) /* array */
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetch, 0, 0, 0)
ZEND_ARG_INFO(0, how)
ZEND_ARG_INFO(0, orientation)
ZEND_ARG_INFO(0, offset)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchobject, 0, 0, 0)
ZEND_ARG_INFO(0, class_name)
ZEND_ARG_INFO(0, ctor_args) /* array */
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchcolumn, 0, 0, 0)
ZEND_ARG_INFO(0, column_number)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchall, 0, 0, 0)
ZEND_ARG_INFO(0, how)
ZEND_ARG_INFO(0, class_name)
ZEND_ARG_INFO(0, ctor_args) /* array */
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindvalue, 0, 0, 2)
ZEND_ARG_INFO(0, paramno)
ZEND_ARG_INFO(0, param)
ZEND_ARG_INFO(0, type)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindparam, 0, 0, 2)
ZEND_ARG_INFO(0, paramno)
ZEND_ARG_INFO(1, param)
@@ -70,6 +83,8 @@
ZEND_ARG_INFO(0, maxlen)
ZEND_ARG_INFO(0, driverdata)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindcolumn, 0, 0, 2)
ZEND_ARG_INFO(0, column)
ZEND_ARG_INFO(1, param)
@@ -77,16 +92,24 @@
ZEND_ARG_INFO(0, maxlen)
ZEND_ARG_INFO(0, driverdata)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_setattribute, 0)
ZEND_ARG_INFO(0, attribute)
ZEND_ARG_INFO(0, value)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_getattribute, 0)
ZEND_ARG_INFO(0, attribute)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_getcolumnmeta, 0)
ZEND_ARG_INFO(0, column)
 ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_setfetchmode, 0, 0, 1)
ZEND_ARG_INFO(0, mode)
ZEND_ARG_INFO(0, params)



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-10-10 Thread Felipe Pena
felipe  Fri Oct 10 16:46:10 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fixed bug #46139 (PDOStatement->setFetchMode() forgets FETCH_PROPS_LATE)
Initial patch by: chsc at peytz dot dk
  
  MFB:
  - Fixed bug #41971 (PDOStatement::fetch and PDOStatement::setFetchMode causes 
unexpected behavior)
  - Fixed bug #42917 (PDO::FETCH_KEY_PAIR doesn't work with setFetchMode)
  
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.199&r2=1.200&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.199 php-src/ext/pdo/pdo_stmt.c:1.200
--- php-src/ext/pdo/pdo_stmt.c:1.199Tue Sep 23 23:05:24 2008
+++ php-src/ext/pdo/pdo_stmt.c  Fri Oct 10 16:46:10 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.199 2008/09/23 23:05:24 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.200 2008/10/10 16:46:10 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -897,15 +897,16 @@
 static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
enum pdo_fetch_type how, enum pdo_fetch_orientation ori, long offset, 
zval *return_all TSRMLS_DC) /* {{{ */
 {
-   int flags = how & PDO_FETCH_FLAGS, idx, old_arg_count = 0;
+   int 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;
 
-   how = how & ~PDO_FETCH_FLAGS;
if (how == PDO_FETCH_USE_DEFAULT) {
how = stmt->default_fetch_type;
}
+   flags = how & PDO_FETCH_FLAGS;
+   how = how & ~PDO_FETCH_FLAGS;
 
if (!do_fetch_common(stmt, ori, offset, do_bind TSRMLS_CC)) {
return 0;
@@ -1489,7 +1490,7 @@
zval *arg2;
zend_class_entry *old_ce;
zval *old_ctor_args, *ctor_args = NULL;
-   int error = 0, old_arg_count;
+   int error = 0, flags, old_arg_count;
PHP_STMT_GET_OBJ; 
 
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lzz", 
&how, &arg2, &ctor_args)) {
@@ -1581,20 +1582,25 @@
}
}
 
+   flags = how & PDO_FETCH_FLAGS;
+   
if ((how & ~PDO_FETCH_FLAGS) == PDO_FETCH_USE_DEFAULT) {
+   flags |= stmt->default_fetch_type & PDO_FETCH_FLAGS;
how |= stmt->default_fetch_type & ~PDO_FETCH_FLAGS;
}
 
if (!error) {
PDO_STMT_CLEAR_ERR();
MAKE_STD_ZVAL(data);
-   if (how & PDO_FETCH_GROUP) {
+   if ((how & PDO_FETCH_GROUP) || how == PDO_FETCH_KEY_PAIR || 
+   (how == PDO_FETCH_USE_DEFAULT && 
stmt->default_fetch_type == PDO_FETCH_KEY_PAIR)
+   ) {
array_init(return_value);
return_all = return_value;
} else {
return_all = 0;
}
-   if (!do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, 
return_all TSRMLS_CC)) {
+   if (!do_fetch(stmt, TRUE, data, how | flags, 
PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)) {
FREE_ZVAL(data);
error = 2;
}
@@ -1603,13 +1609,15 @@
if ((how & PDO_FETCH_GROUP)) {
do {
MAKE_STD_ZVAL(data);
-   } while (do_fetch(stmt, TRUE, data, how, 
PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC));
+   } while (do_fetch(stmt, TRUE, data, how | flags, 
PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC));
+   } else if (how == PDO_FETCH_KEY_PAIR || (how == 
PDO_FETCH_USE_DEFAULT && stmt->default_fetch_type == PDO_FETCH_KEY_PAIR)) {
+   while (do_fetch(stmt, TRUE, data, how | flags, 
PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC));
} else {
array_init(return_value);
do {
add_next_index_zval(return_value, data);
MAKE_STD_ZVAL(data);
-   } while (do_fetch(stmt, TRUE, data, how, 
PDO_FETCH_ORI_NEXT, 0, 0 TSRMLS_CC));
+   } while (do_fetch(stmt, TRUE, data, how | flags, 
PDO_FETCH_ORI_NEXT, 0, 0 TSRMLS_CC));
}
FREE_ZVAL(data);
}



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-09-23 Thread Felipe Pena
felipe  Tue Sep 23 23:05:24 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fixed bug #46157 (PDOStatement::fetchObject prototype error)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.198&r2=1.199&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.198 php-src/ext/pdo/pdo_stmt.c:1.199
--- php-src/ext/pdo/pdo_stmt.c:1.198Tue Aug 12 17:15:59 2008
+++ php-src/ext/pdo/pdo_stmt.c  Tue Sep 23 23:05:24 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.198 2008/08/12 17:15:59 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.199 2008/09/23 23:05:24 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -46,7 +46,7 @@
ZEND_ARG_INFO(0, orientation)
ZEND_ARG_INFO(0, offset)
 ZEND_END_ARG_INFO()
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchobject, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchobject, 0, 0, 0)
ZEND_ARG_INFO(0, class_name)
ZEND_ARG_INFO(0, ctor_args) /* array */
 ZEND_END_ARG_INFO()
@@ -1381,7 +1381,7 @@
 }
 /* }}} */
 
-/* {{{ proto mixed PDOStatement::fetchObject(string class_name [, NULL|array 
ctor_args])
+/* {{{ proto mixed PDOStatement::fetchObject([string class_name [, NULL|array 
ctor_args]])
Fetches the next row and returns it as an object. */
 static PHP_METHOD(PDOStatement, fetchObject)
 {



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/reflection php_reflection.c

2008-07-25 Thread Dmitry Stogov
dmitry  Fri Jul 25 09:48:36 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/reflection php_reflection.c 
  Log:
  Fixed support for static methods
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.195&r2=1.196&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.195 php-src/ext/pdo/pdo_stmt.c:1.196
--- php-src/ext/pdo/pdo_stmt.c:1.195Fri Jul 25 08:53:11 2008
+++ php-src/ext/pdo/pdo_stmt.c  Fri Jul 25 09:48:36 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.195 2008/07/25 08:53:11 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.196 2008/07/25 09:48:36 dmitry Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -850,7 +850,7 @@
fcc->initialized = 1;
fcc->function_handler = function_handler;
fcc->calling_scope = EG(scope);
-   fcc->called_scope = Z_OBJCE_PP(object);
+   fcc->called_scope = object ? Z_OBJCE_PP(object) : NULL;
fcc->object_pp = object;

return 1;
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.302&r2=1.303&diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.302 
php-src/ext/reflection/php_reflection.c:1.303
--- php-src/ext/reflection/php_reflection.c:1.302   Fri Jul 25 08:53:11 2008
+++ php-src/ext/reflection/php_reflection.c Fri Jul 25 09:48:36 2008
@@ -20,7 +20,7 @@
+--+
 */
 
-/* $Id: php_reflection.c,v 1.302 2008/07/25 08:53:11 dmitry Exp $ */
+/* $Id: php_reflection.c,v 1.303 2008/07/25 09:48:36 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2434,7 +2434,7 @@
 */
if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
object_pp = NULL;
-   obj_ce = NULL;
+   obj_ce = mptr->common.scope;
} else {
if ((Z_TYPE_PP(params[0]) != IS_OBJECT)) {
efree(params);
@@ -2465,7 +2465,7 @@
fcc.initialized = 1;
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
-   fcc.called_scope = Z_OBJCE_PP(object_pp);
+   fcc.called_scope = obj_ce;
fcc.object_pp = object_pp;
 
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -2538,7 +2538,7 @@
 */
if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
object = NULL;
-   obj_ce = NULL;
+   obj_ce = mptr->common.scope;
} else {
if (!object) {
efree(params);
@@ -2570,8 +2570,8 @@
fcc.initialized = 1;
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
-   fcc.called_scope = Z_OBJCE_P(object);
-   fcc.object_pp = &object;
+   fcc.called_scope = obj_ce;
+   fcc.object_pp = object ? &object : NULL;
 
result = zend_call_function(&fci, &fcc TSRMLS_CC);

@@ -5259,7 +5259,7 @@
php_info_print_table_start();
php_info_print_table_header(2, "Reflection", "enabled");
 
-   php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.302 
2008/07/25 08:53:11 dmitry Exp $");
+   php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.303 
2008/07/25 09:48:36 dmitry Exp $");
 
php_info_print_table_end();
 } /* }}} */



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-07-05 Thread Felipe Pena
felipe  Sun Jul  6 05:02:41 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB: Added arginfo
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.192&r2=1.193&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.192 php-src/ext/pdo/pdo_stmt.c:1.193
--- php-src/ext/pdo/pdo_stmt.c:1.192Wed May 14 12:28:28 2008
+++ php-src/ext/pdo/pdo_stmt.c  Sun Jul  6 05:02:40 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.192 2008/05/14 12:28:28 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.193 2008/07/06 05:02:40 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -37,37 +37,61 @@
 #include "zend_interfaces.h"
 #include "php_memory_streams.h"
 
-#if COMPILE_DL_PDO
-/* {{{ content from zend_arg_defs.c:
- * since it is a .c file, it won't be installed for use by PECL extensions, so 
we include it here. */
-ZEND_BEGIN_ARG_INFO(first_arg_force_ref, 0)
-   ZEND_ARG_PASS_INFO(1)
+/* {{{ arginfo */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_execute, 0, 0, 0)
+   ZEND_ARG_INFO(0, bound_input_params) /* array */
 ZEND_END_ARG_INFO()
-
-
-ZEND_BEGIN_ARG_INFO(second_arg_force_ref, 0)
-   ZEND_ARG_PASS_INFO(0)
-   ZEND_ARG_PASS_INFO(1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetch, 0, 0, 0)
+   ZEND_ARG_INFO(0, how)
+   ZEND_ARG_INFO(0, orientation)
+   ZEND_ARG_INFO(0, offset)
 ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(third_arg_force_ref, 0)
-   ZEND_ARG_PASS_INFO(0)
-   ZEND_ARG_PASS_INFO(0)
-   ZEND_ARG_PASS_INFO(1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchobject, 0, 0, 1)
+   ZEND_ARG_INFO(0, class_name)
+   ZEND_ARG_INFO(0, ctor_args) /* array */
 ZEND_END_ARG_INFO()
-
-
-ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
-   ZEND_ARG_PASS_INFO(0)
-   ZEND_ARG_PASS_INFO(0)
-   ZEND_ARG_PASS_INFO(0)
-   ZEND_ARG_PASS_INFO(1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchcolumn, 0, 0, 0)
+   ZEND_ARG_INFO(0, column_number)
 ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(all_args_by_ref, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchall, 0, 0, 0)
+   ZEND_ARG_INFO(0, how)
+   ZEND_ARG_INFO(0, class_name)
+   ZEND_ARG_INFO(0, ctor_args) /* array */
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindvalue, 0, 0, 2)
+   ZEND_ARG_INFO(0, paramno)
+   ZEND_ARG_INFO(0, param)
+   ZEND_ARG_INFO(0, type)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindparam, 0, 0, 2)
+   ZEND_ARG_INFO(0, paramno)
+   ZEND_ARG_INFO(1, param)
+   ZEND_ARG_INFO(0, type)
+   ZEND_ARG_INFO(0, maxlen)
+   ZEND_ARG_INFO(0, driverdata)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindcolumn, 0, 0, 2)
+   ZEND_ARG_INFO(0, column)
+   ZEND_ARG_INFO(1, param)
+   ZEND_ARG_INFO(0, type)
+   ZEND_ARG_INFO(0, maxlen)
+   ZEND_ARG_INFO(0, driverdata)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_setattribute, 0)
+   ZEND_ARG_INFO(0, attribute)
+   ZEND_ARG_INFO(0, value)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_getattribute, 0)
+   ZEND_ARG_INFO(0, attribute)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_getcolumnmeta, 0)
+   ZEND_ARG_INFO(0, column)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_setfetchmode, 0, 0, 1)
+   ZEND_ARG_INFO(0, mode)
+   ZEND_ARG_INFO(0, params)
 ZEND_END_ARG_INFO()
 /* }}} */
-#endif
 
 #define PHP_STMT_GET_OBJ   \
   pdo_stmt_t *stmt = (pdo_stmt_t*)zend_object_store_get_object(getThis() 
TSRMLS_CC);   \
@@ -2151,22 +2175,22 @@
 /* }}} */
 
 const zend_function_entry pdo_dbstmt_functions[] = {
-   PHP_ME(PDOStatement, execute,   NULL,   
ZEND_ACC_PUBLIC)
-   PHP_ME(PDOStatement, fetch, NULL,   
ZEND_ACC_PUBLIC)
-   PHP_ME(PDOStatement, bindParam, second_arg_force_ref,   
ZEND_ACC_PUBLIC)
-   PHP_ME(PDOStatement, bindColumn,second_arg_force_ref,   
ZEND_ACC_PUBLIC)
-   PHP_ME(PDOStatement, bindValue, NULL,   
ZEND_ACC_PUBLIC)
+   PHP_ME(PDOStatement, execute,   arginfo_pdostatement_execute,   
ZEND_ACC_PUBLIC)
+   PHP_ME(PDOStatement, fetch, 
arginfo_pdostatement_fetch, ZEND_ACC_PUBLIC)
+   PHP_ME(PDOStatement, bindParam, arginfo_pdostatement_bindparam, 
ZEND_ACC_PUBLIC)
+   PHP_ME(PDOStatement, bindColumn,
arginfo_pdostatement_bindcolumn,ZEND_ACC_PUBLIC)
+   PHP_ME(PDOStatement, bindValue, arginfo_pdostatement_bindvalue, 
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, rowCount,  NULL,   
ZEND_ACC_PUBLIC)
-   PHP_ME(PDOSta

[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests pdorow.phpt

2008-05-14 Thread Felipe Pena
felipe  Wed May 14 12:28:28 2008 UTC

  Added files: 
/php-src/ext/pdo/tests  pdorow.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Add check for avoid segfault when trying instantiate PDORow manually
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.191&r2=1.192&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.191 php-src/ext/pdo/pdo_stmt.c:1.192
--- php-src/ext/pdo/pdo_stmt.c:1.191Sat Mar 22 19:29:43 2008
+++ php-src/ext/pdo/pdo_stmt.c  Wed May 14 12:28:28 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.191 2008/03/22 19:29:43 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.192 2008/05/14 12:28:28 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2714,10 +2714,12 @@
 
 void pdo_row_free_storage(pdo_stmt_t *stmt TSRMLS_DC)
 {
-   ZVAL_NULL(&stmt->lazy_object_ref);
-   
-   if (--stmt->refcount == 0) {
-   free_statement(stmt TSRMLS_CC);
+   if (stmt) {
+   ZVAL_NULL(&stmt->lazy_object_ref);
+   
+   if (--stmt->refcount == 0) {
+   free_statement(stmt TSRMLS_CC);
+   }
}
 }
 

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdorow.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo/tests/pdorow.phpt
+++ php-src/ext/pdo/tests/pdorow.phpt
--TEST--
Trying instantiate a PDORow object manually
--FILE--

--EXPECTF--
Fatal error: PDORow::__construct(): You should not create a PDOStatement 
manually in %s on line %d



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-03-22 Thread Felipe Pena
felipe  Sat Mar 22 19:29:43 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed compilation warnings
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.190&r2=1.191&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.190 php-src/ext/pdo/pdo_stmt.c:1.191
--- php-src/ext/pdo/pdo_stmt.c:1.190Tue Mar  4 23:39:15 2008
+++ php-src/ext/pdo/pdo_stmt.c  Sat Mar 22 19:29:43 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.190 2008/03/04 23:39:15 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.191 2008/03/22 19:29:43 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -537,7 +537,7 @@
if (stmt->dbh->stringify || new_type == 
PDO_PARAM_STR) {
char *buf = NULL;
size_t len;
-   len = 
php_stream_copy_to_mem((php_stream*)value, &buf, PHP_STREAM_COPY_ALL, 0);
+   len = 
php_stream_copy_to_mem((php_stream*)value, (void *)&buf, PHP_STREAM_COPY_ALL, 
0);
if(buf == NULL) {
ZVAL_EMPTY_STRING(dest);
} else {
@@ -2672,12 +2672,12 @@
return pdo_dbstmt_ce;
 }
 
-static int row_get_classname(zval *object, char **class_name, zend_uint 
*class_name_len, int parent TSRMLS_DC)
+static int row_get_classname(zval *object,  zstr *class_name, zend_uint 
*class_name_len, int parent TSRMLS_DC)
 {
if (parent) {
return FAILURE;
} else {
-   *class_name = UG(unicode) ? USTR_MAKE("PDORow") : 
estrndup("PDORow", sizeof("PDORow")-1);
+   *class_name = ezstrndup(ZEND_STR_TYPE, ZSTR("PDORow"), 
sizeof("PDORow") - 1);
*class_name_len = sizeof("PDORow")-1;
return SUCCESS;
}



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests pdo_035.phpt

2008-03-03 Thread Johannes Schlüter
johannesMon Mar  3 18:58:59 2008 UTC

  Added files: 
/php-src/ext/pdo/tests  pdo_035.phpt 

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  - Fix get_parent_class() of PDORow instances
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.188&r2=1.189&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.188 php-src/ext/pdo/pdo_stmt.c:1.189
--- php-src/ext/pdo/pdo_stmt.c:1.188Tue Feb 26 00:14:25 2008
+++ php-src/ext/pdo/pdo_stmt.c  Mon Mar  3 18:58:59 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.188 2008/02/26 00:14:25 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.189 2008/03/03 18:58:59 johannes Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2674,9 +2674,13 @@
 
 static int row_get_classname(zval *object, char **class_name, zend_uint 
*class_name_len, int parent TSRMLS_DC)
 {
-   *class_name = estrndup("PDORow", sizeof("PDORow")-1);
-   *class_name_len = sizeof("PDORow")-1;
-   return 0;
+   if (parent) {
+   return FAILURE;
+   } else {
+   *class_name = UG(unicode) ? USTR_MAKE("PDORow") : 
estrndup("PDORow", sizeof("PDORow")-1);
+   *class_name_len = sizeof("PDORow")-1;
+   return SUCCESS;
+   }
 }
 
 static int row_compare(zval *object1, zval *object2 TSRMLS_DC)

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdo_035.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo/tests/pdo_035.phpt
+++ php-src/ext/pdo/tests/pdo_035.phpt
--TEST--
PDO Common: PDORow and get_parent_class()
--SKIPIF--

--FILE--
exec('CREATE TABLE test (id int)');
$db->exec('INSERT INTO test VALUES (23)');

$stmt = $db->prepare('SELECT id FROM test');
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_LAZY);

echo get_class($result), "\n";
var_dump(get_parent_class($result));
?>
--EXPECT--
PDORow
bool(false)



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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_pgsql pgsql_statement.c

2008-02-25 Thread Ilia Alshanetsky
iliaa   Tue Feb 26 00:14:25 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo_pgsql  pgsql_statement.c 
  Log:
  
  MFB: Better fix for bug #44189
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.187&r2=1.188&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.187 php-src/ext/pdo/pdo_stmt.c:1.188
--- php-src/ext/pdo/pdo_stmt.c:1.187Sun Feb 24 16:09:13 2008
+++ php-src/ext/pdo/pdo_stmt.c  Tue Feb 26 00:14:25 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.187 2008/02/24 16:09:13 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.188 2008/02/26 00:14:25 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -142,10 +142,6 @@
 
ht = stmt->bound_params;
 
-   if (ht && !stmt->bound_param_map) {
-   return 0;
-   }
-
 iterate:
if (ht) {
zend_hash_internal_pointer_reset(ht);
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_pgsql/pgsql_statement.c?r1=1.46&r2=1.47&diff_format=u
Index: php-src/ext/pdo_pgsql/pgsql_statement.c
diff -u php-src/ext/pdo_pgsql/pgsql_statement.c:1.46 
php-src/ext/pdo_pgsql/pgsql_statement.c:1.47
--- php-src/ext/pdo_pgsql/pgsql_statement.c:1.46Mon Dec 31 07:12:13 2007
+++ php-src/ext/pdo_pgsql/pgsql_statement.c Tue Feb 26 00:14:25 2008
@@ -16,7 +16,7 @@
   +--+
 */
 
-/* $Id: pgsql_statement.c,v 1.46 2007/12/31 07:12:13 sebastian Exp $ */
+/* $Id: pgsql_statement.c,v 1.47 2008/02/26 00:14:25 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -183,6 +183,9 @@
break;
 
case PDO_PARAM_EVT_EXEC_PRE:
+   if (!stmt->bound_param_map) {
+   return 0;
+   }
if (!S->param_values) {
S->param_values = ecalloc(

zend_hash_num_elements(stmt->bound_param_map),

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



Re: [PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-02-25 Thread Ilia Alshanetsky

That seems strange, I'll take a look tonight.


On 25-Feb-08, at 3:20 AM, Antony Dovgal wrote:


On 24.02.2008 19:09, Ilia Alshanetsky wrote:

iliaa   Sun Feb 24 16:09:13 2008 UTC

 Modified files:
   /php-src/ext/pdo pdo_stmt.c
 Log:

 MFB: Fixed bug #44200 (A crash in PDO when no bound targets exists  
and yet

 bound parameters are present)


The tests below are failing after this commit.

/local/qa/5_3/ext/pdo_mysql/tests/bug_39483.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_36798.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_39656.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_016.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_016a.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_018.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_024.phpt

/local/qa/5_3/ext/pdo_mysql/tests/pecl_bug_5780.phpt
/local/qa/5_3/ext/pdo_mysql/tests/pecl_bug_5802.phpt
/local/qa/5_3/ext/pdo_sqlite/tests/bug33841.phpt
/local/qa/5_3/ext/pdo_sqlite/tests/bug35336.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_34630.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_35671.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_36798.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_38394.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_39398.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_39656.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_016.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_016a.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_018.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_021.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_024.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_025.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_026.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_028.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_029.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_030.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_031.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_36798.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/bug_39656.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_016.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_016a.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_018.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: /local/qa/5_3/ext/ 
pdo/tests/pdo_024.phpt


--
Wbr,
Antony Dovgal

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



Ilia Alshanetsky

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



Re: [PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-02-25 Thread Antony Dovgal
On 24.02.2008 19:09, Ilia Alshanetsky wrote:
> iliaa Sun Feb 24 16:09:13 2008 UTC
> 
>   Modified files:  
> /php-src/ext/pdo  pdo_stmt.c 
>   Log:
>   
>   MFB: Fixed bug #44200 (A crash in PDO when no bound targets exists and yet 
>   bound parameters are present)

The tests below are failing after this commit.

/local/qa/5_3/ext/pdo_mysql/tests/bug_39483.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_36798.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_39656.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_016.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_016a.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_018.phpt
# /local/qa/5_3/ext/pdo_mysql/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_024.phpt
/local/qa/5_3/ext/pdo_mysql/tests/pecl_bug_5780.phpt
/local/qa/5_3/ext/pdo_mysql/tests/pecl_bug_5802.phpt
/local/qa/5_3/ext/pdo_sqlite/tests/bug33841.phpt
/local/qa/5_3/ext/pdo_sqlite/tests/bug35336.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_34630.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_35671.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_36798.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_38394.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_39398.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_39656.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_016.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_016a.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_018.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_021.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_024.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_025.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_026.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_028.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_029.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_030.phpt
# /local/qa/5_3/ext/pdo_sqlite/tests/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_031.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_36798.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: 
/local/qa/5_3/ext/pdo/tests/bug_39656.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_016.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_016a.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_018.phpt
# /local/qa/5_3/ext/sqlite/tests/pdo/common.phpt: 
/local/qa/5_3/ext/pdo/tests/pdo_024.phpt

-- 
Wbr, 
Antony Dovgal

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-02-24 Thread Ilia Alshanetsky
iliaa   Sun Feb 24 16:09:13 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  MFB: Fixed bug #44200 (A crash in PDO when no bound targets exists and yet 
  bound parameters are present)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.186&r2=1.187&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.186 php-src/ext/pdo/pdo_stmt.c:1.187
--- php-src/ext/pdo/pdo_stmt.c:1.186Wed Feb 20 03:12:23 2008
+++ php-src/ext/pdo/pdo_stmt.c  Sun Feb 24 16:09:13 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.186 2008/02/20 03:12:23 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.187 2008/02/24 16:09:13 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -142,6 +142,10 @@
 
ht = stmt->bound_params;
 
+   if (ht && !stmt->bound_param_map) {
+   return 0;
+   }
+
 iterate:
if (ht) {
zend_hash_internal_pointer_reset(ht);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-02-19 Thread Ilia Alshanetsky
iliaa   Wed Feb 20 03:12:23 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  MFB: Fixed bug #44171 (Invalid FETCH_COLUMN index does not raise an error)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.185&r2=1.186&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.185 php-src/ext/pdo/pdo_stmt.c:1.186
--- php-src/ext/pdo/pdo_stmt.c:1.185Mon Jan 14 18:41:48 2008
+++ php-src/ext/pdo/pdo_stmt.c  Wed Feb 20 03:12:23 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.185 2008/01/14 18:41:48 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.186 2008/02/20 03:12:23 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -936,6 +936,8 @@
} else {
break;
}
+   } else {
+   pdo_raise_impl_error(stmt->dbh, stmt, 
"HY000", "Invalid column index" TSRMLS_CC);
}
return 0;
 

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-01-14 Thread Ilia Alshanetsky
iliaa   Mon Jan 14 18:41:48 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  MFB: Missing patch bit from the FETCH_GROUP fix
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.184&r2=1.185&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.184 php-src/ext/pdo/pdo_stmt.c:1.185
--- php-src/ext/pdo/pdo_stmt.c:1.184Fri Jan 11 01:48:19 2008
+++ php-src/ext/pdo/pdo_stmt.c  Mon Jan 14 18:41:48 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.184 2008/01/11 01:48:19 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.185 2008/01/14 18:41:48 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -926,6 +926,8 @@
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 if (flags == PDO_FETCH_GROUP && 
colno) {
+   fetch_value(stmt, return_value, 
0, NULL TSRMLS_CC);
} else {
fetch_value(stmt, return_value, 
colno, NULL TSRMLS_CC); 
}

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2008-01-10 Thread Ilia Alshanetsky
iliaa   Fri Jan 11 01:48:19 2008 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  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.183&r2=1.184&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.183 php-src/ext/pdo/pdo_stmt.c:1.184
--- php-src/ext/pdo/pdo_stmt.c:1.183Mon Dec 31 07:12:13 2007
+++ php-src/ext/pdo/pdo_stmt.c  Fri Jan 11 01:48:19 2008
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.183 2007/12/31 07:12:13 sebastian Exp $ */
+/* $Id: pdo_stmt.c,v 1.184 2008/01/11 01:48:19 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -860,6 +860,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;
 
how = how & ~PDO_FETCH_FLAGS;
if (how == PDO_FETCH_USE_DEFAULT) {
@@ -875,6 +876,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;
 
@@ -916,8 +923,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 {
@@ -1020,7 +1031,11 @@

if (return_all) {
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 */
@@ -1503,7 +1518,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);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2007-11-20 Thread Ilia Alshanetsky
iliaa   Tue Nov 20 23:27:56 2007 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  revert previous pdo patch
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.181&r2=1.182&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.181 php-src/ext/pdo/pdo_stmt.c:1.182
--- php-src/ext/pdo/pdo_stmt.c:1.181Tue Nov 20 14:22:40 2007
+++ php-src/ext/pdo/pdo_stmt.c  Tue Nov 20 23:27:56 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.181 2007/11/20 14:22:40 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.182 2007/11/20 23:27:56 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -144,11 +144,6 @@
 
 iterate:
if (ht) {
-   if (zend_hash_num_elements(stmt->bound_param_map) != 
zend_hash_num_elements(ht)) {
-   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of 
bound paramters %d does not match number of bound values %d", 
zend_hash_num_elements(stmt->bound_param_map), zend_hash_num_elements(ht));
-   return 0;   
-   }
-
zend_hash_internal_pointer_reset(ht);
while (SUCCESS == zend_hash_get_current_data(ht, 
(void**)¶m)) {
if (!stmt->methods->param_hook(stmt, param, event_type 
TSRMLS_CC)) {

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2007-11-20 Thread Ilia Alshanetsky
iliaa   Tue Nov 20 14:22:40 2007 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  MFB: Fixed bug #42978 (mismatch between number of bound params and values
  causes a crash in pdo_pgsql) 
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.180&r2=1.181&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.180 php-src/ext/pdo/pdo_stmt.c:1.181
--- php-src/ext/pdo/pdo_stmt.c:1.180Wed Oct 31 12:58:39 2007
+++ php-src/ext/pdo/pdo_stmt.c  Tue Nov 20 14:22:40 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.180 2007/10/31 12:58:39 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.181 2007/11/20 14:22:40 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -144,6 +144,11 @@
 
 iterate:
if (ht) {
+   if (zend_hash_num_elements(stmt->bound_param_map) != 
zend_hash_num_elements(ht)) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of 
bound paramters %d does not match number of bound values %d", 
zend_hash_num_elements(stmt->bound_param_map), zend_hash_num_elements(ht));
+   return 0;   
+   }
+
zend_hash_internal_pointer_reset(ht);
while (SUCCESS == zend_hash_get_current_data(ht, 
(void**)¶m)) {
if (!stmt->methods->param_hook(stmt, param, event_type 
TSRMLS_CC)) {

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests bug_43139.phpt

2007-10-31 Thread Ilia Alshanetsky
iliaa   Wed Oct 31 12:58:39 2007 UTC

  Modified files:  
/php-src/ext/pdo/tests  bug_43139.phpt 
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  MFB: Fixed bug #43139 PDO ignores ATTR_DEFAULT_FETCH_MODE in some cases with
  fetchAll()
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_43139.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo/tests/bug_43139.phpt
diff -u /dev/null php-src/ext/pdo/tests/bug_43139.phpt:1.2
--- /dev/null   Wed Oct 31 12:58:39 2007
+++ php-src/ext/pdo/tests/bug_43139.phptWed Oct 31 12:58:39 2007
@@ -0,0 +1,34 @@
+--TEST--
+PDO Common: Bug #43139 (PDO ignore ATTR_DEFAULT_FETCH_MODE in some cases with 
fetchAll())
+--SKIPIF--
+
+--FILE--
+setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+
+var_dump($db->query('select 0 as abc, 1 as xyz, 2 as 
def')->fetchAll(PDO::FETCH_GROUP));
+?>
+--EXPECT--
+array(1) {
+  [0]=>
+  array(1) {
+[0]=>
+array(2) {
+  ["xyz"]=>
+  string(1) "1"
+  ["def"]=>
+  string(1) "2"
+}
+  }
+}
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.179&r2=1.180&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.179 php-src/ext/pdo/pdo_stmt.c:1.180
--- php-src/ext/pdo/pdo_stmt.c:1.179Mon Oct  8 04:05:22 2007
+++ php-src/ext/pdo/pdo_stmt.c  Wed Oct 31 12:58:39 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.179 2007/10/08 04:05:22 davidw Exp $ */
+/* $Id: pdo_stmt.c,v 1.180 2007/10/31 12:58:39 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1236,7 +1236,7 @@
 }
 /* }}} */
 
-static int pdo_stmt_verify_mode(pdo_stmt_t *stmt, int mode, int fetch_all 
TSRMLS_DC) /* {{{ */
+static int pdo_stmt_verify_mode(pdo_stmt_t *stmt, long mode, int fetch_all 
TSRMLS_DC) /* {{{ */
 {
int flags = mode & PDO_FETCH_FLAGS;
 
@@ -1522,6 +1522,10 @@
}
}
 
+   if ((how & ~PDO_FETCH_FLAGS) == PDO_FETCH_USE_DEFAULT) {
+   how |= stmt->default_fetch_type & ~PDO_FETCH_FLAGS;
+   }
+
if (!error) {
PDO_STMT_CLEAR_ERR();
MAKE_STD_ZVAL(data);
@@ -1890,6 +1894,7 @@
case PDO_FETCH_OBJ:
case PDO_FETCH_BOUND:
case PDO_FETCH_NAMED:
+   case PDO_FETCH_KEY_PAIR:
break;
 
case PDO_FETCH_COLUMN:

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2007-10-07 Thread Yiduo (David) Wang
davidw  Mon Oct  8 04:05:22 2007 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  stmt->fetch.func.values is not a zval and should not be freed with FREE_ZVAL
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.178&r2=1.179&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.178 php-src/ext/pdo/pdo_stmt.c:1.179
--- php-src/ext/pdo/pdo_stmt.c:1.178Sun Oct  7 05:15:04 2007
+++ php-src/ext/pdo/pdo_stmt.c  Mon Oct  8 04:05:22 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.178 2007/10/07 05:15:04 davidw Exp $ */
+/* $Id: pdo_stmt.c,v 1.179 2007/10/08 04:05:22 davidw Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -845,7 +845,7 @@
stmt->fetch.cls.fci.param_count = 0;
}
if (stmt->fetch.func.values) {
-   FREE_ZVAL(stmt->fetch.func.values);
+   efree(stmt->fetch.func.values);
stmt->fetch.func.values = NULL;
}
return 1;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2007-09-12 Thread Stanislav Malyshev
stasWed Sep 12 21:27:57 2007 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB: fix crash if stream is empty and reader function sets buffer as null
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.175&r2=1.176&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.175 php-src/ext/pdo/pdo_stmt.c:1.176
--- php-src/ext/pdo/pdo_stmt.c:1.175Wed May 16 20:12:53 2007
+++ php-src/ext/pdo/pdo_stmt.c  Wed Sep 12 21:27:56 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.175 2007/05/16 20:12:53 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.176 2007/09/12 21:27:56 stas Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -538,7 +538,11 @@
char *buf = NULL;
size_t len;
len = 
php_stream_copy_to_mem((php_stream*)value, &buf, PHP_STREAM_COPY_ALL, 0);
-   ZVAL_STRINGL(dest, buf, len, 0);
+   if(buf == NULL) {
+   ZVAL_EMPTY_STRING(dest);
+   } else {
+   ZVAL_STRINGL(dest, buf, len, 0);
+   }
php_stream_close((php_stream*)value);
} else {
php_stream_to_zval((php_stream*)value, 
dest);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2007-05-16 Thread Ilia Alshanetsky
iliaa   Wed May 16 20:12:53 2007 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  
  Fixed a typo
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.174&r2=1.175&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.174 php-src/ext/pdo/pdo_stmt.c:1.175
--- php-src/ext/pdo/pdo_stmt.c:1.174Wed May 16 19:58:58 2007
+++ php-src/ext/pdo/pdo_stmt.c  Wed May 16 20:12:53 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.174 2007/05/16 19:58:58 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.175 2007/05/16 20:12:53 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1043,7 +1043,7 @@

if (Z_TYPE_P(val) == IS_STRING) 
{

zend_symtable_update(Z_ARRVAL_P(return_value), Z_STRVAL_P(val), Z_STRLEN_P(val) 
+ 1, &tmp, sizeof(zval *), NULL);
-   } else if (Z_TYPE_P(val) = 
IS_LONG) {
+   } else if (Z_TYPE_P(val) == 
IS_LONG) {

zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_P(val), tmp, 
sizeof(tmp), NULL);
} else {
convert_to_string(val);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2007-03-07 Thread Antony Dovgal
tony2001Wed Mar  7 09:02:18 2007 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix #40727 (segfault in PDO when failed to bind parameters)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.172&r2=1.173&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.172 php-src/ext/pdo/pdo_stmt.c:1.173
--- php-src/ext/pdo/pdo_stmt.c:1.172Mon Jan  1 09:29:27 2007
+++ php-src/ext/pdo/pdo_stmt.c  Wed Mar  7 09:02:18 2007
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.172 2007/01/01 09:29:27 sebastian Exp $ */
+/* $Id: pdo_stmt.c,v 1.173 2007/03/07 09:02:18 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -251,7 +251,10 @@
efree(param->name);
}
 
-   zval_ptr_dtor(&(param->parameter));
+   if (param->parameter) {
+   zval_ptr_dtor(&(param->parameter));
+   param->parameter = NULL;
+   }
if (param->driver_params) {
zval_ptr_dtor(&(param->driver_params));
}
@@ -1556,7 +1559,10 @@
 
ZVAL_ADDREF(param.parameter);
if (!really_register_bound_param(¶m, stmt, is_param TSRMLS_CC)) {
-   zval_ptr_dtor(&(param.parameter));
+   if (param.parameter) {
+   zval_ptr_dtor(&(param.parameter));
+   param.parameter = NULL;
+   }
return 0;
}
return 1;
@@ -1589,7 +1595,10 @@

ZVAL_ADDREF(param.parameter);
if (!really_register_bound_param(¶m, stmt, TRUE TSRMLS_CC)) {
-   zval_ptr_dtor(&(param.parameter));
+   if (param.parameter) {
+   zval_ptr_dtor(&(param.parameter));
+   param.parameter = NULL;
+   }
RETURN_FALSE;
}
RETURN_TRUE;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_mysql mysql_statement.c

2006-12-08 Thread Ilia Alshanetsky
iliaa   Fri Dec  8 19:51:29 2006 UTC

  Modified files:  
/php-src/ext/pdo_mysql  mysql_statement.c 
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB: Fixed bug #39759 (Can't use stored procedures fetching multiple result
  sets in pdo_mysql).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/mysql_statement.c?r1=1.57&r2=1.58&diff_format=u
Index: php-src/ext/pdo_mysql/mysql_statement.c
diff -u php-src/ext/pdo_mysql/mysql_statement.c:1.57 
php-src/ext/pdo_mysql/mysql_statement.c:1.58
--- php-src/ext/pdo_mysql/mysql_statement.c:1.57Sat Dec  2 17:55:05 2006
+++ php-src/ext/pdo_mysql/mysql_statement.c Fri Dec  8 19:51:29 2006
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_statement.c,v 1.57 2006/12/02 17:55:05 iliaa Exp $ */
+/* $Id: mysql_statement.c,v 1.58 2006/12/08 19:51:29 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -239,15 +239,15 @@
/* No more results */
return 0;
} else {
-   if ((my_ulonglong)-1 == (row_count = 
mysql_affected_rows(H->server))) {
-   pdo_mysql_error_stmt(stmt);
-   return 0;
-   }
-   
if (!H->buffered) {
S->result = mysql_use_result(H->server);
+   row_count = 0;
} else {
S->result = mysql_store_result(H->server);
+   if ((my_ulonglong)-1 == (row_count = 
mysql_affected_rows(H->server))) {
+   pdo_mysql_error_stmt(stmt);
+   return 0;
+   }
}
 
if (NULL == S->result) {
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.169&r2=1.170&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.169 php-src/ext/pdo/pdo_stmt.c:1.170
--- php-src/ext/pdo/pdo_stmt.c:1.169Mon Dec  4 03:08:52 2006
+++ php-src/ext/pdo/pdo_stmt.c  Fri Dec  8 19:51:29 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.169 2006/12/04 03:08:52 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.170 2006/12/08 19:51:29 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1827,10 +1827,6 @@
 
 static int pdo_stmt_do_next_rowset(pdo_stmt_t *stmt TSRMLS_DC)
 {
-   if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) {
-   return 0;
-   }
-
/* un-describe */
if (stmt->columns) {
int i;
@@ -1844,6 +1840,10 @@
stmt->column_count = 0;
}
 
+   if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) {
+   return 0;
+   }
+
pdo_stmt_describe_columns(stmt TSRMLS_CC);
 
return 1;
@@ -1864,8 +1864,6 @@
PDO_HANDLE_STMT_ERR();
RETURN_FALSE;
}
-   
-   pdo_stmt_describe_columns(stmt TSRMLS_CC);
 
RETURN_TRUE;
 }

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-12-03 Thread Ilia Alshanetsky
iliaa   Mon Dec  4 03:08:52 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB: Fixed bug #38319 (Remove bogus warnings from persistent PDO connections).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.168&r2=1.169&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.168 php-src/ext/pdo/pdo_stmt.c:1.169
--- php-src/ext/pdo/pdo_stmt.c:1.168Tue Nov 28 16:28:07 2006
+++ php-src/ext/pdo/pdo_stmt.c  Mon Dec  4 03:08:52 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.168 2006/11/28 16:28:07 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.169 2006/12/04 03:08:52 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1762,12 +1762,11 @@

stmt->fetch.cls.ce = *cep;
stmt->fetch.cls.ctor_args = NULL;
-
+#ifdef ilia_0 /* we'll only need this when we have persistent statements, if 
ever */
if (stmt->dbh->is_persistent) {
-   /* TODO: CRITICAL for final release */
php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"PHP might crash if you don't call $stmt->setFetchMode() to reset to defaults 
on this persistent statement.  This will be fixed in a later release");
}
-   
+#endif
if (argc == 3) {
if (Z_TYPE_PP(args[skip+2]) != IS_NULL && 
Z_TYPE_PP(args[skip+2]) != IS_ARRAY) {
pdo_raise_impl_error(stmt->dbh, stmt, 
"HY000", "ctor_args must be either NULL or an array" TSRMLS_CC);
@@ -1788,11 +1787,11 @@
if (Z_TYPE_PP(args[skip+1]) != IS_OBJECT) {
goto fail_out;
}
-
+#ifdef ilia_0 /* we'll only need this when we have persistent statements, if 
ever */
if (stmt->dbh->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"PHP might crash if you don't call $stmt->setFetchMode() to reset to defaults 
on this persistent statement.  This will be fixed in a later release");
}
-   
+#endif
MAKE_STD_ZVAL(stmt->fetch.into);
 
Z_TYPE_P(stmt->fetch.into) = IS_OBJECT;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_pgsql pgsql_statement.c

2006-11-28 Thread Ilia Alshanetsky
iliaa   Tue Nov 28 16:28:07 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo_pgsql  pgsql_statement.c 
  Log:
  MFB: Fixed bug #39656 (crash when calling fetch() on a PDO statment object
 
  after closeCursor()).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.167&r2=1.168&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.167 php-src/ext/pdo/pdo_stmt.c:1.168
--- php-src/ext/pdo/pdo_stmt.c:1.167Tue Nov  7 17:57:37 2006
+++ php-src/ext/pdo/pdo_stmt.c  Tue Nov 28 16:28:07 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.167 2006/11/07 17:57:37 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.168 2006/11/28 16:28:07 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -434,7 +434,7 @@
if (!stmt->executed) {
/* this is the first execute */
 
-   if (stmt->dbh->alloc_own_columns) {
+   if (stmt->dbh->alloc_own_columns && !stmt->columns) {
/* for "big boy" drivers, we need to allocate 
memory to fetch
 * the results into, so lets do that now */
ret = pdo_stmt_describe_columns(stmt TSRMLS_CC);
@@ -565,6 +565,10 @@
 static int do_fetch_common(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori,
long offset, int do_bind TSRMLS_DC) /* {{{ */
 {
+   if (!stmt->executed) {
+   return 0;
+   }
+
if (!dispatch_param_event(stmt, PDO_PARAM_EVT_FETCH_PRE TSRMLS_CC)) {
return 0;
}
@@ -1888,6 +1892,7 @@
}

} while (1);
+   stmt->executed = 0;
RETURN_TRUE;
}
 
@@ -1897,7 +1902,7 @@
PDO_HANDLE_STMT_ERR();
RETURN_FALSE;
}
-
+   stmt->executed = 0;
RETURN_TRUE;
 }
 /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_pgsql/pgsql_statement.c?r1=1.41&r2=1.42&diff_format=u
Index: php-src/ext/pdo_pgsql/pgsql_statement.c
diff -u php-src/ext/pdo_pgsql/pgsql_statement.c:1.41 
php-src/ext/pdo_pgsql/pgsql_statement.c:1.42
--- php-src/ext/pdo_pgsql/pgsql_statement.c:1.41Thu Nov 16 17:34:42 2006
+++ php-src/ext/pdo_pgsql/pgsql_statement.c Tue Nov 28 16:28:07 2006
@@ -16,7 +16,7 @@
   +--+
 */
 
-/* $Id: pgsql_statement.c,v 1.41 2006/11/16 17:34:42 iliaa Exp $ */
+/* $Id: pgsql_statement.c,v 1.42 2006/11/28 16:28:07 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -140,7 +140,7 @@
return 0;
}
 
-   if(!stmt->executed) {
+   if (!stmt->executed && !stmt->column_count) {
stmt->column_count = (int) PQnfields(S->result);
S->cols = ecalloc(stmt->column_count, sizeof(pdo_pgsql_column));
}

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests bug_39398.phpt

2006-11-07 Thread Ilia Alshanetsky
iliaa   Tue Nov  7 17:57:37 2006 UTC

  Modified files:  
/php-src/ext/pdo/tests  bug_39398.phpt 
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB: Fixed bug #39398 (Booleans are not automatically translated to
  integers).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_39398.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo/tests/bug_39398.phpt
diff -u /dev/null php-src/ext/pdo/tests/bug_39398.phpt:1.2
--- /dev/null   Tue Nov  7 17:57:37 2006
+++ php-src/ext/pdo/tests/bug_39398.phptTue Nov  7 17:57:37 2006
@@ -0,0 +1,35 @@
+--TEST--
+PDO Common: PHP Bug #39398: Booleans are not automatically translated to 
integers
+--SKIPIF--
+
+--FILE--
+exec("CREATE TABLE test (test INT)");
+
+$boolean = 1;
+$stmt = $db->prepare('INSERT INTO test VALUES (:boolean)');
+$stmt->bindValue(':boolean', isset($boolean), PDO::PARAM_INT);
+$stmt->execute();
+
+var_dump($db->query("SELECT * FROM test")->fetchAll(PDO::FETCH_ASSOC));
+?>
+===DONE===
+--EXPECT--
+array(1) {
+  [0]=>
+  array(1) {
+["test"]=>
+string(1) "1"
+  }
+}
+===DONE===
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.166&r2=1.167&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.166 php-src/ext/pdo/pdo_stmt.c:1.167
--- php-src/ext/pdo/pdo_stmt.c:1.166Wed Aug 23 19:15:46 2006
+++ php-src/ext/pdo/pdo_stmt.c  Tue Nov  7 17:57:37 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.166 2006/08/23 19:15:46 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.167 2006/11/07 17:57:37 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -278,6 +278,10 @@
 
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_STR && 
param->max_value_len <= 0 && ! ZVAL_IS_NULL(param->parameter)) {
convert_to_string(param->parameter);
+   } else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && 
Z_TYPE_P(param->parameter) == IS_BOOL) {
+   convert_to_long(param->parameter);
+   } else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_BOOL && 
Z_TYPE_P(param->parameter) == IS_LONG) {
+   convert_to_boolean(param->parameter);
}
 
param->stmt = stmt;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-08-23 Thread Antony Dovgal
tony2001Wed Aug 23 19:15:46 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix possible crash in free_statement()
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.165&r2=1.166&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.165 php-src/ext/pdo/pdo_stmt.c:1.166
--- php-src/ext/pdo/pdo_stmt.c:1.165Wed Aug  9 14:46:35 2006
+++ php-src/ext/pdo/pdo_stmt.c  Wed Aug 23 19:15:46 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.165 2006/08/09 14:46:35 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.166 2006/08/23 19:15:46 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2168,7 +2168,9 @@
do_fetch_opt_finish(stmt, 1 TSRMLS_CC);
 
zend_objects_store_del_ref(&stmt->database_object_handle TSRMLS_CC);
-   php_pdo_dbh_delref(stmt->dbh TSRMLS_CC);
+   if (stmt->dbh) {
+   php_pdo_dbh_delref(stmt->dbh TSRMLS_CC);
+   }
efree(stmt);
 }
 

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests bug_38394.phpt

2006-08-09 Thread Ilia Alshanetsky
iliaa   Wed Aug  9 14:46:35 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo/tests  bug_38394.phpt 
  Log:
  MFB: Fixed bug #38394 (PDO fails to recover from failed prepared statement
  execution).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.164&r2=1.165&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.164 php-src/ext/pdo/pdo_stmt.c:1.165
--- php-src/ext/pdo/pdo_stmt.c:1.164Tue Aug  8 16:59:10 2006
+++ php-src/ext/pdo/pdo_stmt.c  Wed Aug  9 14:46:35 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.164 2006/08/08 16:59:10 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.165 2006/08/09 14:46:35 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -357,6 +357,12 @@
zval **tmp;
uint str_length;
ulong num_index;
+   
+   if (stmt->bound_params) {   
+   zend_hash_destroy(stmt->bound_params);
+   FREE_HASHTABLE(stmt->bound_params);
+   stmt->bound_params = NULL;
+   }
 
zend_hash_internal_pointer_reset(Z_ARRVAL_P(input_params));
while (SUCCESS == 
zend_hash_get_current_data(Z_ARRVAL_P(input_params), (void*)&tmp)) {
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_38394.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo/tests/bug_38394.phpt
diff -u /dev/null php-src/ext/pdo/tests/bug_38394.phpt:1.2
--- /dev/null   Wed Aug  9 14:46:35 2006
+++ php-src/ext/pdo/tests/bug_38394.phptWed Aug  9 14:46:35 2006
@@ -0,0 +1,50 @@
+--TEST--
+PDO Common: PHP Bug #38394: Prepared statement error stops subsequent 
statements
+--SKIPIF--
+
+--FILE--
+exec("CREATE TABLE test (a INT, b INT, c INT)");
+$s = $db->prepare("INSERT INTO test (a,b,c) VALUES (:a,:b,:c)");
+
+$s->execute(array('a' => 1, 'b' => 2, 'c' => 3));
+
[EMAIL PROTECTED]>execute(array('a' => 5, 'b' => 6, 'c' => 7, 'd' => 8));
+
+$s->execute(array('a' => 9, 'b' => 10, 'c' => 11));
+
+var_dump($db->query("SELECT * FROM test")->fetchAll(PDO::FETCH_ASSOC));
+?>
+===DONE===
+--EXPECTF--
+array(2) {
+  [0]=>
+  array(3) {
+["a"]=>
+string(1) "1"
+["b"]=>
+string(1) "2"
+["c"]=>
+string(1) "3"
+  }
+  [1]=>
+  array(3) {
+["a"]=>
+string(1) "9"
+["b"]=>
+string(2) "10"
+["c"]=>
+string(2) "11"
+  }
+}
+===DONE===

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-08-01 Thread Ilia Alshanetsky
iliaa   Tue Aug  1 15:06:12 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB: Fixed memory leak on unused bound name parameters.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.162&r2=1.163&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.162 php-src/ext/pdo/pdo_stmt.c:1.163
--- php-src/ext/pdo/pdo_stmt.c:1.162Mon Jul 31 20:19:18 2006
+++ php-src/ext/pdo/pdo_stmt.c  Tue Aug  1 15:06:12 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.162 2006/07/31 20:19:18 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.163 2006/08/01 15:06:12 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1452,7 +1452,11 @@
}
 
ZVAL_ADDREF(param.parameter);
-   return really_register_bound_param(¶m, stmt, is_param TSRMLS_CC);
+   if (!really_register_bound_param(¶m, stmt, is_param TSRMLS_CC)) {
+   zval_ptr_dtor(&(param.parameter));
+   return 0;
+   }
+   return 1;
 } /* }}} */
 
 /* {{{ proto bool PDOStatement::bindValue(mixed $paramno, mixed $param [, int 
$type ])
@@ -1481,7 +1485,11 @@
}

ZVAL_ADDREF(param.parameter);
-   RETURN_BOOL(really_register_bound_param(¶m, stmt, TRUE TSRMLS_CC));
+   if (!really_register_bound_param(¶m, stmt, TRUE TSRMLS_CC)) {
+   zval_ptr_dtor(&(param.parameter));
+   RETURN_FALSE;
+   }
+   RETURN_TRUE;
 }
 /* }}} */
 

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests bug_38253.phpt

2006-07-30 Thread Antony Dovgal
tony2001Sun Jul 30 11:20:41 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo/tests  bug_38253.phpt 
  Log:
  MFB: bug #38253 (PDO produces segfault with default fetch mode)
  add test
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.160&r2=1.161&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.160 php-src/ext/pdo/pdo_stmt.c:1.161
--- php-src/ext/pdo/pdo_stmt.c:1.160Tue Jun 20 13:25:54 2006
+++ php-src/ext/pdo/pdo_stmt.c  Sun Jul 30 11:20:40 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.160 2006/06/20 13:25:54 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.161 2006/07/30 11:20:40 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -842,6 +842,10 @@
zval_dtor(&val);
}
ce = stmt->fetch.cls.ce;
+   if (!ce) {
+   pdo_raise_impl_error(stmt->dbh, stmt, 
"HY000", "No fetch class specified" TSRMLS_CC);
+   return 0;
+   }
if ((flags & PDO_FETCH_SERIALIZE) == 0) {
object_init_ex(return_value, ce);
if (!stmt->fetch.cls.fci.size) {
@@ -883,6 +887,10 @@
break;
 
case PDO_FETCH_FUNC:
+   if (!stmt->fetch.func.function) {
+   pdo_raise_impl_error(stmt->dbh, stmt, 
"HY000", "No fetch function specified" TSRMLS_CC);
+   return 0;
+   }
if (!stmt->fetch.func.fci.size) {
if (!do_fetch_func_prepare(stmt 
TSRMLS_CC))
{
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_38253.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/pdo/tests/bug_38253.phpt
diff -u /dev/null php-src/ext/pdo/tests/bug_38253.phpt:1.2
--- /dev/null   Sun Jul 30 11:20:41 2006
+++ php-src/ext/pdo/tests/bug_38253.phptSun Jul 30 11:20:41 2006
@@ -0,0 +1,47 @@
+--TEST--
+PDO Common: PHP Bug #38253: PDO produces segfault with default fetch mode
+--SKIPIF--
+
+--FILE--
+exec ("create table test (id integer primary key, n text)");
+$pdo->exec ("INSERT INTO test (n) VALUES ('hi')");
+
+$pdo->setAttribute (PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_CLASS);
+$stmt = $pdo->prepare ("SELECT * FROM test");
+$stmt->execute();
+var_dump($stmt->fetchAll());
+
+$pdo = PDOTest::factory();
+
+$pdo->exec ("create table test2 (id integer primary key, n text)");
+$pdo->exec ("INSERT INTO test2 (n) VALUES ('hi')");
+
+$pdo->setAttribute (PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_FUNC);
+$stmt = $pdo->prepare ("SELECT * FROM test2");
+$stmt->execute();
+var_dump($stmt->fetchAll());
+
+?>
+--EXPECTF--
+Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error: No fetch 
class specified in %s on line %d
+
+Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error%s on line %d
+array(0) {
+}
+
+Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error: No fetch 
function specified in %s on line %d
+
+Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error%s on line %d
+array(0) {
+}

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-06-20 Thread Antony Dovgal
tony2001Tue Jun 20 13:25:54 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  init variables
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.159&r2=1.160&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.159 php-src/ext/pdo/pdo_stmt.c:1.160
--- php-src/ext/pdo/pdo_stmt.c:1.159Tue May 30 09:46:01 2006
+++ php-src/ext/pdo/pdo_stmt.c  Tue Jun 20 13:25:54 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.159 2006/05/30 09:46:01 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.160 2006/06/20 13:25:54 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -759,9 +759,9 @@
 static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
enum pdo_fetch_type how, enum pdo_fetch_orientation ori, long offset, 
zval *return_all TSRMLS_DC) /* {{{ */
 {
-   int flags = how & PDO_FETCH_FLAGS, idx, old_arg_count;
-   zend_class_entry * ce, * old_ce;
-   zval grp_val, *grp, **pgrp, *retval, *old_ctor_args;
+   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;
 
how = how & ~PDO_FETCH_FLAGS;
if (how == PDO_FETCH_USE_DEFAULT) {

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-05-30 Thread Antony Dovgal
tony2001Tue May 30 09:46:01 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  need to call zend_is_callable() if callable is known to be invalid
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.158&r2=1.159&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.158 php-src/ext/pdo/pdo_stmt.c:1.159
--- php-src/ext/pdo/pdo_stmt.c:1.158Sat Apr 22 19:10:40 2006
+++ php-src/ext/pdo/pdo_stmt.c  Tue May 30 09:46:01 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.158 2006/04/22 19:10:40 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.159 2006/05/30 09:46:01 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -651,7 +651,7 @@
 
 static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info 
* fci, zend_fcall_info_cache * fcc, int num_args TSRMLS_DC) /* {{{ */
 {
-   zval **object = NULL, **method;
+   zval **object = NULL, **method = NULL;
zend_class_entry * ce = NULL, **pce;
zend_function *function_handler;
zstr lcname;
@@ -688,7 +688,7 @@
method = &callable;
}

-   if (!zend_is_callable(callable, 0, NULL)) {
+   if (!method || !zend_is_callable(callable, 0, NULL)) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied 
function must be a valid callback" TSRMLS_CC);
return 0;
}

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-04-22 Thread Antony Dovgal
tony2001Sat Apr 22 19:10:40 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  don't segfault if an exception has been thrown from the fetch handler
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.157&r2=1.158&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.157 php-src/ext/pdo/pdo_stmt.c:1.158
--- php-src/ext/pdo/pdo_stmt.c:1.157Mon Mar 27 16:43:02 2006
+++ php-src/ext/pdo/pdo_stmt.c  Sat Apr 22 19:10:40 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.157 2006/03/27 16:43:02 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.158 2006/04/22 19:10:40 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1055,7 +1055,7 @@
if (return_all) {
zval_ptr_dtor(&return_value); 
/* we don't need that */
return_value = retval;
-   } else {
+   } else if (retval) {
*return_value = *retval;
zval_copy_ctor(return_value);
INIT_PZVAL(return_value);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-03-27 Thread Antony Dovgal
tony2001Mon Mar 27 16:43:02 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix possible NULL dereference
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.156&r2=1.157&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.156 php-src/ext/pdo/pdo_stmt.c:1.157
--- php-src/ext/pdo/pdo_stmt.c:1.156Mon Mar 27 10:25:35 2006
+++ php-src/ext/pdo/pdo_stmt.c  Mon Mar 27 16:43:02 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.156 2006/03/27 10:25:35 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.157 2006/03/27 16:43:02 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -611,6 +611,7 @@
 
if (!ce) {
stmt->fetch.cls.ce = ZEND_STANDARD_CLASS_DEF_PTR;
+   ce = ZEND_STANDARD_CLASS_DEF_PTR;
}

if (ce->constructor) {

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-03-27 Thread Dmitry Stogov
dmitry  Mon Mar 27 10:25:36 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Unicode support
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.155&r2=1.156&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.155 php-src/ext/pdo/pdo_stmt.c:1.156
--- php-src/ext/pdo/pdo_stmt.c:1.155Sun Mar 19 19:46:18 2006
+++ php-src/ext/pdo/pdo_stmt.c  Mon Mar 27 10:25:35 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.155 2006/03/19 19:46:18 helly Exp $ */
+/* $Id: pdo_stmt.c,v 1.156 2006/03/27 10:25:35 dmitry Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -794,7 +794,7 @@
case PDO_FETCH_NAMED:
if (!return_all) {
ALLOC_HASHTABLE(return_value->value.ht);
-   zend_hash_init(return_value->value.ht, 
stmt->column_count, NULL, ZVAL_PTR_DTOR, 0); 
+   
zend_u_hash_init(return_value->value.ht, stmt->column_count, NULL, 
ZVAL_PTR_DTOR, 0, UG(unicode));
Z_TYPE_P(return_value) = IS_ARRAY;
} else {
array_init(return_value);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-03-19 Thread Ilia Alshanetsky
iliaa   Sun Mar 19 17:35:56 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB51: Properly calculate the size of the result array.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.152&r2=1.153&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.152 php-src/ext/pdo/pdo_stmt.c:1.153
--- php-src/ext/pdo/pdo_stmt.c:1.152Sat Mar 18 23:09:47 2006
+++ php-src/ext/pdo/pdo_stmt.c  Sun Mar 19 17:35:56 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.152 2006/03/18 23:09:47 helly Exp $ */
+/* $Id: pdo_stmt.c,v 1.153 2006/03/19 17:35:56 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -791,7 +791,13 @@
case PDO_FETCH_BOTH:
case PDO_FETCH_NUM:
case PDO_FETCH_NAMED:
-   array_init(return_value);
+   if (!return_all) {
+   ALLOC_HASHTABLE(return_value->value.ht);
+   zend_hash_init(return_value->value.ht, 
stmt->column_count, NULL, ZVAL_PTR_DTOR, 0); 
+   Z_TYPE_P(return_value) = IS_ARRAY;
+   } else {
+   array_init(return_value);
+   }
break;
 
case PDO_FETCH_COLUMN:

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-03-18 Thread Antony Dovgal
tony2001Sat Mar 18 22:25:29 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  check stream for NULL before writing to it
  remove unnecessary semicolons
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.150&r2=1.151&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.150 php-src/ext/pdo/pdo_stmt.c:1.151
--- php-src/ext/pdo/pdo_stmt.c:1.150Wed Mar 15 15:27:08 2006
+++ php-src/ext/pdo/pdo_stmt.c  Sat Mar 18 22:25:29 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.150 2006/03/15 15:27:08 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.151 2006/03/18 22:25:29 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -42,19 +42,19 @@
  * since it is a .c file, it won't be installed for use by PECL extensions, so 
we include it here. */
 ZEND_BEGIN_ARG_INFO(first_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
 
 
 ZEND_BEGIN_ARG_INFO(second_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO(third_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
 
 
 ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
@@ -62,10 +62,10 @@
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO(all_args_by_ref, 1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
 /* }}} */
 #endif
 
@@ -1876,6 +1876,10 @@
struct pdo_bound_param_data *param;
PHP_STMT_GET_OBJ;
 
+   if (out == NULL) {
+   RETURN_FALSE;
+   }
+   
php_stream_printf(out TSRMLS_CC, "SQL: [%d] %.*s\n",
stmt->query_stringlen,
stmt->query_stringlen, stmt->query_string);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-03-15 Thread Ilia Alshanetsky
iliaa   Wed Mar 15 15:27:08 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB51: Fixed memory leak on unused bind var.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.149&r2=1.150&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.149 php-src/ext/pdo/pdo_stmt.c:1.150
--- php-src/ext/pdo/pdo_stmt.c:1.149Thu Mar  2 13:12:45 2006
+++ php-src/ext/pdo/pdo_stmt.c  Wed Mar 15 15:27:08 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.149 2006/03/02 13:12:45 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.150 2006/03/15 15:27:08 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -322,6 +322,10 @@
}
 
if (is_param && !rewrite_name_to_position(stmt, pparam TSRMLS_CC)) {
+   if (param->name) {
+   efree(param->name);
+   param->name = NULL;
+   }
return 0;
}


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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-02-20 Thread Dmitry Stogov
dmitry  Mon Feb 20 10:50:58 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed wrong prototype and error message
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.144&r2=1.145&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.144 php-src/ext/pdo/pdo_stmt.c:1.145
--- php-src/ext/pdo/pdo_stmt.c:1.144Mon Feb 13 10:23:57 2006
+++ php-src/ext/pdo/pdo_stmt.c  Mon Feb 20 10:50:58 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.144 2006/02/13 10:23:57 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.145 2006/02/20 10:50:58 dmitry Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2177,14 +2177,10 @@
return I->fetch_ahead ? SUCCESS : FAILURE;
 }
 
-static void pdo_stmt_iter_get_data(zend_object_iterator *iter, zval ***data, 
int by_ref TSRMLS_DC)
+static void pdo_stmt_iter_get_data(zend_object_iterator *iter, zval ***data 
TSRMLS_DC)
 {
struct php_pdo_iterator *I = (struct php_pdo_iterator*)iter->data;
 
-   if (by_ref) {
-   zend_error(E_ERROR, "An iterator cannot be used with foreach by 
reference");
-   }
-
/* sanity */
if (!I->fetch_ahead) {
*data = NULL;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2006-01-01 Thread Ilia Alshanetsky
iliaa   Sun Jan  1 20:08:19 2006 UTC

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed bug #35797 (segfault on PDOStatement::execute() with 
  zend.ze1_compatibility_mode = On).
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.138&r2=1.139&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.138 php-src/ext/pdo/pdo_stmt.c:1.139
--- php-src/ext/pdo/pdo_stmt.c:1.138Sun Jan  1 13:09:52 2006
+++ php-src/ext/pdo/pdo_stmt.c  Sun Jan  1 20:08:19 2006
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.138 2006/01/01 13:09:52 sniper Exp $ */
+/* $Id: pdo_stmt.c,v 1.139 2006/01/01 20:08:19 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2006,6 +2006,34 @@
return -1;
 }
 
+static zend_object_value dbstmt_clone_obj(zval *zobject TSRMLS_DC)
+{
+   zend_object_value retval;
+   zval *tmp;
+   pdo_stmt_t *stmt;
+   pdo_stmt_t *old_stmt;
+   zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
+
+   stmt = ecalloc(1, sizeof(*stmt));
+   stmt->ce = Z_OBJCE_P(zobject);
+   stmt->refcount = 1;
+   ALLOC_HASHTABLE(stmt->properties);
+   zend_hash_init(stmt->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+   zend_hash_copy(stmt->properties, &stmt->ce->default_properties, 
(copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
+
+   old_stmt = (pdo_stmt_t *)zend_object_store_get_object(zobject 
TSRMLS_CC);
+   
+   retval.handle = zend_objects_store_put(stmt, 
(zend_objects_store_dtor_t)zend_objects_destroy_object, 
(zend_objects_free_object_storage_t)pdo_dbstmt_free_storage, 
(zend_objects_store_clone_t)dbstmt_clone_obj TSRMLS_CC);
+   retval.handlers = Z_OBJ_HT_P(zobject);
+
+   zend_objects_clone_members((zend_object *)stmt, retval, (zend_object 
*)old_stmt, handle TSRMLS_CC);
+   
+   zend_objects_store_add_ref(&old_stmt->database_object_handle TSRMLS_CC);
+   stmt->database_object_handle = old_stmt->database_object_handle;
+   
+   return retval;
+}
+
 zend_object_handlers pdo_dbstmt_object_handlers;
 
 void pdo_stmt_init(TSRMLS_D)
@@ -2024,6 +2052,7 @@
pdo_dbstmt_object_handlers.unset_property = dbstmt_prop_delete;
pdo_dbstmt_object_handlers.get_method = dbstmt_method_get;
pdo_dbstmt_object_handlers.compare_objects = dbstmt_compare;
+   pdo_dbstmt_object_handlers.clone_obj = dbstmt_clone_obj;
 
INIT_CLASS_ENTRY(ce, "PDORow", pdo_row_functions);
pdo_row_ce = zend_register_internal_class(&ce TSRMLS_CC);
@@ -2108,7 +2137,7 @@
zend_hash_init(stmt->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
zend_hash_copy(stmt->properties, &ce->default_properties, 
(copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
 
-   retval.handle = zend_objects_store_put(stmt, 
(zend_objects_store_dtor_t)zend_objects_destroy_object, 
(zend_objects_free_object_storage_t)pdo_dbstmt_free_storage, NULL TSRMLS_CC);
+   retval.handle = zend_objects_store_put(stmt, 
(zend_objects_store_dtor_t)zend_objects_destroy_object, 
(zend_objects_free_object_storage_t)pdo_dbstmt_free_storage, 
(zend_objects_store_clone_t)dbstmt_clone_obj TSRMLS_CC);
retval.handlers = &pdo_dbstmt_object_handlers;
 
return retval;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-12-17 Thread Ilia Alshanetsky
iliaa   Sat Dec 17 20:00:14 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB51: Fixed memory corruption when FETCH_LAZY mode is being used.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.136&r2=1.137&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.136 php-src/ext/pdo/pdo_stmt.c:1.137
--- php-src/ext/pdo/pdo_stmt.c:1.136Thu Dec 15 22:35:18 2005
+++ php-src/ext/pdo/pdo_stmt.c  Sat Dec 17 20:00:14 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.136 2005/12/15 22:35:18 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.137 2005/12/17 20:00:14 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -228,7 +228,7 @@
Z_TYPE(stmt->lazy_object_ref) = IS_OBJECT;
Z_OBJ_HANDLE(stmt->lazy_object_ref) = 
zend_objects_store_put(stmt, 
(zend_objects_store_dtor_t)zend_objects_destroy_object, 
(zend_objects_free_object_storage_t)pdo_row_free_storage, NULL TSRMLS_CC);
Z_OBJ_HT(stmt->lazy_object_ref) = &pdo_row_object_handlers;
-   /* stmt->refcount++; */
+   stmt->refcount++;
}
Z_TYPE_P(return_value) = IS_OBJECT;
Z_OBJ_HANDLE_P(return_value) = Z_OBJ_HANDLE(stmt->lazy_object_ref);
@@ -2408,13 +2408,11 @@
 
 void pdo_row_free_storage(pdo_stmt_t *stmt TSRMLS_DC)
 {
-#if 0
ZVAL_NULL(&stmt->lazy_object_ref);

if (--stmt->refcount == 0) {
free_statement(stmt TSRMLS_CC);
}
-#endif
 }
 
 zend_object_value pdo_row_new(zend_class_entry *ce TSRMLS_DC)

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-12-15 Thread Ilia Alshanetsky
iliaa   Thu Dec 15 22:35:19 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  MFB51: Fixed bug #35694 (Improved error message for invalid fetch mode).
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.135&r2=1.136&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.135 php-src/ext/pdo/pdo_stmt.c:1.136
--- php-src/ext/pdo/pdo_stmt.c:1.135Tue Dec  6 02:24:41 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Dec 15 22:35:18 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.135 2005/12/06 02:24:41 sniper Exp $ */
+/* $Id: pdo_stmt.c,v 1.136 2005/12/15 22:35:18 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1742,13 +1742,8 @@
break;

default:
-   if ((mode & ~PDO_FETCH_FLAGS) < PDO_FETCH__MAX && (mode 
& ~PDO_FETCH_FLAGS) >= 0) {
-   pdo_raise_impl_error(stmt->dbh, stmt, "22003", 
"unhandled mode; this is a PDO bug, please report it" TSRMLS_CC);
-   } else {
-   pdo_raise_impl_error(stmt->dbh, stmt, "22003", 
"mode is out of range" TSRMLS_CC);
-   }
-   efree(args);
-   return FAILURE;
+   pdo_raise_impl_error(stmt->dbh, stmt, "22003", "Invalid 
fetch mode specified" TSRMLS_CC);
+   goto fail_out;
}
 
stmt->default_fetch_type = mode;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-12-01 Thread Antony Dovgal
tony2001Thu Dec  1 15:39:50 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  tweak the fix
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.133&r2=1.134&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.133 php-src/ext/pdo/pdo_stmt.c:1.134
--- php-src/ext/pdo/pdo_stmt.c:1.133Thu Dec  1 14:59:36 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Dec  1 15:39:49 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.133 2005/12/01 19:59:36 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.134 2005/12/01 20:39:49 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1069,13 +1069,13 @@
 {
int flags = mode & PDO_FETCH_FLAGS;
 
+   mode = mode & ~PDO_FETCH_FLAGS;
+
if (mode < 0 || mode > PDO_FETCH__MAX) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "invalid fetch 
mode" TSRMLS_CC);
return 0;
}

-   mode = mode & ~PDO_FETCH_FLAGS;
-
if (mode == PDO_FETCH_USE_DEFAULT) {
flags = stmt->default_fetch_type & PDO_FETCH_FLAGS;
mode = stmt->default_fetch_type & ~PDO_FETCH_FLAGS;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-12-01 Thread Antony Dovgal
tony2001Thu Dec  1 14:59:40 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix #35508 (PDO fails when unknown fetch mode specified)
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.132&r2=1.133&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.132 php-src/ext/pdo/pdo_stmt.c:1.133
--- php-src/ext/pdo/pdo_stmt.c:1.132Sun Nov 27 15:56:46 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Dec  1 14:59:36 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.132 2005/11/27 20:56:46 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.133 2005/12/01 19:59:36 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1068,6 +1068,11 @@
 static int pdo_stmt_verify_mode(pdo_stmt_t *stmt, int mode, int fetch_all 
TSRMLS_DC) /* {{{ */
 {
int flags = mode & PDO_FETCH_FLAGS;
+
+   if (mode < 0 || mode > PDO_FETCH__MAX) {
+   pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "invalid fetch 
mode" TSRMLS_CC);
+   return 0;
+   }

mode = mode & ~PDO_FETCH_FLAGS;
 
@@ -1657,10 +1662,12 @@
mode = Z_LVAL_PP(args[skip]);

if (!pdo_stmt_verify_mode(stmt, mode, 0 TSRMLS_CC)) {
+   efree(args);
return FAILURE;
}
 
switch (mode & ~PDO_FETCH_FLAGS) {
+   case PDO_FETCH_USE_DEFAULT:
case PDO_FETCH_LAZY:
case PDO_FETCH_ASSOC:
case PDO_FETCH_NUM:
@@ -1740,6 +1747,7 @@
} else {
pdo_raise_impl_error(stmt->dbh, stmt, "22003", 
"mode is out of range" TSRMLS_CC);
}
+   efree(args);
return FAILURE;
}
 

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-11-27 Thread Antony Dovgal
tony2001Sun Nov 27 15:56:47 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix #35430 (PDO crashes on incorrect FETCH_FUNC use)
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.131&r2=1.132&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.131 php-src/ext/pdo/pdo_stmt.c:1.132
--- php-src/ext/pdo/pdo_stmt.c:1.131Thu Nov 24 11:22:27 2005
+++ php-src/ext/pdo/pdo_stmt.c  Sun Nov 27 15:56:46 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.131 2005/11/24 16:22:27 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.132 2005/11/27 20:56:46 tony2001 Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1305,13 +1305,15 @@
switch(ZEND_NUM_ARGS()) {
case 0:
case 1:
+   pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "no 
fetch function specified" TSRMLS_CC);
+   error = 1;
break;
case 3:
case 2:
stmt->fetch.func.function = arg2;
+   do_fetch_func_prepare(stmt TSRMLS_CC);
break;
}
-   do_fetch_func_prepare(stmt TSRMLS_CC);
break;

case PDO_FETCH_COLUMN:

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-10-10 Thread Ilia Alshanetsky
iliaa   Mon Oct 10 10:43:51 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed bug #34809 (FETCH_INTO in PDO crashes without a destination object).
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.127&r2=1.128&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.127 php-src/ext/pdo/pdo_stmt.c:1.128
--- php-src/ext/pdo/pdo_stmt.c:1.127Wed Sep 21 18:53:47 2005
+++ php-src/ext/pdo/pdo_stmt.c  Mon Oct 10 10:43:51 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.127 2005/09/21 22:53:47 helly Exp $ */
+/* $Id: pdo_stmt.c,v 1.128 2005/10/10 14:43:51 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -824,6 +824,12 @@
break;

case PDO_FETCH_INTO:
+   if (!stmt->fetch.into) {
+   pdo_raise_impl_error(stmt->dbh, stmt, 
"HY000", "No fetch-into object specified." TSRMLS_CC);
+   return 0;
+   break;
+   }
+
Z_TYPE_P(return_value) = IS_OBJECT;
Z_OBJ_HANDLE_P(return_value) = 
Z_OBJ_HANDLE_P(stmt->fetch.into);
Z_OBJ_HT_P(return_value) = 
Z_OBJ_HT_P(stmt->fetch.into);

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-09-11 Thread Dmitry Stogov
dmitry  Mon Sep 12 02:31:55 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  ZTS fix
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.125&r2=1.126&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.125 php-src/ext/pdo/pdo_stmt.c:1.126
--- php-src/ext/pdo/pdo_stmt.c:1.125Sun Sep 11 01:03:58 2005
+++ php-src/ext/pdo/pdo_stmt.c  Mon Sep 12 02:31:54 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.125 2005/09/11 05:03:58 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.126 2005/09/12 06:31:54 dmitry Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1865,7 +1865,7 @@
Prevents use of a PDOStatement instance that has been unserialized */
 static PHP_METHOD(PDOStatement, __wakeup)
 {
-   zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "You 
cannot serialize or unserialize PDOStatement instances");
+   zend_throw_exception_ex(php_pdo_get_exception(TSRMLS_C), 0 TSRMLS_CC, 
"You cannot serialize or unserialize PDOStatement instances");
 }
 /* }}} */
 
@@ -1873,7 +1873,7 @@
Prevents serialization of a PDOStatement instance */
 static PHP_METHOD(PDOStatement, __sleep)
 {
-   zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "You 
cannot serialize or unserialize PDOStatement instances");
+   zend_throw_exception_ex(php_pdo_get_exception(TSRMLS_C), 0 TSRMLS_CC, 
"You cannot serialize or unserialize PDOStatement instances");
 }
 /* }}} */
 

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-08-16 Thread Andrei Zmievski
andrei  Tue Aug 16 15:43:24 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  And here
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.121&r2=1.122&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.121 php-src/ext/pdo/pdo_stmt.c:1.122
--- php-src/ext/pdo/pdo_stmt.c:1.121Tue Aug 16 12:29:13 2005
+++ php-src/ext/pdo/pdo_stmt.c  Tue Aug 16 15:43:23 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.121 2005/08/16 16:29:13 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.122 2005/08/16 19:43:23 andrei Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -800,7 +800,7 @@
fetch_value(stmt, &val, i++ TSRMLS_CC);
if (Z_TYPE(val) != IS_NULL) {
convert_to_text(&val);
-   if 
(zend_u_lookup_class(Z_TYPE(val), Z_STRVAL(val), Z_STRLEN(val), &cep TSRMLS_CC) 
== FAILURE) {
+   if 
(zend_u_lookup_class(Z_TYPE(val), Z_UNIVAL(val), Z_UNILEN(val), &cep TSRMLS_CC) 
== FAILURE) {
stmt->fetch.cls.ce = 
ZEND_STANDARD_CLASS_DEF_PTR;
} else {
stmt->fetch.cls.ce = 
*cep;

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-08-03 Thread Ilia Alshanetsky
iliaa   Wed Aug  3 14:26:17 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed memory leak.
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.117&r2=1.118&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.117 php-src/ext/pdo/pdo_stmt.c:1.118
--- php-src/ext/pdo/pdo_stmt.c:1.117Wed Jul 27 10:18:01 2005
+++ php-src/ext/pdo/pdo_stmt.c  Wed Aug  3 14:26:16 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.117 2005/07/27 14:18:01 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.118 2005/08/03 18:26:16 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1994,6 +1994,10 @@
stmt->columns = NULL;
}
 
+   if (stmt->fetch.into && stmt->default_fetch_type == PDO_FETCH_INTO) {
+   FREE_ZVAL(stmt->fetch.into);
+   stmt->fetch.into = NULL;
+   }

do_fetch_opt_finish(stmt, 1 TSRMLS_CC);
 

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-27 Thread Wez Furlong
wez Wed Jul 27 10:18:03 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  add sanity checks
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.116&r2=1.117&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.116 php-src/ext/pdo/pdo_stmt.c:1.117
--- php-src/ext/pdo/pdo_stmt.c:1.116Fri Jul 22 10:31:20 2005
+++ php-src/ext/pdo/pdo_stmt.c  Wed Jul 27 10:18:01 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.116 2005/07/22 14:31:20 helly Exp $ */
+/* $Id: pdo_stmt.c,v 1.117 2005/07/27 14:18:01 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1985,9 +1985,13 @@
struct pdo_column_data *cols = stmt->columns;
 
for (i = 0; i < stmt->column_count; i++) {
-   efree(cols[i].name);
+   if (cols[i].name) {
+   efree(cols[i].name);
+   cols[i].name = NULL;
+   }
}
efree(stmt->columns);
+   stmt->columns = NULL;
}
 


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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-21 Thread Wez Furlong
wez Fri Jul 22 00:33:58 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  this looks like a much better fix for refcounting/shutdown in lazy objects.
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.114&r2=1.115&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.114 php-src/ext/pdo/pdo_stmt.c:1.115
--- php-src/ext/pdo/pdo_stmt.c:1.114Thu Jul 21 22:09:19 2005
+++ php-src/ext/pdo/pdo_stmt.c  Fri Jul 22 00:33:56 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.114 2005/07/22 02:09:19 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.115 2005/07/22 04:33:56 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -222,7 +222,7 @@
Z_TYPE(stmt->lazy_object_ref) = IS_OBJECT;
Z_OBJ_HANDLE(stmt->lazy_object_ref) = 
zend_objects_store_put(stmt, 
(zend_objects_store_dtor_t)zend_objects_destroy_object, 
(zend_objects_free_object_storage_t)pdo_row_free_storage, NULL TSRMLS_CC);
Z_OBJ_HT(stmt->lazy_object_ref) = &pdo_row_object_handlers;
-   stmt->refcount++;
+   /* stmt->refcount++; */
}
Z_TYPE_P(return_value) = IS_OBJECT;
Z_OBJ_HANDLE_P(return_value) = Z_OBJ_HANDLE(stmt->lazy_object_ref);
@@ -2311,11 +2311,13 @@
 
 void pdo_row_free_storage(pdo_stmt_t *stmt TSRMLS_DC)
 {
+#if 0
ZVAL_NULL(&stmt->lazy_object_ref);

if (--stmt->refcount == 0) {
free_statement(stmt TSRMLS_CC);
}
+#endif
 }
 
 zend_object_value pdo_row_new(zend_class_entry *ce TSRMLS_DC)

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-21 Thread Wez Furlong
wez Thu Jul 21 22:09:19 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix leak (ugh, this nuance gets me every time)
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.113&r2=1.114&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.113 php-src/ext/pdo/pdo_stmt.c:1.114
--- php-src/ext/pdo/pdo_stmt.c:1.113Thu Jul 21 21:34:42 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Jul 21 22:09:19 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.113 2005/07/22 01:34:42 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.114 2005/07/22 02:09:19 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -2163,6 +2163,9 @@
}
}
}
+
+   return_value->refcount = 0;
+   return_value->is_ref = 0;

return return_value;
 }

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo/tests pdo_027.phpt

2005-07-21 Thread Wez Furlong
wez Thu Jul 21 21:34:43 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
/php-src/ext/pdo/tests  pdo_027.phpt 
  Log:
  Fixes #33785 for me
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.112&r2=1.113&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.112 php-src/ext/pdo/pdo_stmt.c:1.113
--- php-src/ext/pdo/pdo_stmt.c:1.112Mon Jul 18 10:46:55 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Jul 21 21:34:42 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.112 2005/07/18 14:46:55 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.113 2005/07/22 01:34:42 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -227,6 +227,7 @@
Z_TYPE_P(return_value) = IS_OBJECT;
Z_OBJ_HANDLE_P(return_value) = Z_OBJ_HANDLE(stmt->lazy_object_ref);
Z_OBJ_HT_P(return_value) = Z_OBJ_HT(stmt->lazy_object_ref);
+   zend_objects_store_add_ref(return_value TSRMLS_CC);
 }
 /* }}} */
 
http://cvs.php.net/diff.php/php-src/ext/pdo/tests/pdo_027.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/pdo/tests/pdo_027.phpt
diff -u php-src/ext/pdo/tests/pdo_027.phpt:1.1 
php-src/ext/pdo/tests/pdo_027.phpt:1.2
--- php-src/ext/pdo/tests/pdo_027.phpt:1.1  Thu Jul 21 15:33:48 2005
+++ php-src/ext/pdo/tests/pdo_027.phpt  Thu Jul 21 21:34:43 2005
@@ -18,9 +18,11 @@
 $db->exec("INSERT INTO test (id,name) VALUES(2,'test2')");
 
 foreach ($db->query("SELECT * FROM test", PDO_FETCH_LAZY) as $v) {
-   echo $v->id.$v->name."\n";
+   echo "lazy: " . $v->id.$v->name."\n";
 }
+echo "End\n";
 ?>
 --EXPECT--
-1test1
-2test2
+lazy: 1test1
+lazy: 2test2
+End

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-18 Thread Wez Furlong
wez Mon Jul 18 10:46:55 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  make a start on a debugging function.
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.111&r2=1.112&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.111 php-src/ext/pdo/pdo_stmt.c:1.112
--- php-src/ext/pdo/pdo_stmt.c:1.111Mon Jul 11 23:19:44 2005
+++ php-src/ext/pdo/pdo_stmt.c  Mon Jul 18 10:46:55 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.111 2005/07/12 03:19:44 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.112 2005/07/18 14:46:55 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1776,6 +1776,48 @@
 }
 /* }}} */
 
+/* {{{ proto void PDOStatement::debugDumpParams()
+   A utility for internals hackers to debug parameter internals */
+static PHP_METHOD(PDOStatement, debugDumpParams)
+{
+   pdo_stmt_t *stmt = (pdo_stmt_t*)zend_object_store_get_object(getThis() 
TSRMLS_CC);
+   php_stream *out = php_stream_open_wrapper("php://output", "w", 0, NULL);
+   HashPosition pos;
+   struct pdo_bound_param_data *param;
+
+   php_stream_printf(out TSRMLS_CC, "SQL: [%d] %.*s\n",
+   stmt->query_stringlen,
+   stmt->query_stringlen, stmt->query_string);
+
+   php_stream_printf(out TSRMLS_CC, "Params:  %d\n",
+   stmt->bound_params ? zend_hash_num_elements(stmt->bound_params) 
: 0);
+   
+   if (stmt->bound_params) {
+   zend_hash_internal_pointer_reset_ex(stmt->bound_params, &pos);
+   while (SUCCESS == 
zend_hash_get_current_data_ex(stmt->bound_params,
+   (void**)¶m, &pos)) {
+   char *str;
+   uint len;
+   ulong num;
+
+   if (zend_hash_get_current_key_ex(stmt->bound_params, 
&str, &len, &num, 0, &pos) == HASH_KEY_IS_STRING) {
+   php_stream_printf(out TSRMLS_CC, "Key: Position 
#%d:\n", num);
+   } else {
+   php_stream_printf(out TSRMLS_CC, "Key: Name: 
[%d] %.*s\n", len, len, str);
+   }
+
+   php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] 
%.*s\nis_param=%d\nparam_type=%d\n",
+   param->paramno, param->namelen, param->namelen, 
param->name,
+   param->is_param,
+   param->param_type);
+   
+   }
+   }
+
+   php_stream_close(out);
+}
+/* }}} */
+
 
 function_entry pdo_dbstmt_functions[] = {
PHP_ME(PDOStatement, execute,   NULL,   
ZEND_ACC_PUBLIC)
@@ -1795,6 +1837,7 @@
PHP_ME(PDOStatement, setFetchMode,  NULL,   
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, nextRowset,NULL,   
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, closeCursor,   NULL,   
ZEND_ACC_PUBLIC)
+   PHP_ME(PDOStatement, debugDumpParams, NULL, 
ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
 };
 

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



Re: [PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-11 Thread Wez Furlong
That doesn't sound right.  It should probably be an error to bind by
number when using named parameters.

Will investigate more.

--Wez.

On 7/11/05, Andrey Hristov <[EMAIL PROTECTED]> wrote:
> andrey  Mon Jul 11 10:14:57 2005 EDT
> 
>   Modified files:
> /php-src/ext/pdopdo_stmt.c
>   Log:
>   fix a segfault with the following script:
>  $dbh = new PDO('mysql:dbname=test;host=localhost', "root", "secret");
>   $what = 1;
>   $stmt = $dbh->prepare('select a, b, c from t123 where a=:what');
>   $stmt->bindParam(1, $what, PDO_PARAM_INT, 12);
>   var_dump($stmt->execute());
>   var_dump($stmt->fetchObject());
>   ?>
> 
> 
> http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.108&r2=1.109&ty=u
> Index: php-src/ext/pdo/pdo_stmt.c
> diff -u php-src/ext/pdo/pdo_stmt.c:1.108 php-src/ext/pdo/pdo_stmt.c:1.109
> --- php-src/ext/pdo/pdo_stmt.c:1.108Fri Jul  8 23:52:39 2005
> +++ php-src/ext/pdo/pdo_stmt.c  Mon Jul 11 10:14:56 2005
> @@ -18,7 +18,7 @@
>+--+
>  */
> 
> -/* $Id: pdo_stmt.c,v 1.108 2005/07/09 03:52:39 wez Exp $ */
> +/* $Id: pdo_stmt.c,v 1.109 2005/07/11 14:14:56 andrey Exp $ */
> 
>  /* The PDO Statement Handle Class */
> 
> @@ -91,7 +91,10 @@
> /* this is not an error here */
> return 1;
> }
> -
> +   if (!param->name) {
> +   return 1;
> +   }
> +
> zend_hash_internal_pointer_reset(stmt->bound_param_map);
> while (SUCCESS == 
> zend_hash_get_current_data(stmt->bound_param_map, (void**)&name)) {
> if (strcmp(name, param->name)) {
> 
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
>

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-11 Thread Andrey Hristov
andrey  Mon Jul 11 10:14:57 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  fix a segfault with the following script:
  prepare('select a, b, c from t123 where a=:what');
  $stmt->bindParam(1, $what, PDO_PARAM_INT, 12);
  var_dump($stmt->execute());
  var_dump($stmt->fetchObject());
  ?>
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.108&r2=1.109&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.108 php-src/ext/pdo/pdo_stmt.c:1.109
--- php-src/ext/pdo/pdo_stmt.c:1.108Fri Jul  8 23:52:39 2005
+++ php-src/ext/pdo/pdo_stmt.c  Mon Jul 11 10:14:56 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.108 2005/07/09 03:52:39 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.109 2005/07/11 14:14:56 andrey Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -91,7 +91,10 @@
/* this is not an error here */
return 1;
}
-
+   if (!param->name) {
+   return 1;
+   }
+
zend_hash_internal_pointer_reset(stmt->bound_param_map);
while (SUCCESS == 
zend_hash_get_current_data(stmt->bound_param_map, (void**)&name)) {
if (strcmp(name, param->name)) {

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c php_pdo_driver.h /ext/pdo/tests pdo_016.phpt pdo_018.phpt pdo_021.phpt

2005-07-08 Thread Wez Furlong
wez Fri Jul  8 23:52:41 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c php_pdo_driver.h 
/php-src/ext/pdo/tests  pdo_016.phpt pdo_018.phpt pdo_021.phpt 
  Log:
  Added:
  
  proto bool PDOStatement::closeCursor()
  Closes the cursor, leaving the statement ready for re-execution.
  
  The purpose of the function is to free up the connection to the server so that
  other queries may be issued, but leaving the statement in a state that it can
  be re-executed.
  
  This is implemented either as an optional driver specific method (allowing for
  maximum efficiency), or as the generic PDO fallback if no driver specific
  function is installed.
  
  The PDO generic fallback is semantically the same as writing the following 
code
  in your PHP script:
  
  do {
while ($stmt->fetch())
;
if (!$stmt->nextRowset())
break;
  } while (true);
  
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.107&r2=1.108&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.107 php-src/ext/pdo/pdo_stmt.c:1.108
--- php-src/ext/pdo/pdo_stmt.c:1.107Fri Jul  8 13:00:28 2005
+++ php-src/ext/pdo/pdo_stmt.c  Fri Jul  8 23:52:39 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.107 2005/07/08 17:00:28 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.108 2005/07/09 03:52:39 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1681,17 +1681,13 @@
 
 /* {{{ proto bool PDOStatement::nextRowset()
Advances to the next rowset in a multi-rowset statement handle. Returns 
true if it succeded, false otherwise */
-static PHP_METHOD(PDOStatement, nextRowset)
-{
-   pdo_stmt_t *stmt = (pdo_stmt_t*)zend_object_store_get_object(getThis() 
TSRMLS_CC);
 
-   if (!stmt->methods->next_rowset) {
-   pdo_raise_impl_error(stmt->dbh, stmt, "IM001", "driver does not 
support multiple rowsets" TSRMLS_CC);
-   RETURN_FALSE;
+static int pdo_stmt_do_next_rowset(pdo_stmt_t *stmt TSRMLS_DC)
+{
+   if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) {
+   return 0;
}
 
-   PDO_STMT_CLEAR_ERR();
-
/* un-describe */
if (stmt->columns) {
int i;
@@ -1701,11 +1697,27 @@
efree(cols[i].name);
}
efree(stmt->columns);
+   stmt->columns = NULL;
+   stmt->column_count = 0;
}
-   stmt->columns = NULL;
 
-   if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) {
-   stmt->column_count = 0;
+   pdo_stmt_describe_columns(stmt TSRMLS_CC);
+
+   return 1;
+}
+
+static PHP_METHOD(PDOStatement, nextRowset)
+{
+   pdo_stmt_t *stmt = (pdo_stmt_t*)zend_object_store_get_object(getThis() 
TSRMLS_CC);
+
+   if (!stmt->methods->next_rowset) {
+   pdo_raise_impl_error(stmt->dbh, stmt, "IM001", "driver does not 
support multiple rowsets" TSRMLS_CC);
+   RETURN_FALSE;
+   }
+
+   PDO_STMT_CLEAR_ERR();
+   
+   if (!pdo_stmt_do_next_rowset(stmt TSRMLS_CC)) {
PDO_HANDLE_STMT_ERR();
RETURN_FALSE;
}
@@ -1716,6 +1728,41 @@
 }
 /* }}} */
 
+/* {{{ proto bool PDOStatement::closeCursor()
+   Closes the cursor, leaving the statement ready for re-execution. */
+static PHP_METHOD(PDOStatement, closeCursor)
+{
+   pdo_stmt_t *stmt = (pdo_stmt_t*)zend_object_store_get_object(getThis() 
TSRMLS_CC);
+
+   if (!stmt->methods->cursor_closer) {
+   /* emulate it by fetching and discarding rows */
+   do {
+   while (stmt->methods->fetcher(stmt, PDO_FETCH_ORI_NEXT, 
0 TSRMLS_CC))
+   ;
+   if (!stmt->methods->next_rowset) {
+   break;
+   }
+
+   if (!pdo_stmt_do_next_rowset(stmt TSRMLS_CC)) {
+   break;
+   }
+   
+   } while (1);
+   RETURN_TRUE;
+   }
+
+   PDO_STMT_CLEAR_ERR();
+
+   if (!stmt->methods->cursor_closer(stmt TSRMLS_CC)) {
+   PDO_HANDLE_STMT_ERR();
+   RETURN_FALSE;
+   }
+
+   RETURN_TRUE;
+}
+/* }}} */
+
+
 function_entry pdo_dbstmt_functions[] = {
PHP_ME(PDOStatement, execute,   NULL,   
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, fetch, NULL,   
ZEND_ACC_PUBLIC)
@@ -1733,6 +1780,7 @@
PHP_ME(PDOStatement, getColumnMeta, NULL,   
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, setFetchMode,  NULL,   
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, nextRowset,NULL,   
ZEND_ACC_PUBLIC)

[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-08 Thread Wez Furlong
wez Fri Jul  8 11:25:16 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fix a shutdown order issue I saw in the pgsql driver.  Hope this doesn't mess
  up something in the OCI driver; I think I've been here before.
  
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.105&r2=1.106&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.105 php-src/ext/pdo/pdo_stmt.c:1.106
--- php-src/ext/pdo/pdo_stmt.c:1.105Fri Jul  8 00:12:58 2005
+++ php-src/ext/pdo/pdo_stmt.c  Fri Jul  8 11:25:15 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.105 2005/07/08 04:12:58 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.106 2005/07/08 15:25:15 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1838,6 +1838,19 @@
stmt->properties = NULL;
}
 
+   if (stmt->bound_params) {
+   zend_hash_destroy(stmt->bound_params);
+   FREE_HASHTABLE(stmt->bound_params);
+   }
+   if (stmt->bound_param_map) {
+   zend_hash_destroy(stmt->bound_param_map);
+   FREE_HASHTABLE(stmt->bound_param_map);
+   }
+   if (stmt->bound_columns) {
+   zend_hash_destroy(stmt->bound_columns);
+   FREE_HASHTABLE(stmt->bound_columns);
+   }
+
if (stmt->methods && stmt->methods->dtor) {
stmt->methods->dtor(stmt TSRMLS_CC);
}
@@ -1855,18 +1868,6 @@
efree(stmt->columns);
}
 
-   if (stmt->bound_params) {
-   zend_hash_destroy(stmt->bound_params);
-   FREE_HASHTABLE(stmt->bound_params);
-   }
-   if (stmt->bound_param_map) {
-   zend_hash_destroy(stmt->bound_param_map);
-   FREE_HASHTABLE(stmt->bound_param_map);
-   }
-   if (stmt->bound_columns) {
-   zend_hash_destroy(stmt->bound_columns);
-   FREE_HASHTABLE(stmt->bound_columns);
-   }

do_fetch_opt_finish(stmt, 1 TSRMLS_CC);
 

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



Re: [PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-07 Thread Christopher Kings-Lynne
Pointing me at some good documentation for it would help; I find the 
postgres site really difficult to extract information from.  I've looked 
on two occasions but got fed up with lack of info.


Interesting.  I find the PostgreSQL manual elegant, simple and 
orthogonal and I find the MySQL one a total cross-version jumbled mess :)


This is the URL you want:

http://www.postgresql.org/docs/8.0/interactive/libpq-exec.html#LIBPQ-EXEC-MAIN

You can use the PQprepare/PQexecPrepared combo to have separated prepare 
and execute steps.  Or, you can use PQexecParams to simple execute a 
statement with separate parameters.


If you can show me some C code that does it, I'll install postgres and 
hack up something to make it work.


Just look at php-src/ext/pgsql/pgsql.c.  Find the pg_prepare, pg_execute 
and pg_query_params function implementations.


The basic thing in PostgreSQL is that it uses positional parameters: $1, 
$2, $3 instead of ?, ?, ? or :var1, :var2, :var3.


Chris

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



Re: [PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-07 Thread Wez Furlong
Pointing me at some good documentation for it would help; I find the 
postgres site really difficult to extract information from.  I've looked 
on two occasions but got fed up with lack of info.


If you can show me some C code that does it, I'll install postgres and 
hack up something to make it work.


--Wez.

Christopher Kings-Lynne wrote:



Wez Furlong wrote:


wezThu Jul  7 08:45:41 2005 EDT

  Modified files:  /php-src/ext/pdopdo_stmt.c   Log:
  Fix bug in bindColumn() for drivers that implement native prepared 
statements

  and that use the PDO rewriter to handle non-native parameter syntax.



Is there any chance we can get native prepared statements in pdo_pgsql? 
 What's involved?


Chris



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



Re: [PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-07 Thread Christopher Kings-Lynne



Wez Furlong wrote:

wez Thu Jul  7 08:45:41 2005 EDT

  Modified files:  
/php-src/ext/pdo	pdo_stmt.c 
  Log:

  Fix bug in bindColumn() for drivers that implement native prepared statements
  and that use the PDO rewriter to handle non-native parameter syntax.


Is there any chance we can get native prepared statements in pdo_pgsql? 
 What's involved?


Chris

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-07 Thread Ilia Alshanetsky
iliaa   Thu Jul  7 11:14:12 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Return an empty array rather then FALSE in fetchAll() on no results.
  
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.103&r2=1.104&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.103 php-src/ext/pdo/pdo_stmt.c:1.104
--- php-src/ext/pdo/pdo_stmt.c:1.103Thu Jul  7 08:45:40 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Jul  7 11:14:10 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.103 2005/07/07 12:45:40 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.104 2005/07/07 15:14:10 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1293,8 +1293,7 @@
}
if (!do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, 
return_all TSRMLS_CC)) {
FREE_ZVAL(data);
-   zval_dtor(return_value);
-   error = 1;
+   error = 2;
}
}
if (!error) {
@@ -1320,7 +1319,12 @@

if (error) {
PDO_HANDLE_STMT_ERR();
-   RETURN_FALSE;
+   if (error != 2) {
+   RETURN_FALSE;
+   } else { /* on no results, return an empty array */
+   array_init(return_value);
+   return;
+   }
}
 }
 /* }}} */

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-07 Thread Wez Furlong
wez Thu Jul  7 08:45:41 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fix bug in bindColumn() for drivers that implement native prepared statements
  and that use the PDO rewriter to handle non-native parameter syntax.
  
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.102&r2=1.103&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.102 php-src/ext/pdo/pdo_stmt.c:1.103
--- php-src/ext/pdo/pdo_stmt.c:1.102Thu Jul  7 07:19:56 2005
+++ php-src/ext/pdo/pdo_stmt.c  Thu Jul  7 08:45:40 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.102 2005/07/07 11:19:56 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.103 2005/07/07 12:45:40 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -292,7 +292,7 @@
zend_hash_index_update(hash, param->paramno, param, 
sizeof(*param), (void**)&pparam);
}
 
-   if (!rewrite_name_to_position(stmt, pparam TSRMLS_CC)) {
+   if (is_param && !rewrite_name_to_position(stmt, pparam TSRMLS_CC)) {
return 0;
}


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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-07-02 Thread Ilia Alshanetsky
iliaa   Sat Jul  2 13:19:58 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed memory leak on PDO_FETCH_OBJ.
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.99&r2=1.100&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.99 php-src/ext/pdo/pdo_stmt.c:1.100
--- php-src/ext/pdo/pdo_stmt.c:1.99 Wed Jun  8 15:51:56 2005
+++ php-src/ext/pdo/pdo_stmt.c  Sat Jul  2 13:19:58 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.99 2005/06/08 19:51:56 dmitry Exp $ */
+/* $Id: pdo_stmt.c,v 1.100 2005/07/02 17:19:58 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -851,6 +851,7 @@
zend_update_property(NULL, return_value,
stmt->columns[i].name, 
stmt->columns[i].namelen,
val TSRMLS_CC);
+   zval_ptr_dtor(&val);
break;
 
case PDO_FETCH_CLASS:

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-06-08 Thread Dmitry Stogov
dmitry  Wed Jun  8 15:51:58 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  Fixed zval_ptr_dtor(&return_value) on uninicialized zval
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.98&r2=1.99&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.98 php-src/ext/pdo/pdo_stmt.c:1.99
--- php-src/ext/pdo/pdo_stmt.c:1.98 Mon May 16 21:41:51 2005
+++ php-src/ext/pdo/pdo_stmt.c  Wed Jun  8 15:51:56 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.98 2005/05/17 01:41:51 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.99 2005/06/08 19:51:56 dmitry Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -729,6 +729,8 @@
return 1;
}
 
+   RETVAL_FALSE;
+
switch (how) {
case PDO_FETCH_ASSOC:
case PDO_FETCH_BOTH:

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



[PHP-CVS] cvs: php-src /ext/pdo pdo_stmt.c

2005-04-26 Thread Ilia Alshanetsky
iliaa   Tue Apr 26 23:12:18 2005 EDT

  Modified files:  
/php-src/ext/pdopdo_stmt.c 
  Log:
  removed debug code.
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.96&r2=1.97&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.96 php-src/ext/pdo/pdo_stmt.c:1.97
--- php-src/ext/pdo/pdo_stmt.c:1.96 Thu Apr 21 22:40:48 2005
+++ php-src/ext/pdo/pdo_stmt.c  Tue Apr 26 23:12:18 2005
@@ -18,7 +18,7 @@
   +--+
 */
 
-/* $Id: pdo_stmt.c,v 1.96 2005/04/22 02:40:48 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.97 2005/04/27 03:12:18 iliaa Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -745,7 +745,6 @@
break;
}
}
-   fprintf(stderr, "FAIL\n");
return 0;
 
case PDO_FETCH_OBJ:

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