  In recent years, more people have seen their work depend on data manipulation
tasks. However, many of these users do not have the background in programming
required to write complex programs, particularly SQL queries. One way of
helping these users is automatically synthesizing the SQL query given a small
set of examples. Several program synthesizers for SQL have been recently
proposed, but they do not leverage multicore architectures.
  This paper proposes CUBES, a parallel program synthesizer for the domain of
SQL queries using input-output examples. Since input-output examples are an
under-specification of the desired SQL query, sometimes, the synthesized query
does not match the user's intent. CUBES incorporates a new disambiguation
procedure based on fuzzing techniques that interacts with the user and
increases the confidence that the returned query matches the user intent.
  We perform an extensive evaluation on around 4000 SQL queries from different
domains. Experimental results show that our sequential version can solve more
instances than other state-of-the-art SQL synthesizers. Moreover, the parallel
approach can scale up to 16 processes with super-linear speedups for many hard
instances. Our disambiguation approach is critical to achieving an accuracy of
around 60%, significantly larger than other SQL synthesizers.
