[
https://issues.apache.org/jira/browse/DRILL-2420?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Barclay (Drill) updated DRILL-2420:
------------------------------------------
Description:
Drill's implementation of {{DatabaseMetaData.getColumns(...)}} (currently at
{{org.apache.drill.jdbc.MetaImpl.getColumns()}}) doesn't match the JDBC
specification (the Javadoc documentation for
{{DatabaseMetaData.getColumns(...)}} (as of Java 7)). In the returned
{{ResultSet}}:
1. -Column {{DATA_TYPE}} is of type {{VARCHAR}} (containing the type name)
rather than being of type {{INTEGER}} (containing values per
{{java.sql.Types.*}}).- \[Fixed by DRILL-2128.\]
2. -Column {{TYPE_NAME}} is missing.- \[Fixed by DRILL-2128.\]
3. -Column {{COLUMN_SIZE}} is missing.- \[Fixed by DRILL-2465.\]
4. -(Columns after {{DATA_TYPE}} are at incorrect indexes.)- \[Fixed by
DRILL-2465.\]
5. -Column {{DECIMAL_DIGITS}} is misnamed {{DECIMAL_PRECISION}}.- \[Fixed by
DRILL-2465.\]
6. -Column {{REMARKS}} is an empty string, but probably should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
7. -Column {{COLUMN_DEF}} is an empty string, but probably should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
8. -Column {{CHAR_OCTET_LENGTH}} is always {{4}}, but should be "the maximum
number of bytes in the _column_" for character types.- \[Fixed by DRILL-2465.\]
8.5 Column {{IS_NULLABLE}} seems to always return 'NO'.
9. -Column {{ORDINAL_POSITION}} is always {{1}}, but should be the index of the
specific column.- \[Fixed by DRILL-2465.\]
10. Column {{IS_NULLABLE}} is {{'YES'}}, which doesn't seem to correspond to
the value for {{NULLABLE}} ({{DatabaseMetaData.columnNullableUnknown}}).
11. -Column {{SCOPE_CATALOG}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
12. -Column {{SCOPE_SCHEMA}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
13. -Column {{SCOPE_TABLE}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
14. -Column {{SOURCE_DATA_TYPE}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
Additional bugs or suspect behavior:
- {{DECIMAL_DIGITS}}/{{DECIMAL_PRECISION}} is {{-1}} when it should be {{NULL}}
(when not applicable).
- -{{NUM_PREC_RADIX}} is {{-1}} when it probably should be {{NULL}} (when not
applicable).- \[Fixed by DRILL-2465.\]
(Other columns to check:
Re {{BUFFER_LENGTH}}, {{SQL_DATA_TYPE}}, and {{SQL_DATETIME_SUB}}: When JDBC
says a column is not used, are there any requirements on the values (e.g.,
being {{NULL}})?
Re {{IS_AUTOINCREMENT}}: Do we know that a column is not auto-incremented? If
so, the value could be {{'NO'}} rather than an empty string.
Re {{IS_GENERATEDCOLUMN}}: Do we know that a column is not generated? If so,
the value could be {{'NO'}} rather than an empty string.
(Re {{NULLABLE}} : Do know whether a column is nullable or not? If so, we
could return the specific answer rather that just saying that it's unknown.)
was:
Drill's implementation of {{DatabaseMetaData.getColumns(...)}} (currently at
{{org.apache.drill.jdbc.MetaImpl.getColumns()}}) doesn't match the JDBC
specification (the Javadoc documentation for
{{DatabaseMetaData.getColumns(...)}} (as of Java 7)). In the returned
{{ResultSet}}:
1. -Column {{DATA_TYPE}} is of type {{VARCHAR}} (containing the type name)
rather than being of type {{INTEGER}} (containing values per
{{java.sql.Types.*}}).- \[Fixed by DRILL-2128.\]
2. -Column {{TYPE_NAME}} is missing.- \[Fixed by DRILL-2128.\]
3. -Column {{COLUMN_SIZE}} is missing.- \[Fixed by DRILL-2465.\]
4. -(Columns after {{DATA_TYPE}} are at incorrect indexes.)- \[Fixed by
DRILL-2465.\]
5. -Column {{DECIMAL_DIGITS}} is misnamed {{DECIMAL_PRECISION}}.- \[Fixed by
DRILL-2465.\]
6. -Column {{REMARKS}} is an empty string, but probably should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
7. -Column {{COLUMN_DEF}} is an empty string, but probably should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
8. -Column {{CHAR_OCTET_LENGTH}} is always {{4}}, but should be "the maximum
number of bytes in the _column_" for character types.- \[Fixed by DRILL-2465.\]
8.5 Column {{IS_NULLABLE}} seems to always return 'NO'.
9. -Column {{ORDINAL_POSITION}} is always {{1}}, but should be the index of the
specific column.- \[Fixed by DRILL-2465.\]
10. Column {{IS_NULLABLE}} is {{'YES'}}, which doesn't seem to correspond to
the value for {{NULLABLE}} ({{DatabaseMetaData.columnNullableUnknown}}).
11. -Column {{SCOPE_CATALOG}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
12. -Column {{SCOPE_SCHEMA}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
13. -Column {{SCOPE_TABLE}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
14. -Column {{SOURCE_DATA_TYPE}} is an empty string, but should be {{NULL}}.-
\[Fixed by DRILL-2465.\]
Additional bugs or suspect behavior:
- {{DECIMAL_DIGITS}}/{{DECIMAL_PRECISION}} is {{-1}} when it should be {{NULL}}
(when not applicable).
- -{{NUM_PREC_RADIX}} is {{-1}} when it probably should be {{NULL}} (when not
applicable).- \[Fixed by DRILL-2465.\]
(Other columns to check:
Re {{BUFFER_LENGTH}}, {{SQL_DATA_TYPE}}, and {{SQL_DATETIME_SUB}}: When JDBC
says a column is not used, are there any requirements on the values (e.g.,
being {{NULL}})?
Re {{IS_AUTOINCREMENT}}: Do we know that a column is not auto-incremented? If
so, the value could be {{'NO'}} rather than an empty string.
Re {{IS_GENERATEDCOLUMN}}: Do we know that a column is not generated? If so,
the value could be {{'NO'}} rather than an empty string.
Re {{NULLABLE}} (: Do know whether a column is nullable or not? If so, we
could return the specific answer rather that just saying that it's unknown.
)
> Identify, fix DatabaseMetaData.getColumns() bugs [umbrella]
> -----------------------------------------------------------
>
> Key: DRILL-2420
> URL: https://issues.apache.org/jira/browse/DRILL-2420
> Project: Apache Drill
> Issue Type: Task
> Components: Client - JDBC, Metadata
> Reporter: Daniel Barclay (Drill)
> Assignee: Daniel Barclay (Drill)
> Fix For: 1.1.0
>
>
> Drill's implementation of {{DatabaseMetaData.getColumns(...)}} (currently at
> {{org.apache.drill.jdbc.MetaImpl.getColumns()}}) doesn't match the JDBC
> specification (the Javadoc documentation for
> {{DatabaseMetaData.getColumns(...)}} (as of Java 7)). In the returned
> {{ResultSet}}:
> 1. -Column {{DATA_TYPE}} is of type {{VARCHAR}} (containing the type name)
> rather than being of type {{INTEGER}} (containing values per
> {{java.sql.Types.*}}).- \[Fixed by DRILL-2128.\]
> 2. -Column {{TYPE_NAME}} is missing.- \[Fixed by DRILL-2128.\]
> 3. -Column {{COLUMN_SIZE}} is missing.- \[Fixed by DRILL-2465.\]
> 4. -(Columns after {{DATA_TYPE}} are at incorrect indexes.)- \[Fixed by
> DRILL-2465.\]
> 5. -Column {{DECIMAL_DIGITS}} is misnamed {{DECIMAL_PRECISION}}.- \[Fixed by
> DRILL-2465.\]
> 6. -Column {{REMARKS}} is an empty string, but probably should be {{NULL}}.-
> \[Fixed by DRILL-2465.\]
> 7. -Column {{COLUMN_DEF}} is an empty string, but probably should be
> {{NULL}}.- \[Fixed by DRILL-2465.\]
> 8. -Column {{CHAR_OCTET_LENGTH}} is always {{4}}, but should be "the maximum
> number of bytes in the _column_" for character types.- \[Fixed by
> DRILL-2465.\]
> 8.5 Column {{IS_NULLABLE}} seems to always return 'NO'.
> 9. -Column {{ORDINAL_POSITION}} is always {{1}}, but should be the index of
> the specific column.- \[Fixed by DRILL-2465.\]
> 10. Column {{IS_NULLABLE}} is {{'YES'}}, which doesn't seem to correspond to
> the value for {{NULLABLE}} ({{DatabaseMetaData.columnNullableUnknown}}).
> 11. -Column {{SCOPE_CATALOG}} is an empty string, but should be {{NULL}}.-
> \[Fixed by DRILL-2465.\]
> 12. -Column {{SCOPE_SCHEMA}} is an empty string, but should be {{NULL}}.-
> \[Fixed by DRILL-2465.\]
> 13. -Column {{SCOPE_TABLE}} is an empty string, but should be {{NULL}}.-
> \[Fixed by DRILL-2465.\]
> 14. -Column {{SOURCE_DATA_TYPE}} is an empty string, but should be {{NULL}}.-
> \[Fixed by DRILL-2465.\]
> Additional bugs or suspect behavior:
> - {{DECIMAL_DIGITS}}/{{DECIMAL_PRECISION}} is {{-1}} when it should be
> {{NULL}} (when not applicable).
> - -{{NUM_PREC_RADIX}} is {{-1}} when it probably should be {{NULL}} (when not
> applicable).- \[Fixed by DRILL-2465.\]
> (Other columns to check:
> Re {{BUFFER_LENGTH}}, {{SQL_DATA_TYPE}}, and {{SQL_DATETIME_SUB}}: When JDBC
> says a column is not used, are there any requirements on the values (e.g.,
> being {{NULL}})?
> Re {{IS_AUTOINCREMENT}}: Do we know that a column is not auto-incremented?
> If so, the value could be {{'NO'}} rather than an empty string.
> Re {{IS_GENERATEDCOLUMN}}: Do we know that a column is not generated? If
> so, the value could be {{'NO'}} rather than an empty string.
> (Re {{NULLABLE}} : Do know whether a column is nullable or not? If so, we
> could return the specific answer rather that just saying that it's unknown.)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)