forked from php/php-src
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbug75402.phpt
120 lines (109 loc) · 3.68 KB
/
bug75402.phpt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
--TEST--
PDO PgSQL Bug #75402 Possible Memory Leak using PDO::CURSOR_SCROLL option
--EXTENSIONS--
pdo
pdo_pgsql
--SKIPIF--
<?php
require __DIR__ . '/config.inc';
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
PDOTest::skip();
?>
--FILE--
<?php
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
$resp = new \stdClass();
$resp->entries = [];
$db->query('CREATE TABLE bug75402 (
"id" character varying(64) NOT NULL,
"group_id" character varying(64) NOT NULL,
"submitter" character varying(320) NOT NULL,
"operation" character varying(32) NOT NULL,
"description" character varying(320) NOT NULL,
"stage" character varying(16) NOT NULL,
"status" character varying(64) NOT NULL,
"progress" integer NOT NULL,
"insert_datetime" timestamp(3) NOT NULL,
"begin_datetime" timestamp(3),
"end_datetime" timestamp(3),
"life_hours" integer NOT NULL,
"family" character varying(32) NOT NULL,
"parallelism_group" character varying(32) NOT NULL,
"max_parallelism" integer NOT NULL,
"hidden" boolean NOT NULL,
"abort" boolean NOT NULL,
"order_folder_pathname" character varying(320),
"worker" character varying(32) NOT NULL,
CONSTRAINT "pk_bug75402" PRIMARY KEY ("id")
) WITH (oids = false);');
$db->query("INSERT INTO bug75402 (\"id\", \"group_id\", \"submitter\", \"operation\", \"description\", \"stage\", \"status\", \"progress\", \"insert_datetime\", \"begin_datetime\", \"end_datetime\", \"life_hours\", \"family\", \"parallelism_group\", \"max_parallelism\", \"hidden\", \"abort\", \"order_folder_pathname\", \"worker\") VALUES
('20171016083645_5337', 'G_20171016083645_5337', 'TESTPetunia', 'IMPORT', '', 'DON', 'Completed', 100, '2017-10-16 08:36:45', '2017-10-16 08:36:46', '2017-10-16 08:36:46', 96, 'IMPORT', '', -1, 'f', 'f', 'C:\ProgramData\TestPath\TestApp\Jobs\Jobs\\20171016083645_5337', 'MainService')");
$sql = "SELECT
ID as \"sID\",
GROUP_ID as \"sGroupID\",
SUBMITTER as \"sOwner\",
OPERATION as \"sOperation\",
DESCRIPTION as \"sInfo\",
STAGE as \"sShortStatus\",
STATUS as \"sStatus\",
PROGRESS as \"sProgress\",
HIDDEN as \"bHidden\",
to_char(INSERT_DATETIME, 'IYYY.MM.DD HH24:MI:SS') as \"sDatetime\"
FROM bug75402
ORDER BY INSERT_DATETIME DESC";
if ($db) {
$stmt = $db->prepare($sql,
array(
// With the following options memory is not being
// deallocated
\PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL
// With the following option memory is de-allocated
// \PDO::ATTR_CURSOR => \PDO::CURSOR_FWDONLY
)
);
$stmt->execute();
while ($entry = $stmt->fetchObject()) {
$resp->entries [] = $entry;
}
$stmt->closeCursor();
$stmt = null;
$db = null;
}
var_dump($resp);
?>
--CLEAN--
<?php
require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
$db->exec('DROP TABLE IF EXISTS bug75402');
?>
--EXPECT--
object(stdClass)#2 (1) {
["entries"]=>
array(1) {
[0]=>
object(stdClass)#4 (10) {
["sid"]=>
string(19) "20171016083645_5337"
["sgroupid"]=>
string(21) "G_20171016083645_5337"
["sowner"]=>
string(11) "TESTPetunia"
["soperation"]=>
string(6) "IMPORT"
["sinfo"]=>
string(0) ""
["sshortstatus"]=>
string(3) "DON"
["sstatus"]=>
string(9) "Completed"
["sprogress"]=>
string(3) "100"
["bhidden"]=>
string(1) "0"
["sdatetime"]=>
string(19) "2017.10.16 08:36:45"
}
}
}