Author: Michael Brown <firstname.lastname@example.org>
Date: Mon Nov 14 13:53:03 2016 -0800
IMPALA-4343,IMPALA-4354: qgen: model INSERTs; write INSERTs from query model
This patch adds support to the random query generator infrastructure to
model and write SQL INSERTs. It does not actually randomly generate
INSERTs at this time (tracked in IMPALA-4353 and umbrella task
IMPALA-3740) but does provide necessary building blocks to do so.
First, it's necessary to model the INSERTs as part of our data model.
This was done by taking the current notion of a Query and making it a
SelectQuery. We also then create an abstract Query containing some of
the more common methods and attributes. We then model an INSERT query,
INSERT clause, and VALUES clause (IMPALA-4343).
Second, it's necessary to test the basics of this data model. It made
sense to go ahead and implement the necessary SqlWriter methods to write
the SQL for these clauses (IMPALA-4354).
I could then use this writer with some existing and new tests that take
a query written into our data model and write the SQL, verifying they're
For INSERT into Kudu tables, the equivalent PostgreSQL queries need to
use "ON CONFLICT DO NOTHING", so all existing and new query tests verify
they can be written as PostgreSQL as well.
- all the query generator tests pass
- I can run Leopard front_end.py and load older query generator reports,
browse them, and re-run failed queries
- I can run Leopard controller.py to actually do a query generator
- discrepancy_searcher.py --explain-only ran for hundreds of queries.
There were no problems writing the SELECT queries
Reviewed-by: Michael Brown <email@example.com>
Reviewed-by: Taras Bobrovytsky <firstname.lastname@example.org>
Tested-by: Taras Bobrovytsky <email@example.com>