mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
up to postgresql 17, when done with a prepared statement, we could release it with DEALLOCATE sql command which is fine ; until we want to implement a cache solution based on statement ids. Since PostgreSQL 17, PQclosePrepared uses internally the `close` protocol allowing to reuse the statement name while still freeing it. Since the close protocol implementation had been added on libpq within this release, no way to reimplement it. close GH-14584
34 lines
671 B
PHP
34 lines
671 B
PHP
--TEST--
|
|
PostgreSQL pg_close_stmt
|
|
--EXTENSIONS--
|
|
pgsql
|
|
--SKIPIF--
|
|
<?php include("inc/skipif.inc");
|
|
if (!function_exists("pg_close_stmt")) die("skip pg_close_stmt unsupported");
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
include('inc/config.inc');
|
|
|
|
|
|
$query = 'SELECT $1::text IS NULL;';
|
|
$params_null = [null];
|
|
|
|
$db = pg_connect($conn_str);
|
|
$res = pg_prepare($db, 'test', $query);
|
|
|
|
$res = pg_execute($db, 'test', $params_null);
|
|
$res = pg_close_stmt($db, 'test');
|
|
var_dump($res !== false);
|
|
var_dump(pg_result_status($res) === PGSQL_COMMAND_OK);
|
|
pg_prepare($db, 'test', $query);
|
|
$res = pg_execute($db, 'test', $params_null);
|
|
pg_free_result($res);
|
|
|
|
pg_close($db);
|
|
|
|
?>
|
|
--EXPECT--
|
|
bool(true)
|
|
bool(true)
|