Полные метаданные столбца для представлений?
Если вы запрашиваете таблицы из dbc.columns
, вы получите полные метаданные для каждого столбца, особенно тип данных, длину, обнуляемый / не обнуляемый и т. д. При запросе представлений вы получаете только имена базы данных, таблицы и столбца. Все остальные поля пусты.
Если у меня есть мнение, что ничего не делает, кроме select * from table
Похоже, что метаданные базовой таблицы будут распространяться на представление, когда оно компилируется в объекты базы данных. Это имеет смысл даже для вычисляемых столбцов, так как мои эксперименты показали, что Teradata анализирует все возможные логические пути, чтобы определить тип вычисляемого столбца. Вот пример:
replace view mydb.testview as
select case when 1 = 1 then 'a' else 'aaaa' end a;
create table mydb.testviewtotable as (select * from mydb.testview) with data;
show table mydb.testviewtotable;
В этом случае case только первое условие будет когда-либо возвращать true, поэтому результат всегда будет 'a'
, Однако, когда вы посмотрите на таблицу DDL, вы увидите, что она вычисляет столбец как VARCHAR(4)
что доказывает, что он анализирует все случаи:
a VARCHAR(4) CHARACTER SET UNICODE NOT CASESPECIFIC
Поэтому представляется разумным предположить, что эти метаданные представления существуют где-то, даже если запрос этого представления через DBC приводит к нулевым значениям для всех, кроме вышеупомянутых столбцов.