samedi 5 mars 2022

Higher-level SQL constructs?

I'm writing what is effectively SQL++. It's going well and is outputting code which I've used to write a small app in so it's not vapourware though it is early days.

It currently supports automatic joins via foreign keys, temporary views with scalar and relational (table/view) parameters, dynamic pivoting (non-relational, I know), 'matches' which can be used to implement semi- and antisemi-joins, stronger type checking, including some static analysis of nullability errors. I'm planning to add relational division.

What kind of high-level SQL features would you, as professional SQL devs, like to see? These features could probably be used to it implement features which if done by hand would require procedural code or/and triggers (this language could write those triggers, but if it's declarative this will be hidden from the user which is what I want). Basically, what do you want this language to do for you that you have to do manually now? What error checking would you like that is currently not done? Please note that any suggestions must be driven by actual business needs, (everything I've implemented has been driven by requirements for my SQL dev work). Cool ideas without a business reason aren't good. I'm not interested in syntactic changes, but underlying support of functionality (that can include stuff like further error checking, but checking for what?)

This language can only implement what the underlying database provides; it can't do magic (nor can I, I'm no genius and my time is limited). Also it must be able to implement what you want efficiently and in a conceptually obvious way (if you can't do it manually neither can this language). The output is TSQL for MS SQL Server but eventually should be others, but I can't take that on now.

I realise this is a very broad call but it's a start. Suggestions welcome. Links to existing/proposed descriptions of relevance also very welcome but I've found little except image relations in Date/Darwen's work and a few things in Tutorial D. There are some wishlists like Erland Sommarskog's, Brent Ozar's and a few others I'm aware of which are useful, but others?

Things like distributed foreign keys are interesting but I've found no need for them but others might have different experiences, please chip in.

Aucun commentaire:

Enregistrer un commentaire