@@ -37,16 +37,18 @@ public DB2XmlTableFunction(TypeConfiguration typeConfiguration) {
3737 protected void renderXmlTable (SqlAppender sqlAppender , XmlTableArguments arguments , AnonymousTupleTableGroupProducer tupleType , String tableIdentifierVariable , SqlAstTranslator <?> walker ) {
3838 sqlAppender .appendSql ( "xmltable(" );
3939 // DB2 doesn't like parameters for the xpath expression
40- walker .render ( arguments .xpath (), SqlAstNodeRenderingMode .INLINE_PARAMETERS );
40+ final String xpath = walker .getLiteralValue ( arguments .xpath () );
41+ sqlAppender .appendSingleQuoteEscapedString ( "$d" + xpath );
4142 sqlAppender .appendSql ( " passing " );
4243 if ( !arguments .isXmlType () ) {
4344 sqlAppender .appendSql ( "xmlparse(document " );
4445 }
4546 // DB2 needs parameters to be casted here
4647 walker .render ( arguments .xmlDocument (), SqlAstNodeRenderingMode .NO_PLAIN_PARAMETER );
4748 if ( !arguments .isXmlType () ) {
48- sqlAppender .appendSql ( ")" );
49+ sqlAppender .appendSql ( ')' );
4950 }
51+ sqlAppender .appendSql ( " as \" d\" " );
5052 renderColumns ( sqlAppender , arguments .columnsClause (), walker );
5153 sqlAppender .appendSql ( ')' );
5254 }
@@ -69,7 +71,10 @@ protected void renderXmlValueColumnDefinition(SqlAppender sqlAppender, XmlTableV
6971 }
7072
7173 static boolean isBoolean (JdbcMapping type ) {
72- return type .getJdbcType ().isBoolean ();
74+ return switch ( type .getCastType () ) {
75+ case BOOLEAN , TF_BOOLEAN , YN_BOOLEAN , INTEGER_BOOLEAN -> true ;
76+ default -> false ;
77+ };
7378 }
7479
7580 private static class DB2XmlTableSetReturningFunctionTypeResolver extends XmlTableSetReturningFunctionTypeResolver {
0 commit comments