2017-05-15 23:34:43 +02:00
|
|
|
|
--TEST--
|
|
|
|
|
Test simple insert and fetch sql_variants as strings using inputs of various data types
|
|
|
|
|
--DESCRIPTION--
|
|
|
|
|
The following lists the types of values that can not be stored by using sql_variant:
|
|
|
|
|
varchar(max) / nvarchar(max)
|
|
|
|
|
varbinary(max)
|
|
|
|
|
xml
|
|
|
|
|
text / ntext / image
|
|
|
|
|
rowversion (timestamp)
|
|
|
|
|
sql_variant
|
|
|
|
|
geography
|
|
|
|
|
hierarchyid
|
|
|
|
|
geometry
|
|
|
|
|
datetimeoffset
|
|
|
|
|
User-defined types
|
|
|
|
|
--FILE--
|
|
|
|
|
<?php
|
2017-10-04 23:22:56 +02:00
|
|
|
|
require_once('MsCommon.inc');
|
2017-05-15 23:34:43 +02:00
|
|
|
|
|
2017-05-17 01:46:55 +02:00
|
|
|
|
function CreateVariantTable($conn, $tableName)
|
2017-05-15 23:34:43 +02:00
|
|
|
|
{
|
2017-10-04 23:22:56 +02:00
|
|
|
|
// create a table for testing
|
|
|
|
|
$dataType = "[c1_int] sql_variant, [c2_tinyint] sql_variant, [c3_smallint] sql_variant, [c4_bigint] sql_variant, [c5_bit] sql_variant, [c6_float] sql_variant, [c7_real] sql_variant, [c8_decimal] sql_variant, [c9_numeric] sql_variant, [c10_money] sql_variant, [c11_smallmoney] sql_variant, [c12_char] sql_variant, [c13_varchar] sql_variant, [c14_nchar] sql_variant, [c15_nvarchar] sql_variant, [c16_binary] sql_variant, [c17_varbinary] sql_variant, [c18_uniqueidentifier] sql_variant, [c19_datetime] sql_variant, [c20_smalldatetime] sql_variant, [c21_time] sql_variant, [c22_date] sql_variant, [c23_datetime2] sql_variant";
|
|
|
|
|
createTableEx($conn, $tableName, $dataType);
|
2017-05-15 23:34:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InsertData($conn, $tableName, $index)
|
|
|
|
|
{
|
|
|
|
|
$query = GetQuery($index, $tableName);
|
|
|
|
|
$stmt = sqlsrv_query($conn, $query);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
if (! $stmt) {
|
|
|
|
|
fatalError("Failed to insert row $index.\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sqlsrv_free_stmt($stmt);
|
2017-05-15 23:34:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Fetch($conn, $tableName, $numRows)
|
|
|
|
|
{
|
|
|
|
|
$select = "SELECT * FROM $tableName ORDER BY c1_int";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
$stmt = sqlsrv_query($conn, $select);
|
5.8.0 RTW dev to master (#1087)
* Fixed the potential error reported by Prefast code analysis
* Use SQLSRV_ASSERT for checking NULL ptrs
* For these AKV tests check env despite not AE connected
* Added the driver option to run functional tests
* Fixed connection pooling tests for more than one ODBC drivers
* added driver option to pdo isPooled.php
* Removed win32 ifdefs re connection resiliency (#802)
* Set the driver argument for getDSN to null by default (#798)
* Added the driver argument to getDSN
* Dropped the driver argument but set to null as default
* Removed the AE condition in locale support
* Modified the AE condition for locale support
* Changed int to SQLLEN to avoid infinite loop (#806)
* Version 5.3.0 (#803)
* Version 5.3.0
* Fixed the wrong replacements
* Added comments block to m4 files
* Use dnl for comments
* Modified AE fetch phptypes test to insert only one row at a time and loop through php types (#801)
* Modified AE fetch phptypes test to insert only one row at a time and loop through php types
* Fixed formatting
* Streamlined two very similar large column name tests (#807)
* Streamlined two very similar large column name tests
* Changed the EOL
* Updates to change log and readme (#811)
* Updates to change log and readme
* Dropped support for Ubuntu 17
* Modified as per review comments
* Fixed connection resiliency tests for Unix, updated AppVeyor for ODBC 17.2
* Fixed expected output
* Fixed output and skipifs
* Fixed skipifs and output
* Fixed driver name
* Updated installation instructions and sample script (#813)
* Updated instructions and sample test for 5.3.0 RTW
* Fixed sample code to adhere to php coding standard
* Fixed cases and spaces
* Modified NOTE for UB 18.04 based on review comments
* Added 'exit'
* Modified change log and readme based on review to PR 811
* Applied review comments
* build output to debug appveyor failure
* removed debug output
* Streamlined two very similar large column name tests (#815)
* Streamlined two very similar large column name tests
* Added random number of test table names to avoid operand clash issues
* Replaced to with for based on review
* Changelog updated
* changelog updated, test skipif changed to run on unix platforms
* Fixed skipif typo
* Fixed typo in skipif for pdo
* Fixed some output for Travis
* Moved error checking inside pdo connres tests
* Added links back to changelog
* Fixed output for sqlsrv connres tests
* Fixed output
* Fixed output again
* Fixed skipifs for connres
* Tweaked per review comments
* Changes made to source and tests to support PHP 7.3 (#822)
* Changes made to support php 7.3
* Correct use of the smart pointer
* Fixed the tests for 7.3
* Some clean up for array_init()
* Fixed formattings and clean up
* One more fix
* Initialising strings with nulls
* Removed some spaces
* Made array index spacing consistent
* Fix for compilation problem
* Fix for compilation problem again
* Before freeing stmt in destructor check if dbh driver data is NULL (#829)
* Issue 434 - set dbh driver data to NULL as well in destructor
* Reverted the last change but instead check if dbh driver_data is already freed
* Modified the comment
* Added driver to the skipif conditions (#831)
* Used git clone instead to download source from a branch of a tag (#832)
* Modified the error handling to make it more flexible (#833)
* Made error handling more flexible
* Fixed a minor issue with a test
* Enabled Spectre Mitigations (#836)
* Incorporated changes in PR 634 to pdo_sqlsrv (#834)
* Incorporated changes in PR 634 to pdo_sqlsrv
* Reverted the changes because the array is for internal use only
* Modified README re user's suggestion (#841)
* Modified README re user's suggestion
* Moved the if condition to the end as per review
* Adding supporting for Azure AD access token (#837)
* Adding supporting for Azure AD access token
* Added more comments for the AD access token skipif files
* Save the pointer to access token struct until after connecting
* Clear the access token data before freeing the memory
* Added a reference as per review
* Feature request - new PDO_STMT_OPTION_FETCHES_DATETIME_TYPE flag for pdo_sqlsrv to return datetime as objects (#842)
* Feature request - issue 648
* Fixed constructor for field_cache and added another test
* Added tests for FETCH_BOUND
* Added a new test for output param
* Modified output param test to set attributes differently
* Removed a useless helped function in a test
* Combined two new tests into one as per review
* Uncommented dropTable
* Feature request - add ReturnDatesAsStrings option to statement level for sqlsrv (#844)
* Added ReturnDatesAsStrings option to the statement level
* Added new tests for ReturnDatesAsStrings at statement level
* Added more datetime types as per review
* Updated version 5.4.0-preview (#846)
* Updated version 5.4.0-preview
* Replaced 5.3 with 5.4
* Fixed sqlsrv datetime tests to connect with ColumnEncryption variables (#849)
* Change log for 5.4.0-preview (#850)
* Updated change log for 5.4.0-preview
* Updated 5.4.0 preview to add two new feature requests
* Modified change log as per review
* Modified the wordings
* Updated readme, changelog, and install instructions
* Clear AKV data after setting the connection attribute or when exception is thrown (#854)
* Dev (#820)
* Fixed the potential error reported by Prefast code analysis
* Use SQLSRV_ASSERT for checking NULL ptrs
* For these AKV tests check env despite not AE connected
* Added the driver option to run functional tests
* Fixed connection pooling tests for more than one ODBC drivers
* added driver option to pdo isPooled.php
* Removed win32 ifdefs re connection resiliency (#802)
* Set the driver argument for getDSN to null by default (#798)
* Added the driver argument to getDSN
* Dropped the driver argument but set to null as default
* Removed the AE condition in locale support
* Modified the AE condition for locale support
* Changed int to SQLLEN to avoid infinite loop (#806)
* Version 5.3.0 (#803)
* Version 5.3.0
* Fixed the wrong replacements
* Added comments block to m4 files
* Use dnl for comments
* Modified AE fetch phptypes test to insert only one row at a time and loop through php types (#801)
* Modified AE fetch phptypes test to insert only one row at a time and loop through php types
* Fixed formatting
* Streamlined two very similar large column name tests (#807)
* Streamlined two very similar large column name tests
* Changed the EOL
* Updates to change log and readme (#811)
* Updates to change log and readme
* Dropped support for Ubuntu 17
* Modified as per review comments
* Fixed connection resiliency tests for Unix, updated AppVeyor for ODBC 17.2
* Fixed expected output
* Fixed output and skipifs
* Fixed skipifs and output
* Fixed driver name
* Updated installation instructions and sample script (#813)
* Updated instructions and sample test for 5.3.0 RTW
* Fixed sample code to adhere to php coding standard
* Fixed cases and spaces
* Modified NOTE for UB 18.04 based on review comments
* Added 'exit'
* Modified change log and readme based on review to PR 811
* Applied review comments
* build output to debug appveyor failure
* removed debug output
* Streamlined two very similar large column name tests (#815)
* Streamlined two very similar large column name tests
* Added random number of test table names to avoid operand clash issues
* Replaced to with for based on review
* Changelog updated
* changelog updated, test skipif changed to run on unix platforms
* Fixed skipif typo
* Fixed typo in skipif for pdo
* Fixed some output for Travis
* Moved error checking inside pdo connres tests
* Added links back to changelog
* Fixed output for sqlsrv connres tests
* Fixed output
* Fixed output again
* Clear AKV data after connection or when exception is thrown
* Modified tests too to skip some AKV tests without real credentials
* Used assignment operator also free the existing memory
* Change readme links to https
* Change readme links to https
Merging this commit to dev
* Save meta data for the fetched result set (#855)
* Save meta data on fetched result sets
* Fixed a compilation error
* Optimized some more -- metadata should be available when fetching
* Skip conversion for strings of numeric values, integers, floats, decimals etc
* Set encoding char for numeric data
* Apply review
* Added Mojave to macOS instructions (#862)
Added Mojave to macOS instructions
* Fixed the broken links of Appveyor status badge (#863)
* Feature request 415 for sqlsrv (#861)
* Modified how to send stream data using SQLPutData and SQLParamData (#865)
* Updated instructions to include Ubuntu 18.10 (#869)
* Feature request 415 for pdo_sqlsrv (#873)
* Skipped some tests when running against Azure (#874)
* Modified config files to add the compiler flag, /Qspectre (#878)
* Merge the commit from master re survey image link (#880)
* Fixed the flaws of decimal tests and added more debugging (#879)
* Changed sample code to adhere to PSR standard (#887)
* Decimal places for money types only (#886)
* Version update for 5.5.0-preview (#889)
* Fixed the error in the pdo decimal test (#890)
* Removed warning messages while compiling extensions (#892)
* Improve performance of Unicode conversions (#891)
* Update sqlsrv_statement_format_money_scales.phpt
Do not encrypt money / smallmoney fields in the test table
* Change log 5.5.0-preview (#895)
* updated docs for php 7.3
* Fixed broken links
* Added back Ubuntu 18.10 ODBC instruction
* Drop tests related to fake passwords (#905)
* Initialize output param buffer when allocating extra space (#907)
* Enable compiling extensions statically into PHP (#904)
* Dropped dbname variable and set QUOTED_IDENTIFIER to ON (#911)
* Skipped the non-applicables tests against Azure Data Warehouse (#913)
* Support for Managed Identity for Azure resources (#875)
* Changed version 5.6.0 (#918)
* Initialize hasLoss before passing into Convert function (#919)
* Added new tests for setting client buffer size related to issue 228 (#920)
* Fixed load order issue in sqlsrv
* Added source indexing for symbols (#922)
* Modified linux and mac instructions for 5.6.0 RTW (#926)
* Change log 5.6.0 (#921)
* add Language option on connect
* Updated AppVeyor to download ODBC driver 17.3 (#941)
* Issue 937 - fixed ASSERT and added new tests (#940)
* Changed travis to pull mcr.microsoft.com/mssql/server:2017-latest instead (#943)
* Modified money tests to test the accuracies of floats (#944)
* Fixed the returned values for PDOStatement::getColumnMeta (#946)
* Onboarding to Azure Pipelines (#949)
* Fixed the error in Issue 570 (#952)
* Added a new status badge on readme (#953)
* Added new tests for issue 569 (#951)
* Fix issue 955 - errors building sqlsrv alone (#956)
* Modified test_largeData for Linux CI (#954)
* Issue 937 - fixed ASSERT and added new tests (#940)
(cherry picked from commit 12d01c918966f5ff908adb25d5586944949b88be)
* Fixed the returned values for PDOStatement::getColumnMeta (#946)
(cherry picked from commit 7309fb90b18cd93940f28c6928f152404accb675)
* Fix issue 955 - errors building sqlsrv alone (#956)
(cherry picked from commit 15f61bd0b4e095978cddb2de9671f3d324fc17c3)
* 5.6.1 hotfix
* Updated change log
* Tests modified for language option for SQL Azure (#963)
* Update azure-pipelines.yml for Azure Pipelines [skip ci] (#964)
* Added more checks for error conditions (#965)
* Removed forward cursor condition
* Added row and column count checks
* Revert "Update azure-pipelines.yml for Azure Pipelines [skip ci] (#964)" (#969)
This reverts commit 7d389e0cffa6840a95ea720673380f9ae0b2b477.
* Add new pdo_sqlsrv tests for utf8 encoding errors (#966)
* Modified to check if qualified for AE connections (#967)
* Fixed test and error message
* Minor fixes
* Test fixes
* Addressed review comments
* Fixed test failure
* Made Azure AD tests more robust (#973)
* Addressed review comments
* Issue 970: use quotes for variables (#971)
* Added batch query test
* Fixed 32 bit test failure
* Addressed review comments
* Formatting changes
* Used different skipif conditions for these two tests that require AE connections (#977)
* Simplified insert logic
* Modified get column meta method to reference saved metadata (#978)
* Revert "Used different skipif conditions for these two tests that require AE connections (#977)" (#980)
This reverts commit ee3c85afa863eaff81512ad6399de572ffb943d9.
* Fixed failing tests (#981)
* Data Classification sensitivity metadata retrieval (#979)
* Added more pdo tests to verify different error conditions (#984)
* Fixed memory issues with data classification (#985)
* Added connection string flag
* Removed unix skipif
* Fixed test output
* Fixed pdo test
* Changed flag name
* Fixed test output
* Updated links and versions (#987) (#988)
* Fixed test output (again)
* Fixed test output (again)
* Fixed test output (again)
* Replaced expected test output altogether
* Fixed locale issue
* Corrected formatting
* Replaced EXPECTF with EXPECT
* Fixed two failing tests (#991)
* Redesigned some tests based on recent test results (#992)
* Modified pipelines to connect using sqlcmd inside of the container instead (#995)
* Added batch query
* Added batch query test for pdo (#997)
* Added a new test and modify a non LOB sqlsrv test (#1000)
* Two index zval functions are macros in php 7.4 (#1001)
* Replaced uint with size_t (#1004)
* Check compiler version for php 74 (#1005)
* Fixed tests that failed in php 7.4 (#1006)
* Improve data caching with datetime objects (#1008)
* Fixed for issues found by Semmle (#1011)
* Removed unneeded constants
* Fixed sqlsrv_free_stmt argument info
* Fixed brace escape to avoid buffer overflow
* Fixed brace escape and added test
* Debugging test failure on Bamboo
* Removed debugging output
* Debugging test failure on Bamboo
* Removed debugging output
* Added more test cases
* Changed range check to use strchr
* Added pdo test
* Fixed test and formatting
* Addressed various issues with PHP 7.4 beta1 (#1015)
* Updated dockerfile to use UB 18.04 and PHP 73 (#1016)
* Added survey results (#1017)
* Updated ODBC driver 17.4 (#1019)
* Modified output.py to take a new argument and travis yml to use include for coveralls (#1020)
* Used constants in memory stress tests for easier configuration (#1022)
* Removed KSP related scripts and files (#1030)
* Updated version to 5.7.0 preview (#1029)
* Change log for 5.7.0 (#1028)
* Modified how drivers handle query timeout settings (#1037)
* Feature request: support extended string types (#1043)
* Added the required file to ansi tests (#1047)
* Always Encrypted v2 support (#1045)
* Change to support ae-v2
* Add support for AE V2
* Added some descriptions and comments
* Fixed PDO pattern matching
* Updated key generation scripts
* Fixed key script
* Fixed char/nchar results, fixed formatting issues
* Addressed review comments
* Updated key scripts
* Debugging aev2 keyword failure
* Debugging aev2 keyword failure
* Debugging aev2 keyword failure
* Debugging aev2 keyword failure
* Added skipif to ae v2 keyword test
* Addressed review comments
* Fixed braces and camel caps
* Updated test descriptions
* Added detail to test descriptions
* Tiny change
* Modified pdo tests to work with column encryption (#1051)
* Saved php types with metadata when fetching (#1049)
* Updated survey charts for Nov 2019 (#1057)
* Updated all CIs (#1058)
* Change log 5.7.1 preview (#1060)
* Fix AKV keyword test for AE v2 behaviour (#1061)
* Master (#936)
5.6.0 RTW
* 5.6.1 hotfix (#959)
* Updated links and versions (#987)
* Fixed AKV keyword tests for AE v2
* Added comment
* Free proc cache before starting test
* Fixed comment
* Update linux mac instructions for php 7.4 (#1062)
* Updated appveyor yml to build 7.3 and 7.4 (#1065)
* Fixes suggested by Semmle (#1068)
* Fixes suggested by Semmle
* Updated azure-pipelines
* Added configurable options for setting locales (#1069)
#1063
* Fixed the skipif wordings and styles (#1070)
* Modified locale tests to work in both linux and mac (#1074)
* Include sql_variant type for buffered queries (#1080)
* Updated versions and year (#1082)
* Change log for version 5.8.0 (#1083)
* 5.8.0 rtw docs (#1086)
* updated install instructions and changelog
* removed md extensions
* Addressed review comments
* added path
* Fixed link
Co-authored-by: Jenny Tam <v-yitam@microsoft.com>
Co-authored-by: Gert de Pagter <BackEndTea@users.noreply.github.com>
Co-authored-by: Jannes Jeising <jannes@jeising.net>
Co-authored-by: Guillaume Degoulet <34232764+gdegoulet@users.noreply.github.com>
2020-01-31 23:02:45 +01:00
|
|
|
|
$stmt2 = sqlsrv_query($conn, $select, array(), array("Scrollable"=>"buffered"));
|
2017-05-15 23:34:43 +02:00
|
|
|
|
$stmt3 = sqlsrv_query($conn, $select);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
2017-05-15 23:34:43 +02:00
|
|
|
|
$metadata = sqlsrv_field_metadata($stmt);
|
|
|
|
|
$numFields = count($metadata);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
2017-05-15 23:34:43 +02:00
|
|
|
|
$fetched = 0;
|
2017-10-04 23:22:56 +02:00
|
|
|
|
while ($result = sqlsrv_fetch($stmt)) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
echo "Comparing data in row " . ++$fetched . "\n";
|
|
|
|
|
|
|
|
|
|
$row = sqlsrv_fetch_array($stmt2);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
if (! $row) {
|
|
|
|
|
fatalError("Failed to retrieve row $fetched!\n");
|
|
|
|
|
}
|
2017-05-15 23:34:43 +02:00
|
|
|
|
|
|
|
|
|
$obj = sqlsrv_fetch_object($stmt3);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
if (! $obj) {
|
|
|
|
|
fatalError("Failed to fetch data in an object from row $fetched!\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for ($j = 0; $j < $numFields; $j++) {
|
|
|
|
|
$value1 = sqlsrv_get_field($stmt, $j);
|
2017-05-15 23:34:43 +02:00
|
|
|
|
|
|
|
|
|
$col = $j + 1;
|
|
|
|
|
DoValuesMatched($value1, $row[$j], $fetched, $col);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
2017-05-15 23:34:43 +02:00
|
|
|
|
$value2 = GetValueFromObject($obj, $col);
|
|
|
|
|
DoValuesMatched($value1, $value2, $fetched, $col);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-10-04 23:22:56 +02:00
|
|
|
|
$noActualRows = $fetched;
|
|
|
|
|
echo "Number of rows fetched: $noActualRows\n";
|
|
|
|
|
if ($noActualRows != $numRows) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
echo("Number of rows does not match expected value\n");
|
|
|
|
|
}
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
|
|
|
sqlsrv_free_stmt($stmt2);
|
|
|
|
|
sqlsrv_free_stmt($stmt3);
|
2017-05-15 23:34:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DoValuesMatched($value1, $value2, $row, $col)
|
|
|
|
|
{
|
|
|
|
|
$matched = ($value1 === $value2);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
if (! $matched) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
echo "Values from row $row and column $col do not matched\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
echo "One is $value1 but the other is $value2\n";
|
2017-05-15 23:34:43 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetValueFromObject($obj, $col)
|
|
|
|
|
{
|
2017-10-04 23:22:56 +02:00
|
|
|
|
switch ($col) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
case 1: return $obj->c1_int;
|
|
|
|
|
case 2: return $obj->c2_tinyint;
|
|
|
|
|
case 3: return $obj->c3_smallint;
|
|
|
|
|
case 4: return $obj->c4_bigint;
|
|
|
|
|
case 5: return $obj->c5_bit;
|
|
|
|
|
case 6: return $obj->c6_float;
|
|
|
|
|
case 7: return $obj->c7_real;
|
|
|
|
|
case 8: return $obj->c8_decimal;
|
|
|
|
|
case 9: return $obj->c9_numeric;
|
|
|
|
|
case 10: return $obj->c10_money;
|
|
|
|
|
case 11: return $obj->c11_smallmoney;
|
|
|
|
|
case 12: return $obj->c12_char;
|
|
|
|
|
case 13: return $obj->c13_varchar;
|
|
|
|
|
case 14: return $obj->c14_nchar;
|
|
|
|
|
case 15: return $obj->c15_nvarchar;
|
|
|
|
|
case 16: return $obj->c16_binary;
|
|
|
|
|
case 17: return $obj->c17_varbinary;
|
|
|
|
|
case 18: return $obj->c18_uniqueidentifier;
|
|
|
|
|
case 19: return $obj->c19_datetime;
|
|
|
|
|
case 20: return $obj->c20_smalldatetime;
|
|
|
|
|
case 21: return $obj->c21_time;
|
|
|
|
|
case 22: return $obj->c22_date;
|
|
|
|
|
case 23: return $obj->c23_datetime2;
|
|
|
|
|
default: return null;
|
2017-10-04 23:22:56 +02:00
|
|
|
|
}
|
2017-05-15 23:34:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQuery($index, $tableName)
|
|
|
|
|
{
|
|
|
|
|
$query = "";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
switch ($index) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
case 1:
|
|
|
|
|
$query = "INSERT INTO $tableName ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_nchar], [c15_nvarchar], [c16_binary], [c17_varbinary], [c18_uniqueidentifier], [c19_datetime], [c20_smalldatetime], [c21_time], [c22_date], [c23_datetime2]) VALUES ((1), (null), (-6650), (null), (0), (1), (0), (-100000000000000000000000), (0.0504), (0.5199), (-214748.3648), ('/.Zð©vãÄAßÖðÐöuo©_Ä£öªÄ@£ß¢,Oðua*bª*>ããCvzªuðBÜ|uåîü~¢ÃãÄÜvå£<_BªÐ~©+î©ãÄ~+¢a<~|abozaU:Ä.Ö¢Ð|ü>ßß>£r@COzubvývbßuOÄä~Zrb*ZåvªZövÐB_ã@ã,bîåäböü::*ö._äBî_~.Zð£ã~Avß|îÖuZ,ß©üÄ:hh,ä:ð©å./£raUC_</bZßßob_~ßÜÄ:£åUbî*rböz~aãöåä'), ('o©:îoo/vbýý@h££ÜÃCb_h@î@|hoBroÃC|__ßrüBî<bhböß/+OorÐ.Öb£Öð*Aa*bîzåüªBä~ÄAObB,ã~ÜÄßîbööÄß<åAv¢båCýuÖbßãvz~>ÄuÄývð+'), (N'vvöªß/îa©î++|>üªßBÄ¢öªrÖßC+<OvÃrv.AhÄÖO+C~Z@~bÖ>aß<~ª@£ÃbOÜÃb/ã,robo:ãîbð+>,zÃOÖ+ä<,ßCªÖÖ+b@ü>ZÃÐîz.ýªboî/£uAv++aAzOü<~B~z.BÖ,b/bߣ.,ÜÜÖßZ<+<+Ð>ýÐ@öOCÐUzrãÃrö/_*uou¢öýuU~,©ar¢r~ðBAähUüb,BoöB|äå<ýuäðÃb|:böä>bäÐÐu__ÖuýÐßO<vZßru@~Ã/ßö+B@*_UAA©bãäåbAÃßUa@bÖrÜv£åÄ+î+/ðÜå/a/ÃÖÃÜ_.:/ðorßÜ:/zî¢åÖbî,zÃÖÄ/ðBOª©,|Ußvrß*ãÄÐ@_h'), (N'¢åU_v+ß,,BÜÄa>ãüªo,îO>¢.b/uO©ßh¢Ü/zuöb,AÖå:O/Bz*åÖî,ÖAßCUã<äh¢Ä~öoðªOªA|Ü*hZb:ýýCåZîîÜäÖªOýBª_îhoäuvoÄoZÐ+ª.å_bßä<ÖUzß©Ozoaý¢ðöU:aCOrÄß.ÐaO|o:åbBOuhߣã+OAüýÄoÃß.*üä/î~h£*_Z£CaäZöå/Ãß<ßOÖýoÖßÄ~*ß/>a@ÖuUÄå¢ßäB_äßä+ßou._|äßCÃz+ã¢öoBaUî£UÄ:Uªßý@zßhýßÄÜ~Aö<©öC|,@ßOîö:ã|üÄ|:ßhöÐäzßîO+aðO~bbßUÃhhbÐߣb|åö~ABozÜåýÐߣz©roÜUÄ'), (0x3F69A37E16303C7AC955661D1BED304E9674FA57E87BF1B2B85E7F31B75D57EEB7FAE5F97FA9E7E77C921B2910D481C88E564752D3FDD5C477F1C5B8B10AC36CFD7765210837CEEC8D12DB555FC8A1E4DDB6A26016051BB92421818DE42F3671CFAF2C996F5FC057885AC5C1227F64AF4FE1DAFA686256F75BACFCE7B540085DDB6A85B09B08747DF64BD8BB405A97A5BCDE9E72E8EA6D08E46AC42909973DB63CA2E2EB3A6E63B604), (0x0F), ('00000000-0000-0000-0000-000000000000'), ('2326-02-20 08:51:23.203'), ('2024-02-29 15:02:00'), ('12:39:54.0255300'), ('2001-01-01'), ('2924-06-04 08:59:21.2768412'))";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$query = "INSERT INTO $tableName ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_nchar], [c15_nvarchar], [c16_binary], [c17_varbinary], [c18_uniqueidentifier], [c19_datetime], [c20_smalldatetime], [c21_time], [c22_date], [c23_datetime2]) VALUES ((2), (0), (-16753), (2098337643), (null), (0), (null), (0.5371), (0.1049), (0.5799), (0.2674), ('Ub£b*u|+ßCî<Oo©ÐåroUB/ö_ßÃö_Cüb:öhýö©ª.uÐvvzubÃöaä:bÐýOãhCu©vauãb<_AOÄbvßð@ãh£zÖýa@v_ýÐüöhß_+ÖöÄA/UÜ_©ÖZßoUß<+Ã>ß>©v@üzbÐ~BAî_ðbýßßÐ,|u*Ur>,Öö>ª:'), ('åb©rbCOAü|Ä.UuOß©|üCUv*aZ>ð*ßb>~~ßbýz~Ö¢r@UÜ|ßuo~oßA>r<ªÐ©ð~OäUåbhß<oO<Bß+îÖa~<<vÜÜ¢v:B,z:v©©o/+v,Ã/ýÖý,ÃÐuhZЪhr<z/B¢ª¢A:oÐðß:£ð|>¢åb<@ß,ö|uöb~ãC<räýv£Üb,|ªv<åZ~rÖUýUhýߣÄÃb.B+~åß+UßðvããßÃîî@ðbU£Ö**ääzrb+~üÐÃZrA,©_bßv>.h:<båCߢßÖ*AuaðAAÐ~ÄåCC.ÄåhU_rã<ãöÄ/ãhOUß*ððöOß+Ð>abÄÜ_Azb+aü_BªðäOZZ@rî|zð_rr:_BÜ_AOÖÜb.ÃBÜÜovUU*abý>buZC_,äýãC£ãîrab.oBCå¢.:C,A©ZäO,_ªÄZÖbu,r/äýhðvbUröãýå¢:ßäýo*rÄüðUZz>ÄZzöÄî<Ö/zrCü.bð*,£üv<åbbAaÐîbå¢ö~|î¢îvýoÄ.|ßA,ߢb~å£*uu/uä©åÐã+/~o,äOZ:C©ß|b*ZA©uBä<ýýª+z>,bªB/äACuåýö/ÖhÖý_©oböãa©¢ýå/ª'), (N':Ö_Öo>rå¢CÄ+Ä¢_<Üîüã©ÖÖ£Üv~ª/Bî+h£vzO|b~CÜ¢ßö£u£ðÐÜh£ªªÃaîýîðª<_u*rb+uZuß.ÐåCüÃCAöÃÃ*ÜÐ_A~zZ|O©@zB|ª:hvÄ:_zUåÐ~bråäüðÜO:¢©AÜða©£Ðr~'), (N'©î©üUß<>©zaUbÃ*Ī_ðCýßB@ß:ä©@©o|©hröZö_,ýCa'), (0x00), (0x7F706F21089D4564F6AD294C130B9080F17FA23DB5F0F5E226DF33A8FA7B4E37A6FB84AEC130BF9FBC510599E6094F3F8C09AF0D8BB5278F7B8DFA28699C697B5FF1A51887E1BEC0C0028064EB5BFC1C8FF31BF0CB40ABF1D3F533343597351FE7893AF46336B8AA4BEF4D8935C2A42090DE98758179B01F45B44591AE8A8A29CD617D612108B9593B71A5DBF222BC105113A457FEBF9E6DD81BAEAFF126FCC06424BBD34542FE88243F390FD4D42C22F834409BE6332A0EC20F88065909671574E477CD67E8CB0E141B32BE858E9903EE8CB7BDE560DA31F9AC1135B9F82F1BD7249BEF5D5FBB0F693187CA006C8934768417CC52AA30140A46D3BAD795551BEC17E661F3A9A68ED1A754B3D90F308D23DCBF34E062C92DF386E5178C0038D3DC6CDEE9862740CCDE89FBAA567D3AFA154696FAD5203A894DB96D6CC48E02D06E80D66D314707FC9CF35657661ED6764CEA02466A3EFEBC32549BCCBAD30750862B3BD6A6CDC9CE3E9A5EE2C9E2232EE2F720), ('95850cf7-8b0c-4f61-aa3e-25eac6efe46c'), ('3058-07-22 07:25:00.198'), ('2007-04-23 17:42:00'), (null), ('2016-10-31'), (null))";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$query = "INSERT INTO $tableName ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_nchar], [c15_nvarchar], [c16_binary], [c17_varbinary], [c18_uniqueidentifier], [c19_datetime], [c20_smalldatetime], [c21_time], [c22_date], [c23_datetime2]) VALUES ((3), (141), (-26849), (9223372036854775807), (0), (1), (1), (-100000000000000000000000), (-1), (null), (-214748.3648), ('.å|ãð|ÄvÖß*vbb_ä£Ãߣ,¢>bЪhUå.BaÜäðZ>ð£ý,ÖOÃ|_aУAbüvCzß,@Cz.<,*Äz@OoU+Ðbßv¢/ß>Oª/ªä*CÖ£_hîýßzªî,äýUaß|.©+ð:ãÄ+~aðÐýå@ý~|ä©a++îÐu+U|ãUoÜäOrýOzßãÜzý媪aää.Äho|bZ:Ou>:ßÖÜÜüCÃza.UbßUA,Ah¢*.Ä:_aªzhîrCÃZ/A_ü*,B©:¢ßCß@.OU_*/'), ('h>ª.ãîbã@£Ch©:.ÜÜCåß©£_Bß//ß©ßvÖBß,<ÐüvÖ.ßZ<©+ÐÐãÜ|ZÃ>|@ü@ª.<UoÄ,+bãbðAßãC/ä*b/:ÄÄüîuýbªUå>r,ävo¢ªBZzå©îÐÖ:|b'), (N'ÄÜvv>,Z:~O/ã/ýãvUÖöCCßAbO<_@_|Ä~Cuo@å+BÄaåZ><î*<Ðß:/üüaåÖuBaäßðA<äÄOß*,å£uC'), (N'|ªZCbßÄBvªhrZÖ©vbäröva¢Oo©./~ßÖäÖ+r£ßåßauðOU|ü_~Т|,îzU_üBü.,v_>äZ:ð|A<OArÐ+ß+¢OhßÄöu+ö:C©©Äî/¢ö,Ã.v@ªaÄo+*êåЪ<ßU~~~v>*aßî+ÖZ¢ªßýCü+©|ßaßäAväuðbuCob,ß/îð@ÜC*.bÄBßCCÄÜ|ß/<boªüz@o<|/OÄb/oÜÃÃBÃv<Ohä֪ĪåbÃvüAAuz:ð£+~U¢*©å,CU+><Ö*£ßß_ý<<arÜ@ohöBu/Obîîð@_bÄ*<¢ÄrßrÄ./@îöoî~bäß@Ö/AAðZ/ã/Äzv<vhý,@~Äö/|ÃÄ_Uîa*å©Ä|üî:~Ü'), (0xCBAB9B63B5DD23C02818F80CBAA04EA41ECB6FF7ECAE2496171660469E3F731330C949AA10D861D6C664D1DD9BA04020C9319EF2D731B31D86044C9F7DDD22E8A4E4DCF057A394456A993188DC46FB76D6407C6DA0813CFF152B240B8CC258E840533413A2CBADF2B65AED914391E0200BD43466A5132FA7BC787CF0D781DCB222F5C7E195449E4903EBD678B488C951226D9C9BC1BCA8CC238D562A4EBD1B357D3B6F4ECAFE8AC735), (0xB93DB7F234AE2BCD69E441F0654CFABE08EE74FB46D0A1FA79197B8623E2D565D759EF8F6B9A227B23EFB1503C4A09042A425F30FDA463EE140DC816C4CB4BFF4B0ABAEDC627123831CE5778A44DC4B05912F30E5EFE13D453F44BEFDBD1783AACDF832507603748E52613BB4B4F2CBFE48B643CFF3BA4F944435F8FEC80B19322A2459268BB6A705F48C323B5D462CA8F14D9B4714E5B013B8AE1C400A85B65758099A80999572921), ('cfd87d03-0db6-4e6e-989c-2a0459660bb3'), ('2313-08-20 10:52:29.861'), ('1900-01-01 00:00:00'), ('02:44:51.6130224'), ('9999-12-31'), ('1400-02-25 11:23:00.4519650'))";
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
$query = "INSERT INTO $tableName ([c1_int], [c2_tinyint], [c3_smallint], [c4_bigint], [c5_bit], [c6_float], [c7_real], [c8_decimal], [c9_numeric], [c10_money], [c11_smallmoney], [c12_char], [c13_varchar], [c14_nchar], [c15_nvarchar], [c16_binary], [c17_varbinary], [c18_uniqueidentifier], [c19_datetime], [c20_smalldatetime], [c21_time], [c22_date], [c23_datetime2]) VALUES ((5), (76), (-27503), (298552558), (null), (1), (0), (0.8696), (-100000000000000000000000), (0), (0.9480), (''), (' '), (N'ßßuäßuîBüã£~¢îv¢ãäz>_ß>aaOßåö.*OªÃý*üBhßî¢Üo@üAîÐß~|ýBUa*rã¢/Ao~>:üöîð£ÖÄ@ªðbz@AhîhCãÜr>:ýaÜU@,å:r©býBaßoßä<@zöaÄß>@åAÐÄU<>îîå>OhÐ<ä£:bAî*öaðÐýhbab:Aäý.<üß@¢BåZzÃ*ßãB+UÖ<¢_BÐß@>+äîßbovÐb.ã_.ß:©Ãu.OZü£ßÃ|U<zÐoZavUý>v_bbÜÃâubßb:A~CzbåUý+ªavÖ©_*@h|<o/Ä*C_vüO<>:,åÄ~OÄr+Ð@îðbßAAhZÄîU¢vªäÜr_¢ZßîB~îäüöoßörУ_ÜZz>UßîÖ~OÖªBÐ.@©Ö:Ðaß>îObOCîübå£bb>åb+<åh_,hUäuÖZv<Zî_üß/zO¢ßã¢håüA£ð¢¢,üääZBÖðrü+ªÃª~Ö|CÃ:ÐoãBZîuUZãªãéb*b©©Ä©.ý©/uð|zr<@uOårCÜ|,å@£,,_ðA@uÄå:ýÜ*OO©büÃöb+bª@ÜårvCZãoÖªZåzîAb@~bU.|aöB>.O||aZð/U£A/Üoo¢~~åßÖ'), (N'å|Üa+BuävO¢å£¢rªýüå©,bBßîBßü:bzÐ*@ÃýUv~zAßÜuoZ@a+ýåßä/vã<üBUzU.råå_Cðu+Ä.|¢~Z壢ªßª:o>åðuä_vOzaÜ,|+vÖ,bh£o.ZßÄ|~*>©_£üA,a¢åbÃb_B|ärÐ_+ärÄ:ßaB~C_zöðé<C/_üUh>ý<|¢zÖö>ßbü£:ßOoAZ:>+ÜÖoä/BÐÜO|BÄÐÐýU,ÜßOA>åübu£ðv@Ãß©hrÄ.Üå£uУ@äðÐBrî©@¢ZzZäOßr:ß@ÃåZb~@väªåOözã,BC>|Ð,äoO+ãðäröÃr:rö£~åhªðAb¢:*ý:>bÄÄîbhãÄBÃÐ~/©£rü@CåÖ_u*öß*ß_Öaä<,CUüZ,bCö<r.a@,./<ãä|Ö|<+öUßao+©åCb_.U©CbÜßbAööZü.CvOýî¢~ܪ+hvBÜC__å:ãýOßÄßßö>:/aöã¢AB>îr/ü¢£zýÜ©Aü>.bãC/ð<<oCÃB*o*O/>Ðab¢ÃAå,_>ÄAhð@öaöBÄOB¢aÐBÖåv<ýß+oZö:ß,ßUA,ýÜhüÜ~.h,bÐz¢.Aî~výBb@ðÃý£~>'), (0x00), (0x92BDFAA6637CC331324265EE0D819DB02A8FE57B5001480073A02C4D470E99DDEBE9B2FF460387BC3F55A4E997E9C3640605ADB1BA3DA99175F933C24F75EA23A9870224CF9E692608293CFA5C5F6989DCC7474161E723AD3F218A4CD0C46CC96B813F0FE69F95679B86A99001AF341590A9E5872EA8C2C16455E5AD141C5643BC728FDB1F5AA33D32DFA5DA3E92AC90ED74BC26DEE49BC2BE7EAA91B9E7537F2F65D48E2058F53605A8554E02E783D1A954C09F603065D7D7CD1CA1AF12834A8B26ABD8BE1D70947F8620368F4CBFD7FAD9E76427B41FFF00FCB7523B5386F3240AC2DC3CAB128CE42B1FD90F2E478A0D45A7D52A1E23D707ABD7C1651D592CFF2D11858AE39B4FC65B80FB9545F0D1B42D45F6ACB0C805E6EBD490D35026C7D2F3D9E11DC1FF2AA9580FCF9E2741C2BB050C37), ('55a1f242-dad9-4f8e-b839-364fb6e1ffec'), ('5256-04-02 18:20:54.032'), ('1900-01-01 00:00:00'), ('04:36:52.8132961'), (null), ('2001-01-01 12:01:00.0000000'))";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
// RunTest
|
|
|
|
|
//
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
function RunTest()
|
|
|
|
|
{
|
2017-10-04 23:22:56 +02:00
|
|
|
|
startTest("sqlsrv_simple_fetch_variants");
|
|
|
|
|
try {
|
|
|
|
|
setup();
|
2017-05-15 23:34:43 +02:00
|
|
|
|
|
2017-10-04 23:22:56 +02:00
|
|
|
|
// connect
|
|
|
|
|
$conn = connect();
|
2017-05-15 23:34:43 +02:00
|
|
|
|
// Create a temp table that will be automatically dropped once the connection is closed
|
|
|
|
|
$tableName = GetTempTableName();
|
2017-05-17 01:46:55 +02:00
|
|
|
|
CreateVariantTable($conn, $tableName);
|
2017-05-15 23:34:43 +02:00
|
|
|
|
|
|
|
|
|
// Insert data
|
|
|
|
|
$numRows = 4;
|
2017-10-04 23:22:56 +02:00
|
|
|
|
for ($i = 1; $i <= $numRows; $i++) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
InsertData($conn, $tableName, $i);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
}
|
|
|
|
|
|
2017-05-15 23:34:43 +02:00
|
|
|
|
// Read data
|
|
|
|
|
Fetch($conn, $tableName, $numRows);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
sqlsrv_close($conn);
|
|
|
|
|
} catch (Exception $e) {
|
2017-05-15 23:34:43 +02:00
|
|
|
|
echo $e->getMessage();
|
|
|
|
|
}
|
|
|
|
|
echo "\nDone\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
endTest("sqlsrv_simple_fetch_variants");
|
2017-05-15 23:34:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RunTest();
|
|
|
|
|
|
|
|
|
|
?>
|
|
|
|
|
--EXPECT--
|
2017-05-17 01:46:55 +02:00
|
|
|
|
Comparing data in row 1
|
2017-05-15 23:34:43 +02:00
|
|
|
|
Comparing data in row 2
|
|
|
|
|
Comparing data in row 3
|
|
|
|
|
Comparing data in row 4
|
|
|
|
|
Number of rows fetched: 4
|
|
|
|
|
|
|
|
|
|
Done
|
2017-10-04 23:22:56 +02:00
|
|
|
|
Test "sqlsrv_simple_fetch_variants" completed successfully.
|