VoltSystemProcedure.class.getSimpleName());
throw new VoltCompilerException(msg);
}
// read annotations
final ProcInfo info = procClass.getAnnotation(ProcInfo.class);
if (info == null) {
throw new VoltCompilerException("Sysproc " + shortName + " is missing annotation.");
}
// add an entry to the catalog
final Procedure procedure = database.getProcedures().add(shortName);
procedure.setId(this.getNextProcedureId());
procedure.setClassname(procClass.getCanonicalName());
procedure.setReadonly(readonly);
procedure.setSystemproc(true);
procedure.setHasjava(true);
procedure.setSinglepartition(info.singlePartition());
procedure.setEverysite(everysite);
ProcedureCompiler.populateProcedureParameters(this, procClass, procedure);
// ProcInfo.partitionParam overrides everything else
if (info.partitionParam() != -1) {
if (info.partitionParam() >= procedure.getParameters().size() || info.partitionParam() < 0) {
String msg = "PartitionInfo 'partitionParam' not a valid parameter for procedure: " + procedure.getClassname();
throw new VoltCompilerException(msg);
}
procedure.setPartitionparameter(info.partitionParam());
}
else {
procedure.setPartitionparameter(NullProcParameter.PARAM_IDX);
}