jshook/nosqlbench-2055-mapfix2 (#2144)

* HOF component funcs inherit default input type from parent

* minor fixes to test

* fix for preview action syntax
This commit is contained in:
Jonathan Shook 2025-01-13 23:01:03 -06:00 committed by GitHub
parent 54a3569ce5
commit c0db7a195a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 45 additions and 29 deletions

View File

@ -117,9 +117,11 @@ public class VirtDataComposer {
for (int pos = 0; pos <fargs.length; pos++) { // Resolve functions recursively if needed
Object param = fargs[pos];
if (param instanceof FunctionCall) {
List<ResolvedFunction> resolvedAt = resolve(diagnostics, (FunctionCall) param, cconfig);
if (param instanceof FunctionCall innerFcall) {
if (innerFcall.getInputType()==null) {
innerFcall.setInputType(fcall.getInputType());
}
List<ResolvedFunction> resolvedAt = resolve(diagnostics, innerFcall, cconfig);
Object[] pfuncs = new Object[resolvedAt.size()];
for (int pfunc = 0; pfunc < pfuncs.length; pfunc++) {
pfuncs[pfunc]=resolvedAt.get(pfunc).getFunctionObject();
@ -167,6 +169,11 @@ public class VirtDataComposer {
for (int i = flow.getExpressions().size() - 1; i >= 0; i--) {
FunctionCall call = flow.getExpressions().get(i).getCall();
if (flow.getExpressions().size()==1) {
if (call.getInputType()==null) {
call.setInputType("long");
}
}
diagnostics.trace("FUNCTION[" + i + "]: " + call.toString() + ", resolving args");
@ -306,7 +313,8 @@ public class VirtDataComposer {
* @param funcs the list of candidate functions offered at each phase, in List&lt;List&gt; form.
* @return a List of resolved functions that has been fully optimized
*/
private List<ResolvedFunction> optimizePath(List<List<ResolvedFunction>> funcs, Class<?> type) {
public List<ResolvedFunction> optimizePath(List<List<ResolvedFunction>> funcs,
Class<?> type) {
List<ResolvedFunction> prevFuncs = null;
List<ResolvedFunction> nextFuncs = null;
int progress = -1;
@ -345,12 +353,18 @@ public class VirtDataComposer {
progress += reduceByPreferredResultTypes(funcs.get(0));
}
}
for (List<ResolvedFunction> func : funcs) {
func.sort(ResolvedFunction.PREFERRED_TYPE_COMPARATOR);
}
List<ResolvedFunction> optimized = funcs.stream().map(l -> l.get(0)).collect(Collectors.toList());
return optimized;
}
private int reduceByRequiredResultsType(List<ResolvedFunction> endFuncs, Class<?> resultType) {
public int reduceByRequiredResultsType(List<ResolvedFunction> endFuncs,
Class<?> resultType) {
int progressed = 0;
LinkedList<ResolvedFunction> tmpList = new LinkedList<>(endFuncs);
for (ResolvedFunction endFunc : tmpList) {

View File

@ -65,7 +65,8 @@ class ExitStatusIntegrationTests {
// Forcing a thread exception via basic command issue.
ProcessResult result = invoker.run("exitstatus_threadexception", 30,
"java", "--enable-preview", "-jar", JARNAME, "--logs-dir", "logs/test/threadexcep", "--logs-level",
java, "--enable-preview", "-jar", JARNAME, "--logs-dir", "logs/test/threadexcep",
"--logs-level",
"debug", "run",
"driver=diag", "cyclerate=10", "not_a_thing", "cycles=100", "-vvv"
);
@ -79,7 +80,8 @@ class ExitStatusIntegrationTests {
ProcessInvoker invoker = new ProcessInvoker();
invoker.setLogDir("logs/test");
ProcessResult result = invoker.run("exitstatus_asyncstoprequest", 60,
"java", "--enable-preview", "-jar", JARNAME, "--logs-dir", "logs/test/asyncstop", "--logs-level", "debug", "run",
java, "--enable-preview", "-jar", JARNAME, "--logs-dir", "logs/test/asyncstop",
"--logs-level", "debug", "run",
"driver=diag", "threads=2", "cyclerate=10", "op=erroroncycle:erroroncycle=10", "cycles=50", "-vvv"
);
assertThat(result.exception).isNull();