uwdb / Cosette

Cosette is an automated SQL solver.
BSD 2-Clause "Simplified" License
662 stars 54 forks source link

Multiple INNER JOIN clauses: runs into out of time #84

Open matthiastz opened 4 years ago

matthiastz commented 4 years ago

setup:

schema TrackSchema(TrackId: int, Name: varchar, AlbumId: int,
                MediaTypeId: int, GenreId: int, Composer: varchar,
                Milliseconds: int, Bytes: int, UnitPrice: numeric);
table Track(TrackSchema);
schema PlaylistTrackSchema(PlaylistId: int, TrackId: int);
table PlaylistTrack(PlaylistTrackSchema);
schema GenreSchema(GenreId: int, Name: varchar);
table Genre(GenreSchema);

query q1
`SELECT PT.PlaylistId, TR.TrackId, TR.Name, G.Name FROM
PlaylistTrack AS PT INNER JOIN Track AS TR ON TR.TrackId = PT.TrackId
  INNER JOIN
  Genre AS G ON G.GenreId = TR.GenreId`;

query q2
`SELECT PT.PlaylistId, TR.TrackId, TR.Name, G.Name FROM
PlaylistTrack AS PT JOIN Track AS TR ON PT.TrackId = TR.TrackId
  INNER JOIN
  Genre AS G ON TR.GenreId = G.GenreId`;

verify q1 q2;

result: Two queries' equivalence is unknown. Solver runs out of time.