Closed stefjoosten closed 11 months ago
As far as I know this has never been implemented. So the conclusion that it still does'nt work is valid.
@hanjoosten, I'm quite sure it has been implemented. It lives on GitHub in AmpersandTarski/Prototype/bootstrap/files/execEngineWarshall.php
@all, I have also verified that this code is present in the container, by means of the following experiment:
% docker exec -it prototype bash
root@6e5ef189ca3a:/usr/local/project# cd /var/www/
root@6e5ef189ca3a:/var/www# ls bootstrap/files
execEngineDateTime.php execEngineFunctions.php execEngineWarshall.php navigationMenu.php
root@6e5ef189ca3a:/var/www# cat bootstrap/files/*.php | grep Transitiv
/* This file defines the (php) function 'TransitiveClosure', that computes the transitive closure of a relation.
ROLE ExecEngine MAINTAINS "relationCompTransitiveClosure"
RULE "relationCompTransitiveClosure": relation = relationCopy
VIOLATION (TXT "{EX} TransitiveClosure;relation;Concept;relationCopy;relationPlus")
2) Of course, there are all sorts of alternative ways in which 'TransitiveClosure' can be used.
3) There are ways to optimize the below code, e.g. by splitting the function into an 'InsTransitiveClosure'
and a 'DelTransitiveClosure'
ExecEngine::registerFunction('TransitiveClosure', function ($r, $C, $rCopy, $rPlus) {
throw new InvalidExecEngineCallException("TransitiveClosure() expects 4 arguments, but you have provided " . func_num_args());
root@6e5ef189ca3a:/var/www#
I have checked it in the log file too:
prototype | [2023-06-06 09:14:59] EXECENGINE.DEBUG: ExecEngine function 'TransitiveClosure' registered [] {"request_id":"df4bf77ca4"}
Besides, the error message is an error from within the code for TransitiveClosure
. So it is present.
So, something else must be wrong here.
The situation persists. I have tried it in a different context but with the same result. Here is part of the log file that exposes the bug:
prototype | [2023-06-06 09:15:35] RULEENGINE.DEBUG: Checking rule 'Compute transitive closure of naarVanFlip' [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] RULEENGINE.DEBUG: Evaluating conjunct 'conj_161' [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] DATABASE.DEBUG: select distinct t1.src as src, t1.tgt as tgt from (select "SrcConnectie" as src, "TgtConnectie" as tgt from "naarVanFlip" where ("SrcConnectie" is not null) and ("TgtConnectie" is not null)) as t1 left join "connsCopy" as t2 on (t1.src = t2."SrcConnectie") and (t1.tgt = t2."TgtConnectie") where (t2."SrcConnectie" is null) or (t2."TgtConnectie" is null) [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] RULEENGINE.DEBUG: Conjunct 'conj_161' broken: 271 violations [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] EXECENGINE.INFO: ExecEngine fixing 271 violations for rule 'Compute transitive closure of naarVanFlip' [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] EXECENGINE.INFO: Fixing violation 1/271: ((LMS_0002[Connectie],LMS_0013[Connectie])) [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] EXECENGINE.INFO: TransitiveClosure(naarVanFlip,Connectie,connsCopy,conns) [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] CORE.DEBUG: Deleting all links in relation connsCopy[Connectie*Connectie] [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] TRANSACTION.DEBUG: Mark relation 'connsCopy[Connectie*Connectie]' as affected relation [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] API.ERROR: <h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\InvalidExecEngineCallException</div><div><strong>Message:</strong> Invalid exec engine function call as defined in /usr/local/project/Communicatie.adl:54:5. Function call 'TransitiveClosure(naarVanFlip,Connectie,connsCopy,conns)'. Unknown 'tableOf' option for relation 'connsCopy[Connectie*Connectie]'</div><div><strong>File:</strong> /var/www/src/Ampersand/Rule/ExecEngine.php</div><div><strong>Line:</strong> 244</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine->fixViolation(Object(Ampersand\Rule\Violation)) #1 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine->checkFixRules(Array) #2 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction->runExecEngine() #3 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp->reinstall(true, false) #4 [internal function]: Ampersand\Controller\InstallerController->install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #5 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #6 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #7 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #8 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #9 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #10 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #11 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #12 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #13 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #14 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #15 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #16 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #17 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #18 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #19 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #20 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #21 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #22 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #23 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #25 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #26 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #27 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #28 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #30 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #31 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #32 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #33 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #35 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #36 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #37 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #38 /var/www/bootstrap/framework.php(199): Slim\App->run() #39 /var/www/public/api/v1/index.php(3): require_once('/var/www/bootst...') #40 {main}</pre><h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\FatalException</div><div><strong>Message:</strong> Unknown 'tableOf' option for relation 'connsCopy[Connectie*Connectie]'</div><div><strong>File:</strong> /var/www/src/Ampersand/Plugs/MysqlDB/MysqlDB.php</div><div><strong>Line:</strong> 725</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Core/Relation.php(302): Ampersand\Plugs\MysqlDB\MysqlDB->emptyRelation(Object(Ampersand\Core\Relation)) #1 /var/www/bootstrap/files/execEngineWarshall.php(65): Ampersand\Core\Relation->empty() #2 [internal function]: Ampersand\Rule\ExecEngine->{closure}('naarVanFlip', 'Connectie', 'connsCopy', 'conns') #3 /var/www/src/Ampersand/Rule/ExecEngine.php(242): Closure->call(Object(Ampersand\Rule\ExecEngine), 'naarVanFlip', 'Connectie', 'connsCopy', 'conns') #4 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine->fixViolation(Object(Ampersand\Rule\Violation)) #5 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine->checkFixRules(Array) #6 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction->runExecEngine() #7 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp->reinstall(true, false) #8 [internal function]: Ampersand\Controller\InstallerController->install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #9 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #10 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #11 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #12 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #13 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #14 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #15 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #16 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #17 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #18 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #19 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #20 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #21 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #22 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #23 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #25 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #26 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #27 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #28 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #30 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #31 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #32 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #33 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #35 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #36 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #37 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #38 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #39 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #40 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #41 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #42 /var/www/bootstrap/framework.php(199): Slim\App->run() #43 /var/www/public/api/v1/index.php(3): require_once('/var/www/bootst...') #44 {main}</pre> [] {"request_id":"df4bf77ca4"}
prototype | [2023-06-06 09:15:35] API.ERROR: <h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\InvalidExecEngineCallException</div><div><strong>Message:</strong> Invalid exec engine function call as defined in /usr/local/project/Communicatie.adl:54:5. Function call 'TransitiveClosure(naarVanFlip,Connectie,connsCopy,conns)'. Unknown 'tableOf' option for relation 'connsCopy[Connectie*Connectie]'</div><div><strong>File:</strong> /var/www/src/Ampersand/Rule/ExecEngine.php</div><div><strong>Line:</strong> 244</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine->fixViolation(Object(Ampersand\Rule\Violation)) #1 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine->checkFixRules(Array) #2 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction->runExecEngine() #3 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp->reinstall(true, false) #4 [internal function]: Ampersand\Controller\InstallerController->install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #5 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #6 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #7 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #8 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #9 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #10 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #11 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #12 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #13 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #14 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #15 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #16 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #17 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #18 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #19 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #20 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #21 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #22 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #23 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #25 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #26 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #27 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #28 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #30 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #31 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #32 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #33 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #35 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #36 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #37 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #38 /var/www/bootstrap/framework.php(199): Slim\App->run() #39 /var/www/public/api/v1/index.php(3): require_once('/var/www/bootst...') #40 {main}</pre><h4>Error/Exception</h4><div><strong>Type:</strong> Ampersand\Exception\FatalException</div><div><strong>Message:</strong> Unknown 'tableOf' option for relation 'connsCopy[Connectie*Connectie]'</div><div><strong>File:</strong> /var/www/src/Ampersand/Plugs/MysqlDB/MysqlDB.php</div><div><strong>Line:</strong> 725</div><div><strong>Trace:</strong><pre>#0 /var/www/src/Ampersand/Core/Relation.php(302): Ampersand\Plugs\MysqlDB\MysqlDB->emptyRelation(Object(Ampersand\Core\Relation)) #1 /var/www/bootstrap/files/execEngineWarshall.php(65): Ampersand\Core\Relation->empty() #2 [internal function]: Ampersand\Rule\ExecEngine->{closure}('naarVanFlip', 'Connectie', 'connsCopy', 'conns') #3 /var/www/src/Ampersand/Rule/ExecEngine.php(242): Closure->call(Object(Ampersand\Rule\ExecEngine), 'naarVanFlip', 'Connectie', 'connsCopy', 'conns') #4 /var/www/src/Ampersand/Rule/ExecEngine.php(179): Ampersand\Rule\ExecEngine->fixViolation(Object(Ampersand\Rule\Violation)) #5 /var/www/src/Ampersand/Transaction.php(173): Ampersand\Rule\ExecEngine->checkFixRules(Array) #6 /var/www/src/Ampersand/AmpersandApp.php(602): Ampersand\Transaction->runExecEngine() #7 /var/www/src/Ampersand/Controller/InstallerController.php(41): Ampersand\AmpersandApp->reinstall(true, false) #8 [internal function]: Ampersand\Controller\InstallerController->install(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #9 /var/www/lib/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #10 /var/www/lib/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #11 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #12 /var/www/lib/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #13 /var/www/lib/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response)) #14 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) #15 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #16 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #17 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #18 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App)) #19 /var/www/src/Ampersand/API/Middleware/InitAmpersandAppMiddleware.php(54): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #20 [internal function]: Ampersand\API\Middleware\InitAmpersandAppMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #21 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\InitAmpersandAppMiddleware), Array) #22 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #23 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #24 /var/www/src/Ampersand/API/Middleware/PostMaxSizeMiddleware.php(27): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #25 [internal function]: Ampersand\API\Middleware\PostMaxSizeMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #26 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\PostMaxSizeMiddleware), Array) #27 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #28 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #29 /var/www/src/Ampersand/API/Middleware/JsonRequestParserMiddleware.php(22): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #30 [internal function]: Ampersand\API\Middleware\JsonRequestParserMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #31 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\JsonRequestParserMiddleware), Array) #32 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #33 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #34 /var/www/src/Ampersand/API/Middleware/LogPerformanceMiddleware.php(26): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #35 [internal function]: Ampersand\API\Middleware\LogPerformanceMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #36 /var/www/lib/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Object(Ampersand\API\Middleware\LogPerformanceMiddleware), Array) #37 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #38 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Closure)) #39 /var/www/lib/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) #40 /var/www/lib/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) #41 /var/www/lib/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response)) #42 /var/www/bootstrap/framework.php(199): Slim\App->run() #43 /var/www/public/api/v1/index.php(3): require_once('/var/www/bootst...') #44 {main}</pre> [] {"request_id":"df4bf77ca4"}
The situation seems to have resolved itself. Don't know why and don't intend to find out...
What happened
I was experimenting with the transitive closure script on the ampersand-models repo. It contains calls to
RerunExecEngine
andTransitiveClosure
from the PHP-environment.What I expected
I expected this script to work, but I got this message: Invalid exec engine function call as defined in /usr/local/project/TransitiveClosure.adl:27:1. Function call 'TransitiveClosure(trn,Concept,trnCopy,trnStar)'. Unknown 'tableOf' option for relation 'trnCopy[Concept*Concept]'
Version of Ampersand that was used
docker build is running
FROM ampersandtarski/prototype-framework:v1.14
.Steps to reproduce
docker compose build
docker compose up-d
localhost
and install the database.trn
with the atomnoot
to add the pair("aap","not") to the relation
trn` interactively.Screenshot / Video
Context / Source of ampersand script
I found this bug when experimenting with an old script. Here is the source code: