Applied changes to the tests based on review

This commit is contained in:
Jenny Tam 2017-12-08 11:50:44 -08:00
parent cf9e54fb74
commit 5a270e2d57
9 changed files with 40 additions and 82 deletions

View file

@ -10,10 +10,9 @@ require_once('MsCommon.inc');
function runTest($fieldType) function runTest($fieldType)
{ {
prepareParams($params);
// change the input field type for each run // change the input field type for each run
$params['fieldType'] = $fieldType; prepareParams($params, $fieldType);
$conn = AE\connect(); $conn = AE\connect();
$originalStream = populateTestTable($conn, $params); $originalStream = populateTestTable($conn, $params);
@ -46,7 +45,7 @@ function runTest($fieldType)
} }
runTest("varchar(max)"); runTest("varchar(max)");
runTest("varbinary(max)"); // runTest("varbinary(max)");
runTest("nvarchar(max)"); runTest("nvarchar(max)");
echo "Test successful.\n"; echo "Test successful.\n";
@ -57,8 +56,8 @@ function populateTestTable($conn, $params)
$colName = $params['columnName']; $colName = $params['columnName'];
$fieldType = $params['fieldType']; $fieldType = $params['fieldType'];
// Create a test table of a column of type 'nvarchar(MAX)' // Create a test table of a single column of a certain field type
$columns = array(new AE\ColumnMeta('nvarchar(MAX)', $colName)); $columns = array(new AE\ColumnMeta($fieldType, $colName));
$stmt = AE\createTable($conn, $tblName, $columns); $stmt = AE\createTable($conn, $tblName, $columns);
if (!$stmt) { if (!$stmt) {
fatalError("Failed to create table $tblName\n"); fatalError("Failed to create table $tblName\n");
@ -94,18 +93,17 @@ function populateTestTable($conn, $params)
return fopen($params['testImageURL'], "rb"); return fopen($params['testImageURL'], "rb");
} }
function prepareParams(&$arr) function prepareParams(&$arr, $fieldType)
{ {
if (IsWindows()) { if (isWindows()) {
$phpgif = '\\php.gif'; $phpgif = '\\php.gif';
} else { } else {
$phpgif = '/php.gif'; $phpgif = '/php.gif';
} }
// the test table always has a column of type 'nvarchar(MAX)'
$arr['tableName'] = $tblName = "B64TestTable"; $arr['tableName'] = $tblName = "B64TestTable";
$arr['columnName'] = $colName = "Base64Image"; $arr['columnName'] = $colName = "Base64Image";
$arr['fieldType'] = $fieldType = "nvarchar(MAX)"; $arr['fieldType'] = $fieldType;
$arr['insertQuery'] = "INSERT INTO $tblName ($colName) VALUES (?)"; $arr['insertQuery'] = "INSERT INTO $tblName ($colName) VALUES (?)";
$arr['selectQuery'] = "SELECT TOP 1 $colName FROM $tblName"; $arr['selectQuery'] = "SELECT TOP 1 $colName FROM $tblName";
$arr['testImageURL'] = dirname($_SERVER['PHP_SELF']) . $phpgif; // use this when no http access $arr['testImageURL'] = dirname($_SERVER['PHP_SELF']) . $phpgif; // use this when no http access

View file

@ -12,12 +12,13 @@ sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
require_once('MsCommon.inc'); require_once('MsCommon.inc');
$c = AE\connect(); $c = AE\connect();
$tableName = 'utf8test';
$columns = array(new AE\ColumnMeta('varchar(100)', 'c1'), $columns = array(new AE\ColumnMeta('varchar(100)', 'c1'),
new AE\ColumnMeta('nvarchar(100)', 'c2'), new AE\ColumnMeta('nvarchar(100)', 'c2'),
new AE\ColumnMeta('nvarchar(max)', 'c3')); new AE\ColumnMeta('nvarchar(max)', 'c3'));
$stmt = AE\createTable($c, "utf8test", $columns); $stmt = AE\createTable($c, $tableName, $columns);
if (!$stmt) { if (!$stmt) {
fatalError("Failed to create table 'utf8test'\n"); fatalError("Failed to create table $tableName\n");
} }
$utf8 = "Şơмė śäოрŀề ΆŚĈĨİ-ť℮×ŧ"; $utf8 = "Şơмė śäოрŀề ΆŚĈĨİ-ť℮×ŧ";
@ -25,17 +26,12 @@ $utf8 = "Şơмė śäოрŀề ΆŚĈĨİ-ť℮×ŧ";
$params = array(array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')), $params = array(array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')), array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8'))); array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')));
$insertSql = "INSERT INTO utf8test (c1, c2, c3) VALUES (?,?,?)"; $insertSql = "INSERT INTO $tableName (c1, c2, c3) VALUES (?,?,?)";
$s = AE\executeQueryParams($c, $insertSql, $params); $s = AE\executeQueryParams($c, $insertSql, $params);
$s = sqlsrv_query( $query = "DROP PROCEDURE IntDoubleProc; DROP PROCEDURE Utf8OutProc; DROP PROCEDURE Utf8OutWithResultsetProc; DROP PROCEDURE Utf8InOutProc; DROP TABLE Utf8TestTable;";
$c,
"DROP PROCEDURE IntDoubleProc; $s = sqlsrv_query($c, $query);
DROP PROCEDURE Utf8OutProc;
DROP PROCEDURE Utf8OutWithResultsetProc;
DROP PROCEDURE Utf8InOutProc;
DROP TABLE Utf8TestTable;"
);
$create_proc = <<<PROC $create_proc = <<<PROC
CREATE PROCEDURE Utf8OutProc CREATE PROCEDURE Utf8OutProc
@ -50,48 +46,25 @@ if ($s === false) {
die(print_r(sqlsrv_errors(), true)); die(print_r(sqlsrv_errors(), true));
} }
$create_proc = <<<PROC $createProc = "CREATE PROCEDURE Utf8OutWithResultsetProc @param NVARCHAR(25) OUTPUT AS BEGIN SELECT c1, c2, c3 FROM $tableName SET @param = CONVERT(NVARCHAR(25), 0x5E01A1013C04170120005B01E400DD1040044001C11E200086035A010801280130012D0065012E21D7006701); END";
CREATE PROCEDURE Utf8OutWithResultsetProc $s = sqlsrv_query($c, $createProc);
@param nvarchar(25) output
AS
BEGIN
select c1, c2, c3 from utf8test
set @param = convert(nvarchar(25), 0x5E01A1013C04170120005B01E400DD1040044001C11E200086035A010801280130012D0065012E21D7006701);
END;
PROC;
$s = sqlsrv_query($c, $create_proc);
if ($s === false) { if ($s === false) {
die(print_r(sqlsrv_errors(), true)); die(print_r(sqlsrv_errors(), true));
} }
$create_proc = <<<PROC $createProc = "CREATE PROCEDURE Utf8InOutProc @param NVARCHAR(25) OUTPUT AS BEGIN SET @param = CONVERT(NVARCHAR(25), 0x6001E11EDD10130120006101E200DD1040043A01BB1E2000C5005A01C700CF0007042D006501BF1E45046301); END";
CREATE PROCEDURE Utf8InOutProc $s = sqlsrv_query($c, $createProc);
@param nvarchar(25) output
AS
BEGIN
-- INSERT INTO utf8test (c1, c2, c3) VALUES (@param, @param, @param);
set @param = convert(nvarchar(25), 0x6001E11EDD10130120006101E200DD1040043A01BB1E2000C5005A01C700CF0007042D006501BF1E45046301);
END;
PROC;
$s = sqlsrv_query($c, $create_proc);
if ($s === false) { if ($s === false) {
die(print_r(sqlsrv_errors(), true)); die(print_r(sqlsrv_errors(), true));
} }
$create_proc = <<<PROC $createProc = "CREATE PROCEDURE IntDoubleProc @param INT OUTPUT AS BEGIN SET @param = @param + @param; END;";
CREATE PROCEDURE IntDoubleProc $s = sqlsrv_query($c, $createProc);
@param int output
AS
BEGIN
set @param = @param + @param;
END;
PROC;
$s = sqlsrv_query($c, $create_proc);
if ($s === false) { if ($s === false) {
die(print_r(sqlsrv_errors(), true)); die(print_r(sqlsrv_errors(), true));
} }
$s = sqlsrv_query($c, 'SELECT c1, c2, c3 FROM utf8test'); $s = sqlsrv_query($c, "SELECT c1, c2, c3 FROM $tableName");
if ($s === false) { if ($s === false) {
die(print_r(sqlsrv_errors(), true)); die(print_r(sqlsrv_errors(), true));
} }
@ -219,12 +192,12 @@ $t = pack('H*', '7a61cc86c7bdceb2f18fb3bf');
$params = array(array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')), $params = array(array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')), array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8'))); array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')));
$insertSql = "INSERT INTO utf8test (c1, c2, c3) VALUES (?,?,?)"; $insertSql = "INSERT INTO $tableName (c1, c2, c3) VALUES (?,?,?)";
$s = AE\executeQueryParams($c, $insertSql, $params); $s = AE\executeQueryParams($c, $insertSql, $params);
print_r(sqlsrv_errors()); print_r(sqlsrv_errors());
$s = sqlsrv_query($c, 'SELECT c1, c2, c3 FROM utf8test'); $s = sqlsrv_query($c, "SELECT c1, c2, c3 FROM $tableName");
if ($s === false) { if ($s === false) {
die(print_r(sqlsrv_errors(), true)); die(print_r(sqlsrv_errors(), true));
} }
@ -253,7 +226,7 @@ $params = array(array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')));
$query = "{call IntDoubleProc(?)}"; $query = "{call IntDoubleProc(?)}";
$s = AE\executeQueryParams($c, $query, $params, true, "no error from an invalid utf-8 string"); $s = AE\executeQueryParams($c, $query, $params, true, "no error from an invalid utf-8 string");
dropTable($c, 'utf8test'); dropTable($c, $tableName);
sqlsrv_close($c); sqlsrv_close($c);

View file

@ -269,13 +269,9 @@ function createUniqueIndexEx($conn, $tableName, $tableIndex, $colIndex)
trace(" completed successfully.\n"); trace(" completed successfully.\n");
} }
function dropTable($conn, $tableName, $check = false) function dropTable($conn, $tableName)
{ {
if ($check) { $stmt = sqlsrv_query($conn, "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'" . $tableName . "') AND type in (N'U')) DROP TABLE [$tableName]");
$stmt = sqlsrv_query($conn, "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'" . $tableName . "') AND type in (N'U')) DROP TABLE [$tableName]");
} else {
$stmt = sqlsrv_query($conn, "DROP TABLE [$tableName]");
}
if ($stmt === false) { if ($stmt === false) {
} else { } else {
sqlsrv_free_stmt($stmt); sqlsrv_free_stmt($stmt);

View file

@ -396,7 +396,7 @@ function connect($options = array(), $disableCE = false)
function createTable($conn, $tbname, $columnMetaArr) function createTable($conn, $tbname, $columnMetaArr)
{ {
require_once("MsCommon.inc"); require_once("MsCommon.inc");
dropTable($conn, $tbname, true); dropTable($conn, $tbname);
$colDef = ""; $colDef = "";
foreach ($columnMetaArr as $meta) { foreach ($columnMetaArr as $meta) {
$colDef = $colDef . $meta->getColDef() . ", "; $colDef = $colDef . $meta->getColDef() . ", ";

View file

@ -27,20 +27,11 @@ function insertTest($conn, $tableName, $inputs, $query)
foreach ($inputs as $key => $input) { foreach ($inputs as $key => $input) {
array_push($params, $inputs[$key]); array_push($params, $inputs[$key]);
} }
if (! is_null($query)) { // this contains a batch of sql statements,
// this contains a batch of sql statements, // with set identity_insert on or off
// with set identity_insert on or off // thus, sqlsrv_query should be called
// thus, sqlsrv_query should be called $sql = str_replace("SQL", $insertSql, $query);
$sql = str_replace("SQL", $insertSql, $query); $stmt = sqlsrv_query($conn, $sql, $params);
$stmt = sqlsrv_query($conn, $sql, $params);
} else {
// just a regular insert, so use sqlsrv_prepare
$sql = $insertSql;
$stmt = sqlsrv_prepare($conn, $sql, $params);
if ($stmt) {
sqlsrv_execute($stmt);
}
}
} }
return $stmt; return $stmt;

View file

@ -44,7 +44,7 @@ Fetch data from a prepopulated test table given a custom keystore provider
sqlsrv_configure('WarningsReturnAsErrors', 1); sqlsrv_configure('WarningsReturnAsErrors', 1);
sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL); sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
require_once('MsHelper.inc'); require_once('MsCommon.inc');
$conn = AE\connect(array('ReturnDatesAsStrings'=>true)); $conn = AE\connect(array('ReturnDatesAsStrings'=>true));
if ($conn !== false) { if ($conn !== false) {
echo "Connected successfully with ColumnEncryption enabled.\n"; echo "Connected successfully with ColumnEncryption enabled.\n";

View file

@ -7,7 +7,7 @@ Fetch encrypted data from a prepopulated test table given a custom keystore prov
sqlsrv_configure('WarningsReturnAsErrors', 1); sqlsrv_configure('WarningsReturnAsErrors', 1);
sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL); sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
require_once('MsHelper.inc'); require_once('MsCommon.inc');
$conn = AE\connect(array('ReturnDatesAsStrings'=>true)); $conn = AE\connect(array('ReturnDatesAsStrings'=>true));
if ($conn === false) { if ($conn === false) {
fatalError("Failed to connect.\n"); fatalError("Failed to connect.\n");

View file

@ -46,7 +46,7 @@ function execProcedure($conn, $tsql, $params)
function testOutputParam($conn, $tableName) function testOutputParam($conn, $tableName)
{ {
// First, create a stored procedure // First, create a stored procedure
$procName = getTempProcName('sqlVariant', false); $procName = 'sqlVariant_out_proc';
$spArgs = "@p2 sql_variant OUTPUT"; $spArgs = "@p2 sql_variant OUTPUT";
@ -77,7 +77,7 @@ function testOutputParam($conn, $tableName)
function testInputAndOutputParam($conn, $tableName) function testInputAndOutputParam($conn, $tableName)
{ {
$procName = getTempProcName('sqlVariant', false); $procName = 'sqlVariant_inout_proc';
$spArgs = "@p1 int, @p2 sql_variant OUTPUT"; $spArgs = "@p1 int, @p2 sql_variant OUTPUT";
$spCode = "SET @p2 = ( SELECT [c2_variant] FROM $tableName WHERE [c1_int] = @p1)"; $spCode = "SET @p2 = ( SELECT [c2_variant] FROM $tableName WHERE [c1_int] = @p1)";
$stmt = sqlsrv_query($conn, "CREATE PROC [$procName] ($spArgs) AS BEGIN $spCode END"); $stmt = sqlsrv_query($conn, "CREATE PROC [$procName] ($spArgs) AS BEGIN $spCode END");

View file

@ -15,7 +15,7 @@ $tableName = 'testDataTypes_GH231_VC';
$columnNames = array("c1", "c2"); $columnNames = array("c1", "c2");
for ($k = 1; $k <= 8; $k++) { for ($k = 1; $k <= 8; $k++) {
$sqlType = getFieldType($k); $sqlType = SQLType($k);
$columns = array(new AE\ColumnMeta('int', $columnNames[0]), $columns = array(new AE\ColumnMeta('int', $columnNames[0]),
new AE\ColumnMeta($sqlType, $columnNames[1])); new AE\ColumnMeta($sqlType, $columnNames[1]));
AE\createTable($conn, $tableName, $columns); AE\createTable($conn, $tableName, $columns);
@ -123,7 +123,7 @@ function getPhpType($k)
return $phpType; return $phpType;
} }
function getFieldType($k) function SQLType($k)
{ {
switch ($k) { switch ($k) {
case 1: return ("char(512)"); case 1: return ("char(512)");