First of all, I would like to appologize for the delay on announcing the release of this new version. The last two weeks were a bit uncommon and troubled so I couldn't write a blog post in the day 0.9.0-beta1 was launched. Well, said that, I now declare pgModeler 0.9.0-beta1 officially released! :)
As usual, by being so close the a stable release, this version doesn't bring lots of changes. Instead, I decided to add no more than two new features to it and now I'm cooling down the development so I can dedicate myself only on bug fixes and small changes until the 0.9.0 stable.
I'm really satisfied with the 0.9.0 in the way it is now (even in beta stage) because pgModeler is solid enough and full of great features to make the database modeling and management more easy and pleasant. Now, let's talk about what we have in it!
Support to high resolution monitors
With pgModeler 0.9.0-beta1 we are starting to support high resolution monitors by adding some routines that automatically do the needed adjustments during runtime. This support is really experimental and still presents some problems in certain situations. For instance, the icons and general images still can't be resized properly due to their low resolution causing some glitches on Windows and macOS depending on the current DPI settings. The solution for this issue is the complete redesign of the whole icon set to a higher resolution, task that is planned to be done in any moment in pgModeler 1.0 development timeline. But I'll try to antecipate this job if there's some room for it. But, at this moment, what is important is that the user is now capable of reading the texts in pgModeler's dialogs without problems not matter the font and resolution configurations.
If you were unaware, pgModeler had some hard time when running on high resolution monitors (see the picture below). There were two main problems in older releases that led to this kind of issue. First, the version of Qt framework on that days was not fully capable to handle bigger screens and the improved support came only in 5.6. The second problem was that in pgModeler there were several widgets that had fixed width and height what was causing the automatic resizing to fail in certain screen and font settings.
After the arrival of Qt 5.6, I decided to add the support to high resolution screens to pgModeler but I wasn't able do it immediately because I was still lacking a proper monitor. Months later I could purchase one and quickly added that support and the result is detailed in the following image.
As I said before, this support is still being improved so better results will come in future releases. But, for now, if you were not satisfied with pgModeler in your 4K monitor you can now give it another try! ;)
Browse reference & referrer rows
This feature was not request by nobody but I decided to do it myself because in my daily work I have to browse several tables that are related and until 0.9.0-beta1 the proper way to know which row in a table A is referenced by a row in table B is by opening the data manipulation dialog and use the set of filters which is a bit annoying and time consuming. So in order to minimize the task to find those rows I added some shortcuts that in the backstages do the automatic filtering that I was doing manually.
Technically speaking, now when browsing a table in the data manipulation dialog pgModeler discovers and stores information about the primary and foreign keys of the table. From that data we are able to see all the rows in other tables that somehow reference the selected one in the browsed table. The inverse way is possible too, discover which rows in other tables that are referenced by the browsed table from the selected row. Seems a bit confusing? Don't worry, let me explain using the image below.
In the image we have a simple model which relates cars and engines. On the bottom left we have a set of cars which references a set of engine models as exposed in the bottom right. Suppose that when browsing the cars table you need to know the engine which the Model A references, for instance. The only information we have is that Model A references the engine which id is 1. In order to show all details about the engine 1 we would need to open a new instance of the data manipulation dialog, browse the table public.engines and setup a filter
id = 1 so we can expose all details about that engine.
Now, in the release 0.9.0-beta1, you would simple select the row related to Model A, right click it to show the context menu and follow Browse tables > Referenced tables > public.engine (engines_fk). Note that the item named after the referenced table public.engines contains the name of the foreign key in public.cars which denotes the relationship between them, in that case engines_fk.
Once clicked the mentioned menu item a new instance of the data manipulation dialog is open and automatically filters the results to show only the engine which code is that one referenced by the Model A. See how shorter was the path to achieve the same result compared to previous versions of pgModeler! A small change that makes a lot of difference.
You can still play around with the new instance of the dialog and try the inverse. Right click the row related to engine 1 and select Browse tables > Referrer tables > public.cars (engines_fk) to see all rows in public.cars that reference the selected row in public.engines!
Miscellaneous fixes and improvements
There were small fixes here and there but in order to not extend too much this post I invite your dear reader to take a look in the CHANGELOG.md file. Finally, from now on, I'll prioritize more bug fixes than new features until the 0.9.0 stable is done.
Well, that's it! I hope you really like this new pgModeler. Don't forget to leave your thoughts in the comment section. See you in the next post! ;)