Fix rendering of xmltable and boolean handling for older versions of DB2
This commit is contained in:
parent
29b00d6754
commit
c0804d366c
|
@ -37,7 +37,8 @@ public class DB2XmlTableFunction extends XmlTableFunction {
|
|||
protected void renderXmlTable(SqlAppender sqlAppender, XmlTableArguments arguments, AnonymousTupleTableGroupProducer tupleType, String tableIdentifierVariable, SqlAstTranslator<?> walker) {
|
||||
sqlAppender.appendSql( "xmltable(" );
|
||||
// DB2 doesn't like parameters for the xpath expression
|
||||
walker.render( arguments.xpath(), SqlAstNodeRenderingMode.INLINE_PARAMETERS );
|
||||
final String xpath = walker.getLiteralValue( arguments.xpath() );
|
||||
sqlAppender.appendSingleQuoteEscapedString( "$d" + xpath );
|
||||
sqlAppender.appendSql( " passing " );
|
||||
if ( !arguments.isXmlType() ) {
|
||||
sqlAppender.appendSql( "xmlparse(document " );
|
||||
|
@ -45,8 +46,9 @@ public class DB2XmlTableFunction extends XmlTableFunction {
|
|||
// DB2 needs parameters to be casted here
|
||||
walker.render( arguments.xmlDocument(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
if ( !arguments.isXmlType() ) {
|
||||
sqlAppender.appendSql( ")" );
|
||||
sqlAppender.appendSql( ')' );
|
||||
}
|
||||
sqlAppender.appendSql( " as \"d\"" );
|
||||
renderColumns( sqlAppender, arguments.columnsClause(), walker );
|
||||
sqlAppender.appendSql( ')' );
|
||||
}
|
||||
|
@ -69,7 +71,10 @@ public class DB2XmlTableFunction extends XmlTableFunction {
|
|||
}
|
||||
|
||||
static boolean isBoolean(JdbcMapping type) {
|
||||
return type.getJdbcType().isBoolean();
|
||||
return switch ( type.getCastType() ) {
|
||||
case BOOLEAN, TF_BOOLEAN, YN_BOOLEAN, INTEGER_BOOLEAN -> true;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
private static class DB2XmlTableSetReturningFunctionTypeResolver extends XmlTableSetReturningFunctionTypeResolver {
|
||||
|
|
|
@ -417,7 +417,10 @@ public class HANAXmlTableFunction extends XmlTableFunction {
|
|||
}
|
||||
|
||||
static boolean isBoolean(JdbcMapping type) {
|
||||
return type.getJdbcType().isBoolean();
|
||||
return switch ( type.getCastType() ) {
|
||||
case BOOLEAN, TF_BOOLEAN, YN_BOOLEAN, INTEGER_BOOLEAN -> true;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
private static class DB2XmlTableSetReturningFunctionTypeResolver extends XmlTableSetReturningFunctionTypeResolver {
|
||||
|
|
|
@ -203,6 +203,9 @@ public class SybaseASEXmlTableFunction extends XmlTableFunction {
|
|||
}
|
||||
|
||||
public static boolean isBoolean(JdbcMapping type) {
|
||||
return type.getJavaTypeDescriptor().getJavaTypeClass() == Boolean.class;
|
||||
return switch ( type.getCastType() ) {
|
||||
case BOOLEAN, TF_BOOLEAN, YN_BOOLEAN, INTEGER_BOOLEAN -> true;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue