if ( args.size()!=2 ) {
throw new QueryException("cast() requires two arguments");
}
String type = (String) args.get(1);
int[] sqlTypeCodes = TypeFactory.heuristicType(type).sqlTypes(factory);
if ( sqlTypeCodes.length!=1 ) {
throw new QueryException("invalid Hibernate type for cast()");
}
String sqlType = factory.getDialect().getCastTypeName( sqlTypeCodes[0] );
if (sqlType==null) {
//TODO: never reached, since getTypeName() actually throws an exception!
sqlType = type;
}
/*else {
//trim off the length/precision/scale
int loc = sqlType.indexOf('(');
if (loc>-1) {
sqlType = sqlType.substring(0, loc);
}
}*/
return "cast(" + args.get(0) + " as " + sqlType + ')";