Skip to content

PreparedStatement.getParameterMetaData has problems with encyrpted connections #493

@gs-rezaem

Description

@gs-rezaem

Driver version or jar name

HEAD

SQL Server version

2016

Client operating system

Win 7

Java/JVM version

1.8.0_xxx

Table schema

from the driver test cases. see code below.

Problem description

calling PreparedStatment.getParameterMetaData throws this exception:
com.microsoft.sqlserver.jdbc.SQLServerException: Operand type clash: void type is incompatible with date encrypted with (encryption_type = 'RANDOMIZED', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'JDBC_CEK', column_encryption_key_database_name = 'XYZ')

Expected behavior and actual behavior

no exception should be thrown

Repro code

add one line to the existing jdbc test cases. In AESetup.java, add the last line here:

    protected static void populateDateNormalCase(LinkedList<Object> dateValues) throws SQLException {
        String sql = "insert into " + dateTable + " values( " + "?,?,?," + "?,?,?," + "?,?,?," + "?,?,?," + "?,?,?," + "?,?,?" + ")";

        pstmt = (SQLServerPreparedStatement) Util.getPreparedStmt(con, sql, stmtColEncSetting);
        ParameterMetaData parameterMetaData = pstmt.getParameterMetaData();

Metadata

Metadata

Assignees

Labels

EnhancementAn enhancement to the driver. Lower priority than bugs.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions