ColumnsDescription InterpreterCreateQuery::getColumnsDescription(const ASTExpressionList & columns, const Context & context) { ColumnsDescription res; auto && columns_and_defaults = parseColumns(columns, context); res.materialized = removeAndReturnColumns(columns_and_defaults, ColumnDefaultKind::Materialized); res.aliases = removeAndReturnColumns(columns_and_defaults, ColumnDefaultKind::Alias); res.ordinary = std::move(columns_and_defaults.first); res.defaults = std::move(columns_and_defaults.second); if (res.ordinary.size() + res.materialized.size() == 0) throw Exception{"Cannot CREATE table without physical columns", ErrorCodes::EMPTY_LIST_OF_COLUMNS_PASSED}; return res; }
InterpreterCreateQuery::ColumnsInfo InterpreterCreateQuery::getColumnsInfo( const ASTPtr & columns, const Context & context) { ColumnsInfo res; auto && columns_and_defaults = parseColumns(columns, context); res.materialized_columns = removeAndReturnColumns(columns_and_defaults, ColumnDefaultType::Materialized); res.alias_columns = removeAndReturnColumns(columns_and_defaults, ColumnDefaultType::Alias); res.columns = std::make_shared<NamesAndTypesList>(std::move(columns_and_defaults.first)); res.column_defaults = std::move(columns_and_defaults.second); if (res.columns->size() + res.materialized_columns.size() == 0) throw Exception{"Cannot CREATE table without physical columns", ErrorCodes::EMPTY_LIST_OF_COLUMNS_PASSED}; return res; }