mirror of https://github.com/apache/superset.git
feat: add type_generic and is_dttm to table metadata (#14863)
This commit is contained in:
parent
53505c2acb
commit
e6bc7c99e7
|
@ -81,7 +81,7 @@ confidence=
|
||||||
# --enable=similarities". If you want to run only the classes checker, but have
|
# --enable=similarities". If you want to run only the classes checker, but have
|
||||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||||
# --disable=W"
|
# --disable=W"
|
||||||
disable=long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,missing-docstring,too-many-lines,ungrouped-imports,import-outside-toplevel,raise-missing-from,super-with-arguments,bad-option-value,too-few-public-methods
|
disable=long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,missing-docstring,too-many-lines,ungrouped-imports,import-outside-toplevel,raise-missing-from,super-with-arguments,bad-option-value,too-few-public-methods,too-many-locals
|
||||||
|
|
||||||
|
|
||||||
[REPORTS]
|
[REPORTS]
|
||||||
|
|
|
@ -86,6 +86,7 @@ describe('DatasourceEditor', () => {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
default: '',
|
default: '',
|
||||||
primary_key: false,
|
primary_key: false,
|
||||||
|
is_dttm: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'gender',
|
name: 'gender',
|
||||||
|
@ -93,6 +94,7 @@ describe('DatasourceEditor', () => {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
default: '',
|
default: '',
|
||||||
primary_key: false,
|
primary_key: false,
|
||||||
|
is_dttm: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'new_column',
|
name: 'new_column',
|
||||||
|
@ -100,6 +102,7 @@ describe('DatasourceEditor', () => {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
default: '',
|
default: '',
|
||||||
primary_key: false,
|
primary_key: false,
|
||||||
|
is_dttm: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -379,6 +379,7 @@ class DatasourceEditor extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
setColumns(obj) {
|
setColumns(obj) {
|
||||||
|
// update calculatedColumns or databaseColumns
|
||||||
this.setState(obj, this.validateAndChange);
|
this.setState(obj, this.validateAndChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,13 +415,18 @@ class DatasourceEditor extends React.PureComponent {
|
||||||
type: col.type,
|
type: col.type,
|
||||||
groupby: true,
|
groupby: true,
|
||||||
filterable: true,
|
filterable: true,
|
||||||
|
is_dttm: col.is_dttm,
|
||||||
});
|
});
|
||||||
results.added.push(col.name);
|
results.added.push(col.name);
|
||||||
} else if (currentCol.type !== col.type) {
|
} else if (
|
||||||
|
currentCol.type !== col.type ||
|
||||||
|
currentCol.is_dttm !== col.is_dttm
|
||||||
|
) {
|
||||||
// modified column
|
// modified column
|
||||||
finalColumns.push({
|
finalColumns.push({
|
||||||
...currentCol,
|
...currentCol,
|
||||||
type: col.type,
|
type: col.type,
|
||||||
|
is_dttm: col.is_dttm,
|
||||||
});
|
});
|
||||||
results.modified.push(col.name);
|
results.modified.push(col.name);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -679,13 +679,25 @@ class SqlaTable( # pylint: disable=too-many-public-methods,too-many-instance-at
|
||||||
for col in cols:
|
for col in cols:
|
||||||
try:
|
try:
|
||||||
if isinstance(col["type"], TypeEngine):
|
if isinstance(col["type"], TypeEngine):
|
||||||
col["type"] = db_engine_spec.column_datatype_to_string(
|
db_type = db_engine_spec.column_datatype_to_string(
|
||||||
col["type"], db_dialect
|
col["type"], db_dialect
|
||||||
)
|
)
|
||||||
|
type_spec = db_engine_spec.get_column_spec(db_type)
|
||||||
|
col.update(
|
||||||
|
{
|
||||||
|
"type": db_type,
|
||||||
|
"type_generic": type_spec.generic_type
|
||||||
|
if type_spec
|
||||||
|
else None,
|
||||||
|
"is_dttm": type_spec.is_dttm if type_spec else None,
|
||||||
|
}
|
||||||
|
)
|
||||||
# Broad exception catch, because there are multiple possible exceptions
|
# Broad exception catch, because there are multiple possible exceptions
|
||||||
# from different drivers that fall outside CompileError
|
# from different drivers that fall outside CompileError
|
||||||
except Exception: # pylint: disable=broad-except
|
except Exception: # pylint: disable=broad-except
|
||||||
col["type"] = "UNKNOWN"
|
col.update(
|
||||||
|
{"type": "UNKNOWN", "generic_type": None, "is_dttm": None,}
|
||||||
|
)
|
||||||
return cols
|
return cols
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Reference in New Issue