static void gen_col_attrs()

in sources/gen_sql.c [540:589]


static void gen_col_attrs(ast_node *_Nullable attrs) {
  for (ast_node *attr = attrs; attr; attr = attr->right) {
    if (is_ast_create_attr(attr)) {
      gen_create_attr(attr);
    } else if (is_ast_sensitive_attr(attr)) {
      gen_sensitive_attr(attr);
    } else if (is_ast_delete_attr(attr)) {
      gen_delete_attr(attr);
    } else if (is_ast_col_attrs_not_null(attr)) {
      gen_printf(" NOT NULL");
      EXTRACT_ANY(conflict_clause, attr->left);
      if (conflict_clause) {
        gen_conflict_clause(conflict_clause);
      }
    } else if (is_ast_col_attrs_pk(attr)) {
      EXTRACT_NOTNULL(autoinc_and_conflict_clause, attr->left);
      EXTRACT(col_attrs_autoinc, autoinc_and_conflict_clause->left);
      EXTRACT_ANY(conflict_clause, autoinc_and_conflict_clause->right);

      gen_printf(" PRIMARY KEY");
      if (conflict_clause) {
        gen_conflict_clause(conflict_clause);
      }
      if (col_attrs_autoinc) {
        gen_printf(" AUTOINCREMENT");
      }
    } else if (is_ast_col_attrs_unique(attr)) {
      gen_printf(" UNIQUE");
      if (attr->left) {
        gen_conflict_clause(attr->left);
      }
    } else if (is_ast_col_attrs_hidden(attr)) {
      gen_printf(" HIDDEN");
    } else if (is_ast_col_attrs_fk(attr)) {
      gen_printf(" ");
      gen_fk_target_options(attr->left);
    } else if (is_ast_col_attrs_check(attr)) {
      gen_printf(" CHECK(");
      gen_root_expr(attr->left);
      gen_printf(") ");
    } else if (is_ast_col_attrs_collate(attr)) {
      gen_printf(" COLLATE ");
      gen_root_expr(attr->left);
    } else {
      Contract(is_ast_col_attrs_default(attr));
      gen_printf(" DEFAULT ");
      gen_root_expr(attr->left);
    }
  }
}