mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
- Fixed memory leaks
- Added new tests (Coverage++)
This commit is contained in:
parent
61f0a0ddd4
commit
fbf7cc72aa
5 changed files with 126 additions and 2 deletions
|
@ -392,8 +392,8 @@ static int do_callback(struct pdo_sqlite_fci *fc, zval *cb,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clean up the params */
|
/* clean up the params */
|
||||||
if (argc) {
|
if (zargs) {
|
||||||
for (i = is_agg; i < argc; i++) {
|
for (i = is_agg; i < fake_argc; i++) {
|
||||||
zval_ptr_dtor(zargs[i]);
|
zval_ptr_dtor(zargs[i]);
|
||||||
efree(zargs[i]);
|
efree(zargs[i]);
|
||||||
}
|
}
|
||||||
|
@ -519,6 +519,7 @@ static PHP_METHOD(SQLite, sqliteCreateFunction)
|
||||||
MAKE_STD_ZVAL(func->func);
|
MAKE_STD_ZVAL(func->func);
|
||||||
*(func->func) = *callback;
|
*(func->func) = *callback;
|
||||||
zval_copy_ctor(func->func);
|
zval_copy_ctor(func->func);
|
||||||
|
INIT_PZVAL(func->func);
|
||||||
|
|
||||||
func->argc = argc;
|
func->argc = argc;
|
||||||
|
|
||||||
|
@ -592,10 +593,12 @@ static PHP_METHOD(SQLite, sqliteCreateAggregate)
|
||||||
MAKE_STD_ZVAL(func->step);
|
MAKE_STD_ZVAL(func->step);
|
||||||
*(func->step) = *step_callback;
|
*(func->step) = *step_callback;
|
||||||
zval_copy_ctor(func->step);
|
zval_copy_ctor(func->step);
|
||||||
|
INIT_PZVAL(func->step);
|
||||||
|
|
||||||
MAKE_STD_ZVAL(func->fini);
|
MAKE_STD_ZVAL(func->fini);
|
||||||
*(func->fini) = *fini_callback;
|
*(func->fini) = *fini_callback;
|
||||||
zval_copy_ctor(func->fini);
|
zval_copy_ctor(func->fini);
|
||||||
|
INIT_PZVAL(func->fini);
|
||||||
|
|
||||||
func->argc = argc;
|
func->argc = argc;
|
||||||
|
|
||||||
|
|
29
ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt
Normal file
29
ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
--TEST--
|
||||||
|
PDO_sqlite: Testing sqliteCreateAggregate()
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = new pdo('sqlite:memory');
|
||||||
|
|
||||||
|
$db->query('CREATE TABLE IF NOT EXISTS foobar (id INT AUTO INCREMENT, name TEXT)');
|
||||||
|
|
||||||
|
$db->query('INSERT INTO foobar VALUES (NULL, "PHP")');
|
||||||
|
$db->query('INSERT INTO foobar VALUES (NULL, "PHP6")');
|
||||||
|
|
||||||
|
$db->sqliteCreateAggregate('testing', function(&$a, $b) { $a .= $b; return $a; }, function(&$v) { return $v; });
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($db->query('SELECT testing(name) FROM foobar') as $row) {
|
||||||
|
var_dump($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->query('DROP TABLE foobar');
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
array(2) {
|
||||||
|
["testing(name)"]=>
|
||||||
|
%string|unicode%(2) "12"
|
||||||
|
[0]=>
|
||||||
|
%string|unicode%(2) "12"
|
||||||
|
}
|
36
ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt
Normal file
36
ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
--TEST--
|
||||||
|
PDO_sqlite: Testing sqliteCreateFunction()
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = new pdo('sqlite:memory');
|
||||||
|
|
||||||
|
$db->query('CREATE TABLE IF NOT EXISTS foobar (id INT AUTO INCREMENT, name TEXT)');
|
||||||
|
|
||||||
|
$db->query('INSERT INTO foobar VALUES (NULL, "PHP")');
|
||||||
|
$db->query('INSERT INTO foobar VALUES (NULL, "PHP6")');
|
||||||
|
|
||||||
|
|
||||||
|
$db->sqliteCreateFunction('testing', function($v) { return strtolower($v); });
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($db->query('SELECT testing(name) FROM foobar') as $row) {
|
||||||
|
var_dump($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->query('DROP TABLE foobar');
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
array(2) {
|
||||||
|
["testing(name)"]=>
|
||||||
|
%string|unicode%(3) "php"
|
||||||
|
[0]=>
|
||||||
|
%string|unicode%(3) "php"
|
||||||
|
}
|
||||||
|
array(2) {
|
||||||
|
["testing(name)"]=>
|
||||||
|
%string|unicode%(4) "php6"
|
||||||
|
[0]=>
|
||||||
|
%string|unicode%(4) "php6"
|
||||||
|
}
|
30
ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt
Normal file
30
ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
--TEST--
|
||||||
|
PDO_sqlite: Testing lastInsertId()
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = new pdo('sqlite:memory');
|
||||||
|
$db->query('CREATE TABLE IF NOT EXISTS foo (id INT AUTO INCREMENT, name TEXT)');
|
||||||
|
$db->query('INSERT INTO foo VALUES (NULL, "PHP")');
|
||||||
|
$db->query('INSERT INTO foo VALUES (NULL, "PHP6")');
|
||||||
|
var_dump($db->query('SELECT * FROM foo'));
|
||||||
|
var_dump($db->errorInfo());
|
||||||
|
var_dump($db->lastInsertId());
|
||||||
|
|
||||||
|
$db->query('DROP TABLE foo');
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
object(PDOStatement)#2 (1) {
|
||||||
|
["queryString"]=>
|
||||||
|
%string|unicode%(17) "SELECT * FROM foo"
|
||||||
|
}
|
||||||
|
array(3) {
|
||||||
|
[0]=>
|
||||||
|
%string|unicode%(5) "00000"
|
||||||
|
[1]=>
|
||||||
|
NULL
|
||||||
|
[2]=>
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
%string|unicode%(1) "2"
|
26
ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt
Normal file
26
ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
--TEST--
|
||||||
|
PDO_sqlite: Testing transaction
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = new pdo('sqlite:memory');
|
||||||
|
|
||||||
|
$db->beginTransaction();
|
||||||
|
|
||||||
|
$db->query('CREATE TABLE IF NOT EXISTS foobar (id INT AUTO INCREMENT, name TEXT)');
|
||||||
|
$db->commit();
|
||||||
|
|
||||||
|
$db->beginTransaction();
|
||||||
|
$db->query('INSERT INTO foobar VALUES (NULL, "PHP")');
|
||||||
|
$db->query('INSERT INTO foobar VALUES (NULL, "PHP6")');
|
||||||
|
$db->rollback();
|
||||||
|
|
||||||
|
$r = $db->query('SELECT COUNT(*) FROM foobar');
|
||||||
|
var_dump($r->rowCount());
|
||||||
|
|
||||||
|
|
||||||
|
$db->query('DROP TABLE foobar');
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
int(0)
|
Loading…
Add table
Add a link
Reference in a new issue