@@ -1447,7 +1447,7 @@ public QueryTokenStream visitJsonPassingClause(HqlParser.JsonPassingClauseContex
14471447 QueryRendererBuilder builder = QueryRenderer .builder ();
14481448
14491449 builder .append (QueryTokens .expression (ctx .PASSING ()));
1450- builder .append (QueryTokenStream .concat (ctx .jsonPassingItem (), this ::visit , TOKEN_COMMA ));
1450+ builder .append (QueryTokenStream .concat (ctx .aliasedExpressionOrPredicate (), this ::visit , TOKEN_COMMA ));
14511451
14521452 return builder ;
14531453 }
@@ -1482,6 +1482,142 @@ public QueryTokenStream visitJsonTableColumns(HqlParser.JsonTableColumnsContext
14821482 return QueryTokenStream .concat (ctx .jsonTableColumn (), this ::visit , TOKEN_COMMA );
14831483 }
14841484
1485+ @ Override
1486+ public QueryTokenStream visitXmlElementFunction (HqlParser .XmlElementFunctionContext ctx ) {
1487+
1488+ QueryRendererBuilder builder = QueryRenderer .builder ();
1489+
1490+ builder .append (QueryTokens .expression (ctx .NAME ()));
1491+ builder .append (visit (ctx .identifier ()));
1492+
1493+ if (ctx .xmlAttributesFunction () != null ) {
1494+ builder .append (TOKEN_COMMA );
1495+ builder .append (visit (ctx .xmlAttributesFunction ()));
1496+ }
1497+
1498+ if (!CollectionUtils .isEmpty (ctx .expressionOrPredicate ())) {
1499+ builder .append (TOKEN_COMMA );
1500+ builder .append (QueryTokenStream .concat (ctx .expressionOrPredicate (), this ::visit , TOKEN_COMMA ));
1501+ }
1502+
1503+ return QueryTokenStream .ofFunction (ctx .XMLELEMENT (), builder );
1504+ }
1505+
1506+ @ Override
1507+ public QueryTokenStream visitXmlAttributesFunction (HqlParser .XmlAttributesFunctionContext ctx ) {
1508+
1509+ QueryRendererBuilder builder = QueryRenderer .builder ();
1510+
1511+ builder .appendExpression (QueryTokenStream .concat (ctx .aliasedExpressionOrPredicate (), this ::visit , TOKEN_COMMA ));
1512+
1513+ return QueryTokenStream .ofFunction (ctx .XMLATTRIBUTES (), builder );
1514+ }
1515+
1516+ @ Override
1517+ public QueryTokenStream visitXmlForestFunction (HqlParser .XmlForestFunctionContext ctx ) {
1518+
1519+ QueryRendererBuilder builder = QueryRenderer .builder ();
1520+
1521+ builder .appendExpression (
1522+ QueryTokenStream .concat (ctx .potentiallyAliasedExpressionOrPredicate (), this ::visit , TOKEN_COMMA ));
1523+
1524+ return QueryTokenStream .ofFunction (ctx .XMLFOREST (), builder );
1525+ }
1526+
1527+ @ Override
1528+ public QueryTokenStream visitXmlPiFunction (HqlParser .XmlPiFunctionContext ctx ) {
1529+
1530+ QueryRendererBuilder builder = QueryRenderer .builder ();
1531+
1532+ builder .append (QueryTokens .expression (ctx .NAME ()));
1533+ builder .append (visit (ctx .identifier ()));
1534+
1535+ if (ctx .expression () != null ) {
1536+ builder .append (TOKEN_COMMA );
1537+ builder .append (visit (ctx .expression ()));
1538+ }
1539+
1540+ return QueryTokenStream .ofFunction (ctx .XMLPI (), builder );
1541+ }
1542+
1543+ @ Override
1544+ public QueryTokenStream visitXmlQueryFunction (HqlParser .XmlQueryFunctionContext ctx ) {
1545+
1546+ QueryRendererBuilder builder = QueryRenderer .builder ();
1547+
1548+ builder .appendExpression (visit (ctx .expression (0 )));
1549+ builder .append (QueryTokens .expression (ctx .PASSING ()));
1550+ builder .appendExpression (visit (ctx .expression (1 )));
1551+
1552+ return QueryTokenStream .ofFunction (ctx .XMLQUERY (), builder );
1553+ }
1554+
1555+ @ Override
1556+ public QueryTokenStream visitXmlExistsFunction (HqlParser .XmlExistsFunctionContext ctx ) {
1557+
1558+ QueryRendererBuilder builder = QueryRenderer .builder ();
1559+
1560+ builder .appendExpression (visit (ctx .expression (0 )));
1561+ builder .append (QueryTokens .expression (ctx .PASSING ()));
1562+ builder .appendExpression (visit (ctx .expression (1 )));
1563+
1564+ return QueryTokenStream .ofFunction (ctx .XMLEXISTS (), builder );
1565+ }
1566+
1567+ @ Override
1568+ public QueryTokenStream visitXmlAggFunction (HqlParser .XmlAggFunctionContext ctx ) {
1569+
1570+ QueryRendererBuilder args = QueryRenderer .builder ();
1571+
1572+ args .appendExpression (visit (ctx .expression ()));
1573+ if (ctx .orderByClause () != null ) {
1574+ args .appendExpression (visit (ctx .orderByClause ()));
1575+ }
1576+
1577+ QueryTokenStream function = QueryTokenStream .ofFunction (ctx .XMLAGG (), args );
1578+
1579+ if (ctx .filterClause () == null && ctx .overClause () == null ) {
1580+ return function ;
1581+ }
1582+
1583+ QueryRendererBuilder builder = QueryRenderer .builder ();
1584+ builder .appendExpression (function );
1585+
1586+ if (ctx .filterClause () != null ) {
1587+ builder .appendExpression (visit (ctx .filterClause ()));
1588+ }
1589+
1590+ if (ctx .overClause () != null ) {
1591+ builder .appendExpression (visit (ctx .overClause ()));
1592+ }
1593+
1594+ return builder ;
1595+ }
1596+
1597+ @ Override
1598+ public QueryTokenStream visitXmlTableFunction (HqlParser .XmlTableFunctionContext ctx ) {
1599+
1600+ QueryRendererBuilder args = QueryRenderer .builder ();
1601+
1602+ args .appendExpression (visit (ctx .expression (0 )));
1603+ args .append (QueryTokens .expression (ctx .PASSING ()));
1604+ args .appendExpression (visit (ctx .expression (1 )));
1605+ args .appendExpression (visit (ctx .xmlTableColumnsClause ()));
1606+
1607+ return QueryTokenStream .ofFunction (ctx .XMLTABLE (), args );
1608+ }
1609+
1610+ @ Override
1611+ public QueryTokenStream visitXmlTableColumnsClause (HqlParser .XmlTableColumnsClauseContext ctx ) {
1612+
1613+ QueryRendererBuilder builder = QueryRenderer .builder ();
1614+
1615+ builder .append (QueryTokens .expression (ctx .COLUMNS ()));
1616+ builder .append (QueryTokenStream .concat (ctx .xmlTableColumn (), this ::visit , TOKEN_COMMA ));
1617+
1618+ return builder ;
1619+ }
1620+
14851621 @ Override
14861622 public QueryTokenStream visitPath (HqlParser .PathContext ctx ) {
14871623 return QueryTokenStream .concat (ctx .children , this ::visit , EMPTY_TOKEN );
0 commit comments