Informix Error -798
-798 No permission on table to create an interval fragment.
The user does not have the required table-level privilege to create an interval fragment. An interval fragment can be created during an INSERT or an UPDATE operation. If an INSERT operation triggers the creation of an interval fragment, then user must have INSERT privilege at the table-level. Similarly, if an UPDATE operation triggers the creation of an interval fragment, then user must have UPDATE privilege at the table-level.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-798 fires when an INSERT/UPDATE triggers automatic interval-fragment creation, but the
session lacks the table-level privilege that specific operation requires — per the official
guidance, the required privilege matches the triggering statement: INSERT privilege for an
INSERT-triggered fragment, UPDATE privilege for an UPDATE-triggered one.
- An
INSERTtriggering interval-fragment creation, with the session lacking table-level INSERT privilege, per the official guidance — even if the session could otherwise insert into existing fragments via a different privilege path, creating a new fragment specifically requires this. - An
UPDATEtriggering interval-fragment creation, with the session lacking table-level UPDATE privilege, per the official guidance — the mirror-image case. - A session with only column-level privilege (rather than table-level), which per the official guidance's framing isn't sufficient for triggering interval-fragment creation.
Solutions / Resolution
- Grant table-level INSERT privilege, per the official guidance, if the triggering
operation was an
INSERT:GRANT INSERT ON orders TO app_user; - Grant table-level UPDATE privilege, per the official guidance, if the triggering operation
was an
UPDATE:GRANT UPDATE ON orders TO app_user; - Confirm the existing grant is table-level, not column-level, if a grant already exists but this error still occurs, per the official guidance's specific privilege-level requirement.
Examples
Checking existing privileges
SELECT a.grantee, t.tabname, a.tabauth
FROM systabauth a, systables t
WHERE a.tabid = t.tabid AND t.tabname = 'orders' AND a.grantee = 'app_user';
(tabauth is a single pattern column encoding every privilege as a letter — i/I for
Insert, u/U for Update; an uppercase letter means the grantee also holds grant option,
lowercase means the privilege alone.)
Granting the needed privilege
GRANT INSERT ON orders TO app_user;
Diagnostic Checks
- Identify whether the triggering statement was
INSERTorUPDATE, and check for the matching table-level privilege viasystabauth.
Related Errors / Related Topics
- -790 — "Cannot create interval fragment." A related interval-fragment-creation error, about a transient/technical failure rather than a privilege gap.
Match the required privilege to the triggering statement type — table-level INSERT for an INSERT-triggered fragment, table-level UPDATE for an UPDATE-triggered one.