GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — ORA-20204 "suite does not exist": non-owner schema suite discovery fails on Oracle 23ai (23.26.1); UT_TRIGGER_ANNOTATION_PARSING does not register (v3.2.2) · Issue #1360 · utPLSQL/utPLSQL

ORA-20204 "suite does not exist": non-owner schema suite discovery fails on Oracle 23ai (23.26.1); UT_TRIGGER_ANNOTATION_PARSING does not register (v3.2.2) #1360

New issue
Copy link
New issue
Copy link
Closed
Closed
ORA-20204 "suite does not exist": non-owner schema suite discovery fails on Oracle 23ai (23.26.1); UT_TRIGGER_ANNOTATION_PARSING does not register (v3.2.2)#1360
Copy link

Description

@DahouseAI
DahouseAI
opened on Jun 4, 2026
Issue body actions

Summary

On a clean utPLSQL v3.2.2 install against Oracle AI Database 23ai, build 23.26.1, a trivial
--%suite owned by a non-owner schema (the schema is not UT3) is not resolved by
UT_SUITE_MANAGER: running ut.run as that schema returns ORA-20204 "suite does not exist".
In the same environment the annotation DDL trigger UT_TRIGGER_ANNOTATION_PARSING does not appear
to register / fire
, so the annotation cache is never populated for the non-owner schema's objects.

The same install pattern works on earlier 19c/21c environments in our experience; the symptom appears
specific to the 23.26.1 build (newer than the 23ai range utPLSQL appears to have been tested against).

Environment

Item Value
Oracle Database Oracle AI Database 23ai, build 23.26.1 (single CDB + single PDB; self-managed, not Autonomous)
utPLSQL v3.2.2 (latest GA, 2026-05-24); clean install — 380 objects, 0 INVALID
Framework owner UT3
Test/suite owner a separate application schema (non-owner)
FIPS DBFIPS_140 = FALSE (FIPS not enabled)
Crypto sanity DBMS_CRYPTO SHA-1 and SHA-256 both work; only MD5 fails (ORA-28827). utPLSQL's ut_utils.get_hash defaults to dbms_crypto.hash_sh256, which works here — so the hashing path is not failing.

Steps to reproduce

  1. Install utPLSQL v3.2.2 headless as owner UT3 (install.sql), then run the official
    per-user grants for the non-owner application schema (create_grants.sql / create_synonyms.sql),
    i.e. EXECUTE on the UT3 program units/types and the public synonyms.
  2. Connect as the non-owner application schema and create a trivial suite:
    CREATE OR REPLACE PACKAGE demo_suite IS
      --%suite(Demo)
      --%test(trivial passes)
      PROCEDURE trivial;
    END;
    /
    CREATE OR REPLACE PACKAGE BODY demo_suite IS
      PROCEDURE trivial IS BEGIN ut.expect(1).to_equal(1); END;
    END;
    /
  3. Still as the non-owner schema:
    BEGIN ut.run('DEMO_SUITE'); END;
    /

Expected

The Demo suite is discovered and the trivial test runs green.

Actual

ORA-20204: suite DEMO_SUITE does not exist
ORA-06512: at "UT3.UT_SUITE_MANAGER", line ...

Inspecting further: UT_TRIGGER_ANNOTATION_PARSING does not register for the non-owner schema, so the
annotation cache is never populated, and UT_SUITE_MANAGER finds no suite. A manual
ut_annotation_manager.rebuild_annotation_cache(...) for the schema does not repair discovery.
UT_RUNNER, UT_SUITE_MANAGER, and UT_ANNOTATION_MANAGER are all AUTHID CURRENT_USER.

What we have already ruled out

  • Grants are complete — the full official create_grants.sql object set (65 objects), EXECUTE on all
    UT3 types, SELECT/DML on the annotation-cache tables, plus public synonyms and a manually-populated
    annotation cache: still ORA-20204.
  • Owner-side install is clean — a full owner-side reinstall/upgrade connected AS UT3 (v3.2.2,
    380 objects, 0 INVALID) did not change the non-owner result.
  • Not FIPS / not MD5 — DBFIPS_140=FALSE; SHA-256 (utPLSQL's default hash) works on this DB. The
    FIPS/ORA-28817/MD5 thread (ut_coverage_html_reporter fails with ORA-28817 in FIPS-enabled databases due to MD5 usage in DBMS_CRYPTO #1316 → PR Allow HTML coverage on FIPS-enabled DB #1356, shipped in v3.2.2) does not match this symptom.
  • Not a context-path case — distinct from ORA-20204 raised when running a context path #1317 (PascalCase context names on 19.3) and DDL Trigger not working #1088
    ("DDL Trigger not working", not 23.26-specific). Running tests from UT3 user in other schema corrupts annotation cache #1051 is the opposite direction (running as the owner).

Question / request

Is non-owner-schema suite discovery expected to work on the 23.26.1 build, and is there a known
fix or workaround? If this is an unaddressed regression on the newer 23ai build, we are happy to provide
any further diagnostics (DDL-trigger registration state, annotation-cache contents, UT_SUITE_CACHE
rows for the schema, full version banner) to help reproduce.

Activity

  1. jgebal commented on Jun 4, 2026

    @jgebal
    jgebal
    on Jun 4, 2026
    Member
    More actions

    Hello @DahouseAI
    Thank you for reporting the issue and providing comprehensive context.

    I see one obvious mistake in the provided example. The package is not a suite package as there is no empty lines between suite and test annotations.

    Your example says:

    CREATE OR REPLACE PACKAGE demo_suite IS
      --%suite(Demo)
      --%test(trivial passes)
      PROCEDURE trivial;
    END;
    /
    CREATE OR REPLACE PACKAGE BODY demo_suite IS
      PROCEDURE trivial IS BEGIN ut.expect(1).to_equal(1); END;
    END;
    /

    But correct suite would be:

    CREATE OR REPLACE PACKAGE demo_suite IS
      --%suite(Demo)
    
      --%test(trivial passes)
      PROCEDURE trivial;
    END;
    /
    CREATE OR REPLACE PACKAGE BODY demo_suite IS
      PROCEDURE trivial IS BEGIN ut.expect(1).to_equal(1); END;
    END;
    /

    Please let me know if it is only a typo in the issue example or if it's actually solving your problems.

    Can you please provide information about exact DB version and patch level?

    If I were to reproduce the issue, would it be sufficient to use the 23 FREE version provided by @gvenzl ?

    It is possible that it is an issue with Oracle database itself, but I can't tell without further investigation.

  2. jgebal commented on Jun 4, 2026

    @jgebal
    jgebal
    on Jun 4, 2026
    Member
    More actions

    You mention in your example connecting as non-owner schema.

    What do you mean exactly by non-owner
    Do you refer to a user who:

    • owns the unit test package but doesn't own the framework?
    • doesn't own the unit test package and doesn't own the framework?

    From framework perspective. Owner is the owner of unit test package (not the framework).

    It would be best if you would provide example with the test-owner schema name provided.

    When running the tests, I assume the it.run command is invoked from the owner of the unit-tests schema. Correct?

  3. DahouseAI commented on Jun 4, 2026

    @DahouseAI
    DahouseAI
    on Jun 4, 2026
    Author
    More actions

    Thank you — you were exactly right. Adding the blank line between --%suite and --%test fixed it: the suite is discovered and runs green as our non-owner application schema on Oracle AI Database 23ai build 23.26.1 (utPLSQL v3.2.2.4414). Our original report's package was missing that separator, so it was never registered as a suite. To your follow-up: the test-package owner is a dedicated application schema (not UT3), and ut.run is invoked as that same schema via the standard per-user grants/synonyms — that path works correctly on 23.26.1. Apologies for the noise from a malformed reproduction; no framework or database issue here. Happy for this to be closed, and thanks for the quick, precise help.

  4. DahouseAI
    closed this as completedon Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

      You are visitor 01402520 — GeezerVison does not store the pages you look up.
      Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.