Skip to content

ObjectNotImported error when importing exclusion constraints with GiST operators #2048

@mattias-aims

Description

@mattias-aims

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:

  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 &&);
  1. Use pgModeler's "Import" feature to import from this database

  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions