I see those problems too. A major problem is that when you start a new dialect, there are no tests. And that’s because our dialect test does not execute queries, only compares generated SQL (and those SQL fragments need to be entered by hand). There’s a good reason that our dialect test does not execute queries: connections to external databases are expensive (you need a license, and cloud resources) and flaky (valid tests will fail from time to time).
The moonshot to address this is https://issues.apache.org/jira/browse/CALCITE-5529. I have reached the point where I can execute all queries in RelToSqlConverterTest against any connection you provide (and I plan to run them against a reference connection - say Postgres - so that I know that the results from your connection are valid). The problem is that I don’t have a means to initialize a connection (create tables and populate data) and that there are a huge number of errors. I would appreciate help working on this. It’s a lot of work, but it will improve the quality of our dialect system. Julian > On Jul 11, 2023, at 6:54 AM, Joeri van Ruth > <joeri.van.r...@monetdbsolutions.com.INVALID> wrote: > > Hi all, > > MonetDB is an open source columnar main-memory SQL database that has > been around for quite a while. I am a MonetDB developer and I would > like to add support for MonetDB's SQL dialect to Calcite and > contribute it to the Calcite project. > > Looking at some of the existing Dialect classes I don't expect the > end result to be a lot of code but I'm a bit concerned that the > process of getting there will be an endless treadmill of users > finding yet another deviation and me fixing it. > > I'm hoping to ask you here for some guidance on how to develop a new > dialect in a more systematic way and how to ensure it will not > immediately fail when someone other than the developer tries to use > it. > > For example, I know you have an extensive test suite, will I be able > to use that to determine if my implementation is ready, and to > pinpoint the things I still need to do? Are there particular parts > of the rest of the code base I should first try to familiarize myself > with to make the implementation go more smoothly? > > Also, what would you expect to be a reasonable time frame for this > project considering I have good knowledge fo MonetDB but I'm new to > Calcite? A week? A month? > > Any tips and pointers would be appreciated. > > Joeri