Test fixes
This commit is contained in:
parent
c4a6068533
commit
b68befa939
|
@ -20,13 +20,7 @@ function FormulateSetupQuery($tableName, &$dataTypes, &$columns, &$insertQuery,
|
|||
|
||||
for ($i = 0; $i < $numTypes; ++$i) {
|
||||
// Replace parentheses for column names
|
||||
$colname = str_replace("($strsize)", "_$strsize", $dataTypes[$i]);
|
||||
$colname = str_replace("($strsize2)", "_$strsize2", $colname);
|
||||
$colname = str_replace("(max)", "_max", $colname);
|
||||
$colname = str_replace("(5)", "_5", $colname);
|
||||
$colname = str_replace("(36,4)", "_36_4", $colname);
|
||||
$colname = str_replace("(32,4)", "_32_4", $colname);
|
||||
$colname = str_replace("(28,4)", "_28_4", $colname);
|
||||
$colname = str_replace(array("(", ",", ")"), array("_", "_", ""), $dataTypes[$i]);
|
||||
$columns[] = new AE\ColumnMeta($dataTypes[$i], "c_".$colname."_AE");
|
||||
$columns[] = new AE\ColumnMeta($dataTypes[$i], "c_".$colname, null, true, true);
|
||||
$queryTypes .= "c_"."$colname, ";
|
||||
|
@ -77,7 +71,6 @@ if (!$conn) {
|
|||
}
|
||||
|
||||
$tableName = "type_conversion_table";
|
||||
$stmt = sqlsrv_query($conn, "IF OBJECT_ID('$tableName', 'U') IS NOT NULL DROP TABLE $tableName");
|
||||
$columns = array();
|
||||
$insertQuery = "";
|
||||
|
||||
|
@ -129,19 +122,18 @@ for ($v = 0; $v < sizeof($values);++$v)
|
|||
fatalError("Second sqlsrv_prepare failed\n");
|
||||
}
|
||||
|
||||
$metadata = sqlsrv_field_metadata($stmt);
|
||||
$numFields = count($metadata);
|
||||
$numFields = sqlsrv_num_fields($stmt);
|
||||
|
||||
$i = 0;
|
||||
$valueAE = null;
|
||||
$valueArrayAE = null;
|
||||
$valueFromArrayAE = null;
|
||||
|
||||
while ($result = sqlsrv_fetch($stmt)) {
|
||||
$dataArray = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_NUMERIC);
|
||||
|
||||
for ($j = 0; $j < $numFields; $j++) {
|
||||
$value = sqlsrv_get_field($stmt, $j, $SQLSRV_PHPTYPE_CONST[$i]);
|
||||
$valueArray = $dataArray[$j];
|
||||
$valueFromArray = $dataArray[$j];
|
||||
|
||||
// PHPTYPE_STREAM returns a PHP resource, so check the type
|
||||
if (is_resource($value)) $value = get_resource_type($value);
|
||||
|
@ -150,7 +142,7 @@ for ($v = 0; $v < sizeof($values);++$v)
|
|||
// So let's do the comparison every second field
|
||||
if ($j%2 == 0) {
|
||||
$valueAE = $value;
|
||||
$valueArrayAE = $valueArray;
|
||||
$valueFromArrayAE = $valueFromArray;
|
||||
} elseif ($j%2 == 1) {
|
||||
// If returning a DateTime PHP type from a date only SQL type,
|
||||
// PHP adds the current timestamp to make a DateTime object,
|
||||
|
@ -160,8 +152,9 @@ for ($v = 0; $v < sizeof($values);++$v)
|
|||
// below the DateTime objects are made equal again for the next if
|
||||
// block.
|
||||
if ($value instanceof DateTime) {
|
||||
// date_diff returns a DateInterval object, and f is
|
||||
// the difference expressed as a fraction of a second
|
||||
// date_diff returns a DateInterval object, and s is
|
||||
// the difference in seconds. s should be zero because
|
||||
// the difference should be just a fraction of a second.
|
||||
$datediff = date_diff($value, $valueAE);
|
||||
$diff = $datediff->s;
|
||||
|
||||
|
@ -170,12 +163,12 @@ for ($v = 0; $v < sizeof($values);++$v)
|
|||
}
|
||||
}
|
||||
|
||||
if ($valueAE != $value or $valueArrayAE != $valueArray) {
|
||||
if ($valueAE != $value or $valueFromArrayAE != $valueFromArray) {
|
||||
echo "Values do not match! PHPType $i Field $j\n";
|
||||
print_r($valueAE);echo "\n";
|
||||
print_r($value);echo "\n";
|
||||
print_r($valueArrayAE);echo "\n";
|
||||
print_r($valueArray);echo "\n";
|
||||
print_r($valueFromArrayAE);echo "\n";
|
||||
print_r($valueFromArray);echo "\n";
|
||||
print_r(sqlsrv_errors());
|
||||
fatalError("Test failed, values do not match.\n");
|
||||
}
|
||||
|
|
|
@ -8,35 +8,53 @@ require_once('MsCommon.inc');
|
|||
require_once('tools.inc');
|
||||
require_once('values.php');
|
||||
|
||||
// These are the errors we expect to see if a conversion fails.
|
||||
// 22001 String data is right-truncated
|
||||
// 22003 Numeric value out of range/Overflow converting to numeric type
|
||||
// 22007 Conversion (date/time from string) failed
|
||||
// 22018 Conversion not allowed
|
||||
// 42S22 Column not found
|
||||
// 6522 .NET Framework error in hierarchyId construction
|
||||
// 8114 Error converting binary/string type to numeric type
|
||||
// 8169 Error converting from string to uniqueID
|
||||
function checkAcceptableErrors(&$convError)
|
||||
{
|
||||
if ($convError[0][0] != '22018' and
|
||||
$convError[0][0] != '22001' and
|
||||
$convError[0][0] != '22003' and
|
||||
$convError[0][0] != '22007' and
|
||||
$convError[0][0] != '42S22' and
|
||||
$convError[0][1] != '6522' and
|
||||
$convError[0][1] != '8114' and
|
||||
$convError[0][1] != '8169') {
|
||||
print_r($convError);
|
||||
fatalError("Conversion failed with unexpected error message. i=$i, j=$j, v=$v\n");
|
||||
}
|
||||
}
|
||||
|
||||
// Set up the columns and build the insert query. Each data type has an
|
||||
// AE-encrypted and a non-encrypted column side by side in the table.
|
||||
function FormulateSetupQuery($tableName, &$dataTypes, &$columns, &$insertQuery, $strsize, $strsize2)
|
||||
{
|
||||
$columns = array();
|
||||
$queryTypes = "(";
|
||||
$columnsInQuery = "(";
|
||||
$valuesString = "VALUES (";
|
||||
$numTypes = sizeof($dataTypes);
|
||||
|
||||
for ($i = 0; $i < $numTypes; ++$i) {
|
||||
// Replace parentheses for column names
|
||||
$colname = str_replace("($strsize)", "_$strsize", $dataTypes[$i]);
|
||||
$colname = str_replace("($strsize2)", "_$strsize2", $colname);
|
||||
$colname = str_replace("(max)", "_max", $colname);
|
||||
$colname = str_replace("(5)", "_5", $colname);
|
||||
$colname = str_replace("(36,4)", "_36_4", $colname);
|
||||
$colname = str_replace("(32,4)", "_32_4", $colname);
|
||||
$colname = str_replace("(28,4)", "_28_4", $colname);
|
||||
$colname = str_replace(array("(", ",", ")"), array("_", "_", ""), $dataTypes[$i]);
|
||||
$columns[] = new AE\ColumnMeta($dataTypes[$i], "c_".$colname."_AE"); // encrypted column
|
||||
$columns[] = new AE\ColumnMeta($dataTypes[$i], "c_".$colname, null, true, true);// non-encrypted column
|
||||
$queryTypes .= "c_"."$colname, ";
|
||||
$queryTypes .= "c_"."$colname"."_AE, ";
|
||||
$columnsInQuery .= "c_"."$colname, ";
|
||||
$columnsInQuery .= "c_"."$colname"."_AE, ";
|
||||
$valuesString .= "?, ?, ";
|
||||
}
|
||||
|
||||
$queryTypes = substr($queryTypes, 0, -2).")";
|
||||
$columnsInQuery = substr($columnsInQuery, 0, -2).")";
|
||||
$valuesString = substr($valuesString, 0, -2).")";
|
||||
|
||||
$insertQuery = "INSERT INTO $tableName ".$queryTypes." ".$valuesString;
|
||||
$insertQuery = "INSERT INTO $tableName ".$columnsInQuery." ".$valuesString;
|
||||
}
|
||||
|
||||
// Build the select queries. We want every combination of types for conversion
|
||||
|
@ -48,14 +66,9 @@ function FormulateSelectQuery($tableName, &$selectQuery, &$selectQueryAE, &$data
|
|||
|
||||
for ($i = 0; $i < $numTypes; ++$i) {
|
||||
$selectQuery[] = array();
|
||||
$colnamei = str_replace(array("(", ",", ")"), array("_", "_", ""), $dataTypes[$i]);
|
||||
|
||||
for ($j = 0; $j < sizeof($dataTypes); ++$j) {
|
||||
$colnamei = str_replace("($strsize)", "_$strsize", $dataTypes[$i]);
|
||||
$colnamei = str_replace("($strsize2)", "_$strsize2", $colnamei);
|
||||
$colnamei = str_replace("(max)", "_max", $colnamei);
|
||||
$colnamei = str_replace("(5)", "_5", $colnamei);
|
||||
$colnamei = str_replace("(36,4)", "_36_4", $colnamei);
|
||||
$colnamei = str_replace("(32,4)", "_32_4", $colnamei);
|
||||
$colnamei = str_replace("(28,4)", "_28_4", $colnamei);
|
||||
$selectQuery[$i][] = "SELECT CAST(c_".$colnamei." AS $dataTypes[$j]) FROM $tableName";
|
||||
$selectQueryAE[$i][] = "SELECT CAST(c_".$colnamei."_AE AS $dataTypes[$j]) FROM $tableName";
|
||||
}
|
||||
|
@ -176,7 +189,6 @@ if (!$conn) {
|
|||
}
|
||||
|
||||
$tableName = "type_conversion_table";
|
||||
$stmt = sqlsrv_query($conn, "IF OBJECT_ID('$tableName', 'U') IS NOT NULL DROP TABLE $tableName");
|
||||
$columns = array();
|
||||
$insertQuery = "";
|
||||
|
||||
|
@ -223,19 +235,7 @@ for ($v = 2; $v < sizeof($values); ++$v)
|
|||
if ($stmt == false) {
|
||||
$convError = sqlsrv_errors();
|
||||
|
||||
// These are the errors we expect to see if a conversion fails.
|
||||
if ($convError[0][0] != '22018' and
|
||||
$convError[0][0] != '22001' and
|
||||
$convError[0][0] != '22003' and
|
||||
$convError[0][0] != '22007' and
|
||||
$convError[0][0] != '42S22' and
|
||||
$convError[0][1] != '6234' and
|
||||
$convError[0][1] != '6522' and
|
||||
$convError[0][1] != '8114' and
|
||||
$convError[0][1] != '8169') {
|
||||
print_r($convError);
|
||||
fatalError("Conversion failed with unexpected error message. i=$i, j=$j, v=$v\n");
|
||||
}
|
||||
checkAcceptableErrors($convError);
|
||||
|
||||
if (AE\isDataEncrypted()) {
|
||||
$stmtAE = sqlsrv_query($conn, $selectQueryAE[$i][$j]);
|
||||
|
|
Loading…
Reference in a new issue