String[] details = DataDictionaryImpl.SYSFUN_FUNCTIONS[f];
String name = details[0];
if (!name.equals(routineName))
continue;
AliasDescriptor ad = DataDictionaryImpl.SYSFUN_AD[f];
if (ad == null)
{
// details[1] Return type
TypeDescriptor rt =
DataTypeDescriptor.getBuiltInDataTypeDescriptor(details[1]).getCatalogType();
boolean isDeterministic = Boolean.valueOf( details[ SYSFUN_DETERMINISTIC_INDEX ] ).booleanValue();
// Determine the number of arguments (could be zero).
int paramCount = details.length - SYSFUN_FIRST_PARAMETER_INDEX;
TypeDescriptor[] pt = new TypeDescriptor[paramCount];
String[] paramNames = new String[paramCount];
int[] paramModes = new int[paramCount];
for (int i = 0; i < paramCount; i++) {
pt[i] = DataTypeDescriptor.getBuiltInDataTypeDescriptor(
details[SYSFUN_FIRST_PARAMETER_INDEX +i]).getCatalogType();
paramNames[i] = "P" + (i +1); // Dummy names
// All parameters must be IN.
paramModes[i] = JDBC30Translation.PARAMETER_MODE_IN;
}
// details[3] = java method
RoutineAliasInfo ai = new RoutineAliasInfo(details[3],
paramCount, paramNames,
pt, paramModes, 0,
RoutineAliasInfo.PS_JAVA, RoutineAliasInfo.NO_SQL, isDeterministic,
false, /* hasDefinersRights */
false, rt);
// details[2] = class name
ad = new AliasDescriptor(this, uuidFactory.createUUID(), name,
uuidFactory.recreateUUID(schemaID),
details[2], AliasInfo.ALIAS_TYPE_FUNCTION_AS_CHAR,
AliasInfo.ALIAS_NAME_SPACE_FUNCTION_AS_CHAR,
true, ai, null);
DataDictionaryImpl.SYSFUN_AD[f] = ad;
}
list.add(ad);
}
return list;
}
AliasDescriptor ad = getAliasDescriptor(schemaID, routineName, nameSpace);
if (ad != null) {
list.add(ad);
}
return list;
}