apply review comments

This commit is contained in:
v-kaywon 2017-12-05 16:32:18 -08:00
parent 3b65f26776
commit 8297fce1b9
7 changed files with 32 additions and 32 deletions

View file

@ -14,10 +14,10 @@ function insertNullsTest($bindType)
{ {
$outvar = null; $outvar = null;
$failed = false; $failed = false;
$conn =connect(); $conn = connect();
$tableName = "pdo_test_table"; $tableName = "pdo_test_table";
$dataType = array("c1_int" => "int", $dataTypes = array("c1_int" => "int",
"c2_tinyint" => "tinyint", "c2_tinyint" => "tinyint",
"c3_smallint" => "smallint", "c3_smallint" => "smallint",
"c4_bigint" => "bigint", "c4_bigint" => "bigint",
@ -45,12 +45,12 @@ function insertNullsTest($bindType)
"c26_smalldatetime" => "smalldatetime", "c26_smalldatetime" => "smalldatetime",
"c27_timestamp" => "timestamp", "c27_timestamp" => "timestamp",
"c28_xml" => "xml"); "c28_xml" => "xml");
createTable($conn, $tableName, $dataType); createTable($conn, $tableName, $dataTypes);
$stmt = $conn->query("SELECT [TABLE_NAME],[COLUMN_NAME],[IS_NULLABLE] FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_NAME] = '$tableName'"); $stmt = $conn->query("SELECT [TABLE_NAME],[COLUMN_NAME],[IS_NULLABLE] FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_NAME] = '$tableName'");
if ($stmt === false) { if ($stmt === false) {
FatalError("Could not query for column information on table $tableName"); fatalError("Could not query for column information on table $tableName");
} }
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
@ -98,7 +98,7 @@ try {
echo $e->getMessage(); echo $e->getMessage();
} }
if ($failed) { if ($failed) {
FatalError("Possible Regression: Could not insert NULL"); fatalError("Possible Regression: Could not insert NULL");
} else { } else {
echo "Test 'PDO - Insert Nulls' completed successfully.\n"; echo "Test 'PDO - Insert Nulls' completed successfully.\n";
} }

View file

@ -27,13 +27,12 @@ function maxOutputParamsTest($expected, $length)
echo "Expected: $expected Received: $outstr\n"; echo "Expected: $expected Received: $outstr\n";
$failed = false;
if ($outstr !== $expected) { if ($outstr !== $expected) {
print_r($stmt->errorInfo()); print_r($stmt->errorInfo());
dropProc($conn, $procName); $failed = true;
return(-1);
} }
dropProc($conn, $procName); return $failed;
return(0);
} }
@ -41,13 +40,13 @@ function maxOutputParamsTest($expected, $length)
// Repro // Repro
// //
//-------------------------------------------------------------------- //--------------------------------------------------------------------
$failed = null; $failed = false;
$failed |= maxOutputParamsTest("abc", 3); $failed |= maxOutputParamsTest("abc", 3);
$failed |= maxOutputParamsTest("abc", 10); $failed |= maxOutputParamsTest("abc", 10);
if ($failed) { if ($failed) {
FatalError("Possible Regression: Value returned as VARCHAR(MAX) truncated"); fatalError("Possible Regression: Value returned as VARCHAR(MAX) truncated");
} }
?> ?>
--EXPECT-- --EXPECT--

View file

@ -24,14 +24,14 @@ try {
array('60', 'Pqr', 'kji')); array('60', 'Pqr', 'kji'));
// Insert using question mark placeholders // Insert using question mark placeholders
$stmt1 = PrepareQuery($conn1, "INSERT INTO [$tableName] VALUES(?, ?, ?)"); $stmt1 = $conn1->prepare("INSERT INTO [$tableName] VALUES(?, ?, ?)");
foreach ($data as $row) { foreach ($data as $row) {
$stmt1->execute($row); $stmt1->execute($row);
} }
unset($stmt1); unset($stmt1);
// Count inserted rows // Count inserted rows
$stmt2 = PrepareQuery($conn1, "SELECT COUNT(id) FROM [$tableName]"); $stmt2 = $conn1->prepare("SELECT COUNT(id) FROM [$tableName]");
$stmt2->execute(); $stmt2->execute();
$num = $stmt2->fetchColumn(); $num = $stmt2->fetchColumn();
echo "There are $num rows in the table.\n"; echo "There are $num rows in the table.\n";
@ -60,13 +60,14 @@ try {
unset($stmt1); unset($stmt1);
if (!isColEncrypted()) { if (!isColEncrypted()) {
$stmt1 = PrepareQuery($conn1, "SELECT idx, txt FROM [$tableName] ORDER BY idx"); $stmt1 = $conn1->prepare("SELECT idx, txt FROM [$tableName] ORDER BY idx");
} else { } else {
// ORDER BY does not work on encrypted columns // ORDER BY does not work on encrypted columns
$stmt1 = PrepareQuery($conn1, "SELECT idx, txt FROM [$tableName]"); $stmt1 = $conn1->prepare("SELECT idx, txt FROM [$tableName]");
} }
$stmt1->execute(); $stmt1->execute();
$data = $stmt1->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_UNIQUE); $data = $stmt1->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_UNIQUE);
// needs to order the result set manually as ORDER BY does not work properly on encrypted columns
if (isColEncrypted()) { if (isColEncrypted()) {
ksort($data); ksort($data);
} }
@ -99,50 +100,50 @@ try {
var_dump($stmt2->execute()); var_dump($stmt2->execute());
if ($idx == 0) { // bindColumn()s after execute() has been called at least once if ($idx == 0) { // bindColumn()s after execute() has been called at least once
$stmt2->bindColumn('txt', $col1); $stmt2->bindColumn('txt', $txtCol);
} }
var_dump($stmt2->fetch(PDO::FETCH_BOUND)); var_dump($stmt2->fetch(PDO::FETCH_BOUND));
$stmt2->closeCursor(); $stmt2->closeCursor();
var_dump($stmt3->execute()); var_dump($stmt3->execute());
if ($idx == 0) { // bindColumn()s after execute() has been called at least once if ($idx == 0) { // bindColumn()s after execute() has been called at least once
$stmt3->bindColumn('idx', $col2); $stmt3->bindColumn('idx', $idxCol);
} }
var_dump($stmt3->fetch(PDO::FETCH_BOUND)); var_dump($stmt3->fetch(PDO::FETCH_BOUND));
$stmt3->closeCursor(); $stmt3->closeCursor();
var_dump(array($col2=>$col1)); var_dump(array($idxCol=>$txtCol));
} }
echo "===REBIND/SAME===\n"; echo "===REBIND/SAME===\n";
$stmt3->bindColumn('idx', $col1); $stmt3->bindColumn('idx', $idxCol);
foreach ($data as $idx => $txt) { foreach ($data as $idx => $txt) {
var_dump(array($idx=>$txt)); var_dump(array($idx=>$txt));
var_dump($stmt2->execute()); var_dump($stmt2->execute());
var_dump($stmt2->fetch(PDO::FETCH_BOUND)); var_dump($stmt2->fetch(PDO::FETCH_BOUND));
$stmt2->closeCursor(); $stmt2->closeCursor();
var_dump($col1); var_dump($idxCol);
var_dump($stmt3->execute()); var_dump($stmt3->execute());
var_dump($stmt3->fetch(PDO::FETCH_BOUND)); var_dump($stmt3->fetch(PDO::FETCH_BOUND));
$stmt3->closeCursor(); $stmt3->closeCursor();
var_dump($col1); var_dump($idxCol);
} }
echo "===REBIND/CONFLICT===\n"; echo "===REBIND/CONFLICT===\n";
$stmt1->bindColumn('idx', $col1); $stmt1->bindColumn('idx', $col);
$stmt1->bindColumn('txt', $col1); $stmt1->bindColumn('txt', $col);
$stmt1->execute(); $stmt1->execute();
$col1s = array(); $cols = array();
while ($stmt1->fetch(PDO::FETCH_BOUND)) { while ($stmt1->fetch(PDO::FETCH_BOUND)) {
array_push($col1s, $col1); array_push($cols, $col);
} }
if (isColEncrypted()) { if (isColEncrypted()) {
sort($col1s); sort($cols);
} }
var_dump($col1s); var_dump($cols);
// Cleanup // Cleanup
dropTable($conn1, $tableName); dropTable($conn1, $tableName);

View file

@ -23,8 +23,8 @@ try {
unset($dbh); unset($dbh);
} catch (PDOException $e) { } catch (PDOException $e) {
$error = $e->getMessage(); $error = $e->getMessage();
$pass = !isColEncrypted() && $error === "SQLSTATE[IMSSP]: Statement with emulate prepare on does not support output or input_output parameters."; $pass = !isAEConnected() && $error === "SQLSTATE[IMSSP]: Statement with emulate prepare on does not support output or input_output parameters.";
$pass |= isColEncrypted() && ($error === "SQLSTATE[IMSSP]: Connection with Column Encryption enabled do no support PDO::ATTR_EMULATE_PREPARES with binding parameters."); $pass |= isAEConnected() && ($error === "SQLSTATE[IMSSP]: Parameterized statement with attribute PDO::ATTR_EMULATE_PREPARES is not supported in a Column Encryption enabled Connection.");
if (!$pass) { if (!$pass) {
print("Error: " . $error . "\n"); print("Error: " . $error . "\n");
} else { } else {

View file

@ -40,7 +40,7 @@ if (!$exception_thrown) {
// Column encryption is not supported by emulate prepared statement // Column encryption is not supported by emulate prepared statement
$option[PDO::ATTR_EMULATE_PREPARES] = true; $option[PDO::ATTR_EMULATE_PREPARES] = true;
if (isColEncrypted()) { if (isAEConnected()) {
$option[PDO::ATTR_EMULATE_PREPARES] = false; $option[PDO::ATTR_EMULATE_PREPARES] = false;
} }

View file

@ -47,7 +47,7 @@ try {
} }
$query1 = "INSERT INTO [$tableName](ID, Policy, Label, Budget) VALUES (:col1, :col2, :col3, :col4)"; $query1 = "INSERT INTO [$tableName](ID, Policy, Label, Budget) VALUES (:col1, :col2, :col3, :col4)";
if (!isColEncrypted()) { if (!isAEConnected()) {
$stmtOptions[PDO::ATTR_EMULATE_PREPARES] = true; $stmtOptions[PDO::ATTR_EMULATE_PREPARES] = true;
} }
$stmt = $conn1->prepare($query1, $stmtOptions); $stmt = $conn1->prepare($query1, $stmtOptions);

View file

@ -53,7 +53,7 @@ try {
unset($stmt4); unset($stmt4);
$option; $option;
if (!isColEncrypted()) { if (!isAEConnected()) {
$option[PDO::ATTR_EMULATE_PREPARES] = true; $option[PDO::ATTR_EMULATE_PREPARES] = true;
} else { } else {
$option[PDO::ATTR_EMULATE_PREPARES] = false; $option[PDO::ATTR_EMULATE_PREPARES] = false;