microsoft/mssql-jdbc

getFunctionColumns() is missing SPECIFIC_NAME column

Impakt opened this issue · 6 comments

according to the Javadocs the getFunctionColumns method is supposed to return a column called SPECIFIC_NAME, but the driver doesn't include it, see here

HI @Impakt

We will investigate the missing column and get back to you soon!

ulvii commented

Hi @Impakt ,

I looked into the issue and agree that the returned result set does not contain SPECIFIC_NAME column when it is supposed to.

Please note that SQL Server function names are unique within their schema and FUNCTION_NAME is always the same as SPECIFIC_NAME. For this reason, sp_sproc_columns (SQL Server procedure that gets invoked when you call getFunctionColumns) does not return SPECIFIC_NAME column in the result set. Would using FUNCTION_NAME instead of SPECIFIC_NAME resolve the issue for you?

I also investigated if the driver can duplicate FUNCTION_NAME column and append it to the result set as SPECIFIC_NAME. To achieve this, the driver would have to create a temporary table to join the output of sp_sproc_columns with the new SPECIFIC_NAME column, which obviously would result in a performance/memory overhead to get redundant information.

Please let us know what you think.

We changed our code to not assume that the 'column' would be there. It sounds like a lot of work to add the column to the result set so maybe just leave it out

ulvii commented

Hi @Impakt ,

Glad you could find a workaround. Please let us know if you have any other questions.

getFunctions() also misses the column.

The SPECIFIC_NAME is important that it could(should) be uses the uniqueness of the result.