I proudly announce pgModeler 1.2.0-beta1!
UX/UI enhancements, pgModeler Plus, and much more!

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 make a backup of all models and databases before use. Please report any found bugs for prompt resolution. The mentioned migration process helps transition to improved configurations while minimizing disruption to your workflow.

After two months of intense development, we’re proud to present the final beta release of pgModeler 1.2.0! This version brings some important changes and new cool features that will certainly improve the overall usage of the tool. It also introduces a new product name for the paid version of pgModeler while introducing critical changes to some exclusive features of that version. That being said, let's see what's new...

Improved source code editor

The source code editor field received two new features. First is an embedded search/replace widget - its functionality is self-explanatory. The second addition is a line wrap feature that automatically breaks lines to fit the widget's width. This functionality makes editing code with long lines more convenient by eliminating the need for horizontal scrolling. Both features can be activated from the actions bar available in every source code editor widget.

Improved debug mode

The reverse engineering and database diff forms now show a debug tab during debug mode operations. This helps users troubleshoot problems by providing detailed information about the processes' execution when things don't work as expected.

Enhanced extension child object handling

This release brings significant improvements to how pgModeler handles PostgreSQL extensions, addressing a crucial need for users who regularly work with extension ecosystems. Extensions in PostgreSQL can manage several database objects in multiple schemas, but until now, pgModeler's implementation was limited primarily to data types and contained an important architectural limitation - it incorrectly bound these objects to the extension's installation schema rather than their proper locations.

The new version introduces an improved extension awareness that properly models complex scenarios like timescaledb, where an extension installed in the public schema actually creates and manages objects in dedicated schemas such as _timescaledb_internal, for example. Previously, attempting to import databases using such extensions could produce incomplete models or fail entirely, as the tool couldn't properly represent these schema relationships.

The below image demonstrates this improvement, clearly showing how timescaledb installed in the public schema correctly owns and manages data types residing in the separate _timescaledb_internal schema - a relationship that previous versions would have misinterpreted. This fundamental improvement in extension handling makes pgModeler far more reliable for databases leveraging PostgreSQL's powerful extension system. For future releases, there will be support for other objects like operations, operation classes, functions, procedures, and many others.

Miscellaneous

Some other fixes, changes, and improvements were implemented in different areas of the tool:

  • The model objects tree now accepts an Alt + Click to highlight graphical objects in the design view.
  • The query filters in diff form were improved and now exclude only system objects during comparison, producing more precise results.
  • The database model received an option to toggle the inclusion of disabled objects' code in the generated scripts.
  • The system (protected) objects can now have permissions assigned.
  • Fixed crashes when diffing databases containing extension-created tables.
  • Fixed the importing of columns that use arrays of user-defined types.
  • Fixed the persistence of time zone state in timestamp types.
  • Fixed false-positive diff results for functions with comments or STRICT behavior.
  • Fixed reverse engineering of types with uppercase letters in names.
  • Fixed a crash in identifier relationships with FK indexes.
  • Fixed the reverse engineering in such a way to skip permissions whose references unavailable system roles.
Introducing pgModeler Plus

For a long time—since I first decided to charge for pre-compiled binaries to financially support this project—I’ve wanted to give the paid version a distinct name. This serves two purposes: to stop referring to it simply as the "paid version" and to clearly differentiate between the two variants of pgModeler. The first is the free, full-featured version, while the second, built from the same codebase, includes exclusive features for users who choose to support the project financially.

Thus, pgModeler Plus was born—the same pgModeler you know, but bundled with exclusive features unavailable in the open-source version, such as SSH tunnel support, split database model format, backup utilities, and more. These additional features will be released periodically, as I whish to make pgModeler even more powerful while acknowledging the invaluable support of its contributors.

Split model file specification changes

In pgModeler Plus, the split database model format specification was changed to fix some problems when the model, when managed by a source code management system, was handled by several people. In some circumstances, the merge operations would cause the corruption of the index file (.sdbm), leading to loading failures.

The major change in the sdbm format involves separating database model metadata (author, layer settings, and other attributes) into a dedicated metadata.xml file. The .sdbm file has been simplified to contain only references to the model's component files, and the changelog file has been renamed to changelog.xml. Note that loading a split model now requires both metadata.xml and .sdbm files to be present in the same folder - the operation will fail if either is missing.

This format change introduces a backward compatibility limitation: pgModeler 1.2.0-beta1 cannot read split models created in previous versions. To migrate existing split models to the new format, follow this procedure using your current pgModeler installation (not the new beta version):

  1. Open your existing split model in the current version
  2. Save it as a single .dbm file
  3. Install 1.2.0-beta1
  4. Open the saved .dbm file
  5. Re-save it as a split model using the split model button

Alternatively, you can use pgmodeler-cli for migration:

  1. Backup your original .sdbm file
  2. Run: pgmodeler-cli -ri -if /path/to/splitmodel/file.sdbm (attention! this overwrites the original)
  3. Edit the backed-up .sdbm file, removing all <object> tags while preserving the XML header <?xml ... ?> and <dbmodel> tags
  4. Save this modified file as metadata.xml in the same directory as the new .sdbm

Both methods will successfully convert your split model to the new format while preserving all model data and relationships.

SSH Tunnel plugin enhancements

The SSH tunnel plugin in pgModeler Plus has been refined to create a more seamless workflow when establishing database connections through secure tunnels. Once you've successfully configured your SSH tunnel settings, the plugin now offers a direct path to set up your database connection without repetitive configurations. Simply right-click on any selected tunnel in the configuration grid or use the dedicated connection button , and the system will automatically generate a pre-configured connection for you.

You'll notice the connection form locks the host and port fields - this is because these parameters are already managed by the SSH tunnel, which creates a secure local port forwarding all traffic to your remote database server. This design not only prevents configuration errors but also reinforces security by ensuring all connections properly route through the encrypted tunnel. All you need to provide are the specific database name you want to access and your authentication credentials.

Let's support pgModeler?

If you like the work being done to create a quality database design tool, please become our sponsor on GitHub. Any open-source project needs financial support to keep the development alive, which is not different from pgModeler. Go ahead, be a supporter in one of the offered sponsor tiers, and receive rewards for being a friend of an open-source project! :D


Please consider reporting any bugs or requesting new features through our GitHub repository. To stay updated with the latest project news and announcements, follow us on social media (X, Mastodon, Bluesky) or join our Telegram channel @pgmodeler.

From now on, all my development efforts will be dedicated to polishing the stable 1.2.0 release, which I'm targeting for mid-May. This includes refining all the improvements introduced in 1.2.0-beta1 and developing a brand new plugin for pgModeler Plus users.

Thank you for all the support and happy modeling with pgModeler!
Take care! ;)

Comments (0) Add a comment

Add new comment

  • 0/1024