Daniel Barclay (Drill) created DRILL-2420:
---------------------------------------------

             Summary: Identify and fix DatabaseMetaData.getColumns() bugs 
[umbrella/tracking bug]
                 Key: DRILL-2420
                 URL: https://issues.apache.org/jira/browse/DRILL-2420
             Project: Apache Drill
          Issue Type: Bug
          Components: Client - JDBC, Metadata
            Reporter: Daniel Barclay (Drill)
            Assignee: Daniel Barclay (Drill)


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.*}}).
2. Column {{TYPE_NAME}} is missing.
3. Column {{COLUMN_SIZE}} is missing.
4. (Columns after {{DATA_TYPE}} are at incorrect indexes.)
5. Column {{DECIMAL_DIGITS}} is misnamed {{DECIMAL_PRECISION}}.
6. Column {{REMARKS}} is an empty string, but probably should be {{NULL}}.
7. Column {{COLUMN_DEF}} is an empty string, but probably should be {{NULL}}.
8. Column {{CHAR_OCTET_LENGTH}} is always {{4}}, but should be "the maximum 
number of bytes in the _column_" for character types .
9. Column {{ORDINAL_POSITION}} is always {{1}}, but should be the index of the 
specific column.
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}}.
12. Column {{SCOPE_SCHEMA}} is an empty string, but should be {{NULL}}.
13. Column {{SCOPE_TABLE}} is an empty string, but should be {{NULL}}.
14. Column {{SOURCE_DATA_TYPE}} is an empty string, but should be {{NULL}}.

(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}} (and {{IS_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)

Reply via email to