def query_intervals(cls, db, package_name):

        # This will get you all the query strings ever used for that package,
        # together with first-seen and last-seen dates.
        db.cursor.execute(
            """
            SELECT
                `packages`.`id` AS `package_id`,
                `packages`.`name` AS `package_name`,
                `deps`.`version_query`,
                MIN(`deps`.`started`) AS `first_started`,
                MAX(`deps`.`ended`) AS `last_ended`
            FROM
                `packages`,
                `project_explicit_dependencies` AS `deps`
            WHERE
                `packages`.`id`=`deps`.`package_id` AND
                `packages`.`name`=%s
            GROUP BY
                `packages`.`id`,
                `deps`.`version_query`;""", package_name)

        stored_rows = []
        latest_ts = -1

        # Each row is a specific query string
        for row in db.cursor.fetchall():
            (pkg_id, pkg_name, qs, first_started, last_ended) = row
            first_ts = Loader.dt2ts(first_started)
            last_ts = Loader.dt2ts(last_ended)
            stored_rows.append((qs, first_ts, last_ts))

            latest_ts = max(latest_ts, last_ts)

        return (stored_rows, latest_ts if latest_ts != -1 else None)
    def versions_earlier_than(cls, db, package_name, ts):
        versions = []

        db.cursor.execute(
            """
            SELECT
                `version`, `released`
            FROM
                `packages`,
                `package_versions`
            WHERE
                `packages`.`id`=`package_versions`.`package_id` AND
                `packages`.`name`=%s
            ORDER BY
                `released` ASC;""", package_name)

        for (version, released) in db.cursor.fetchall():
            versions.append((version, Loader.dt2ts(released)))

        return versions