-
-
Notifications
You must be signed in to change notification settings - Fork 411
Description
Bug description
When importing a database that contains exclusion constraints using GiST index with = and && operators on bigint and tstzrange columns, pgModeler fails with ObjectNotImported and UndefinedAttributeValue errors.
How to reproduce
On PostgreSQL 18.1:
- Create a table with an exclusion constraint using GiST:
CREATE EXTENSION IF NOT EXISTS btree_gist;
CREATE TABLE test_table (
id bigint NOT NULL,
valid_period tstzrange NOT NULL DEFAULT tstzrange(now(), 'infinity')
);
ALTER TABLE test_table
ADD CONSTRAINT test_table_id_valid_period_excl
EXCLUDE USING gist (id WITH =, valid_period WITH &&);-
Use pgModeler's "Import" feature to import from this database
-
The constraint fails to import
Expected behavior
Successfully import the exclusion constraint with proper operator resolution
Info about your desktop
- OS:
Debian Linux - Version:
Linux debian 6.1.0-41-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64 GNU/Linux - Window manager:
Gnome - pgModeler version:
pgmodeler_plus-2.0.0-alpha-linux64.appimage - Qt version:
?
Stacktrace / Debug info
[ObjectNotImported] The object 'test_table.test_table_id_valid_period_excl' (Constraint),
oid 'XXXXX', could not be imported due to one or more errors! Check the exception stack
for more details. 'HINT:' if the object somehow references objects in 'pg_catalog' or
'information_schema' consider enabling the import of system/extension objects.
[UndefinedAttributeValue] Attribute 'operator' with an undefined value in file
'/home/user/pgModeler/schemas/xml/excelement.sch', line 28, column 23!
Raw attributes from error
columns: [0:1]={1,2}
ex-constr: true
expressions: id WITH =, valid_period WITH &&)
index-type: gist
name: test_table_id_valid_period_excl
no-inherit: true
opclasses: [0:1]={16527,10078}
operators: {410,3888}
type: ex-constr
Additional info
The issue appears to be that pgModeler cannot resolve the operators (OIDs 410 for = on bigint, 3888 for && on tstzrange) when they come from the btree_gist extension. The opclasses reference OIDs that pgModeler doesn't recognize.