зеркало из https://github.com/microsoft/msphpsql.git
Merge pull request #1503 from microsoft/dev
Merge to master for 5.12.0 release
This commit is contained in:
Коммит
98ff5a8bd4
35
CHANGELOG.md
35
CHANGELOG.md
|
@ -3,6 +3,41 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
|
||||
## 5.12.0 - 2024-01-31
|
||||
Updated PECL release packages. Here is the list of updates:
|
||||
|
||||
### Added
|
||||
- Support for PHP 8.3
|
||||
- Support for Alpine 3.19
|
||||
|
||||
### Removed
|
||||
- Support for PHP 8.0
|
||||
- Support for Ubuntu 18.04
|
||||
- Support for Alpine 3.15
|
||||
|
||||
### Fixed
|
||||
- Update connection string keywords set function (#1484)
|
||||
- Fix error throw for multiple result sets (#1485)
|
||||
- Fix invalid precision error (#1497)
|
||||
|
||||
### Limitations
|
||||
- No support for inout / output params when using sql_variant type
|
||||
- No support for inout / output params when formatting decimal values
|
||||
- In Linux and macOS, setlocale() only takes effect if it is invoked before the first connection. Attempting to set the locale after connecting will not work
|
||||
- Always Encrypted requires [MS ODBC Driver 17+](https://docs.microsoft.com/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server)
|
||||
- Only Windows Certificate Store and Azure Key Vault are supported. Custom Keystores are not yet supported
|
||||
- Issue [#716](https://github.com/Microsoft/msphpsql/issues/716) - With Always Encrypted enabled, named parameters in subqueries are not supported
|
||||
- Issue [#1050](https://github.com/microsoft/msphpsql/issues/1050) - With Always Encrypted enabled, insertion requires the column list for any tables with identity columns
|
||||
- [Always Encrypted limitations](https://docs.microsoft.com/sql/connect/php/using-always-encrypted-php-drivers#limitations-of-the-php-drivers-when-using-always-encrypted)
|
||||
|
||||
### Known Issues
|
||||
- This release requires ODBC Driver 17.4.2 or above. Otherwise, a warning about failing to set an attribute may be suppressed when using an older ODBC driver.
|
||||
- Connection pooling on Linux or macOS is not recommended with [unixODBC](http://www.unixodbc.org/) < 2.3.7
|
||||
- When pooling is enabled in Linux or macOS
|
||||
- unixODBC <= 2.3.4 (Linux and macOS) might not return proper diagnostic information, such as error messages, warnings and informative messages
|
||||
- due to this unixODBC bug, fetch large data (such as xml, binary) as streams as a workaround. See the examples [here](https://github.com/Microsoft/msphpsql/wiki/Features#pooling)
|
||||
|
||||
|
||||
## 5.12.0-beta1 - 2023-12-08
|
||||
Updated PECL release packages. Here is the list of updates:
|
||||
|
||||
|
|
|
@ -392,6 +392,7 @@ void core_sqlsrv_bind_param( _Inout_ sqlsrv_stmt* stmt, _In_ SQLUSMALLINT param_
|
|||
} else {
|
||||
SQLSRV_ASSERT(false, "sqlsrv_params_container::insert_param - Invalid parameter direction.");
|
||||
}
|
||||
|
||||
stmt->params_container.insert_param(param_num, new_param);
|
||||
param_ptr = new_param;
|
||||
new_param.transferred();
|
||||
|
@ -2508,9 +2509,6 @@ void sqlsrv_param::bind_param(_Inout_ sqlsrv_stmt* stmt)
|
|||
}
|
||||
|
||||
core::SQLBindParameter(stmt, param_pos + 1, direction, c_data_type, sql_data_type, column_size, decimal_digits, buffer, buffer_length, &strlen_or_indptr);
|
||||
if (!stmt->conn->ce_option.enabled && !stmt->format_decimals) {
|
||||
sql_data_type = SQL_UNKNOWN_TYPE;
|
||||
}
|
||||
}
|
||||
|
||||
void sqlsrv_param::init_data_from_zval(_Inout_ sqlsrv_stmt* stmt)
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#define SQLVERSION_BUILD 0
|
||||
|
||||
// For previews, set this constant to 1, 2 and so on. Otherwise, set it to 0
|
||||
#define PREVIEW 1
|
||||
#define PREVIEW 0
|
||||
#define SEMVER_PRERELEASE
|
||||
|
||||
// Semantic versioning build metadata, build meta data is not counted in precedence order.
|
||||
|
@ -59,7 +59,7 @@
|
|||
#define _FILEVERSION SQLVERSION_MAJOR,SQLVERSION_MINOR,SQLVERSION_PATCH,SQLVERSION_BUILD
|
||||
|
||||
// PECL package version ('-' or '+' is not allowed) - to support Pickle do not use macros below
|
||||
#define PHP_SQLSRV_VERSION "5.12.0beta1"
|
||||
#define PHP_PDO_SQLSRV_VERSION "5.12.0beta1"
|
||||
#define PHP_SQLSRV_VERSION "5.12.0"
|
||||
#define PHP_PDO_SQLSRV_VERSION "5.12.0"
|
||||
|
||||
#endif // VERSION_H
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
--TEST--
|
||||
HY104 Invalid precision value when reusing prepared statement
|
||||
--SKIPIF--
|
||||
<?php require('skipif_versions_old.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
set_time_limit(0);
|
||||
sqlsrv_configure('WarningsReturnAsErrors', 0);
|
||||
sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
|
||||
|
||||
require_once('MsCommon.inc');
|
||||
|
||||
$conn = connect(array('CharacterSet'=>'UTF-8'));
|
||||
if (!$conn) {
|
||||
fatalError("Failed to connect");
|
||||
}
|
||||
|
||||
$tableName = 'php_test_table';
|
||||
$column = array(new AE\ColumnMeta("VARCHAR(8000)", "TestColumn", "NULL"));
|
||||
|
||||
$stmt = AE\createTable($conn, $tableName, $column);
|
||||
if (!$stmt) {
|
||||
fatalError("Failed to create table $tableName\n");
|
||||
}
|
||||
|
||||
$query = "INSERT INTO $tableName (TestColumn) VALUES (?)";
|
||||
$parameterValue = "Test value.";
|
||||
$parameterReference[0] = [ & $parameterValue, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR('8000') ];
|
||||
$queryHandle = sqlsrv_prepare($conn, $query, $parameterReference);
|
||||
|
||||
$r1 = sqlsrv_execute($queryHandle);
|
||||
if ($r1 === false) {
|
||||
print_r(sqlsrv_errors(SQLSRV_ERR_ALL));
|
||||
}
|
||||
|
||||
$r2 = sqlsrv_execute($queryHandle);
|
||||
if ($r2 === false) {
|
||||
print_r(sqlsrv_errors(SQLSRV_ERR_ALL));
|
||||
}
|
||||
|
||||
dropTable($conn, $tableName);
|
||||
sqlsrv_close($conn);
|
||||
|
||||
echo "Done\n";
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
Done
|
|
@ -1,34 +0,0 @@
|
|||
--TEST--
|
||||
Test for Github Issue 1448
|
||||
--DESCRIPTION--
|
||||
Prepare and execute with int, then execute with string caused "Invalid character value for cast specification" error.
|
||||
Repro script provided by thsmrtone1
|
||||
--FILE--
|
||||
<?php
|
||||
sqlsrv_configure( 'WarningsReturnAsErrors', 0 );
|
||||
sqlsrv_configure( 'LogSeverity', SQLSRV_LOG_SEVERITY_ALL );
|
||||
|
||||
require_once( 'MsCommon.inc' );
|
||||
$conn = Connect();
|
||||
if( !$conn ) {
|
||||
var_dump( sqlsrv_errors() );
|
||||
die( "sqlsrv_connect failed." );
|
||||
}
|
||||
|
||||
sqlsrv_query($conn, "CREATE TABLE test1448 (testCol nvarchar(50) NULL)");
|
||||
|
||||
$v0 = 1000;
|
||||
$stmt = sqlsrv_prepare($conn, 'INSERT INTO [test1448] (testCol) VALUES (?);', [&$v0]);
|
||||
sqlsrv_execute($stmt);
|
||||
|
||||
$v0 = 'abcd';
|
||||
sqlsrv_execute($stmt);
|
||||
|
||||
$error = sqlsrv_errors(SQLSRV_ERR_ERRORS);
|
||||
var_dump($error);
|
||||
|
||||
dropTable($conn, "test1448");
|
||||
sqlsrv_close($conn);
|
||||
?>
|
||||
--EXPECT--
|
||||
NULL
|
Загрузка…
Ссылка в новой задаче