jaybird
jaybird copied to clipboard
getProcedureColumns metadata wrong description of RETURNS columns [JDBC229]
Submitted by: @mrotteveel
Is related to JDBC296 Relate to JDBC297 Relate to JDBC350
The AbstractDatabaseMetaData.getProcedureColumns() metadata describes the RETURNS columns as DatabaseMetaData.procedureColumnOut, this is conceptually incorrect as Firebird does not support OUT parameters. The correct description should be DatabaseMetaData.procedureColumnResult (or maybe DatabaseMetaData.procedureColumnReturn for executable procedures with a single return value).
Related to this: the JDBC javadoc states that the order of the getProcedureColumns() method should be: 1) The (single) return value (if any) with ORDINAL_POSITION 0 2) The procedure parameters (if any) with the ORDINAL_POSITION in order (starting with 1) 3) The (resultset) columns (if any) with the ORDINAL_POSITION in order (starting with 1) Currently Jaybird returns the columns first, and then the parameters.
This description also potentially clashes with the information provided by the CallableStatement implementation of getParameterMetaData() (that, or changing this will clash).
Also research is needed if we need to differentiate between 1) Executable procedures 1a) With single return value 1b) With multiple return values 2) Selectable procedures
Deciding if something is executable or selectable is only available from ODS 11.1 or higher.
Modified by: @mrotteveel
description: The AbstractDatabaseMetaData.getProcedureColumns() metadata describes the RETURNS columns as DatabaseMetaData.procedureColumnOut, this is conceptually incorrect as Firebird does not support OUT parameters. The correct description should be DatabaseMetaData.procedureColumnReturn (or maybe DatabaseMetaData.procedureColumnReturn for executable procedures with a single return value).
Related to this: the JDBC javadoc states that the order of the getProcedureColumns() method should be: 1) The (single) return value (if any) with ORDINAL_POSITION 0 2) The procedure parameters (if any) with the ORDINAL_POSITION in order (starting with 1) 3) The (resultset) columns (if any) with the ORDINAL_POSITION in order (starting with 1) Currently Jaybird returns the columns first, and then the parameters.
This description also potentially clashes with the information provided by the CallableStatement implementation of getParameterMetaData() (that, or changing this will clash).
Also research is needed if we need to differentiate between 1) Executable procedures 1a) With single return value 1b) With multiple return values 2) Selectable procedures
Deciding if something is executable or selectable is only available from ODS 11.1 or higher.
=>
The AbstractDatabaseMetaData.getProcedureColumns() metadata describes the RETURNS columns as DatabaseMetaData.procedureColumnOut, this is conceptually incorrect as Firebird does not support OUT parameters. The correct description should be DatabaseMetaData.procedureColumnResult (or maybe DatabaseMetaData.procedureColumnReturn for executable procedures with a single return value).
Related to this: the JDBC javadoc states that the order of the getProcedureColumns() method should be: 1) The (single) return value (if any) with ORDINAL_POSITION 0 2) The procedure parameters (if any) with the ORDINAL_POSITION in order (starting with 1) 3) The (resultset) columns (if any) with the ORDINAL_POSITION in order (starting with 1) Currently Jaybird returns the columns first, and then the parameters.
This description also potentially clashes with the information provided by the CallableStatement implementation of getParameterMetaData() (that, or changing this will clash).
Also research is needed if we need to differentiate between 1) Executable procedures 1a) With single return value 1b) With multiple return values 2) Selectable procedures
Deciding if something is executable or selectable is only available from ODS 11.1 or higher.
Modified by: @mrotteveel
assignee: Roman Rokytskyy [ rrokytskyy ] => Mark Rotteveel [ avalanche1979 ]
Modified by: @mrotteveel
Fix Version: Jaybird 2.3 [ 10440 ]
Modified by: @mrotteveel
Fix Version: Jaybird 3.1 [ 10441 ]
Fix Version: Jaybird 3.0 [ 10440 ] =>
Modified by: @mrotteveel
Fix Version: Jaybird 5 [ 10871 ]
Fix Version: Jaybird 4 [ 10441 ] =>