Feedback (re: Formatting, UX, etc)

So I've been using 0xDBE for a few weeks now. I currently deal exclusively with DB2 databases (LUW and z/OS), and here's some of the things I'd like to see improved in 0xDBE:

(1) I'd like more formatting options. e.g. Given the following SQL:

SELECT ALIAS1.ABC, CASE WHEN ALIAS2.DEF THEN 0 ELSE 1 END, ALIAS1.XYZ AS "xyz" FROM TABLE_1 ALIAS1 JOIN TABLE_2 ALIAS2 ON ALIAS1.GHI = ALIAS_2.GHI WHERE ALIAS_1.JKL = ? AND ALIAS_2.MNO = ?

I would like it to be formatted as:

SELECT
     ALIAS1.ABC,
     CASE WHEN ALIAS2.DEF THEN 0 ELSE 1 END,
     ALIAS1.XYZ AS "xyz"
FROM
     TABLE_1 ALIAS1
          JOIN TABLE_2 ALIAS2 ON ALIAS1.GHI = ALIAS_2.GHI
WHERE
     ALIAS_1.JKL = ? AND
     ALIAS_2.MNO = ?

The rules are fairly simple: New Line after major keywords (not sure if there's an actual name or grouping - basically, SELECT, FROM, WHERE, ORDER BY, GROUP BY, etc), with each expression indented once. New line before the "JOIN" keyword, and always indented another level. New line after every "AND", but not after "OR" (so A.X OR B.X should be left alone).

Currently the above code gets formatted to:

SELECT
      ALIAS1.ABC,
      CASE WHEN ALIAS2.DEF THEN 0 ELSE 1 END,
     ALIAS1.XYZ AS "xyz"
FROM TABLE_1 ALIAS1 JOIN TABLE_2 ALIAS2 ON ALIAS1.GHI = ALIAS_2.GHI
WHERE ALIAS_1.JKL = ? AND ALIAS_2.MNO = ?

Which is not quite what I'm looking for. I don't see any options to enable the formatting rules I want in the options menu - is this something that might be done for a future release?

(2) I'm not sure what the intended organisation of databases is - I assume the idea is that we'd have one project per client/project/etc? The issue I have with that is that for this one project I've got somewhere in the region of a dozen databases I have to look at from time to time. I would much prefer if I could have folders and subfolders and the like to organise my databases. So I would have, if I wanted, e.g.

├── client_1
|   ├── region_1
|   |  ├── database_1
|   |  └── database_2
|   └── region_2
|      ├── database_3
|      └── database_4
── client_2
     ├── region_3
     |  ├── database_5
     |  └── database_6
     └── region_4
        ├── database_7
        └── database_8

This may not be consistent with the goals you have for 0xDBE, but I'd find it really helpful for organising everything.

(3) Currently, I can view some metadata about tables, but there's no easy way to access some of the things I find quite helpful, particularly around foreign keys and indexes. Having played around a bit with the quick documentation view, I think it would be great if the definition of the indexes, primary keys, and foreign keys (and their names - very important!), plus a list of all exported keys (if that can be found - that would be a list of all tables that have a column in this table as a foreign key) could be added to the table level - ideally in their own, easy-to-find sections. Currently it doesn't display any of that information - just comments, approximate row count, and the first ten rows. Basically, it would be great to see more information in here.

(4) Would be really good to see proper batching of large numbers of commands - right now, all I see is a scrolling list of command executed and result, and it seems to execute a second command before displaying the result of the first command, such that I'm never sure which result goes with which command, nor how many commands are left to run. It would also be a lot more efficient to run them all as a batch command, especially when inserting 1000+ rows at a time.

(5) It needs to be easier to change between data extractors - it's faily common that I want to be able to "Copy as Insert" and "Copy as CSV" - and when copying as CSV, sometimes I want headers and sometimes I don't. Right now, I have to right-click, select the Extractors sub-menu, then select the Extractor I want, then copy the text - it'd be easier if I could just right-click and select the extractor from the right-click menu, without having to dive into a sub-menu, and have the extractor immediately perform a copy, without having that be a separate step.

Otherwise, I really like 0xDBE. It's quite fast, it doesn't hang the whole UI when I try and run a query against a server that's silently closed my connection (awfully common ><), very good auto-completion, I like that it retains queries between application restarts without having to save to a file (that's incredibly nice!), and I generally find it to be good to use, subject to the above.

Please sign in to leave a comment.