Pgmodeler Versions Save

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

v1.0.4

1 year 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.

v1.0.3

1 year ago

Changes since: v1.0.2

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

  • pgmodeler-cli now logs objects that fail to be recreated in the fix process into a log file stored in pgModeler's temp directory.
  • Added a progress bar to the model fix form and a cancel button which allows aborting the fix operation without closing that form.
  • Added a specific icon for the CSV load button in CsvLoadWidget.
  • Added the methods Trigger::getColumns and Trigger::addColumns.
  • Adjusted the behavior of hide and close events of model fix form.
  • Minor adjustment in pgmodeler-cli model fix messages.
  • Refactored TriggerWidget to use an instance of ColumnPickerWidget.
  • Fixed the database model file header validation for huge models in pgmodeler-cli.
  • Fixed a bug in TableDataWidget::generateDataBuffer that was causing the generation of malformed CSV in some circumstances.
  • Fixed the PluginsConfigWidget::initPlugins in such a way to remove the plugins that failed to load from the plugins grid.
  • Fixed a bug in BaseRelationship::canSimulateRelationship11 that was wrongly returning true.

v1.0.2

1 year ago

Changes since: v1.0.1

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

  • Fixed a bug related to importing referenced tables of FKs in partial import mode.
  • Fixed the attributes toggler item border style in partition tables.
  • Fixed a regression that was preventing the canvas color to be changed.
  • Fixed a bug in BaseObjectWidget::finishConfiguration that was preventing the creation of a role and a table with the same names.
  • Fixed the generation of DROP command for policy, trigger, and rule.
  • Fixed a bug that was causing objects to be selected in the sample model at appearance settings.
  • Forcing the usage of Qt 6.x due to problems on Windows when compiling with Qt 5.
  • Minor adjustment in CodeCompletionWidget stylesheet.
  • Saving/restoring the painter settings after drawing the background in ObjectsScene.
  • Fixed a malformed diff code for policies.

v1.0.1

1 year ago

Changes since: v1.0.0

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

  • The appearance config now correctly adjusts the drop shadows on tool buttons improving the color contrast according to the current theme.
  • When removing a primary key of a table in the editing dialog, pgModeler will now ask the user to uncheck all columns marked as PK in the Columns tab.
  • The catalog query for transform objects was disabled for PostgreSQL 9.x to allow compatibility mode to work without errors when browsing databases on that version.
  • Improving the visibility of some elements in the main menu bar and in the about widget.
  • Fixed the assignment of layer colors when loading model created in older pgModeler versions using compatibility mode.
  • When activating the action "Schemas rectangles > Hide" in the canvas area the child tables are properly updated in such a way to show the schema name in their title bars.
  • Fixed the disable state change for delimiter scale lock action when changing the current main window view.
  • Fixed the action "Open in file manager" in the file selector widget.

v1.0.0

1 year ago

Changes since: v0.9.4

Attention: pgModeler 0.9.x settings are not compatible with pgModeler 1.0.0. This way, at the first start of the newer version, some settings will be automatically migrated if the tool detects the configuration files related to 0.9.4 or below in the system!

The journey was really long, full of challenges that almost made me give up everything, but with the support from lots of people around the world, here we're, launching the long-awaited stable version of pgModeler 1.0.0! Since the early days of this project, seventeen years ago, I was anxious about this moment. This tool is the result of a dream of creating something really useful for the open-source community that I admire so much. I can't express in words how proud and joyful I'm about my hard work and the thousands of people that helped me so far. Thank you wholeheartedly to each one that reserved a bit of their time to make a contribution to this project. Your inestimable help was extremely important to keep this project alive and I hope to keep receiving all support needed to take pgModeler to levels even higher in the future!

In resume, the development of pgModeler 1.0.0 took exactly, 398 days and 649 commits producing a total of 435 changes between new features, bug fixes, and improvements. In the UI, some parts were redesigned, new icons were created, and the long-requested dark theme support was added. In the code generation, the PostgreSQL 9.x support was dropped while PostgreSQL 15 was added. Also, the codebase was fully ported to Qt 6 and now pgModeler can take advantage of all improvements introduced by the framework. There were, of course, a bunch of bug fixes in practicaly all parts of the tool but the majority was applied to the reverse engineering and diff processes. Below, are some key changes that is worth to detail:

UI improvements: this was the main goal for pgModeler 1.0, and now it brings a responsive UI, which means, that it will adapt the widget sizes and icons according to the screen's resolution. Also, we now have support for color themes which can be toggled on-the-fly in the appearance settings. Still in the responsiveness subject and using the Qt 6 improved high DPI screens support, pgModeler allows the use of custom UI scale factors that adjust the entire user-interface rendering depending on the screen that the tool is running.

New CSV parser: the CSV parsing routine was rewritten based on RFC 4180 which describes the CSV file in detail. That makes CSV files loading in pgModeler a little bit faster as well as more reliable since it's now capable of parsing files generated by third-party software more easily, improving the interoperability between the tools, and, consequently, the users' productivity.

Improved design: in the design view, the magnifier tool received a dedicated action in the top actions bar which can be triggered with F9 when the zoom factor is less than 100%. The magnifier tool has been improved too and now allows better object interaction. Unlike previous versions, this tool now lets the user interact with multiple objects which helps to handle large models where the visualization is impaired and the magnifier tool comes as a good way to handle objects.

Another important enhancement in the design is that the columns/constraints propagation mechanism was completely rewritten which resulted in a noticeable performance gain and now solves an old problem of objects created by identifier relationships not being added or even disappearing in certain circumstances.

The model printing operation was also improved in such a way that is now possible to print models with a scale factor, this way, it's possible to print an entire model on a single page, something that was not possible previously.

Miscellaneous changes: the data dictionary now displays information related to indexes, triggers, and sequences used in the tables, making the generated file much more complete from the documental point of view.

Another improvement was the ability to generate split SQL code in the command line interface which allows generating the objects' SQL in separate files. Furthermore, it is now possible to add to the generated SQL files the code of objects that are dependencies or children of the original object.

New plug-in development interface: the pgModeler's plug-in interface was completely redesigned being now more organized allowing developers to create custom features more easily without necessarily changing the core code. As a proof of concept for the new plug-in interface, three new plug-ins were developed and they expand the overall productivity and reliability of the tool. They are exclusive features for the paid version of the tool and come as a reward for the recognition given by financial supporters all these years. Of course, plug-ins for the open-source version of the tool will be developed in the near future. For now, these are the available plug-ins:

  • Quick object edit plug-in: this plug-in allows one to search for the desired object and start editing it in the related dialog. This is a well-known feature on many IDEs and now arrives in pgModeler to improve the user experience. The quick edit can be triggered using Ctrl+1 on the design view.

  • Split database model file plug-in: this plug-in introduces a new file format to store database models called split database model (.sdbm). It was designed to improve the version control of model files by saving the XML code of the objects in individual files. This way, it is easier to track the changes made in each database object when the model is handled by different people in a team. In future improvements for this plug-in, a git integration will be added so the user doesn't need to use external tools to commit changes in the model.

  • SSH tunnel plug-in: this plug-in brings to pgModeler another long-requested feature, the SSH tunnel. This feature allows one to connect to a database server by encrypting the data transferred between the client and server using the OpenSSH application without the need to expose the PostgreSQL server to the internet or even use an SSL certificate. It is sufficient to have the ability to log in via SSH in the database server to use the tunnel.

Finally, for more details about all changes in the release, please, read the CHANGELOG.md file. For less technical details of the new features in pgModeler 1.0.0, please, visit our blog.

v1.0.0-beta1

1 year ago

Changes since: v1.0.0-beta

Attention: pgModeler 0.9.x settings are not compatible with pgModeler 1.0.0-beta1. This way, at the first start of the newer version, some settings will be automatically migrated if the tool detects the configuration files related to 0.9.4 or below in the system!

Summary: the last step prior to the stable release was done with the launching of pgModeler 1.0.0-beta1 today. This development iteration was mainly focused on code refactoring. Of course, despite the main goal, there were some minor fixes and changes but a substantial set of changes was applied to the core code which will not be perceived in the UI. Anyway, the code is now cleaner in some aspects and easier to maintain.

An important new improvement that is worth mentioning is that the CSV parsing was rewritten based on RFC 4180 which describes the CSV file in detail. That makes that file type loading in pgModeler a little faster as well as more reliable since it's now capable of parsing files generated by third-party software easily, improving the interoperability between the softwares, and, consequently, the users' productivity.

There was also a redesign in the light theme to make it REALLY light compared to the light theme in the previous alpha and beta releases, so, you'll not notice a single dark element when using the light theme. Still related to themes, a patch was applied in the loading routine and now pgModeler doesn't change randomly the theme color while the user previews the selected one in the appearance configuration.

In the design view, the magnifier tool received a dedicated action in the top actions bar which can be triggered with F9 when the zoom factor is less than 100%. Also, a bug that was causing the resetting of the fade-out state of objects was fixed and now using the object finder widget or undoing/redoing operations will preserve the fade status of the objects.

There were also some bug fixes in the database import process related to operators and functions having parameters composed of user-defined types arrays.

Finally, the complete changelog of this version can be found in the file CHANGELOG.md.

v1.0.0-beta

1 year ago

Changes since: v1.0.0-alpha1

Attention: pgModeler 0.9.x settings are not compatible with pgModeler 1.0.0-beta. This way, in the first start of the newer version, some settings will be automatically migrated if the tool detects the configuration files related to 0.9.4 or below in the system!

Summary: following the path to the stable release, today I present to you pgModeler 1.0.0-beta. The main focus of this release is to remove support for PostgreSQL 9.x which has not been maintained for over a year. By dropping support for an obsolete version of PostgreSQL, we can spend more energy on introducing new functionality that newer versions of the RDBMS bring rather than trying to maintain older versions which creates unnecessary complexity in the pgModeler code. Therefore, if you still need to work with PostgreSQL 9.x, you will need pgModeler 1.0.0-alpha1 or lower.

This release also brings minor improvements in several parts of the tool. Now, the data dictionary displays information related to indexes, triggers, and sequences used in the tables, making the generated file much more complete from the documental point of view.

Another improvement was the ability to generate SQL code split in the command line interface which allows generating SQL by objects in separate files. Furthermore, it is now possible to add to the generated SQL files the code of objects that are dependencies or children of the original object.

In the model design area, the magnifier tool has improved to allow better object interaction. Unlike previous versions, this tool now allows interaction with multiple objects which helps to handle large models where the visualization is impaired and the magnifier tool comes as a good way to handle objects.

As part of the continuous enhancement in the UI and usability, navigating through form fields using shortcuts and tab keys has been improved to be much more consistent and intuitive compared to previous versions. It's still not in the best shape but for now, it will help users who prefer the keyboard over the mouse when configuring database objects. This improvement was also applied to almost all other widgets and forms in the tool.

Finally, as usual, some bugs and crashes were fixed improving the stability of the tool. The following are some changelog entries for that version. For more details, please read the CHANGELOG.md file.

  • [New] Added data dictionary entry for indexes, triggers, and sequences.
  • [New] Columns, indexes, triggers, and constraints now have their own method to generate their data dictionaries.
  • [New] Created the objects.sch to be reused when generating data dictionaries for columns, constraints, indexes, triggers, and sequences.
  • [New] Added split SQL code generation modes to export form.
  • [New] Added the ability to export dependencies or children SQL in split mode at CLI.
  • [New] Added code generation options to DatabaseModel::saveSplitSQLDefinition.
  • [New] Added an info message in the FindReplaceWidget reporting the search status (not found, cycle search, replacements made, etc).
  • [New] Added a text search widget in SourceCodeWidget.
  • [Change] Tab order adjustments in several forms and widget.
  • [Change] pgModeler CLI menu and messages fixed/improved.
  • [Change] Improved the interaction between the magnifier tool and the canvas area. Now the user can select multiple objects, move, and control the zoom with the magnifier tool activated.
  • [Change] Adjusted the size of the magnifier frame according to the primary screen size.
  • [Change] Improved the XMlParser exceptions raised to point the file that generated the error.
  • [Change] Dropped the support for PostgreSQL 9.x.
  • [Change] Connection class now aborts the connection to PostgreSQL 9.x servers.
  • [Change] Changed the shortcut key of the magnifier tool from Ctrl + Alt to F9.
  • [Change] Changed the default size of splash screen on screens with device pixel ratio = 1.
  • [Fix] Fix a crash in macOS when right-clicking a blank portion of the canvas when there are objects selected.
  • [Fix] Fixed a bug in BaseObject::isValidName that was not considered valid a name in the format schema."object".
  • [Fix] Fixed the diff generation for materialized views.
  • [Fix] Fixed a bug in CLI that was not correctly fixing domains in models created in 0.8.2.
  • [Fix] Minor fix in standalone connection dialog to alert the user about unsaved connection configuration.
  • [Fix] Minor fix in ConnectionsConfigWidget to avoid adding connections with duplicated aliases.

v1.0.0-alpha1

1 year ago

Changes since: v1.0.0-alpha

Attention: pgModeler 0.9.x settings are not compatible with pgModeler 1.0.0-alpha1. This way, in the first start of the newer version, some settings will be automatically migrated if the tool detects the configuration files related to 0.9.4 or below in the system!

Summary: since the main focus of this release was to improve even more the UI, we had to work on the refactoring of the codebase to use Qt 6 which has lots of enhancements compared to the previous major version. So, after 2 months of work, pgModeler is now completely ported to Qt 6 and thus not compatible with Qt 5 anymore.

So, attending to some requests, pgModeler received the ability to change the icon sizes to fit different screens in a better way. Still in the responsiveness subject and using the Qt 6 improved high DPI screens support, pgModeler allows the use of custom UI scale factors which adjust the entire user-interface rendering depending on the screen that the tool is running.

Another enhancement that is worth mentioning here is that the columns/constraints propagation mechanism was completely rewritten which resulted in a noticeable performance gain and now solves an old problem of columns/constraints created by identifier relationships not being added or even disappearing in certain circumstances.

Finally, as always, there were a lot of other fixes and changes (56 in total) in almost all parts of the tool which improves stability and reliability. For more details about them, please, read the CHANGELOG.md file.

v1.0.0-alpha

2 years ago

Changes since: v0.9.4

Attention: pgModeler 0.9.x settings are not compatible with pgModeler 1.0.0-alpha. This way, in the first start of the newer version, automatic migration of some settings will occur if the tool detects the configuration files related to 0.9.4 or below in the system!

Summary: after long 4 months of working we finally have the first alpha release of pgModeler 1.0! The main goal of this version was to boot up a series of deep improvements in the UI to add visual comfort while using the software. So that was done, this one brings redesigned UI elements and colors, a completely new icon set, and officially introduces the new project logo.

As promised, pgModeler 1.0 brings a responsive UI, which means, it will adapt the widget sizes and icons according to the screen's resolution. Also, we now have the support for color themes which can be toggled on-the-fly in the appearance settings. For now, it's possible to switch between dark and light themes or, if you prefer, use the system default theme but future updates will allow custom themes.

Finally, there are a lot of bug fixes and improvements (92 in total) in almost all parts of the tool which improves stability and reliability. For more details about them, please, read the CHANGELOG.md file.

v0.9.4

2 years ago

Changes since: v0.9.3

Attention: the database model file structure has changed since the last stable 0.9.3. Models created in older releases will certainly fail to load due to incompatibilities because some attributes in the XML code don't exist anymore or have changed during the development of 0.9.4. Before loading your database models in this new release, please, make sure to have a backup of them all and follow the steps presented by the model fix tool to patch the documents' structure. Not paying attention to this situation may cause irreversible data loss! If the fix procedures aren't enough to make your database models loadable again, please, ask for help at the official support channels!

Summary: it was quite a challenge to develop version 0.9.4 during the year 2021 but we finally made it, the last pgModeler of the series 0.9.x is ready! This one has a vast set of improvements over 0.9.3, being 51 new features, 104 enhancements, and 73 bug fixes that will make a big difference in the overall usage of the tool.

The first improvement in 0.9.4 is the ability to put objects in multiple layers which was not possible in previous versions. The user has now the ability to set up custom colors and labels for each layer enhancing the database model visualization and semantics. Still in the database model design, one can now define a custom color for canvas, grid lines, and page delimiter lines which can help a lot those who aren't comfortable with the excessive glare produced by the default color schema.

This release also improves the support for some PostgreSQL objects by bringing the configuration parameters and transform types to functions and procedures, adding the support for PARALLEL attribute on functions, and the support for included columns also known as non-key columns on indexes. It's worth mentioning that the import and diff processes were also improved to support all the mentioned improvements in those objects. Besides, the diff process is now capable of generating GRANT and REVOKE commands to set up new role memberships.

The data type configuration widget received a simple improvement which adds a significant reduction in the time spent to configure a data type. Now, the user can just type the name of the desired data type to be used instead of selecting it by using the mouse. After typing the data type name just hit the tab key to jump to the next field and the data type will be automatically configured. Seems a silly fix but it adds speed when you need to repeatedly create columns in a table, for example.

In the SQL tool, is now possible to drop databases quickly from the databases listing. Previously, there was the need to browse the database first and then drop it. In the database browser widget, the tree items collapse state is saved and restored after any updates requested by the user, improving the overall experience on that module. In data manipulation form, the sorting operation performed when clicking columns was adjusted. Now, the sorting will be triggered by holding the control key and clicking the desired column, and if the user only clicks a column without holding the control key will cause the entire column to be selected in the grid.

Attending to some requests, pgModeler is now capable of exporting the database model in split SQL files instead of generating a single SQL file representing the entire database. In this export mode, the files are named in such a way to represent the proper order of creation, which means that running the scripts one after another will create the whole database like it was created from a single file.

Due to the introduction of a new syntax highlighting configuration file (for code snippets configuration), pgModeler will, from now on, create missing configuration files at startup. This will avoid breaking the tool's execution when it detects the absence of any configuration file. Also, during the copy of these files, pgModeler will enforce the write permission over them to avoid access problems on some systems that store template settings on read-only paths.

The command-line interface was patched in such a way that now doesn't crash anymore when performing a diff operation in which a database model is used as input. Another improvement to the CLI is the introduction of the option --force in the mime type handling operation. Also, a patch was made in such a way to avoid the usage of option '-platform offscreen' explicitly when calling the application.

Finally, there is a bunch of other new features and bug fixes implemented in almost all parts of the tool which improves stability and reliability. I kindly invite you to read the CHANGELOG.md file of the 0.9.4 development timeline to know everything in detail.