louis's Blog

louis's Avatar Image
Software developer #Go #CommonLisp #JS #SQL. #LispWorks user. Soft spots for #Emacs #SmallWeb. Recently becoming #OpenBSD enthusiast.

Other hobbies: #Running #FireFighter #StarTrek
← All posts

Top 9 features a database IDE should have for serious development of procedures/functions:

  1. Knows about the SQL dialect I’m currently developing with (i.e. Postgres, MySQL etc.)

  2. Introspects the schema including views, procedures etc.

  3. Can do suggestions while I type, not only on tables and table columns, but also on parameters, variables and temporary tables defined inside a procedure

  4. Can spot unused variables and references to non-existing tables/columns

  5. Shows table and column definitions in the suggest box and on hover

  6. Does not drop the procedure before it is re-created, until it can prove that it will compile. That could be accomplished by creating the procedure first under a temporary name

  7. Shows dependencies between tables/columns and procedures, even if that is not natively supported by the database engine (again, by introspection)

  8. Lets me quickly jump between different database objects without filling out a “search form”

  9. Provides context-sensitive documentation of built-in database functions

While all of this is fairly standard for any programming language, the only DB IDE that can do all of this right now (at least for MySQL and Postgres) with exception of (6) is JetBrains DataGrip.

Other rather expensive tools only provide a small subset of these features. Tools I evaluated:

  1. Navicat (most expensive and highly unstable)
  2. DBeaver
  3. TablePlus
  4. Querious (macOS only)
  5. DevArt’s dbForge (Windows only, but the only tool that features a step debugger (!) for Stored Procedures)
  6. MySQL Workbench
  7. Pgadmin
  8. DBVisualizer
  9. Database Client extension in VSCode from Weijan Chen
  10. Azure Data Studio

It seems that Jetbrains has literally zero competitors in this area - so they deserve a bear hug from me.

#sql #database #mysql #postgresql

To like or reply, open original post on Emacs.ch