Issue Details (XML | Word | Printable)

Key: JDBC-229
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Mark Rotteveel
Reporter: Mark Rotteveel
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Jaybird JDBC Driver

getProcedureColumns metadata wrong description of RETURNS columns

Created: 27/Jan/12 01:54 PM   Updated: 09/Jun/18 12:48 PM
Component/s: JDBC driver
Affects Version/s: Jaybird 2.1.6, Jaybird 2.2
Fix Version/s: Jaybird 5

Issue Links:
Relate


 Description  « Hide
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.

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Mark Rotteveel made changes - 27/Jan/12 01:55 PM
Field Original Value New Value
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.
Mark Rotteveel made changes - 19/Jan/13 11:50 AM
Assignee Roman Rokytskyy [ rrokytskyy ] Mark Rotteveel [ avalanche1979 ]
Mark Rotteveel made changes - 19/Jan/13 11:51 AM
Fix Version/s Jaybird 2.3 [ 10440 ]
Mark Rotteveel made changes - 19/Jan/13 11:51 AM
Link This issue is related to JDBC-296 [ JDBC-296 ]
Mark Rotteveel made changes - 19/Jan/13 12:04 PM
Link This issue relate to JDBC-297 [ JDBC-297 ]
Mark Rotteveel made changes - 27/Apr/14 02:57 PM
Link This issue relate to JDBC-350 [ JDBC-350 ]
Mark Rotteveel made changes - 06/Apr/16 09:02 AM
Fix Version/s Jaybird 3.1 [ 10441 ]
Fix Version/s Jaybird 3.0 [ 10440 ]
Mark Rotteveel made changes - 09/Jun/18 12:48 PM
Fix Version/s Jaybird 5 [ 10871 ]
Fix Version/s Jaybird 4 [ 10441 ]