Skip to content

Releases: pgmodeler/pgmodeler

v1.2.0-beta1

31 Mar 22:17
Compare
Choose a tag to compare
v1.2.0-beta1 Pre-release
Pre-release

Changes since: v1.2.0-beta

Attention: pgModeler 1.2.0-beta1 introduces configuration changes that may affect compatibility with 1.1.x settings. On the first launch, pgModeler will automatically attempt to migrate your existing settings. Please note that this is an early development release where stability issues may occur. It's recommended to back up all models and databases before use. Please report any bugs found for prompt resolution. The mentioned migration process helps transition to improved configurations while minimizing disruption to your workflow.

New features

This release introduces several enhancements to improve database modeling workflows. The SQL source code editor now offers per-instance control line wrap along with an integrated search/replace widget. Debugging capabilities have been expanded with dedicated output tabs in the database import and diff forms. The diff feature restored the force object re-creation support in both CLI and GUI, but now with a type selection popup menu for fine-tuned object re-creation. The database model now provides finer control over SQL generation by allowing the disabled SQL code to go into the generated scripts. The extension object handling has been upgraded for better child object management (currently, only children types and schemas are tracked). The system objects can now have permissions assigned.

Changes and enhancements

The model objects widget now accepts an Alt + click over a graphical object, highlighting it in the design view. Redundant search/replace instances all over the tool were removed due to the integrated search/replace widget in the source code editor. The extension editing form now properly supports custom schema names in data types, while the database import process and the database model itself have been refactored for more reliable handling of extension-owned objects using the new extension object structure. The comparison operations in the diff process have been optimized to filter system objects correctly, and the function behavior type was simplified by dropping the STRICT type since it has the same semantics as RETURNS NULL ON NULL INPUT. The database import form, when in debug mode, will remain open so the user can inspect the commands and objects created during the process.

Bug fixes

  • Fixed some crashes during diff operations on extension-created tables.
  • Fixed the importing of columns using arrays of user-defined types.
  • Fixed the time zone persistence on the timestamp data type.
  • Removed false-positive diffs for functions with comments or STRICT behavior.
  • Fixed reverse engineering of uppercase type names.
  • Addressed crashes in identifier relationships with FK indexes.

v1.2.0-beta

10 Feb 17:42
Compare
Choose a tag to compare
v1.2.0-beta Pre-release
Pre-release

v1.2.0-beta

Changes since: v1.2.0-alpha1

Attention: Some configuration files were changed in pgModeler 1.2.0-beta causing a break in the backward compatibility with some pgModeler 1.1.x settings. This way, at the first start of the newer version, pgModeler will automatically try to migrate the older settings to the newer ones! Be advised that this is a release of a version in the early stages of development. Bugs, malfunctioning, crashes, and other problems are expected and will be resolved as soon as they are reported. Make sure to make backups of your models and databases before using this version!

After almost 4 months since the release of the last development version of 1.2.0, here we are announcing its first beta! This means that 1.2.0 has reached its final shape and from now on I will work exclusively on fixing bugs and polishing the new features that will be arriving in the stable version! Below some new features and changes are detailed.

  • Relationships' FK columns indexes: Now, the relationships that automatically create foreign key columns, can also create indexes over that columns too. This can speed up a bit more the modeling process. The generated indexes, like relationships, are named after the specific pattern and the user has total control over the generated names in the relationship editing form or by defining a global name pattern under relationships settings.

  • Quick create constraints, indexes, and relationships: This feature, introduced through an exclusive plugin in the paid version of the tool, allows the creation of constraints, indexes, and relationships based on the objects selected in the design view, without the need to open a single editing form or fill lots of fields. The objects created also support name patterns, and they can be configured in the plugin's settings menu in the main window.

  • Miscellaneous:

  • [New] When the export, import, and diff processes finish, the taskbar blinks when the window is not visible.

  • [New] Added support for the total number of rows in the table being handled in the data handling form.

  • [Change] Set new icons for tree widgets collapse and expand actions.

  • [Change] Updates on icons-*.conf files.

  • [Change] Minor layout adjustment in the data handling form.

  • [Change] Minor adjustment in the layers configuration widget to accept Enter/Return to apply settings.

  • [Fix] Fixed some shortcut conflicts in the main window.

  • [Fix] Minor fix in the "Open relationship" action in the design view.

  • [Fix] Fixed the index catalog queries when using pgModeler in compatibility mode (PG 9.x).

  • [Fix] Minor fix in buttons' drop shadows in data handling form.

v1.1.6

22 Dec 15:21
Compare
Choose a tag to compare

Changes since: v1.1.5

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

  • Fixed a bug in the FK relationships update routine that was causing more relationships to be deleted than what really needed to be.
  • Fixed a crash when creating a many-to-many relationship where one or more columns of the involved primary keys use generated default values (GENERATED AS).
  • Fixed a bug in the routine that updates relationships' generated objects that was causing the application to hang up when importing a simple hierarchy of tables.

v1.1.5

28 Oct 14:48
Compare
Choose a tag to compare

Changes since: v1.1.4

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

  • Added support for PostgreSQL 17.
  • Fixed the catalog queries of collation and domain objects for PostgreSQL 17.
  • Disabling objects' grids in TableWidget when the edited table is protected.

v1.2.0-alpha1

25 Oct 12:37
Compare
Choose a tag to compare
v1.2.0-alpha1 Pre-release
Pre-release

Changes since: v1.2.0-alpha

Attention: Some configuration files were changed in pgModeler 1.2.0-alpha1 causing a break in the backward compatibility with some pgModeler 1.1.x settings. This way, at the first start of the newer version, pgModeler will automatically try to migrate the older settings to the newer ones! Be advised that this is a release of a version in the early stages of development. Bugs, malfunctioning, crashes, and other problems are expected and will be resolved as soon as they are reported. Make sure to make backups of your models and databases before using this version!

It took almost 4 months but here we are glad to deliver to the community pgModeler 1.2.0-alpha1 which bundles 24 new features, 23 improvements, and 15 fixes since the release of the previous alpha. This time, some important decisions were taken to make the code base a bit less complicated to maintain, at the same time some other portions of the tool were refactored to allow the plugin development to be more flexible, and, of course, we are bringing some new features. The key improvements and fixes are described below:

  • Improved layers setup: The operation to move objects to certain layers was significantly improved in this version. Now, the quick action "Quick > Set layers" opens a dialog where the user can move the selected objects to one or more existing layers or even create a layer on the fly and assign it to the selection in the design view. Additionally to that improvement, the layers configuration widget (the one that is toggled by the button "Layers" at the bottom of the design view) received an option that makes relationships follow the visibility of the linked tables. This means that if one table is moved to a layer the relationships connected to it will move to that layer too.

  • Transactional export process: The export process is now capable of running the commands at once inside a transaction block. This is useful if you want an atomic execution of the generated DDLs, rolling back everything if one command fails in its execution. Note that the transactional option does not affect database and tablespace creation commands, since, by design, these commands need to be executed outside a transaction. The command-line interface tool also received support for the transactional export process and it's enabled by default like in the GUI. To deactivate it during the execution of any export operation use the options -nt or --non-transactional.

  • Improved code completion: The code completion widget now supports the completion of names in ALTER/DROP commands. It even detects the type of objects being modified or dropped suggesting the names filtered by the specified types.

  • Tabbed data handling: Before this version, data manipulation was performed via a standalone dialog, which could make data handling more difficult due to the number of standalone windows open. Now, all browsed tables are reunited in a single dialog but lying in their own tabs, facilitating data visualization.

  • Query variables plugin: The paid version of the tool received a new plugin that helps the developers test their queries using variables that are replaced in the command at the moment of its execution. Basically, a query that contains some variables prefixed by $ like this "SELECT $cols FROM $schema.$table WHERE $condition" has the values for each variable replaced and the parsed query executed. The variables and their values can be specified in a special widget that is toggled by the button "Variables" in the SQL execution widget. The main goal of this new feature is to accelerate the query testing mainly if you write parametrized queries based on some ORMs syntaxes. This plugin supports four variable formats: $variable, :variable, @ variable, and {variable}.

  • Removal of the support for Qt 6.2 and 6.3: The support for Qt versions 6.2 and 6.3 was removed since it was causing a lot of conditional compilation instructions (the famous C/C++ macros) to be used. This approach tends to make the code hard to read and maintain. So, since Qt 6.2 and 6.3 official upstream support has ended, we decided to make the code compliant with newer framework versions. To be more precise, pgModeler now builds on Qt 6.4.x and above.

  • Improved plugin API: The pgModeler's plugin development interface was improved and now allows more portions of the tool to receive user-created features to increase its roll of functionalities. Unfortunately, for now, you still need a basic knowledge of C++ and Qt. But for future releases, I plan to simplify even more the plugin interface in such a way as to allow non-C++ developers to create their custom features for pgModeler.

  • Miscellaneous:

    • Added support for PostgreSQL 17.
    • Added support for displaying FK's update/delete actions in the data dictionary.
    • The file selection dialog now starts on the user's home by default and saves that last accessed directory, using it the next time it is opened.
    • Minor bug fix in code generation of tablespace, database, and user mapping objects.
    • Minor fix in the object search feature when searching by source/referenced constraint columns.
    • Minor fix in objects' grids to allow sorting the "ID" column as an integer value.
    • Fixed a bug in function editing form that was not resetting "SETOF" flag when changing the return mode to "Table".
    • Fixed a malformed markdown code when a table or view had a comment.
    • Fixed a bug in diff process that was ignoring changes in columns.
    • Fixed a crash in the database import process when destroying detached inherited columns.
    • Fixed a bug in database import that was crashing the application while trying to retrieve user mapping comments.
    • Fixed a bug in the index object that was preventing the removal of included columns.

v1.1.4

21 Aug 20:39
Compare
Choose a tag to compare

Changes since: v1.1.3

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

  • Fixed a bug in the function object that did not reset the SETOF flag when changing the return type to TABLE.
  • Fixed a crash in the database import process when destroying detached inherited columns.
  • Fixed a bug in the system catalog query class that was crashing the application while trying to retrieve user mapping comments.
  • Fix a bug in the index object that was preventing the removal of included columns.

v1.2.0-alpha

24 Jun 20:36
Compare
Choose a tag to compare
v1.2.0-alpha Pre-release
Pre-release

Changes since: v1.1.x

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

After a work of 3 months here we are announcing pgModeler 1.2.0-alpha which bundles 20 new features, 26 improvements, and 22 bug fixes. Most are not directly visible to the user but will enhance the overall experience when designing database models or managing live databases. Below, is a summary of some key improvements in pgModeler 1.2.0-alpha. For detailed information about the changes in this version, please, refer to the CHANGELOG.md file.

  • Improved schema microlanguage: The pgModeler's code templating language (aka schema microlanguage) was improved in such a way as to support escaped character sequences that refer to metacharacter tokens. The supported escaped characters (and their related metacharacters) are \s ($sp), \t ($tb), \n ($br), [ ($ob), ] ($cb), { ($oc), } ($cc), $ ($ds), # ($hs), % ($ps), @ ($at), & ($am), \ ($bs) and * ($ds). The schema language now also supports the "include" statements that inject portions of code stored in other files into the currently parsed schema file. This is pretty handy for avoiding code duplication and facilitating the maintenance of schema files.

  • Markdown data dictionaries: pgModeler now supports the generation of data dictionaries in Markdown (.md) format in the model export form. This is useful to integrate data dictionaries generated by the tool with other documentation tools that use that file format to keep documentation pages. The pgmodeler-cli tool also received support for Markdown dictionaries through the option "--markdown".

  • Improved older configs copy: From now on, in the first run, pgModeler will try to copy the configuration files from a previous major version immediately before the current one. For example, running 1.2 the files to be copied will be from 1.1 and not from 0.9.x anymore. This will increase the chances of reusing settings from previous versions diminishing the annoying situation of reconfiguring the tool every time it is updated.

  • Improved code generation: The DDL generation for objects that support "CREATE OR REPLACE" was updated to include the "OR REPLACE" portion, this is the case for functions, procedures, views, and others. The diff feature received the option "Replace modified objects" which causes objects to be replaced via "CREATE OR REPLACE" instead of being dropped and created again.

  • Miscellaneous:

    • The restriction of specifying OUT parameters in procedures was removed in compliance with newer PostgreSQL versions.
    • Added support for the options check_option, security_invoker, and security_barrier in views.
    • The syntax highlighting feature was completely refactored being now more precise and the configuration files more simple.
    • The support for "Forced object recreate" in the diff feature was dropped. The option was confusing and was generating a diff code that was similar to generating the entire SQL of a model and re-export it to a server. So, it was considered not so useful anymore.
    • Minor fix in pgmodeler-cli in such a way as to warn about invalid changelog entries avoiding aborting the entire model fix process.
    • Fixed a bug in the reverse engineering feature that was not retrieving comments of sequences causing false positives to be generated in the diff process.

v1.1.3

13 May 20:30
Compare
Choose a tag to compare

Changes since: v1.1.2

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

  • Added an option to toggle the display of the mouse position, zoom, and object selection information.
  • Minor adjustment in UI stylesheets of the scene info widget.
  • Adjust the scene info widget layout to diminish the components wobbling when moving objects.
  • Minor adjustment in changelog entry validation in the database model.
  • Fixed a shortcut conflict in the text search/replace widget.
  • Minor fix in the database model objects recreation process (during model fix operation) to warn about invalid changelog entries avoiding aborting the entire model fix process.
  • Fixed a bug in the catalog class that was not retrieving comments of sequences causing false-positives results to be generated in the diff process.

v1.1.2

08 Apr 20:40
Compare
Choose a tag to compare

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

14 Mar 15:22
Compare
Choose a tag to compare

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.