Before I start to describe what's new in this release I would like to apologize for the delay on lauching a new pgModeler. If you don't know, I was at PGConf.Brasil 2018 talking about the project and I have to say that it was a pretty amazing experience, a great opportunity to exchange knowledge, meet people who use and contribute to the project, know about other projects that somehow make use of pgModeler to achieve their results and much more. I'll post photos and videos of my presentation as soon as I get access to them, so stay tuned. :)
Now, talking about the new version released today, we have some interesting features that can make your daily work with pgModeler even better. I'm working hard to improve the tool so we can have a good set of features and fixes to make possible the moving from series 0.9.x to 1.0. Being said that, let's see some of the new of 0.9.2-alpha.
This problem caught me on surprise right after I upgraded my development machine's openSuse Leap from 42.2 to 15. After some researches I found that the maintainers of that distro moved the openssl package from 1.0.x to 1.1.x but that alone was not the issue. Since I use a custom installation of the Qt framework (downloaded from the official site) the package is compiled to support the openssl 1.0.x and it seems that the newer version of that library isn't backward compatible with previous releases so I ran into this error while pgModeler tried to check for updates from a ssl protected url:
Investigating a bit more the logs I've found a lot of errors raised by Qt's network module (see below). Since this did not prevent the whole application to run normally I had only to deactivate automatic updates checking.
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init ... qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay qt.network.ssl: Incompatible version of OpenSSL ...
Doing some tests I've discovered that this issue happens only if you are running a system with openssl libraries in the most recent version (1.1.x) and is using a custom Qt installation, in my case Qt 5.9.6 LTS. If you compile and run the application using your distro's Qt installation at least on openSuse 15 you'll not get this error. Finally, if you stumble on this error too you can try to avoid the use of a custom Qt installation and use/install the one provided by your preferred distro. If you're using a pre-compiled binary provided by pgModeler's site you'll probably need to tweak the pgmodeler.vars file to make pgModeler look for the Qt's libs on your system. You can contact me via support form or at Github issues pages for any question.
** Hey pgModeler cancel my query right now! **
Finally one of the most requested features is ready! Now, in the Manage view, it's possible to abort the execution of any SQL command that is taking too long to finish. Prior this release one should kill the application to abort the SQL execution which was a pretty ugly solution (at least) not to say a really bad approach due to several side effects which could occur. From now on just run the desired command using
F6 and abort it using
Esc or click the icons as detailed in the image. This is another step to make the database administration tool even more powerful. The next desired feature is to allow the user to handle database objects from dialogs in the same way it happens in the Design view.
** I want that dialog here when I come back! **
Despite all the automatic routines applied by pgModeler to resize forms in order to fit them all in different combinations of font and resolution there's still some side effects that may bother some users. Also, since some of the dialogs are created and destroyed every time they are called their previous positions and sizes aren't saved. So, I decided to implement a mechanism that persists almost all forms' dimensions restoring them everytime the user requests their opening. This feature can be toggled in the general settings.
** Hide tech details from your clients **
Thinking of those developers who constantly need to deal with clients without much technical knowledge related to database but still need to discuss the model with them I've added the compact view of the model. Basically, this feature hides columns types and constraints descriptors making tables smaller and the whole model better to visualize. Also, the developers can assign user friendly names (or aliases) to some objects in order to facilitate the understanding by the audience hiding technical specifications that may not be useful in certain situations. The compact view is a persisted state, which means, if you save and close the model and then reopen it the objects will be presented in the compact mode. You can toggle this mode by clicking the icon on the main toolbar at the top portion of the main window.
** Support to sequence options on identity columns **
Attending to some requests, identity columns now have support to tweak the underlying sequence options through a dedicated button aside the Identity option at column editing form. Basically, pgModeler fakes a sequence object and opens it on a sequence editing form so the user can configure the attributes of the object. Once configured the attributes of the sequence are assigned back to the identity column.
** Bulk data editing on data manipulation form **
When editing data on the data manipulation form at Manage view it's possible to assign a single value to a set of selected cells on that form. To do so, in that dialog, hit
Ctrl+E or click the icon in order to trigger the bulk data field (see below).
** Miscellaneous **
One important change done was a partial refactoring of the View editing form by moving the fields related to view's references to a dedicated form making the process of creating a view a bit less complicated. I have plans to keep improving that dialog in special but in the future releases a full UX/UI remodeling will be done in the application.
Now, talking about some fixes we have some patches that avoids crashes and the generation of malformed SQL commands. In this release, extensions names are correctly quoted when there's some special character(s) avoiding SQL errors when exporting their code to the database server. One example of automatic quotation mark addition is the extension
uuid-ossp that is now correctly converted into
The crash caused, in some situations, by importing a CSV file into the data manipulation dialog is now solved. Another unexpected behaviour related to removing a FK relationship which is tied to a foreign key which references columns automatically created by other relationships is solved too.
Another case of malformed SQL is fixed now and was related to the generation of a broken catalog query for policies which was causing syntax errors when combining
Import system objects and
Import extension objects options on the reverse engineering tool.
Well, that's it! There's some more log entries for this release but I kindly ask you to read the full CHANGELOG.md file to get the complete notion on how this release has been improved. The next step now is to finish the online documentation (you can see a preview here ) then start to work on 0.9.2-alpha1 by first implementing the declarative table partitioning and other features that may be requested on the path.
Finally, since this is a unstable release, please help me to test it in as many as possible ways so we can eliminate possible bugs and improve the new features introduced!
See you! ;)