Skip to content

Added support for OPENXML with WITH clause #587

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: BABEL_5_X_DEV__PG_17_X
Choose a base branch
from

Conversation

harshdubey166
Copy link

@harshdubey166 harshdubey166 commented Jun 10, 2025

Description

This PR adds support for OPENXML with WITH clause.

OPENXML provides a rowset view over an XML document. Since OPENXML is a rowset provider and it returns a set of rows, we can use OPENXML in the FROM clause of a T-SQL statement just as we can use any other table, view, or table-valued function. The WITH clause in OPENXML provides a rowset format (and additional mapping information as required) by using either SchemaDeclaration or specifying an existing TableName.
Currently Babelfish does not have support for openxml. So the primary objective is to add support for OPENXML with WITH clause.
The syntax of openxml is as follows :

OPENXML ( idoc int [ in ] , rowpattern nvarchar [ in ], [ flags byte [ in ] ] )
    [ WITH ( SchemaDeclaration | TableName ) ]

Arguments

  • idoc
    • The document handle of the internal representation of an XML document. The internal representation of an XML document is created by calling sp_xml_preparedocument.
  • rowpattern
    • The XPath pattern used to identify the nodes to be processed as rows. The nodes come from the XML document whose handle is passed in the idoc parameter.
  • flags
    • Indicates the mapping used between the XML data and the relational rowset, and how the spill-over column is filled. flags is an optional input parameter, and can be one of the following values.

The WITH clause provides a rowset format (and additional mapping information as required) by using either SchemaDeclaration or specifying an existing TableName. If the optional WITH clause isn't specified, the results are returned in an edge table format. Edge tables represent the fine-grained XML document structure (such as element/attribute names, the document hierarchy, the namespaces, PIs, and so on) in a single table.

Extensions PR : babelfish-for-postgresql/babelfish_extensions#3820
BABEL-3635
Signed-off-by: Harsh Dubey [email protected]

Check List

  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the PostgreSQL license, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.

For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@harshdubey166 harshdubey166 changed the title Added support for openxml with WITH clause Added support for OPENXML with WITH clause Jun 15, 2025
Signed-off-by: Harsh Dubey <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants