def METHOD_NAME(self, schema):
    query = """
    SELECT schema_name, table_name, column_name, type
    FROM SYS.TABLE_COLUMNS
    WHERE schema_name NOT IN ('SYS') and column_name not in ('_KEY','_VAL');
    """
    results, error = self.run_query(query, None)
    if error is not None:
        raise Exception("Failed getting schema.")
    results = json_loads(results)
    for row in results["rows"]:
        if row["SCHEMA_NAME"] != self.configuration.get("schema", "PUBLIC"):
            table_name = "{}.{}".format(row["SCHEMA_NAME"], row["TABLE_NAME"])
        else:
            table_name = row["TABLE_NAME"]
        if table_name not in schema:
            schema[table_name] = {"name": table_name, "columns": []}
        col_type = TYPE_STRING
        if row["TYPE"] in types_map:
            col_type = types_map[row["TYPE"]]
        schema[table_name]["columns"].append({"name": row["COLUMN_NAME"], "type": col_type})
    return list(schema.values())