jaybird icon indicating copy to clipboard operation
jaybird copied to clipboard

getProcedureColumns metadata wrong description of RETURNS columns [JDBC229]

Open firebird-automations opened this issue 13 years ago • 8 comments

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.

firebird-automations avatar Jan 27 '12 15:01 firebird-automations

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.

firebird-automations avatar Jan 27 '12 15:01 firebird-automations

Modified by: @mrotteveel

assignee: Roman Rokytskyy [ rrokytskyy ] => Mark Rotteveel [ avalanche1979 ]

firebird-automations avatar Jan 19 '13 13:01 firebird-automations

Modified by: @mrotteveel

Fix Version: Jaybird 2.3 [ 10440 ]

firebird-automations avatar Jan 19 '13 13:01 firebird-automations

Modified by: @mrotteveel

Link: This issue is related to JDBC296 [ JDBC296 ]

firebird-automations avatar Jan 19 '13 13:01 firebird-automations

Modified by: @mrotteveel

Link: This issue relate to JDBC297 [ JDBC297 ]

firebird-automations avatar Jan 19 '13 14:01 firebird-automations

Modified by: @mrotteveel

Link: This issue relate to JDBC350 [ JDBC350 ]

firebird-automations avatar Apr 27 '14 17:04 firebird-automations

Modified by: @mrotteveel

Fix Version: Jaybird 3.1 [ 10441 ]

Fix Version: Jaybird 3.0 [ 10440 ] =>

firebird-automations avatar Apr 06 '16 12:04 firebird-automations

Modified by: @mrotteveel

Fix Version: Jaybird 5 [ 10871 ]

Fix Version: Jaybird 4 [ 10441 ] =>

firebird-automations avatar Jun 09 '18 15:06 firebird-automations