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 */
|
||||
if (argc) {
|
||||
for (i = is_agg; i < argc; i++) {
|
||||
if (zargs) {
|
||||
for (i = is_agg; i < fake_argc; i++) {
|
||||
zval_ptr_dtor(zargs[i]);
|
||||
efree(zargs[i]);
|
||||
}
|
||||
|
@ -519,6 +519,7 @@ static PHP_METHOD(SQLite, sqliteCreateFunction)
|
|||
MAKE_STD_ZVAL(func->func);
|
||||
*(func->func) = *callback;
|
||||
zval_copy_ctor(func->func);
|
||||
INIT_PZVAL(func->func);
|
||||
|
||||
func->argc = argc;
|
||||
|
||||
|
@ -592,10 +593,12 @@ static PHP_METHOD(SQLite, sqliteCreateAggregate)
|
|||
MAKE_STD_ZVAL(func->step);
|
||||
*(func->step) = *step_callback;
|
||||
zval_copy_ctor(func->step);
|
||||
INIT_PZVAL(func->step);
|
||||
|
||||
MAKE_STD_ZVAL(func->fini);
|
||||
*(func->fini) = *fini_callback;
|
||||
zval_copy_ctor(func->fini);
|
||||
INIT_PZVAL(func->fini);
|
||||
|
||||
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