Files
secondo/ParallelTransform/TransformFacts.pl
2026-01-23 17:03:45 +08:00

90 lines
2.9 KiB
Prolog

/*
Fakten zum Tranformieren von Queries
zuerst Typen zum konvertieren
dann die Ergebnisstruktur eines parallelen Queries
*/
secondoPrologType(type, 'Type').
secondoPrologType(element, 'ELEMENT').
secondoPrologType(darray2elem, 'DARRAYELEM').
secondoPrologType(darray2elem2, 'DARRAYELEM2').
secondoPrologType(streamelem, 'STREAMELEM').
/*
Parallel ohne tie[] Operator - bei operator head[Int]
wird aktuell noch die Anzahl mal worker zurueckgeliefert
*/
secondoPrologParallelQuery([RELATION | [] ], FUNCTIONS, [query, [consume,
[dsummarize, [dloop, RELATION,'\'""""\'',
[fun, [elem11,'DARRAYELEM'], FUNCTIONS ]]]]]).
/*
Parallel zusaetzlich mit Join Moeglichkeit ohne tie[]
Operator - bei operator head[Int] wird aktuell noch die
Anzahl * worker zurueckgeliefert
*/
secondoPrologParallelQuery(
[RELATION1 | [RELATION2]], FUNCTIONS, [query, [consume, [dsummarize,
[dloop2, RELATION1, RELATION2,'\'""""\'',
[fun, [elem11,'DARRAYELEM'], [elem22,'DARRAYELEM2'],
FUNCTIONS ]]]]]).
/*
Parallel inkl. tie[] Operator speziell fuer min-operator
(wegen sortarray geht es aktuell nur mit int und reals)
*/
secondoPrologParallelQueryMin(
[RELATION | [] ], FUNCTIONS, [query, [get, [sortarray,
[getValue, [dloop, RELATION,'\'""""\'', [fun, [elem11,'DARRAYELEM'],
FUNCTIONS ]]], [fun, [element2, 'ELEMENT'], ['-', element2,
['*', element2, element2]]]], 0]]).
/*
Parallel ohne. tie[] Operator speziell fuer max-operator (wegen
sortarray geht es aktuell nur mit int und reals)
*/
secondoPrologParallelQueryMax(
[RELATION | [] ], FUNCTIONS, [query,
[get, [sortarray, [getValue, [dloop, RELATION,'\'""""\'',
[fun, [elem11,'DARRAYELEM'], FUNCTIONS ]]], [fun, [element2, 'ELEMENT'],
['-', element2, ['*', element2, element2]]]], [size, RELATION]]]).
/*
Parallel inkl. tie[] Operator speziell fuer avg-operator
*/
secondoPrologParallelQueryAvg(
[RELATION | [] ], FUNCTIONS, [query, ['/', [tie,
[getValue, [dloop, RELATION,'\'""""\'', [fun, [elem11,'DARRAYELEM'],
FUNCTIONS ]]],
[fun,[first3,'ELEMENT'],[second4,'ELEMENT'],['+',first3,second4]]],
[size, RELATION]]]).
/*
Parallel inkl. tie[] Operator, funktioniert aktuell nur mit 'count' und 'sum'
*/
secondoPrologParallelQueryTie(
[RELATION | [] ], FUNCTIONS, [query, [tie,
[getValue, [dloop, RELATION,'\'""""\'', [fun, [elem11,'DARRAYELEM'],
FUNCTIONS ]]], [fun,[first3,'ELEMENT'],
[second4,'ELEMENT'],['+',first3,second4]]]]).
/*
Parallel zusaetzlich mit Join Moeglichkeit inkl. tie[] Operator
*/
secondoPrologParallelQueryTie(
[RELATION1 | [RELATION2]], FUNCTIONS, [query,
[tie,[getValue,[dloop2, RELATION1, RELATION2,'\'""""\'',[fun,
[elem11,'DARRAYELEM'],[elem22,'DARRAYELEM2'], FUNCTIONS ]]],
[fun,[first3,'ELEMENT'],[second4,'ELEMENT'],['+',first3,second4]]]]).