--TEST-- GitHub issue #569 - direct query on varchar max fields results in function sequence error --DESCRIPTION-- Verifies that the problem is no longer reproducible. --ENV-- PHPT_EXEC=true --SKIPIF-- --FILE-- setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $tableName = 'pdoTestTable_569'; dropTable($conn, $tableName); if ($qualified && strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { $tsql = "CREATE TABLE $tableName ([c1] varchar(max) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (ENCRYPTION_TYPE = deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = AEColumnKey))"; } else { $tsql = "CREATE TABLE $tableName ([c1] varchar(max))"; } $conn->exec($tsql); $input = 'some very large string'; $tsql = "INSERT INTO $tableName (c1) VALUES (?)"; $stmt = $conn->prepare($tsql); $param = array($input); $stmt->execute($param); $tsql = "SELECT * FROM $tableName"; try { $stmt = $conn->prepare($tsql); $stmt->execute(); } catch (PDOException $e) { echo ("Failed to read from $tableName\n"); echo $e->getMessage(); } $row = $stmt->fetch(PDO::FETCH_NUM); if ($row[0] !== $input) { echo "Expected $input but got: "; var_dump($row[0]); } $tsql2 = "DELETE FROM $tableName"; $rows = $conn->exec($tsql2); if ($rows !== 1) { echo 'Expected 1 row affected but got: '; var_dump($rows); } // Fetch from the empty table try { $stmt = $conn->prepare($tsql); $stmt->execute(); } catch (PDOException $e) { echo ("Failed to read $tableName, now empty\n"); echo $e->getMessage(); } $result = $stmt->fetch(PDO::FETCH_NUM); if ($result !== false) { echo 'Expected bool(false) when fetching an empty table but got: '; var_dump($result); } // Fetch the same table but using client cursor $stmt = $conn->prepare($tsql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->execute(); $result = $stmt->fetch(); if ($result !== false) { echo 'Expected bool(false) when fetching an empty table but got: '; var_dump($result); } dropTable($conn, $tableName); unset($stmt); unset($conn); } catch (PDOException $e) { echo $e->getMessage(); } echo "Done\n"; ?> --EXPECT-- Done