Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

getProcedureColumns metadata wrong description of RETURNS columns [JDBC229] #278

Open
firebird-automations opened this issue Jan 27, 2012 · 8 comments

Comments

@firebird-automations
Copy link

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
Copy link
Author

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
Copy link
Author

Modified by: @mrotteveel

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

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Fix Version: Jaybird 2.3 [ 10440 ]

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Link: This issue is related to JDBC296 [ JDBC296 ]

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Link: This issue relate to JDBC297 [ JDBC297 ]

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Link: This issue relate to JDBC350 [ JDBC350 ]

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Fix Version: Jaybird 3.1 [ 10441 ]

Fix Version: Jaybird 3.0 [ 10440 ] =>

@firebird-automations
Copy link
Author

Modified by: @mrotteveel

Fix Version: Jaybird 5 [ 10871 ]

Fix Version: Jaybird 4 [ 10441 ] =>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment