Pgmodeler Versions Save

Open-source data modeling tool designed for PostgreSQL. No more typing DDL commands. Let pgModeler do the work for you!

v1.1.2

1 month ago

Changes since: v1.1.1

This patch release for pgModeler 1.1.x brings the following improvements and fixes:

  • Added a sample model of the famous northwind database ported to PostgreSQL.
  • Updated the sample model pagila.dbm. Now it uses the table partition feature.
  • Minor adjustment in the SQL execution widget to notify the OS and blink the taskbar after running a SQL command while the main window is minimized.
  • The command-line interface tool had its menu texts reviewed.
  • The view editing form now displays an alert regarding extra semicolons at the end of the definition command.
  • Disabled the cached object code in the database explorer widget.
  • Fixed a bug in the generation of SQL for roles when no option is set.
  • Fixed a bug in the automatic name truncation/disambiguation for long names.
  • Minor fix in the code completion widget to select the first visible item in the list.
  • Fixed a bug in the generation of the command COMMENT ON CONSTRAINT.
  • Minor fix in the view conversion process (in pgmodeler-cli) to correctly extract the SQL definition of views with disabled code.
  • Fixed the generation of view's SQL to ignore extra semicolons at the end of the command.

v1.1.1

2 months ago

Changes since: v1.1.0

This patch release for pgModeler 1.1.x brings the following improvements and fixes:

  • Added support for fixing split database models in the CLI tool on the paid version.
  • Added an XML code searching widget in the source code preview dialog.
  • Added an option to place objects in random positions imported to a working model.
  • Added alerts about unsupported server versions on the database import and diff forms.
  • Renamed all features related to "Find" to "Search" for better semantics.
  • pgModeler will not change the positions of the original objects in a model when importing new objects to that model.
  • Minor layout adjustments in the diff form by moving the export and import options to dedicated group boxes.
  • Minor improvement in the code completion feature to avoid repeatedly querying system catalogs having the list already filled. The list is cleared and repopulated only if the cursor position returns to the initial position when the widget is displayed.
  • Fixed the XML code generation for policies.
  • Minor adjustment in the enabled status toggling of several widgets in the database import form.
  • Fixed the behavior of the "Auto browse" attribute of connections in the database import and diff forms.
  • Fixed the horizontal canvas movement when the Shift key is held and the mouse wheel movement is made.
  • Fixed a crash in table edit form when handling foreign tables.
  • Fixed the partial diff/import filtering which was ignoring a wildcard pattern and listing all objects.
  • Minor fix in the SQL code pasting in the command input field of the SQL execution section.
  • Fixed a bug when importing collations with the ICU provider.
  • Minor workaround in the object rename widget to be displayed with the name input focused but the contents of that field deselected.
  • Fixed the relationship conversion feature to preserve the original layer and line color information on the converted objects.
  • Minor fix in the code completion feature to properly list column names when using non-schema-qualified table names in INSERT/DELETE commands.
  • Fixed a bug in code generation of generic SQL objects.

v1.1.0

2 months ago

Changes since: v1.0.6

Attention: Some configuration files were changed in pgModeler 1.1.0 causing a break in backward compatibility with pgModeler 1.0.x settings. This way, at the first start of the newer version, pgModeler will try to migrate the older settings to the newer ones automatically!

Summary After one year, 98 new features, 165 changes/improvements, and 88 bug fixes here we are, with great joy, bringing a new major release of pgModeler! The journey was long, with tons of challenges, but the results are satisfying because now we have an even more optimized tool with plenty of new features that will make your database modeling and management jobs more pleasant, accurate, and faster! Below, we have a compilation of new features, changes, and fixes that were implemented since pgModeler 1.0.0. Not everything is listed here and if you're curious about the full changelog of this version, please, take a look at the CHANGELOG.md for more details.

Infinite canvas support: pgModeler now supports infinite canvas. This feature allows objects to be moved to negative coordinates without forcing them to be locked at the origin point (0,0). This brings more flexibility when designing databases allowing the models to grow up in any direction.

Improved code completion: A long-awaited feature finally arrived on pgModeler, the code completion based on living database object names. From now on, in the SQL execution widget, will be possible to list column/table names in the middle of the INSERT, DELETE, TRUNCATE, UPDATE, ALTER, and DROP commands. This feature also considers table aliases and lists the correct columns. It is worth mentioning that this feature is still experimental despite the good results on different kinds of SQL commands, and will be constantly improved on future releases.

Improved UI theme management: In 1.0.x, pgModeler wasn't able to correctly follow the system's color set (dark/light). Now, in 1.1.0, selecting the "System default" UI theme in Appearance settings makes pgModeler properly configure the UI color theme as well as the source code highlight settings to follow the system's color schema.

Improved model loading, objects' searching, and validation speeds: One of the most annoying things on pgModeler was the speed of the operations like objects' search, model validation, and, mainly, database model file loading. During the development of this version, it was decided to improve these three operations. After searching for critical bottlenecks in the tool's core some mechanics were completely rewritten. The two main bottlenecks that degraded the speed of the mentioned operations were the objects' name validation/formatting as well as the retrieval of objects' dependencies and references. Those seemed simple operations that I even could imagine that they were making pgModeler struggle to handle big models. For the objects' name formatting and validation, an internal name cache to avoid calling those procedures repeatedly was created. That simple solution brought a surprisingly good result. For the objects' dependencies and reference handling, an infinitely simpler routine compared to the original one was created and instead of every time calling a procedure that runs countless loops and recursive calls, the objects now store internally which other objects are their references and dependencies. Those changes made models that were loading/validating in several minutes to be processed in a few seconds. After those patches, pgModeler gained an amazing performance increase.

Views creation is now way simpler: Instead of that clunky interface to configure views on previous versions, now it's possible to create this kind of object by using freely typing SQL commands with special placeholder variables enclosed by {} that we call references. Any reference in the typed SQL command that defines the view will be replaced by the referenced object, which can be columns, functions, procedures, tables, foreign tables, and views. Once the view is created, pgModeler will create relationships between the referenced tables (foreign tables, and views) and the new view. Unfortunately, there's one drawback, the feature is not backward compatible with models designed in the previous version, which means if you have models containing views you'll need to use the pgmodeler-cli fix process to make the proper corrections.

Extensions can now have multiple child data types: In previous releases, pgModeler had a special flag in the extension's editing form labeled "Handles data type". That flag served to inform pgModeler that the extension needed to be used as a data type, for example, creating an extension named "hstore" and checking the mentioned flag, would create the type "hstore" making it usable in the columns, function parameters, and so on. The problem with this approach is that if an extension installed more than one data type in the database, it was needed to make some workarounds to have a second type available to be used in the database modeling process. So, in pgModeler 1.1.0, the "Handles data type" flag was ditched and now the user can specify a free number of data types that the extension handles. pgModeler will handle the data types when adding or removing the extension. Models that use the old extension format can be fixed by using the pgmodeler-cli model fix process.

Improved tool's executables relocation: pgModeler already has some mechanisms to customize the paths associated with the assets and executables once installed in the system. One of them is the environment variables, but sometimes the user doesn't want or even has no privileges to change environment variables in the system. Thinking of that, this new version introduces a special configuration file called "pgmpaths.conf" whose goal is to configure the paths where the pgModeler main executable as well as the auxiliary tools can find all the needed folders, assets, and configuration files. This file must be created in the same folder as a pgModeler's executable and must be filled with lines in the format variable=path. The "variable" refers to one of the available environment variables understood by pgModeler (refer to the installation instructions, section "Environment variables" for details) and the "path" is a relative or absolute path to the resource associated with the environment variable.

pgModeler CLI plugins support: The command-line tool now can have extra features implemented through plugins like in GUI. This opens a wide range of possibilities making the CLI an even more powerful tool that can be integrated into your development/deployment pipeline. Refer to pgModeler docs to see how to create your own features for the command-line tool.

Split model file load plugin: This is the first plugin for CLI that is bundled in the paid version of pgModeler. It basically allows one to load split database models (.sdbm) in the CLI and perform any operations available like it was a common (single) database model file (.dbm). This plugin comes as a complementary feature for the split model plugin that allows the saving of database model files in separate files.

SQL session plugin: This version introduces the SQL session plugin, available in the paid version of the tool, which implements simple routines to save the current opened SQL command execution sessions in a specific configuration file which can be restored in the next pgModeler execution by clicking the action "Restore SQL session", close to the connections combo box, in the Manage view.

Backup utility plugin: This version introduces the backup utility plugin, also available in the paid version of the tool, which implements a user-friendly interface for the commands pg_dump, pg_dumpall, pg_restore and psql commands. This extra feature was developed mainly focused on attending to those users less comfortable with command-line tools, making it possible to dump and restore databases without leaving pgModeler's GUI. Of course, advanced users are welcome to use the plugin and help to improve it! In a nutshell, besides configuring backup tools' parameters with a simple form, the plugin allows the creation of presets per backup tool for different needs, it also has some facilities that automate the backup file name generation by using a default backup folder and name patterns.

Other changes and improvements

  • Now during object copy/paste or duplication, in case of name conflict, the user is asked to type a new name for each conflicting object.
  • Added the ability to restore the scene rect from the database model file.
  • Adding support to expand the canvas rectangle via menu actions in the main window.
  • Removed the confirmation dialog related to copying dependencies during the copy operation. Now the copy of an object's dependencies is triggered by the shortcut Ctrl+Shift+C (copy selection and dependencies) or Ctrl+Shift+X (cut selection and dependencies).
  • Minor improvement in the tree expanding state and vertical scrollbar position restoration in the model objects widget.
  • Added support for inksaver color theme which uses only black and white colors for models that are commonly used for printing.
  • Added support for using object comments as aliases in database import.
  • pgModeler now asks the user about closing SQL execution tabs that contain possibly unsaved typed commands.
  • Added support for remembering decisions on the alerts regarding unsaved models/open SQL tabs.
  • Added a basic form to inspect the changelog's XML code.
  • Added missing multirange types.
  • Improved the relationship point addition and selection via mouse clicks.
  • The "dot" grid mode is now the default in the appearance.conf file due to better drawing performance.
  • Improved the scene background (grid, delimiter, limits) drawing speed for big models.
  • Improved the objects' filtering in reverse engineering by introducing an "any" filter type.
  • Data manipulation form now shows a confirmation message before closing when items are pending save.
  • Added support for overriding the canvas' background color when exporting the model to PNG.
  • The "Display unique results" option on objects' dependencies & references dialog is now checked by default.
  • Adjusted the CSV pasting in the table data editor.
  • Adjusted the extension's attributes display in the database explorer to list types related to an extension.
  • The code completion widget now resizes according to the displayed items' width.
  • The code completion will not display a "no items found" popup if no element is found matching the word at the cursor's position.
  • Adjusted the reverse engineering process so relationships can be created from the link between two views.
  • Minor change in reverse engineering to avoid importing extension child types into the model since the extension itself, when imported, already creates the types.
  • Minor adjustment in connections configuration form in such a way to reload connections where they are used only when the user applies new connection settings on the form or restores original connections by clicking "Cancel".
  • Minor improvement on the object IDs swapping form in such a way as to preserve the sorting parameters after swapping object IDs.
  • Minor change in the operation list widget in such a way as to use icons instead of labels for operation list size and current history position.
  • Refactored signal/slot connections that needed exception handling all over the tool avoiding crashing the application when an exception is raised (macOS only).
  • Minor adjustment in model creation to avoid marking it as invalidated even if it's new and empty.
  • Minor adjustment in code completion widget to include sequences when listing living database objects.

Bug fixes

  • Fixed the plugins' loading process by ignoring the ones that don't implement the correct interfaces (PgModelerCliPlugin or PgModelerGuiPlugin).
  • Fixed a bug in the model load process in the main window that was not registering the loaded file as a recent model.
  • Fixed a malformed diff code when adding a column to a partitioned table.
  • Minor fix in objects scene in order to draw the canvas background in the correct color defined in the appearance settings.
  • Fixed a bug that was preventing tables and schemas from being updated graphically when adding/removing relationships in some circumstances.
  • Minor fix in graphical objects tooltips.
  • Fixed the trigger's catalog query to avoid referencing the tgparentoid field when importing from PostgreSQL 12 or below.
  • Fixed the PNG export process in GUI and CLI to handle infinite canvas.
  • Fixed a bug in model fix form that was not locating pgmodeler-cli on Windows.
  • Fixed a bug in the object filter widget in diff form that was setting wrong object types when doing a partial diff using filters generated from the changelog.
  • Minor fix in code completion in order to list columns of tables non-schema qualified. In that case, pg_catalog and public will be used as default schemas.
  • Columns marked as PK are now restored when handling them in the table editing form.
  • Minor fix in the object finder widget to avoid disconnecting a null selection which could lead to crashes.
  • Minor fix in the database model widget to hide the new object overlay when moving a selection of objects in the design area.
  • Minor fix in the object removal routine in a model widget that was not erasing an object in case it shared the same name as other objects in the same schema.
  • Minor fix in the object addition routine to validate the layer of the object being added. If one or more layers are invalid the object will be moved to the default layer 0.
  • Minor fix in pgmodeler-cli when extracting the objects' XML code during model file structure repair in order to restore correctly the layers name/count.
  • Fixed a bug in partial reverse engineering that was not correctly importing functions in some specific conditions.
  • Fixed a bug in partial reverse engineering that was not importing some objects' dependencies correctly.
  • Fixed a bug in the appearance configuration widget that was not updating the example model colors when changing the UI theme.
  • Fixed a crash when double-clicking the overview widget.
  • Fixed the data dictionary schema files for tables and views.
  • Fixed a bug in the database model that was causing FK relationships of a hidden layer to be displayed after loading the model.
  • Fixed a bug in the scene move action that was causing the grid to not be displayed after a panning/wheel move.
  • Fixed settings storing for the grid options in the main window.
  • Fixed a bug in the generation of diff commands for identity columns.
  • Fixed a bug in list widget items painting that was causing the rendering of artifacts sometimes.
  • Fixed a bug in pgmodeler-cli that was aborting the fix process during the parsing of the model changelog.
  • Fixed a crash when trying to load an invalid model from the recent model's menu.
  • Fixed sample model structure to the new view's format.
  • Fixed several bugs in the code completion widget when completing code using live database object names.
  • Fixed the catalog query operator.sch so argument data types can have the schema name prepended.
  • Fixed a crash when trying to display function/procedure/operator source code that references a domain in the parameters.
  • Fixed the catalog queries for function and procedure to correctly format parameters' data type signatures.
  • Fixed a problem in object IDs swapping widget that was not capturing arrow key press on macOS.
  • Fixed a bug in the importing of partitioned table indexes which was affecting the results produced by the diff process.
  • Fixed a bug in the code completion widget that was crashing the application when trying to list columns of an alias related to a non-schema-qualified table.
  • Fixed a bug in reverse engineering related to the importing of partition tables hierarchy.
  • Fixed a bug in diff that was generating false-positive results for columns with the same user-defined type.
  • Fixed a bug in the line numbers widget, within source code input fields, that was not aligning the line numbers with their respective lines when the font size was different from the default.
  • Fixed a broken build related to the XML parser that was using an xmlError * reference instead of a const xmlError * reference.
  • Minor fix in code completion widget to avoid the displaying of the widget in a position that extrapolates the screen limits.
  • Minor fix in the icon positioning in the list and tree widget items.

v1.1.0-beta1

4 months ago

Changes since: v1.1.0-beta

Attention: Some configuration files were changed in pgModeler 1.1.0-beta1 causing a break in backward compatibility with pgModeler 1.0.x settings. This way, at the first start of the newer version, pgModeler will try to migrate the older settings to the newer ones automatically!

Summary This version was supposed to be released earlier this month, but after discovering a critical problem on macOS that almost made pgModeler unusable, there was the need to perform lots of refactoring on all portions of the UI, which consumed more time than expected. Fortunately, most problems were solved and now the macOS version runs normally after a long routine of adjustments and tests. Of course, one or another corner case may not be covered and eventually will be quickly patched once reported.

Changes/improvements

  • [Change] Minor adjustment in connections configuration form in such a way to reload connections where they a used only when the user applies new connection settings on the form or restores original connections by clicking "Cancel".
  • [Change] Minor improvement on the object ids swapping form in such a way as to preserve the sorting parameters after swapping object ids.
  • [Change] Minor change in the operation list widget in such a way as to use icons instead of labels for operation list size and current history position.
  • [Change] Refactored signal/slot connections that needed exception handling all over the tool avoiding crashing the application when an exception is raised (macOS only).
  • [Change] Minor adjustment in model creation to avoid marking it invalidated even if it's new and empty.
  • [Change] Minor adjustment in code completion widget to include sequences when listing living database objects.

Bug fixes

  • [Fix] Fixed the catalog query operator.sch so argument data types can have the schema name prepended.
  • [Fix] Fixed a crash when trying to display function/procedure/operator source code that references a domain in the parameters.
  • [Fix] Fixed the catalog queries for function and procedure to correctly format parameters' data type signatures.
  • [Fix] Fixed a problem in object ids swapping widget that was not capturing arrow key press on macOS.
  • [Fix] Fixed a bug in the importing of partitioned table indexes which was affecting the results produced by the diff process.
  • [Fix] Fixed a bug in the code completion widget that was crashing the application when trying to list columns of an alias related to a non-schema-qualified table.
  • [Fix] Fixed a bug in reverse engineering related to the importing of partition tables hierarchy.
  • [Fix] Fixed a bug in diff that was generating false-positive results for columns with the same user-defined type.
  • [Fix] Fixed a bug in the line numbers widget, within source code input fields, that was not aligning the line numbers with their respective lines when the font size was different from the default.
  • [Fix] Fixed a broken build related to XML parser that was using an xmlError * reference instead of a const xmlError * reference.
  • [Fix] Minor fix in code completion widget to avoid the displaying of the widget in a position that extrapolates the screen limits.
  • [Fix] Minor fix in the icon positioning in the list and tree widget items.

Finally, for more details about this version's changelog, please, refer to CHANGELOG.md.

v1.1.0-beta

6 months ago

Changes since: v1.1.0-alpha1

Attention: Some configuration files were changed in pgModeler 1.1.0-beta causing a break in backward compatibility with pgModeler 1.0.x settings. This way, at the first start of the newer version, pgModeler will try to migrate the older settings to the newer ones automatically!

Almost two months after launching 1.1.0-alpha1, I'm pleased to announce 1.1.0-beta! This version is the last of this development cycle to receive new features, and from now on, until the release of the stable 1.1.0 only bug fixes will be done. My main focus on this release was to work on two things that always bothered me since the early days of pgModeler: the view creation process and the extension data types handling. Since the codebase was mature enough, I thought it was time to change those two aspects of the tool, and this was done as described below:

Views creation is now way simpler: Instead of that clunky interface to configure views on previous versions, now the user can create this kind of object by using freely typed SQL commands with special placeholder variables enclosed by {} that we call references. Any reference in the typed SQL command that defines the view will be replaced by the referenced object, which can be columns, functions, procedures, tables, foreign tables, and views (yeah, views!). Once the view is created, pgModeler will create relationships between the referenced tables (foreign tables, and views) and the new view. Of course, not everything is roses, the feature is not backward compatible with models designed in the previous version, which means if you have models containing views you'll need to use the pgmodeler-cli fix process to make the proper corrections.

Extensions can now have multiple child data types: In previous releases, pgModeler had a special flag in the extension's editing form labeled "Handles data type". That flag served to inform pgModeler that the extension needed to be used as a data type, for example, creating an extension named "hstore" and checking the mentioned flag, would create the type "hstore" making it usable in the columns, function parameters, and so on. The problem with this approach is that if an extension installed more than one data type in the database, it was needed to make some workarounds to have a second type available to be used in the database modeling process. So, in pgModeler 1.1.0-beta, the "Handles data type" flag was ditched and now the user can specify a free number of data types that the extension handles. pgModeler will handle the data types when adding or removing the extension. Models that use the old extension format can be fixed by using the pgmodeler-cli model fix process.

Improved tool's executables relocation: pgModeler already has some mechanisms to customize the paths associated with the assets and executables once installed in the system. One of them is the environment variables, but sometimes the user doesn't want or even has no privileges to change environment variables in the system. Thinking of that, this new version introduces a special configuration file called "pgmpaths.conf" which goal is to configure the paths where the pgModeler main executable as well as the auxiliary tools can find all the needed folders, assets, and configuration files. This file must be created in the same folder as a pgModeler's executable and must be filled with lines in the format variable=path. The "variable" refers to one of the available environment variables understood by pgModeler (refer to the installation instructions, section "Environment variables" for details) and the "path" is a relative or absolute path to the resource associated with the environment variable.

Several other improvements: General improvements were made all over the tool and some of them are described below.

  • Added support for overriding the canvas' background color when exporting the model to PNG.
  • The "Display unique results" option on objects' dependencies & references dialog is now checked by default.
  • Adjusted the CSV pasting in the table data editor.
  • Adjusted the extension's attributes display in the database explorer to list types related to an extension.
  • The code completion widget now resizes according to the displayed items' width.
  • The code completion will not display a "no items found" popup if no element is found matching the word at the cursor's position.
  • Adjusted the reverse engineering process so relationships can be created from the link between two views.
  • Minor change in reverse engineering to avoid importing extension child types into the model since the extension itself, when imported, already creates the types.

Bug fixes: Also, as part of the constant search for the overall tool's stability and reliability, almost twenty bugs were fixed, and below we highlight some key ones:

  • Fixed settings storing for the grid options in MainWindow.
  • Fix a crash that was happening only on Windows.
  • Fixed a bug in the generation of diff commands for identity columns.
  • Fixed a bug in list widget items painting that was causing the rendering of artifacts sometimes.
  • Fixed a bug in pgmodeler-cli that was aborting the fix process during the parsing of the model changelog.
  • Fixed a crash when trying to load an invalid model from the recent model's menu.
  • Fixed sample model structure to the new view's format.
  • Fixed several bugs in the code completion widget when completing code using live database object names.

Finally, for more details about the version's changelog, please, take a look at the file CHANGELOG.md.

v1.0.6

7 months ago

Changes since: v1.0.5

This patch release for pgModeler 1.0.x brings the following changes and fixes:

  • Added version descriptor for PostgreSQL 16.
  • Fixed a crash when trying to load an invalid model from the recent models' menu.
  • Fixed a bug in the generation of diff commands for identity columns.
  • Minor fix in the restoration of layers names and count in pgmodeler-cli.
  • Fixed a crash when double-clicking the overview widget.

v1.1.0-alpha1a

7 months ago

Changes since: v1.1.0-alpha

Attention: Some configuration files were changed in pgModeler 1.1.0-alpha1 causing a break in backward compatibility with pgModeler 1.0.x settings. This way, at the first start of the newer version, pgModeler will try to migrate the older settings to the newer ones automatically!

Here we are, after working for 4 months, bringing you the last alpha release of pgModeler 1.1.0. This version was mainly focused on improving performance on several parts of the tool. So I put a huge effort into refactoring lots of code to reach an amazing (almost unbelievable) result. Let's see below:

Improved model loading, objects' searching, and validation speeds: One of the most annoying things on pgModeler for me was the speed of the operations like objects' search, model validation, and, mainly, database model file loading. During the development of this version, I decided to face the challenge of improving these three operations, so I delved into the internals of the tool looking for the major bottlenecks. After selecting the problematic ones, I took the path of rewriting some mechanics instead of trying to fix them. The two main bottlenecks that degraded the speed of the mentioned operations were the objects' name validation/formatting as well as the retrieval of objects' dependencies and references. Those seemed simple operations that I could even imagine that they were making pgModeler struggle to handle big models. For the objects' name formatting and validation, I decided to create an internal name cache to avoid calling those procedures repeatedly. A simple solution that brought a surprisingly good result. For the objects' dependencies and reference handling, I completely ditched the methods written for that purpose and created something infinitely simpler. Instead of calling every time a procedure that runs countless loops and recursive calls, I just made the objects store internally which other objects are their references and dependencies. Those changes made models that were loading/validating in several minutes to be processed in a few seconds. I still have some other bottlenecks to solve, but those two already removed, gave pgModeler an amazing performance.

Several other improvements: General improvements were made all over the tool and some of them are described below.

  • Added support for inksaver color theme which uses only black and white colors for models that are used for printing.
  • Added support for using object comments as aliases in database import.
  • pgModeler now asks the user about closing SQL execution tabs that are not empty (with typed commands).
  • Add support for remembering decisions on the alerts regarding unsaved models/open SQL tabs.
  • Added an option in GeneralConfigWidget to reset the exit alert display status.
  • Added a basic form to inspect changelog XML code.
  • Added missing multirange types.
  • Improved the relationship point addition and selection via mouse clicks.
  • The "dot" grid mode is now the default in the appearance.conf file due to better drawing performance.
  • Improved the scene background (grid, delimiter, limits) drawing speed for big models.
  • Improving the objects' filtering in reverse engineering by introducing an "any" filter type.
  • Data manipulation form now shows a confirmation message before closing when items are pending save.

Bug fixes: Also, as part of the constant search for the overall tool's stability and reliability, almost twenty bugs were fixed, and below we highlight some key ones:

  • Minor fix in the object finder widget to avoid disconnecting a null selection which could lead to crashes.
  • Minor fix in the database model widget to hide the new object overlay when moving a selection of objects in the design area.
  • Minor fix in the object removal routine in a model widget that was not erasing an object in case it shared the same name of other objects in the same schema.
  • Minor fix in the object addition routine to validate the layer of the object being added. If one or more layers are invalid the object will be moved to the default layer 0.
  • Minor fix in pgmodeler-cli when extracting the objects' XML code during model file structure repair in order to restore correctly the layers name/count.
  • Fixed a bug in partial reverse engineering that was not correctly importing functions in some specific conditions.
  • Fixed a bug in partial reverse engineering that was not importing some objects' dependencies correctly.
  • Fixed a bug in the appearance configuration widget that was not updating the example model colors when changing the UI theme.
  • Fixed a crash when double-clicking the overview widget.
  • Fixed the data dictionary schema files for tables and views.
  • Fixed a bug in the database model that was causing FK relationships of a hidden layer to be displayed after loading the model.
  • Fixed a bug in the scene move action that was causing the grid to not be displayed after a panning/wheel move.

SQL session plugin: This version introduces the SQL session plugin, available in the paid version of the tool, which implements simple routines to save the current opened SQL command execution sessions in a specific configuration file which can be restored in the next pgModeler execution by clicking the action "Restore SQL session", close to the connections combo box, in the Manage view.

Finally, for more detailed information about this release's changelog, please, refer to the CHANGELOG.md file.

v1.0.5

9 months ago

Changes since: v1.0.4

This patch release for pgModeler 1.0.x brings the following changes and fixes:

  • Added shortcuts to Z-stack operations in ModelWidget.
  • Added missing PostgreSQL multirange types.
  • Improved the import error message when it's not possible to create/import permission that references a predefined PostgreSQL role.
  • Minor code refactor in ObjectsScene and DatabaseModel.
  • Fixed a bug in DatabaseModel that was causing FK relationships of a hidden layer to be displayed after loading the model.
  • Fixed a bug in MainWindow that was causing the plugin's config action icon to disappear when triggering validation.
  • Fixed a bug in PgModelerCliApp::fixModel that was causing the generation of empty models when the input file had no tag .

v1.1.0-alpha

11 months ago

Changes since: v1.0.x

Attention: Some configuration files were changed in pgModeler 1.1.0-alpha causing a break in backward compatibility with pgModeler 1.0.x settings. This way, at the first start of the newer version, pgModeler will try to migrate the older settings to the newer ones automatically!

After five months of development, the first alpha release for pgModeler 1.1.0 is finally ready and brings some important improvements compared to 1.0.x. Below, the key changes are briefly detailed:

Improved code completion: A long-awaited feature is finally arriving pgModeler, the code completion based on living database object names. From now on, in the SQL execution widget, will be possible to list column/table names in the middle of the INSERT/DELETE/TRUNCATE/UPDATE commands. This feature also considers table aliases and lists the correct columns. It is worth mentioning that this feature is still experimental despite the good results on different kinds of SQL commands.

Improved UI theme management: In 1.0.x, pgModeler wasn't able to correctly follow the system's color set (dark/light). Now, in 1.1.0-alpha, selecting "System default" UI theme in Appearance settings makes pgModeler properly configure the UI color theme as well as the source code highlight settings to follow the system's color schema.

Several UI improvements: As always, general UI improvements are made attending to the users' requests. This time pgModeler brought a long list of enhancements, but the following ones are worth mentioning:

  • pgModeler now supports the drag & drop of .dbm files selected in the file manager directly into the tool's main window to load models.
  • Database object shadows can be now deactivated in the general settings. This feature improves the rendering speed since fewer objects per scene need to be handled.
  • The SQL command results in the SQL execution widget and data manipulation form can be now exported to CSV format besides the classic plain text format.
  • When pasting SQL code coming from external IDEs in SQL execution using Ctrl+Shift+V, pgModeler will try to remove unneeded string concatenation characters (e.g. " ' + .) in the clipboard text before inserting it in the input field. This is useful for testing SQL code written in other languages' source code using concatenated strings.
  • Enclosing characters (),[],{} are now highlighted in any field where it's possible to type SQL code, being helpful to keep the balance of those characters avoiding syntax errors when running the typed commands.
  • In order to display large data (e.g. bytea data) in the results grid without degrading the performance an option was added to general settings that toggle the truncation of column data that exceeds a certain limit. The truncated data can be fully visualized by double click the desired cell in the result grid.
  • Now the SQL result grid header will display an icon according to the data type of each column.
  • In data manipulation form when editing a single element with column data edit dialog, the form will display the current column's value.

Bug fixes: Also, as part of the constant search for the overall tool's stability and reliability, almost twenty bugs were fixed, and below we highlight some key ones:

  • Fixed a critical bug in pgmodeler-cli that was causing the generation of empty models when the input file had no roles configured.
  • Fixed a bug in the database model that could lead to an "unknown exception caught" error.
  • Fixed a bug in the CSV generation that was causing the creation of malformed CSV in some circumstances causing the initial table data corruption.
  • Fixed some problems with comments when importing a database having the same OIDs for different types of objects.
  • Fixed the diff process performed on legacy database versions.

Backup utility plugin: This version introduces the backup utility plugin, available in the paid version of the tool, which implements a user-friendly interface for the commands pg_dump, pg_dumpall, pg_restore and psql commands. This extra feature was developed mainly focused on attending to those users less comfortable with command-line tools, being possible to dump and restore databases without leaving pgModeler's GUI. Of course, advanced users are welcome to use the plugin and help to improve it! In a nutshell, besides configuring the backup tools parameters with a simple form, it allows the creation of presets per backup tool for different needs, it also has some facilities that automate the backup file name generation by using a default backup folder and name patterns.

Finally, for more detailed information about this release's changelog, please, refer to the CHANGELOG.md file.

v1.0.4

11 months ago

Changes since: v1.0.3

This patch release for pgModeler 1.0.x brings the following changes and fixes:

  • Now pgModeler selects the UI element colors based upon the system's default colors set (light/dark).
  • pgModeler now restores the default settings in case of some configuration file is corrupted/incompatible and causes the initialization to fail.
  • Allowing sequences to be assigned to columns with numeric type.
  • Created the methods GuiUtilsNs::saveFile and GuiUtilsNs::loadFile.
  • Removed the deprecated attribute partial-match from configuration files in conf/defaults.
  • Minor adjustment in output messages in PgModelerCliApp::createConfigurations.
  • SyntaxHighlighter when in single-line mode will strip any line break char in the input field.
  • Minor adjustment in SyntaxHighlighter to force no line wrap in the parent input when single_line_mode is activated.
  • Changed the behavior of TableDataWidget::populateDataGrid. Instead of failing and never opening the dialog again for the user to try to import another file, the method now ask for saving the current (corrupted data) to a file and opens an empty grid to a new CSV import.
  • Removed unused constant PhysicalTable::DataLineBreak.
  • Fixed a false-positive diff result when comparing numeric columns.
  • Minor fix in the name pattern of the settings backup folder in PgModelerCliApp::createConfigurations.
  • Fixed a bug in reverse engineering that was happening during the creation of object permissions.
  • Minor fixes in the catalog queries for cast, collation, and role.
  • Fixed the wrong usage of cached names and signatures in DatabaseImportHelper.
  • Additional fix in CsvParser::parseBuffer to append a line break character at the end of the buffer in case it is missing so the parsing can be done correctly.