Skip to content

Releases: pgmodeler/pgmodeler

v1.0.0-beta1

25 Nov 13:03
Compare
Choose a tag to compare
v1.0.0-beta1 Pre-release
Pre-release

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

10 Sep 14:32
Compare
Choose a tag to compare
v1.0.0-beta Pre-release
Pre-release

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

21 Jun 20:14
Compare
Choose a tag to compare
v1.0.0-alpha1 Pre-release
Pre-release

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

11 Apr 18:03
Compare
Choose a tag to compare
v1.0.0-alpha Pre-release
Pre-release

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

20 Dec 13:08
Compare
Choose a tag to compare

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.

v0.9.4-beta1

08 Nov 18:13
Compare
Choose a tag to compare

Changes since: v0.9.4-beta

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-beta1. 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: in preparation for the next major pgModeler release, the goal of this version was to bring only improvements and fixes to what was implemented until 0.9.4-beta and thus was done.

pgModeler 0.9.4-beta1 brings a few entries in its changelog since we didn't have serious bugs reported in the past two months. So, I decided to make some polishing in several portions of the tool.

Anyway, the improvement that is worth mentioning in this release is the experimental support for timescaledb in reverse engineering. So, now pgModeler is capable of generating models from databases that make use of that PostgreSQL extension without major issues. For pgModeler 0.9.4, we expect that any problem that eventually appears regarding the importing of timescaledb-based databases can be solved.

Below, the changelog entries of this version:

  • [New] Added extra PostGiS data types to PgSQLType.
  • [New] Created the method PgSqlType::isPostGiSType() which returns true if the current type is a PostGiS one.
  • [New] Created the method PgSqlType::reset() that clears some attributes of the type.
  • [New] Added the built-in type pg_lsn in order to make databases using timescaledb extension to be imported correctly.
  • [Change] Minor adjustment in windowsdeploy.sh to create zip packages.
  • [Change] Minor adjustment in demo version warning messages.
  • [Change] Adjusted the catalog query filters in ModelDatabaseDiffForm to retrieve system and extension objects according to the checkboxes "Import system objects" and "Import extension objects".
  • [Change] Adjusted the reverse engineering in such a way that the table children will follow the SQL disabled state of their parent tables.
  • [Change] Allowing importing pg_lsn attributes in usertype.sch.
  • [Change] Allowing the use of commas in enum type labels.
  • [Change] Improved the output of model fix operation in CLI.
  • [Change] The constants DataSeparator, UnescValueStart, UnescValueEnd, WildcardChar, FilterSeparator, FilterWildcard, FilterRegExp were moved from CoreUtilsNs to UtilsNs in order to be used in the parsers module.
  • [Change] In SchemaParser the meta char $ds (dollar sign) was renamed to $ms (money sign). Also, a new meta char $ds (data separator) was added and translates to the special data separator character UtilsNs::DataSeparator.
  • [Change] Minor adjustments in table.sch and foreigntable.sch schema files.
  • [Change] Improved DatabaseModel::getUserDefTypesReferences in order to get all references to postgis data types.
  • [Change] Improved ModelValidationHelper in order to set postgis extension a default comment when automatically creating it.
  • [Change] PgSQLTypeWidget now can be configured in such a way to disallow the configuration of type qualifiers like length, precision, interval, and some other. This is useful when configuring data types for objects that don't require such attributes in the data type like parameter, aggregates, transforms, casts, operators.
  • [Change] Changed the behavior of Parameter::getCodeDefinition when generating SQL code. Now, any type qualifier (except dimension descriptor []) will be discarded.
  • [Fix] Fixed the catalog query that lists policies.
  • [Fix] Added a minor workaround in DatabaseImportHelper::getType in order to treat the "any" pseudo-type correctly.
  • [Fix] Minor fix in DatabaseImportForm in order to disable option buttons when no connection is selected.
  • [Fix] Fixed a segfault when importing domains with long expressions.
  • [Fix] Fixed the broken SQL generation for tables with columns/constraints disabled.
  • [Fix] Fix the name of the checkbox related to updates checking to avoid breaking the building when enabling NO_UPDATE_CHECK via qmake.
  • [Fix] Fixed the shortcuts of Copy/Paste actions in DataManipulationForm.

v0.9.4-beta

20 Sep 14:23
Compare
Choose a tag to compare

Changes since: v0.9.4-alpha1

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-beta. 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: this version took a bit more to be released than expected but it's finally here. As with any other beta version, this one brings few new features since it is more focused on polishing all that was made on alpha stages in preparation for the stable version.

One new feature brought is the ability to generate GRANT and REVOKE commands to setup new role memberships through the diff process. Another addition is the support for included columns also known as non-key columns on indexes.

Due to that improvement on diff, the original behavior of "Member of" tab on the role editing form was changed in such a way to make the code generated from the comparison between two roles more precise.

This release also brings several improvements in the database design process. For example, the default match mode for FK constraints was changed to MATCH SIMPLE in compliance with the PostgreSQL docs. The layers feature was also patched and now the layers rectangles are correctly updated in certain circumstances.

Now, in the database browser in SQL tool, the tree items collapse state is saved and restored after any updates requested by the user, improving the overall experience on that module.

Finally, the whole set of changes of this release has 50 entries being 12 new features, 24 changes/improvements, and 14 bug fixes. Below, some key changes are highlighted. For the complete list of changes, please, take a look at the CHANGELOG.md.

  • [New] Added support for the generation of GRANT/REVOKE commands to control roles memberships via diff process.
  • [New] Added a fix step to reconfigure roles membership considering the deprecation of Role:RefRole attribute.
  • [New] Added support for included columns on indexes.
  • [New] Added the ability for referencing view columns on indexes.
  • [New] Added support for toggling update notifications for alpha/beta versions.
  • [New] Added support for save and restore the tree state in DatabaseExplorerWidget.
  • [Change] Dropped the support for MemberOf (Role::RefRoles) in order to make the diff between two roles more precise.
  • [Change] In RoleWidget the tab "Member Of" now works only as a convenience feature that adds the role being edited to the ones listed in that tab.
  • [Change] Restored the file pgmodeler.appdata.xml.
  • [Change] Allowing swap cluster level object ids in SwapObjectsIdsWidget when the objects are of the same kind.
  • [Change] Improvements in pgmodeler-se in such a way to control syntax highlighting settings per open editor.
  • [Change] Avoided the use of a working dir in .desktop file when installing mime types system-wide.
  • [Change] Improved the way layers rectangles are updated after undoing/redoing operations in OperationListWidget.
  • [Change] Changed the default match type in foreign key constraint to MATCH SIMPLE.
  • [Change] Minor adjustment in the ModelWidget::updateSceneLayers in order to force the update of all schemas.
  • [Change] Exceptions raised in BugReportForm when the "lastmodel" file isn't found are now ignored.
  • [Change] Minor change in ModelValidationHelper in order to use table's signature instead of name during name validation process.
  • [Fix] Fixed a crash in diff process caused by the ModelExportHelper instance when canceling the export to DBMS when an exception was raised.
  • [Fix] Fixed a crash in SwapObjectsIdsWidget when the user tried to swap objects using arrow keys.
  • [Fix] Minor fix in DatabaseExplorerWidget in order to display view's children source code.
  • [Fix] Fixed the building of IndexWidget on Qt 5.14 and below.
  • [Fix] Fixed the problem on ModelDatabaseDiffForm that was not accepting pressing Return/Esc to respectively run the diff and close the dialog due to a conflict with the event loop instance in ModelDatabaseDiffForm::exec().
  • [Fix] Minor fix in the configuration of ObjectGroupId element in DatabaseImportForm::updateObjectsTree in order to avoid crashes when no root element is specified.
  • [Fix] Fixed the generation of aggregate functions when they use functions that contain parameters in which data type have spaces (double precision, character varying).
  • [Fix] Fixed a segfault that can happen when changing the number of parameters of a function already associated with an aggregate.
  • [Fix] Additional fix for layers not being correctly loaded from dbm file.

v0.9.4-alpha1

19 Jul 11:44
Compare
Choose a tag to compare

Changes since: v0.9.4-alpha

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-alpha1. 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: after two months of intense work, we finally made it! The last alpha release for 0.9.4 is ready bringing some important fixes, changes, and interesting new features which I will briefly describe further.

The first new feature in 0.9.4-alpha1 is the ability to export the database model in split SQL scripts. In this mode, pgModeler will create a single SQL file for each database object in the model. This is useful if you need to deploy your database in a custom way differently from that made by the tool. This feature is available in GUI as well as in CLI.

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.

pgModeler 0.9.4-alpha1 also brings the ability to drop databases quickly from the databases listing in SQL tool. Previously, there was the need to browse the database first and then drop it.

This release also introduces a new auxiliary tool which is called pgModeler Schema Editor (pgmodeler-se). In this tool, it's possible to edit and validate *.sch files as well as tweak syntax highlighting configuration files. You can use this tool to modify the SQL generation template files, for instance, so the generated syntax fits your needs.

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.

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 CLI is the introduction of the option --force in the mime type handling operation.

The data type configuration widget received a simple improvement which adds a significant reduction in the time spent to configure a column data type for instance. 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 tab key to jump to the next field and the data type will be automatically configured.

In preparation for pgModeler 1.0, a lot of changes were made in the files structure. The libraries subprojects were moved to the folder "libs", all the executables subprojects move to "apps" folder, and all the assets that are deployed with libraries and executables were moved to "assets" folder. Additionally to that reorganization, some libraries were renamed in order to give a better semantics.

Finally, the whole set of changes of this release has 76 entries being 21 new features, 34 changes/improvements, and 21 bug fixes. Below, some key changes are highlighted. For the complete list of changes, please, take a look at the CHANGELOG.md.

  • [New] The bulk editing form now can be confirmed by the Ctrl+Return shortcut.
  • [New] The CLI now is capable of fixing models created before 0.9.4-alpha1 that have columns, functions, and other objects that reference extension types with simple names instead of schema-qualified names.
  • [New] Added an option to GeneralConfigWidget to toggle the displaying of schema names of columns data types on design view. This option affects only the rendering of objects, the code generation will keep displaying user-defined type names a in a schema-qualified way.
  • [New] Added the ability to drop databases from the database listing in SQLToolWidget.
  • [New] Created an auxiliary tool called pgModeler Schema Editor in order to help to edit *.sch files as well as validate their syntax.
  • [New] GeneralConfigWidget now restores the sch-highlight.conf to default.
  • [New] Added the environment variable name for schema editor app in GlobalAttributes.
  • [New] Added options to create only missing config files or recreate all config file in CLI.
  • [New] Added support for saving SQL definition in split files.
  • [New] Added support for split SQL generation in CLI.
  • [New] Added the ability to cancel the SQL file export process in GUI.
  • [New] Added new metacharacter to SchemaParser: $hs for #, $ps for %, $at for @, $ds for $.
  • [New] Added the option --force to the mime type handling operation on CLI.
  • [Change] Changed the behavior of column click on DataManipulationForm. Now, the sorting is triggered by holding control and clicking the desired column. Clicking a column without holding control will select all the items in that column.
  • [Change] Changed the behavior of extension types registration, now they will be forcibly registered with complete name (schema.name) in order to follow the same rule of user-defined data types so the reverse engineering can work properly for both types handled by extensions and those not.
  • [Change] Improved the type searching on PgSqlTypeWidget in such a way to display a popup with the data types matching the text typed by the user.
  • [Change] Improved the NewObjectOverlayWidget in such a way to allow only one action to be executed at a time.
  • [Change] Several clean-ups in the source code root. Removed unused files.
  • [Change] The subproject libpgmodeler was renamed to libcore and now moved to libs/
  • [Change] The subproject libpgmodeler_ui was renamed to libgui and now moved to libs/
  • [Change] The subproject libobjrenderer was renamed to libcanvas and now moved to libs/
  • [Change] The main executable subproject was renamed to pgmodeler and now moved to apps/
  • [Change] The main-cli executable subproject was renamed to pgmodeler-cli and moved to apps/
  • [Change] The crashhandler subproject was renamed to pgmodeler-ch and moved to apps/
  • [Change] Created a subfolder called "assets" to store all deployed files that aren't libraries or executables: conf, lang, schemas, samples, etc.
  • [Change] Refactored all .pro/.pri files in order to reference pgModeler libraries from variables $$LIB[LIBNAME] instead of relative paths.
  • [Change] Renamed all icons that were in Portuguese to English.
  • [Change] In SnippetsConfigWidget replaced the SQL highlight by Schema micro-language highlighting.
  • [Change] Improved the syntax error messages in SchemaParser.
  • [Change] Adjusting the general toolbar width according to the screen DPI.
  • [Change] Source files and ui files in libgui were reorganized by contexts (widgets, tools, settings, utils, dbobjects)
  • [Change] pgModeler will now create missing config files in the startup.
  • [Change] Minor adjustment in AppearanceConfigWidget to enable scrollbars in the viewport so users on small screens can see the entire model.
  • [Fix] Fixed the crash handler and bug report form in such a way to load the last modified model opened before their execution.
  • [Fix] Fixed a crash when the database import process fails to create an inheritance relationship somehow.
  • [Fix] Fixed a bug in the database import process that was not correctly setting up the data type name of columns when the types were handled by extensions. Types handled by extension don't need to have the schema name prepended.
  • [Fix] Minor fix in database import process in such a way to properly update the table rendering to hide schema names from title box.
  • [Fix] Fixed a malformed SQL code when configuring timestamptz in PgSqlType.
  • [Fix] Fixed a bug in SyntaxHighlighter that was wrongly highlighting the entire document when a multiline group had a line break as final expression.
  • [Fix] Fixed the syntax highligting files (xml, sql).
  • [Fix] Minor fix in CLI in order to associate .sch files to the schema editor.
  • [Fix] Fixed a bug that was causing all layers to be active even if there was some inactive (invisible) when adding a new layer.
  • [Fix] Minor fix in SyntaxHighlighter in order to return unformatted word when the group can't be forcibly defined in all exception cases when the word doesn't match any group.
  • [Fix] Fixed the description of the option --output in CLI.
  • [Fix] Fixed a bug in CLI that could lead to segfault when using diff option and a database model as input.
  • [Fix] Minor fix in PgSQLTypeWidget to capture the text changing signal on data type combo so the type format input can be properly updated when the user types the desire data type.

v0.9.4-alpha

12 May 15:25
Compare
Choose a tag to compare

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-alpha. Before loading your database models in this new release, please, make sure to have a backup of all of them and follow the steps presented by the model fix tool to correct 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 took almost half-year to conclude the first alpha release of 0.9.4 due to several problems I was facing. Anyway, I kept working on pgModeler at a slower pace and releasing snapshot buildings until we had reached an acceptable state of maturity for an alpha release.

Attending to some requests, I dedicated some time to bring the support for multiple layers. Basically, pgModeler now allows graphical objects to be in different layers which can be toggled in a dedicated widget in order to denote a custom context depending on the user's need. Additionally to multiple layers support, it was added support for displaying layers rectangles around the objects in order to demonstrate in which layer an object is in. The CLI also has been patched in such a way to fix models created in an older version (until 0.9.3) so they can support multiple layers correctly.

The metadata handling was improved in such a way to allow the manipulation of layers' information. Another improvement on this feature was the addition of a new option that allows the merging of duplicated text boxes, generic SQL objects, and tags. By default, duplicated objects of those kinds are ignored.

This release also brings support for configuration parameters and transform types on functions and procedures, and the support for PARALLEL attribute on functions. The import and diff processes were also improved to support the mentioned attributes on functions and procedures.

There were other improvements in the general usage of the tool. For instance, the main window can now be resized to a minimum of 640x480 attending to the requests of those who work on smaller screens. In the design view, now it's possible to change the color of the grid lines, canvas background, and page delimiter lines on the general settings.

Other fixes and improvements that are worth mentioning: the removal of the diff option "Trucante before alter columns" due to the risk of data loss in very specific use cases. The database model loading process was fixed and now it loads correctly the model's changelog entries without raising errors. Several fixes were also applied to the code generation to avoid malformed SQL code.

Finally, the whole set of changes of this release has 67 entries being 13 new features, 25 changes/improvements, and 29 bug fixes. Below, some key changes are highlighted. For the complete list of changes, please, take a look at the CHANGELOG.md.

  • [New] Added compatibility code that allows loading models created in versions before 0.9.4-alpha without losing layers and active layers information.
  • [New] Added an option to the metadata handling operation that serves to indicate if duplicated objects (textboxes, tags, generic sql) must be merged or not.
  • [New] Added support for configuration parameters and transform types on functions and procedures.
  • [New] Added the ability to rename the default layer.
  • [New] Added support for setup, in general settings, the custom color for grid lines, canvas area and page delimiter lines.
  • [New] Added support for multiple layers on the model.
  • [New] Added support for PARALLEL attribute to functions.
  • [Change] Minor adjustments on Messagebox resizing during first display.
  • [Change] Minor improvement on Messagebox in order to display the stack trace toggle button in a more intuitive way.
  • [Change] Changed the behaviour of the method ObjectsScene::removeLayers, now it'll allow the resetting or not the layers of the objects.
  • [Change] Adjusted the minimum size of the main window to 640x480 so it can fit in smaller screens.
  • [Change] Change on the search path for PluginsDir to use getPathFromEnv().
  • [Change] DatabaseModel will now create a default layer in the constructor.
  • [Change] The database model will add the default layer to the loaded model if there isn't a single layer identified.
  • [Change] DatabaseModel when loading older database model files will generate random layer colors.
  • [Change] Improved the window title of DataManipulationForm in sucha a way to display the currently browsed table.
  • [Change] Improved the selection of layers to be associated to object in context menu (Quick > Set layers). Now a floating widget is use to select multiple layers for the object selection in the canvas area.
  • [Change] Updated the sample models to use "layers" attributes on graphical objects.
  • [Change] pgModeler CLI will now rename "layer" attributes to "layers" in order to reflect the multiple layers support for older models.
  • [Change] The option "Truncate before alter columns" in the diff process was removed since its use is discouraged and dangerous in some situations.
  • [Fix] Minor fix in the table's catalog query in order to avoid setting up a partitioning strategy when the table is not a partitioned one.
  • [Fix] Minor fix in function.sch in order to generate transform types only for PostgreSQL >= 9.5.
  • [Fix] Minor fix to avoid black canvas when using settings from 0.9.3 or below on 0.9.4-alpha.
  • [Fix] Minor fix in ObjectsScene in such a way to update layer rects when the grid alignment option is toggled.
  • [Fix] Fixed the buttons shortcuts on LayerConfigWidget.
  • [Fix] Minor fix on SchemaView to compute the last position any time the object is reconfigured.
  • [Fix] Fixed the key combination to trigger the magnifier tool.
  • [Fix] Minor fixes in ModelWidget, MainWindow to update scene layer settings correctly.
  • [Fix] Fixed the CLI in such a way to update scene layer settings so the exporting processes can generate graphical files correctly.
  • [Fix] Fixed a bug in the layers removal process that was causing objects to be placed in a incorrect layer index after the removal.
  • [Fix] Fixed the "Fix" menu in main tool bar.
  • [Fix] Fixed a bug in ModelWidget that was causing overlay to be displayed when a textbox object was selected.
  • [Fix] Fixed wrong text in collationwidget.ui.
  • [Fix] Fixed a bug during the loading of changelog entries.
  • [Fix] Fixed the display of warnings during export in ModelExportForm.
  • [Fix] Fixed the display of warning messages during export in ModelDatabaseDiffForm.
  • [Fix] Fixed a malformed SQL code for triggers.
  • [Fix] Fixed the broken build on Qt 5.9.x.
  • [Fix] Fixed a bug that was preventing special PKs to be properly configured.
  • [Fix] Fixed the SQL generation of functions based on internal language.

v0.9.3

30 Dec 12:52
Compare
Choose a tag to compare

v0.9.3

Release date: December 30, 2020

Changes since: v0.9.3-beta1

Summary: this was a long year of challenges, struggles, and concerns. Inevitably, the happenings during 2020 affected the development of pgModeler 0.9.3 but, fortunately, I've managed to deliver the stable release still in 2020 as I have promised months ago.

This last release of 0.9.3, as usual, brings only fixes for what was developed during the alpha and beta stages with minor new features.

The minor features introduced by this version is the inclusion of tables' check constraints in the data dictionaries generated by the exporting process. Another new functionality is the ability to select multiple relationships connected to a table by simply right clicking it and activating the "Select relationships" action.

The object finder was improved in such a way to allow to search objects in the database model using additional searching fields. Now it's possible to search relationships by the involved tables and foreign keys that represent them and constraints by their related columns.

The diff feature was properly patched and now can produce more precise results during partial diffs done from the database model's changelog.

There were other important fixes in several parts of the software. Some of them are related to crashes during the importing process or during object selection in database designing.

The data dictionary generation was also fixed in such a way to include default values of columns associated with sequences.

The command-line interface was not working properly in 0.9.3-beta1 by rejecting a certain combination of valid parameters. The bug was fixed and now it is running as expected.

The whole set of changes of this release (considering the alpha and beta stages) has 242 entries being 61 new features, 102 changes/improvements, and 79 bug fixes. Below, all the changes since 0.9.3-beta1, for the complete list of changes on the entire development timeline, please, take a look into the CHANGELOG.md.

  • [New] Added support to deterministic and provider attributes in collations.
  • [New] Added missing check constraints in the data dictionary.
  • [New] Added support to selecting all relationships of a table at once via right-click on a table > select relationships.
  • [New] Added extra search fields in ObjectFinderWidget. Now it's possible to search relationships by the involved tables (source and destination table), constraints by their columns (source and referenced columns), and relationships by the foreign keys related to them.
  • [Change] The warning message about the unchecked option related to drop missing objects now pops up only when there are partial diff filters configured.
  • [Change] Improved the extended fade in/out options for tables/views/foreign tables.
  • [Change] The partial diff filters generated from changelog will ignore table children objects in order to avoid the wrong generation of diff code.
  • [Change] Minor refactoring in DatabaseModel::addChangelogEntry in order to use new attributes to define changelog operations.
  • [Fix] Fixed a crash when trying to select children objects of a schema that has no rectangle defined.
  • [Fix] Fixed a crash during the importing of domain objects.
  • [Fix] Fixed a crash during the importing of objects into the current model in very specific cases when the model had some tables/views referencing columns added by relationship.
  • [Fix] Fixed the full diff switching when there are no filtered objects in ModelDatabaseDiffForm.
  • [Fix] Fixed a bug in DatabaseModel::addChangelogEntry that was causing the registration of empty signature for some objects.
  • [Fix] Fixed a bug in CLI that was not accepting the use of --list-conns parameter
  • [Fix] Fixed the data dictionary generation in such a way to include nextval(sequence) calls in the "default value" column.
  • [Fix] Fixed a bug when configuring spatial data types during reverse engineering/diff.
  • [Fix] Fixed a bug in Catalog::parseDefaultValues that was causing ARRAY[] values to be wrongly split.
  • [Fix] Fixed a bug that was causing infinite validation of imported sequences.