def METHOD_NAME(self, path: DbPath) -> Dict[str, tuple]:
    rows = self.query(self.select_view_columns(path), list)
    if not rows:
        raise RuntimeError(f"{self.name}: View '{'.'.join(path)}' does not exist, or has no columns")
    output = {}
    for r in rows:
        col_name = r[2]
        type_info = r[3].split("(")
        base_type = type_info[0]
        precision = None
        scale = None
        if len(type_info) > 1:
            if base_type == "numeric":
                precision, scale = type_info[1][:-1].split(",")
                precision = int(precision)
                scale = int(scale)
        out = [col_name, base_type, None, precision, scale]
        output[col_name] = tuple(out)
    return output