#!/usr/bin/env python3
"""Generate the locked H44 ROLLUP/GROUP_CONCAT SQL case."""

import argparse
import sys


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("--count", type=int, required=True)
    parser.add_argument("--width", type=int, required=True)
    args = parser.parse_args()

    if not 1 <= args.count <= 100_000:
        parser.error("count must be in [1, 100000]")
    if not 1 <= args.width <= 65_520:
        parser.error("width must be in [1, 65520]")

    arguments = ",".join("b" for _ in range(args.count))
    out = sys.stdout
    out.write("DROP TABLE IF EXISTS h44.t;\n")
    out.write(
        "CREATE TABLE h44.t "
        f"(g INT NOT NULL, b VARBINARY({args.width}) NULL) ENGINE=MyISAM;\n"
    )
    # Two rows prevent the optimizer from treating the source as a const table
    # and dropping every GROUP_CONCAT argument from its internal temp table.
    out.write("INSERT INTO h44.t VALUES (1,X'41'),(1,X'42');\n")
    out.write(
        "SELECT g,LENGTH(GROUP_CONCAT(" + arguments + ")) AS n "
        "FROM h44.t GROUP BY g WITH ROLLUP;\n"
    )
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
