**Describe the bug**
`CODEC` is allowed for `ALIAS` column

**How to reproduce**
``` sql
CREATE TABLE t102
(
    `c0` ALIAS c1 CODEC(ZSTD),
    `c1` String
)
ENGINE = Memory()

Ok.

DESCRIBE TABLE t102

┌─name─┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ c0   │ String │ ALIAS        │ c1                 │         │ ZSTD(1)          │                │
│ c1   │ String │              │                    │         │                  │                │
└──────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

```
**Expected behavior**
Error
column_type = DataTypeFactory::instance().get(col_decl.type);
            if (col_decl.null_modifier)
            {
                if (column_type->isNullable())
                    throw Exception("Can't use [NOT] NULL modifier with Nullable type", ErrorCodes::ILLEGAL_SYNTAX_FOR_DATA_TYPE);
                if (*col_decl.null_modifier)
                    column_type = makeNullable(column_type);
            }
            else if (context.getSettingsRef().data_type_default_nullable)
            {
                column_type = makeNullable(column_type);
            }
            column_names_and_types.emplace_back(col_decl.name, column_type);
        }
        else
        {
            
            column_names_and_types.emplace_back(col_decl.name, std::make_shared<DataTypeUInt8>());
        }
        
        if (col_decl.default_expression)
        {
            /** For columns with explicitly-specified type create two expressions:
              * 1. default_expression aliased as column name with _tmp suffix
              * 2. conversion of expression (1) to explicitly-specified type alias as column name
              */
            if (col_decl.type)
            {
                const auto & final_column_name = col_decl.name;
                const auto tmp_column_name = final_column_name + "_tmp";