Hey guys, first of all, sorry my delay on writing a blog post about this new release. I'm really quite busy on my job since I came back from my vacations! It seems that the accumulated tasks never ends no matter how hard you work on them... but its the life! Sooner or later things will start to be in the right place again... :)
Soooo... let's talk about this last beta release of 0.9.2. This one has few changes and new features that's because, as I use to do, new features implementations are frozen so I can focus on the bug fixes in order to make the final release as stable as possible. Said that, take a look what we have to show!
Redesigned data manipulation form
The data manipulation form has received two new actions: 1) clear selected cells
Ctrl + R; 2) Spawn a new data manipulation instance from within the form currently open
Ctrl + N. This small feature introduction led to the redesign of the top actions bar that is now placed at the top-left portion of the dialog. Honestly, I found this new arrangement better to use because all actions are easier to access compared to the old horizontal arrangement (if you prefer the old way, let your thoughts at the comments).
The CSV copy and paste operations are improved as well in this form. For the
Copy as CSV operation, the hidden columns are discarded from the generated CSV buffer stored in the clipboard. Speaking of which, did you know that you can hide columns of the current data set? A feature that I find pretty handful when I need to copy only a selected set of columns or I want to visualize only a restrict set of columns. To hide a column, with data loaded in the dialog, click the filter action and then click the tab
Now, for the text pasting from clipboard, pgModeler is now a bit more smart by trying to parse the text in the clipboard as a comma separated value content. To do so, instead of paste with
Ctrl + V (paste as text) use
Ctrl + Shift + V in order to paste the content as CSV. Note that the default format for the CSV to be pasted from the clipboard need to be
"value";"value1";"value2".... For now, there's no way to change the default value separators
; and the string delimiter character
Table items multiselection
This one is for sure a long awaited feature and allows the user to select multiple table items (columns, constraints, triggers, indexes, rules and policies) by holding
Ctrl + Shift and click the desired elements on any table. The real usefulness of this feature is to perform operations like copy, duplicate, paste, cut and delete to all selected objects instead doing them object by object like in previous versions. This can really improve the user experience on the design view. Of course, there some drawbacks here: depending on the kind of objects selected or the option chose during some operations the result may differ a bit compared to the operations performed over a single item. But pgModeler will warn you if something goes wrong! ;)
The diff process is one of the features that is constantly improved and this time it has been patched in such way that no more false-positive results for
timestamptz columns are returned (as reported here). Also, the tool now generates well formed diff code for policies (in previous versions a template file was broken causing the diff of policies to never work).
The diff dialog now has the capability of loading the generated code direclty in the SQL tool by connecting to the destination server and opening an instance of the SQL execution pane. In that way, the user can run the generated commands manually, resolving errors if they eventually appear and resuming the diff applying. This approach is not possible when doing the diff apply automatically (directly in the server), in that case a single error can abort the whole process.
Additional fixes and changes
The above topics where just a highlight of what this release brought to you. But we have many other fixes and changes that makes pgModeler even better. The model file loading was fixed and is now more accurate mainly when loading huge models. Another change done is related to the model files saving process. Due to an unknown circumstance on macOS system while saving a model file the saving thread can generating a zero-byte file causing data loss (details here).
The solution was to save the database model to a new file instead of overwrite the original model file. Once saved and validated the new file the old one is erased, this way we can ensure the database model was saved correctly. In case of failure of the saving process, the user still can access the backup file and copy it to a safe place in order to avoid a complete data loss. I'm still testing this solution and investigating why the zero-byte bug is happening. For now we'll work with this workaround. Finally, all changes and fixes of this release can be seen on the CHANGELOG.md file.
In a few days I'll start to dive into the final 0.9.2! My focus on this release is to implement the support to foreign tables, thus, all the foreign objects will be supported by pgModeler, since we already have support to foreign servers, user mappings and foreign data wrappers. Foreign tables will be just the last piece of this puzzle! :)
That's it, don't forget to leave your comments here and report any bug at Github.
See you! ;)