Handling UNISTR() Function Issue when Migrating 360Eyes Repository from Oracle to PostgreSQL

Handling UNISTR() Function Issue when Migrating 360Eyes Repository from Oracle to PostgreSQL

Introduction

This article explains a known behavior when migrating a 360Eyes repository from Oracle to PostgreSQL: Web Intelligence can generate SQL that includes UNISTR(), which is Oracle-specific, UNISTR() are generally used via filter on characters fields.

This is not tied to 360Eyes but to how Webi behaves in BusinessObjects

Error Signature

Because WebI documents are not automatically changing anything when you migrate from Oracle to PostgreSQL, you may see the following error when executing existing WebI created when you had Oracle, on PostgreSQL:

function unistr(unknown) does not exist

Root Cause

UNISTR() is an Oracle function used for Unicode string handling. PostgreSQL does not support this function because Unicode is handled natively in UTF-8.

  • UNISTR() is not defined in the 360Eyes universe.
  • It is not controlled by 360Suite.
  • It is generated automatically by Web Intelligence depending on query context and filters.

This is why simple universe queries can run correctly, while existing WebI documents may fail after migration.

What This Means

  • Your PostgreSQL configuration can be correct (UTF-8) and still fail.
  • The 360eyes_REPORTS universe can be compatible and still fail.
  • The issue usually comes from SQL generation inherited from Oracle-era WebI documents.
  • There is no universe or 360Suite parameter to automatically disable or replace UNISTR() in generated WebI SQL.

Best Practices for Oracle to PostgreSQL Migration

1. Identify affected WebI Filters

Use the "View SQL" feature to review your SQL and identify the affected queries.

Prioritize documents that:

  • Were originally created under Oracle.
  • Use complex filters or list-based filters.
  • Use character fields with manually entered values.

    2. Review and Adapt WebI Filters

    • Avoid In list filters with manually specified values on character objects when possible.
    • Prefer simple filters (Equal to) or dynamic filters.
    • Delete and recreate problematic filters in affected documents.

    3. Recreate Critical Documents on PostgreSQL

    For strategic documents:

    • Create a new WebI document directly on PostgreSQL.
    • Rebuild queries from the universe.
    • Reapply formatting logic if required.

    This ensures SQL is generated in a PostgreSQL-compatible context.

    4. Test with WebI Rich Client

    In some cases, WebI Rich Client generates SQL differently than BI Launchpad and may avoid UNISTR() injection. Use this only as a temporary workaround, not as a long-term fix.

    5. Treat This as a Web Intelligence Limitation

    This behavior is driven by Web Intelligence and is outside the scope of 360Suite. For blocking scenarios, open a ticket with SAP Support to document behavior on the WebI side.

    Summary

    • The error is caused by Oracle-specific UNISTR() generated by WebI.
    • PostgreSQL cannot execute UNISTR().
    • The database and universe can still be correctly configured.
    • Fixes must be applied in WebI documents, not in the universe.
    • Adaptation or recreation of documents is recommended during migration.