mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
69 lines
2.5 KiB
PHP
69 lines
2.5 KiB
PHP
--TEST--
|
|
PDO_DBLIB: Uniqueidentifier column data type stringifying
|
|
--EXTENSIONS--
|
|
pdo_dblib
|
|
--SKIPIF--
|
|
<?php
|
|
require __DIR__ . '/config.inc';
|
|
if (in_array($db->getAttribute(PDO::DBLIB_ATTR_TDS_VERSION), ['4.2', '4.6'])) die('skip feature unsupported by this TDS version');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
require __DIR__ . '/config.inc';
|
|
|
|
|
|
$testGUID = '82A88958-672B-4C22-842F-216E2B88E72A';
|
|
$testGUIDBinary = base64_decode('WImogitnIkyELyFuK4jnKg==');
|
|
|
|
$sql = "SELECT CAST('$testGUID' as uniqueidentifier) as [guid]";
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// 1. Get and Set the attribute
|
|
//--------------------------------------------------------------------------------
|
|
$db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true);
|
|
var_dump(true === $db->getAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER));
|
|
$db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, false);
|
|
var_dump(false === $db->getAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER));
|
|
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// 2. Binary
|
|
//--------------------------------------------------------------------------------
|
|
$stmt = $db->query($sql);
|
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
var_dump($row['guid'] === $testGUIDBinary);
|
|
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// 3. PDO::ATTR_STRINGIFY_FETCHES must not affect `uniqueidentifier` representation
|
|
//--------------------------------------------------------------------------------
|
|
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
|
|
$stmt = $db->query($sql);
|
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
|
|
|
|
var_dump($row['guid'] === $testGUIDBinary);
|
|
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// 4. Stringifying
|
|
// ! With TDS protocol version <7.0 binary will be returned and the test will fail !
|
|
// TODO: something from PDO::ATTR_SERVER_VERSION, PDO::ATTR_CLIENT_VERSION or PDO::ATTR_SERVER_INFO should be used
|
|
// to get TDS version and skip this test in this case.
|
|
//--------------------------------------------------------------------------------
|
|
$db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true);
|
|
$stmt = $db->query($sql);
|
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
var_dump($row['guid'] === $testGUID);
|
|
var_dump($row['guid']);
|
|
|
|
?>
|
|
--EXPECT--
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
string(36) "82A88958-672B-4C22-842F-216E2B88E72A"
|