def create_udf_table(
        self,
        columns: Sequence["sa.Column"] = (),
        name: Optional[str] = None,
    ) -> sa.Table:
        """
        Create a temporary table for storing custom signals generated by a UDF.
        SQLite TEMPORARY tables cannot be directly used as they are process-specific,
        and UDFs are run in other processes when run in parallel.
        """
        tbl = sa.Table(
            name or self.udf_table_name(),
            sa.MetaData(),
            sa.Column("sys__id", Int, primary_key=True),
            *columns,
        )
        self.db.create_table(tbl, if_not_exists=True)
        return tbl

        Create a temporary table for storing custom signals generated by a UDF.
        SQLite TEMPORARY tables cannot be directly used as they are process-specific,
        and UDFs are run in other processes when run in parallel.
        
src/datachain/data_storage/warehouse.py