Skip to Main Content
IBM Power Ideas Portal


This portal is to open public enhancement requests against IBM Power Systems products, including IBM i. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Functionality already exists
Workspace IBM i
Categories Db2 for i
Created by Guest
Created on Oct 14, 2022

XMLVALIDATE: when it found an issue, it doesn't inform in which number line inside XML is the issue.

Hello,

At present we're using XMLVALIDATE (SQL-XML) to check if the file XML it's right or not with XSD files.

When we use "XMLVALIDATE" and SQL founds an issue inside XML, then SQL throws a message error, but it doesn't inform to us in what line/position the error is founded. It's true that informs to us about what type of error is but not where is it.

Furthermore, if we need to fix this error it's easy when XML file has few rows, but if this XML file has 50 millions of rows, then it's impossible mission.

For this reason, we're requesting an improvement on the message error what include the row / position inside XML file the issue is founded.

If we know the row or position, we could inform our users where they have to check the row inside the file on IFS and check it again and again.

I hope you understand the issue and I think the improvement could be useful with the aim to find faster the issues found during validation XML to XSD's of big files. In my opinion this could be useful to everybody who is using this useful utility (xmlvalidate).


Finally, below I show an example of message error that if I forced by show how SQL throws a message error and it doesn't inform in what row is the issue.

SQL State: 2201R
Vendor Code: -20399 Message: [SQ20399] XML parsing or validation failed.
Cause . . . . . : The XML parsing failed during validation. The byte offset into the XML value being processed after conversion to UTF-8 is 264. The XML parser error description is: cvc-pattern-valid: The value "123" is not valid with respect to the pattern facet for type "ActiveCurrencyCode".
Recovery . . . : Correct the problem with the XML instance document. Retry the XMLVALIDATE or XDBDECOMPXML.


Thanks.
Best regards,

Idea priority High
  • Guest
    Reply
    |
    Oct 31, 2022
    The information you are asking for is already included in the message you are looking at. Note the 264 in the message text:

    The XML parsing failed during validation. The byte offset into the XML value being processed after conversion to UTF-8 is >>> 264 <<<.

    This location should be very close to where the problem was encountered.

    Using something like the following to identify the location can be helpful. In this case, we backed up 20 from the error position to have a better chance of seeing the start of the problem section of the XML document.

    VALUES SUBSTRING(XMLSERIALIZE(doc AS CLOB(2G) CCSID 1208),264 - 20);

    Determining "lines" is a bit more complicated. It all depends on your definition of a line. If lines are defined by an end-of-line sequence, you can use SYSTOOLS.SPLIT table function to break the document into lines to see where the error lands. An expression like the following will pick up all the text prior to the error location.
    SUBSTRING(XMLSERIALIZE(doc AS CLOB(2G) CCSID 1208, 1, errorLocation)

    While we understand trying to find these problems can be difficult, the information is already available to help pinpoint the location where the error was diagnosed.


    Db2 for i development team
    IBM Power Systems Development
  • Guest
    Reply
    |
    Oct 21, 2022

    This would apply to all JSON/XML functions that can generate an error if the document is malformed.

    [SQ16410] SQL/JSON member not found.
    Cause . . . . . : The specified member could not be found using the SQL/JSON path expression in strict mode.
    Recovery . . . : Specify a JSON expression that includes the member or use lax mode.

    isn't all that helpful as well.