SQL är det de facto språket för att manipulera relationsdata. Även om kraftfulla, SQL-frågor kan vara svårt att skriva på grund av deras mycket uttrycksfulla konstruktioner. Använda programmering-för-exempel paradigm för att hjälpa användare att skriva SQL-frågor presenterar ett attraktivt förslag, vilket framgår av online hjälp forum som Stack Overflow. Det har dock varit svårt att utveckla tekniker för att syntetisera SQL-frågor från input-output-exempel (I/O) på grund av SQL:s rika uppsättning operatörer. I den här artikeln presenterar vi en ny skalbar och effektiv algoritm för att syntetisera SQL-frågor från I/O-exempel. Vår viktigaste innovation är utvecklingen av ett språk för abstrakta frågor, dvs. frågor med icke-instantifierade operatörer, som kan uttrycka ett stort utrymme av SQL-frågor effektivt. Genom att använda abstrakta frågor för att representera sökrymden sönderdelas syntetiseringsproblemet fint i två uppgifter: (1) att söka efter abstrakta frågor som potentiellt kan tillfredsställa givna I/O-exempel, och (2) att ögonblickligen hitta abstrakta frågor och rangordna resultaten. Vi implementerade algoritmen i ett nytt verktyg, kallat SCYTHE, och utvärderade den på 193 riktmärken som samlats in från Stack Overflow. Våra resultat visade att SCYTHE effektivt löste 74 % av riktmärkena, de flesta på bara några sekunder. Frågor syntetiserade av SCYTHE sträcker sig från enkla som innebär ett enda urval till komplexa dem med sex nivåer av bo frågor.
Cheung et al REF ] använder denna teknik för att syntetisera expressiva SQL-frågor för databaser.
Synthesizing highly expressive SQL queries from input-output examples
{'venue': 'PLDI 2017', 'journal': None, 'mag_field_of_study': ['Computer Science']}