  Many problems in database systems, such as cardinality estimation, database
testing and optimizer tuning, require a large query load as data. However, it
is often difficult to obtain a large number of real queries from users due to
user privacy restrictions or low frequency of database access. Query generation
is one of the approaches to solve this problem. Existing query generation
methods, such as random generation and template-based generation, do not
consider the relationship between the generated queries and existing queries,
or even generate semantically incorrect queries. In this paper, we propose a
query generation framework based on generative adversarial networks (GAN) to
generate query load that is similar to the given query load. In our framework,
we use a syntax parser to transform the query into a parse tree and traverse
the tree to obtain the sequence of production rules corresponding to the query.
The generator of GAN takes a fixed distribution prior as input and outputs the
query sequence, and the discriminator takes the real query and the fake query
generated by the generator as input and outputs a gradient to guide the
generator learning. In addition, we add context-free grammar and semantic rules
to the generation process, which ensures that the generated queries are
syntactically and semantically correct. We conduct experiments to evaluate our
approach on real-world dataset, which show that our approach can generate new
query loads with a similar distribution to a given query load, and that the
generated queries are syntactically correct with no semantic errors. The
generated query loads are used in downstream task, and the results show a
significant improvement in the models trained with the expanded query loads
using our approach.
