Download pgModeler Distributed in many flavours just pick yours
pgModeler is open-source software, and you can get its source code anytime if you want to compile it by yourself. As a convenience, we provide compiled binary packages at a really fair price. Also, if you're interested in evaluating a binary package, you can get a demo copy before proceeding with the purchase. Since this is an independent project and without sponsorship, by buying any binary package you'll help keep the development active and at full speed!
Stable: 0.9.3 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.
Develop: 0.9.4-alpha1 July 19, 2021
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.
Purchase an access key and support this project. Pay using PayPal™, Stripe™, or Bitcoins and enjoy ready-to-use packages.
Get the binary packages by using an access key previously purchased.
If you want to compile pgModeler by yourself, you can grab the source code from the official repository.
pgModeler has two main development branches: master and develop. The master branch is where features considered stable can be found. The development branch, reserved for alpha and beta releases, is where patches, new unstable features are placed and tested.
You can retrieve the source using the git command by running the following: