hallowelt / mwstake-mediawiki-component-processmanager

0 stars 1 forks source link

Support for PostgreSQL #8

Closed zyzzyxdonta closed 2 months ago

zyzzyxdonta commented 1 year ago

Currently, usage of this extension is not possible with PostgreSQL as the backticks around column names in db/processes.sql are not valid.

it-spiderman commented 2 months ago

Scripts for all DB types added in 3.0.0

zyzzyxdonta commented 1 month ago

It still doesn't quite work. My colleague had to make these changes:

diff --git a/../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessInfo.php b/../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessInfo.php
index 059f4ba..77b1c0e 100644
--- ../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessInfo.php
+++ ../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessInfo.php
@@ -37,7 +37,7 @@ class ProcessInfo implements JsonSerializable {
        return new static(
            $row->p_pid,
            $row->p_state,
-           DateTime::createFromFormat( 'YmdHis', $row->p_started ),
+           DateTime::createFromFormat( 'Y-m-d H:i:s', $row->p_started ),
            $row->p_timeout !== null ? (float)$row->p_timeout : null,
            $row->p_exitcode !== null ? (int)$row->p_exitcode : null,
            $row->p_exitstatus,
diff --git a/../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessQueue/SimpleDatabaseQueue.php b/../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessQueue/SimpleDatabaseQueue.php
index 9554aa7..44db7e7 100644
--- ../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessQueue/SimpleDatabaseQueue.php
+++ ../extensions/CognitiveProcessDesigner/vendor/mwstake/mediawiki-component-processmanager/src/ProcessQueue/SimpleDatabaseQueue.php
@@ -233,7 +233,7 @@ class SimpleDatabaseQueue implements IProcessQueue {
        $this->getDB()->delete(
            'processes',
            [
-               'p_started < ' . $this->getDB()->timestamp( $dayAgo->format( 'YmdHis' ) ),
+               'p_started < ' ."'". $this->getDB()->timestamp( $dayAgo->format( 'YmdHis' ) )."'",
                // Status is not PROCESS_INTERRUPTED
                'p_state != ' . $this->getDB()->addQuotes( InterruptingProcessStep::STATUS_INTERRUPTED ),
            ],

Is this a bug in the processmanager or is the problem elsewhere?