Skip to content

Commit

Permalink
Merge pull request #1503 from microsoft/dev
Browse files Browse the repository at this point in the history
Merge to master for 5.12.0 release
  • Loading branch information
absci committed Jan 31, 2024
2 parents 00faac1 + e253bcd commit 98ff5a8
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 40 deletions.
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
4 changes: 1 addition & 3 deletions source/shared/core_stmt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions source/shared/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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
34 changes: 0 additions & 34 deletions test/functional/sqlsrv/sqlsrv_github_1448.phpt

This file was deleted.

0 comments on commit 98ff5a8

Please sign in to comment.