[ https://issues.apache.org/jira/browse/DRILL-2763?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Barclay (Drill) updated DRILL-2763: ------------------------------------------ Description: [TBD: intro.] A. {{COLUMNS}} columns existing in Drill that are not compliant with standard SQL: 1. *TDB*: {{TABLE_NAME}} holds the original form of the identifier but _might_ need to be uppercased here to be compliantt (or possibly internal matching queries (e.g., for JDBC's getColumns(...)) could be case-insensitive). 2. *TDB*: {{COLUMN_NAME}} holds the original form of the identifier but _might_ need to be uppercased here to be compliant (or possibly internal matching queries (e.g., for JDBC's getColumns(...)) could be case-insensitive). 3. {{ORDINAL_POSITION}} values are zero-based rather than being one-based. 4. {{CHARACTER_MAXIMUM_LENGTH}}, {{NUMERIC_PRECISION_RADIX}}, {{NUMERIC_SCALE}}, and {{NUMERIC_PRECISION}} use {{-1}} instead of {{NULL}} for the "not-applicable" case. 5. {{NUMERIC_PRECISION}} for non-{{DECIMAL}}/{{NUMERIC}} exact numeric types (e.g., {{INTEGER}}) and approximate numeric types (e.g., {{DOUBLE}}) is {{-1}} (logical null) instead of the specified values. 6. {{NUMERIC_SCALE}} for non-{{DECIMAL}}/{{NUMERIC}} exact numeric types is {{-1}} instead of {{0}}. 7. {{NUMERIC_SCALE}} for approximate numeric types is {{-1}} instead of the number of bits of precision (24 and 53(?)). 8. {{NUMERIC_PRECISION_RADIX}} for integral exact numeric types is {{-1}} instead of {{10}}. 9. {{NUMERIC_PRECISION_RADIX}} for approximate exact numeric types is {{-1}} instead of {{2}}. 10. {{CHARACTER_MAXIMUM_LENGTH}} for types {{CHAR}}, {{BINARY}}, and {{VAR BINARY}} is {{-1}} instead of the corresponding length. 11. {{DATA_TYPE}} values for {{INTERVAL}} with {{YEAR}} and/or {{MONTH}} and for {{INTERVAL}} with {{DAY}}, {{HOUR}}, {{MINUTE}}, and/or {{SECOND}} are "{{INTERVAL_YEAR_MONTH}}" and "{{INTERVAL_DATA_TIME}}", respectively, instead of the data type name "{{INTERVAL}}". 12. {{DATA_TYPE}} values for non-atomic types seem to be type descriptors ({{<data type>}} syntax; e.g., "{{VARCHAR(65536) ARRAY}}") instead of just data type names (e.g., "{{ARRAY}}"). B. Standard {{COLUMNS}} columns that don't exist in Drill and that probably are more relevant: 1. {{CHARACTER_OCTET_LENGTH}} does not exist. (Drill's JDBC driver needs to return this, and currently tries to compute it itself.) 2. {{DATETIME_PRECISION}} does not exist. (Drill's JDBC driver probably needs it to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly.) 3. {{INTERVAL_TYPE}} does not exist. (Drill's JDBC driver needs this to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly once {{COLUMNS.DATA_TYPE}} is correct.} 4. {{INTERVAL_PRECISION}} does not exist. (Drill's JDBC driver needs this to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly.) [TBD] 5. {{MAXIMUM_CARDINALITY}} does not exist. (This might be relevant for JDBC's {{getColumns()}}'s {{COLUMN_SIZE}}.) C. Standard {{COLUMNS}} columns that don't exist in Drill but are less likely to be relevant (listed for completeness): - {{COLUMN_DEFAULT}} - {{CHARACTER_SET_CATALOG}} - {{CHARACTER_SET_SCHEMA}} - {{CHARACTER_SET_NAME}} - {{COLLATION_CATALOG}} - {{COLLATION_SCHEMA}} - {{COLLATION_NAME}} - {{DOMAIN_CATALOG}} - {{DOMAIN_SCHEMA}} - {{DOMAIN_NAME}} - {{UDT_CATALOG}} - {{UDT_SCHEMA}} - {{UDT_NAME}} - {{SCOPE_CATALOG}} - {{SCOPE_SCHEMA}} - {{SCOPE_NAME}} - {{DTD_IDENTIFIER}} - {{IS_SELF_REFERENCING}} - {{IS_IDENTITY}} - {{IDENTITY_GENERATION}} - {{IDENTITY_START}} - {{IDENTITY_INCREMENT}} - {{IDENTITY_MAXIMUM}} - {{IDENTITY_MINIMUM}} - {{IDENTITY_CYCLE}} - {{IS_GENERATED}} - {{GENERATION_EXPRESSION}} - {{IS_SYSTEM_TIME_PERIOD_START}} - {{IS_SYSTEM_TIME_PERIOD_END}} - {{SYSTEM_TIME_PERIOD_TIMESTAMP_GENERATION}} - {{IS_UPDATABLE}} - {{DECLARED_DATA_TYPE}} - {{DECLARED_NUMERIC_PRECISION}} - {{DECLARED_NUMERIC_SCALE}} was: [TBD: intro.] A. {{COLUMNS}} columns existing in Drill that are not compliant with standard SQL: 1. *TDB*: {{TABLE_NAME}} holds the original form of the identifier but _might_ need to be uppercased here to be compliantt (or possibly internal matching queries (e.g., for JDBC's getColumns(...)) could be case-insensitive). 2. *TDB*: {{COLUMN_NAME}} holds the original form of the identifier but _might_ need to be uppercased here to be compliant (or possibly internal matching queries (e.g., for JDBC's getColumns(...)) could be case-insensitive). 3. {{ORDINAL_POSITION}} values are zero-based rather than being one-based. 2. {{CHARACTER_MAXIMUM_LENGTH}}, {{NUMERIC_PRECISION_RADIX}}, {{NUMERIC_SCALE}}, and {{NUMERIC_PRECISION}} use {{-1}} instead of {{NULL}} for the "not-applicable" case. 3. {{NUMERIC_PRECISION}} for non-{{DECIMAL}}/{{NUMERIC}} exact numeric types (e.g., {{INTEGER}}) and approximate numeric types (e.g., {{DOUBLE}}) is {{-1}} (logical null) instead of the specified values. 3. {{NUMERIC_SCALE}} for non-{{DECIMAL}}/{{NUMERIC}} exact numeric types is {{-1}} instead of {{0}}. 4. {{NUMERIC_SCALE}} for approximate numeric types is {{-1}} instead of the number of bits of precision (24 and 53(?)). 5. {{NUMERIC_PRECISION_RADIX}} for integral exact numeric types is {{-1}} instead of {{10}}. 6. {{NUMERIC_PRECISION_RADIX}} for approximate exact numeric types is {{-1}} instead of {{2}}. 7. {{CHARACTER_MAXIMUM_LENGTH}} for types {{CHAR}}, {{BINARY}}, and {{VAR BINARY}} is {{-1}} instead of the corresponding length. 8. {{DATA_TYPE}} values for {{INTERVAL}} with {{YEAR}} and/or {{MONTH}} and for {{INTERVAL}} with {{DAY}}, {{HOUR}}, {{MINUTE}}, and/or {{SECOND}} are "{{INTERVAL_YEAR_MONTH}}" and "{{INTERVAL_DATA_TIME}}", respectively, instead of the data type name "{{INTERVAL}}". 9. {{DATA_TYPE}} values for non-atomic types seem to be type descriptors ({{<data type>}} syntax; e.g., "{{VARCHAR(65536) ARRAY}}") instead of just data type names (e.g., "{{ARRAY}}"). B. Standard {{COLUMNS}} columns that don't exist in Drill and that probably are more relevant: 1. {{CHARACTER_OCTET_LENGTH}} does not exist. (Drill's JDBC driver needs to return this, and currently tries to compute it itself.) 2. {{DATETIME_PRECISION}} does not exist. (Drill's JDBC driver probably needs it to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly.) 3. {{INTERVAL_TYPE}} does not exist. (Drill's JDBC driver needs this to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly once {{COLUMNS.DATA_TYPE}} is correct.} 4. {{INTERVAL_PRECISION}} does not exist. (Drill's JDBC driver needs this to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly.) [TBD] 5. {{MAXIMUM_CARDINALITY}} does not exist. (This might be relevant for JDBC's {{getColumns()}}'s {{COLUMN_SIZE}}.) C. Standard {{COLUMNS}} columns that don't exist in Drill but are less likely to be relevant (listed for completeness): - {{COLUMN_DEFAULT}} - {{CHARACTER_SET_CATALOG}} - {{CHARACTER_SET_SCHEMA}} - {{CHARACTER_SET_NAME}} - {{COLLATION_CATALOG}} - {{COLLATION_SCHEMA}} - {{COLLATION_NAME}} - {{DOMAIN_CATALOG}} - {{DOMAIN_SCHEMA}} - {{DOMAIN_NAME}} - {{UDT_CATALOG}} - {{UDT_SCHEMA}} - {{UDT_NAME}} - {{SCOPE_CATALOG}} - {{SCOPE_SCHEMA}} - {{SCOPE_NAME}} - {{DTD_IDENTIFIER}} - {{IS_SELF_REFERENCING}} - {{IS_IDENTITY}} - {{IDENTITY_GENERATION}} - {{IDENTITY_START}} - {{IDENTITY_INCREMENT}} - {{IDENTITY_MAXIMUM}} - {{IDENTITY_MINIMUM}} - {{IDENTITY_CYCLE}} - {{IS_GENERATED}} - {{GENERATION_EXPRESSION}} - {{IS_SYSTEM_TIME_PERIOD_START}} - {{IS_SYSTEM_TIME_PERIOD_END}} - {{SYSTEM_TIME_PERIOD_TIMESTAMP_GENERATION}} - {{IS_UPDATABLE}} - {{DECLARED_DATA_TYPE}} - {{DECLARED_NUMERIC_PRECISION}} - {{DECLARED_NUMERIC_SCALE}} > Implement INFORMATION_SCHEMA.COLUMNS enough for relevant tools > [umbrella/tracking bug] > -------------------------------------------------------------------------------------- > > Key: DRILL-2763 > URL: https://issues.apache.org/jira/browse/DRILL-2763 > Project: Apache Drill > Issue Type: Bug > Components: Storage - Information Schema > Reporter: Daniel Barclay (Drill) > Assignee: Daniel Barclay (Drill) > > [TBD: intro.] > A. {{COLUMNS}} columns existing in Drill that are not compliant with standard > SQL: > 1. *TDB*: {{TABLE_NAME}} holds the original form of the identifier but > _might_ need to be uppercased here to be compliantt (or possibly internal > matching queries (e.g., for JDBC's getColumns(...)) could be > case-insensitive). > 2. *TDB*: {{COLUMN_NAME}} holds the original form of the identifier but > _might_ need to be uppercased here to be compliant (or possibly internal > matching queries (e.g., for JDBC's getColumns(...)) could be > case-insensitive). > 3. {{ORDINAL_POSITION}} values are zero-based rather than being one-based. > 4. {{CHARACTER_MAXIMUM_LENGTH}}, {{NUMERIC_PRECISION_RADIX}}, > {{NUMERIC_SCALE}}, and {{NUMERIC_PRECISION}} use {{-1}} instead of {{NULL}} > for the "not-applicable" case. > 5. {{NUMERIC_PRECISION}} for non-{{DECIMAL}}/{{NUMERIC}} exact numeric types > (e.g., {{INTEGER}}) and approximate numeric types (e.g., {{DOUBLE}}) is > {{-1}} (logical null) instead of the specified values. > 6. {{NUMERIC_SCALE}} for non-{{DECIMAL}}/{{NUMERIC}} exact numeric types is > {{-1}} instead of {{0}}. > 7. {{NUMERIC_SCALE}} for approximate numeric types is {{-1}} instead of the > number of bits of precision (24 and 53(?)). > 8. {{NUMERIC_PRECISION_RADIX}} for integral exact numeric types is {{-1}} > instead of {{10}}. > 9. {{NUMERIC_PRECISION_RADIX}} for approximate exact numeric types is {{-1}} > instead of {{2}}. > 10. {{CHARACTER_MAXIMUM_LENGTH}} for types {{CHAR}}, {{BINARY}}, and {{VAR > BINARY}} is {{-1}} instead of the corresponding length. > 11. {{DATA_TYPE}} values for {{INTERVAL}} with {{YEAR}} and/or {{MONTH}} and > for {{INTERVAL}} with {{DAY}}, {{HOUR}}, {{MINUTE}}, and/or {{SECOND}} are > "{{INTERVAL_YEAR_MONTH}}" and "{{INTERVAL_DATA_TIME}}", respectively, instead > of the data type name "{{INTERVAL}}". > 12. {{DATA_TYPE}} values for non-atomic types seem to be type descriptors > ({{<data type>}} syntax; e.g., "{{VARCHAR(65536) ARRAY}}") instead of just > data type names (e.g., "{{ARRAY}}"). > B. Standard {{COLUMNS}} columns that don't exist in Drill and that probably > are more relevant: > 1. {{CHARACTER_OCTET_LENGTH}} does not exist. (Drill's JDBC driver needs to > return this, and currently tries to compute it itself.) > 2. {{DATETIME_PRECISION}} does not exist. (Drill's JDBC driver probably needs > it to compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly.) > 3. {{INTERVAL_TYPE}} does not exist. (Drill's JDBC driver needs this to > compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly once > {{COLUMNS.DATA_TYPE}} is correct.} > 4. {{INTERVAL_PRECISION}} does not exist. (Drill's JDBC driver needs this to > compute its {{getColumns()}}'s {{COLUMN_SIZE}} correctly.) > [TBD] > 5. {{MAXIMUM_CARDINALITY}} does not exist. (This might be relevant for > JDBC's {{getColumns()}}'s {{COLUMN_SIZE}}.) > C. Standard {{COLUMNS}} columns that don't exist in Drill but are less likely > to be relevant (listed for completeness): > - {{COLUMN_DEFAULT}} > - {{CHARACTER_SET_CATALOG}} > - {{CHARACTER_SET_SCHEMA}} > - {{CHARACTER_SET_NAME}} > - {{COLLATION_CATALOG}} > - {{COLLATION_SCHEMA}} > - {{COLLATION_NAME}} > - {{DOMAIN_CATALOG}} > - {{DOMAIN_SCHEMA}} > - {{DOMAIN_NAME}} > - {{UDT_CATALOG}} > - {{UDT_SCHEMA}} > - {{UDT_NAME}} > - {{SCOPE_CATALOG}} > - {{SCOPE_SCHEMA}} > - {{SCOPE_NAME}} > - {{DTD_IDENTIFIER}} > - {{IS_SELF_REFERENCING}} > - {{IS_IDENTITY}} > - {{IDENTITY_GENERATION}} > - {{IDENTITY_START}} > - {{IDENTITY_INCREMENT}} > - {{IDENTITY_MAXIMUM}} > - {{IDENTITY_MINIMUM}} > - {{IDENTITY_CYCLE}} > - {{IS_GENERATED}} > - {{GENERATION_EXPRESSION}} > - {{IS_SYSTEM_TIME_PERIOD_START}} > - {{IS_SYSTEM_TIME_PERIOD_END}} > - {{SYSTEM_TIME_PERIOD_TIMESTAMP_GENERATION}} > - {{IS_UPDATABLE}} > - {{DECLARED_DATA_TYPE}} > - {{DECLARED_NUMERIC_PRECISION}} > - {{DECLARED_NUMERIC_SCALE}} -- This message was sent by Atlassian JIRA (v6.3.4#6332)