X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDBStructure.php;h=d4419553c493b8b60a9d07416249d62fd2bb0672;hb=3895c87e75a2092c7438dd2cfc2e03333eeffc9a;hp=45c98f0edd92069fce65929a453f695c6acc04f7;hpb=6d64667cdb02af0f3f6393f14c253ac9dcada1d9;p=friendica.git diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index 45c98f0edd..d4419553c4 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -174,7 +174,7 @@ class DBStructure echo "--\n"; echo "-- TABLE $name\n"; echo "--\n"; - self::createTable($name, $structure['fields'], true, false, $structure["indexes"]); + self::createTable($name, $structure, true, false); echo "\n"; } @@ -251,7 +251,7 @@ class DBStructure $is_unique = false; $temp_name = $name; if (!isset($database[$name])) { - $r = self::createTable($name, $structure["fields"], $verbose, $action, $structure['indexes']); + $r = self::createTable($name, $structure, $verbose, $action); if (!DBM::is_result($r)) { $errors .= self::printUpdateError($name); } @@ -322,8 +322,8 @@ class DBStructure $parameters['comment'] = ""; } - $current_field_definition = implode(",", $field_definition); - $new_field_definition = implode(",", $parameters); + $current_field_definition = dba::clean_query(implode(",", $field_definition)); + $new_field_definition = dba::clean_query(implode(",", $parameters)); if ($current_field_definition != $new_field_definition) { $sql2 = self::modifyTableField($fieldname, $parameters); if ($sql3 == "") { @@ -378,6 +378,18 @@ class DBStructure } } + if (isset($database[$name]["table_status"]["Engine"]) && isset($structure['engine'])) { + if ($database[$name]["table_status"]["Engine"] != $structure['engine']) { + $sql2 = "ENGINE = '".dbesc($structure['engine'])."'"; + + if ($sql3 == "") { + $sql3 = "ALTER" . $ignore . " TABLE `".$temp_name."` ".$sql2; + } else { + $sql3 .= ", ".$sql2; + } + } + } + if (isset($database[$name]["table_status"]["Collation"])) { if ($database[$name]["table_status"]["Collation"] != 'utf8mb4_general_ci') { $sql2 = "DEFAULT COLLATE utf8mb4_general_ci"; @@ -554,20 +566,22 @@ class DBStructure return($fieldstruct); } - private static function createTable($name, $fields, $verbose, $action, $indexes=null) { + private static function createTable($name, $structure, $verbose, $action) { $r = true; + $engine = ""; + $comment = ""; $sql_rows = []; $primary_keys = []; - foreach ($fields AS $fieldname => $field) { + foreach ($structure["fields"] AS $fieldname => $field) { $sql_rows[] = "`".dbesc($fieldname)."` ".self::FieldCommand($field); if (x($field,'primary') && $field['primary']!='') { $primary_keys[] = $fieldname; } } - if (!is_null($indexes)) { - foreach ($indexes AS $indexname => $fieldnames) { + if (!is_null($structure["indexes"])) { + foreach ($structure["indexes"] AS $indexname => $fieldnames) { $sql_index = self::createIndex($indexname, $fieldnames, ""); if (!is_null($sql_index)) { $sql_rows[] = $sql_index; @@ -575,9 +589,18 @@ class DBStructure } } + if (!is_null($structure["engine"])) { + $engine = " ENGINE=" . $structure["engine"]; + } + + if (!is_null($structure["comment"])) { + $comment = " COMMENT='" . dbesc($structure["comment"]) . "'"; + } + $sql = implode(",\n\t", $sql_rows); - $sql = sprintf("CREATE TABLE IF NOT EXISTS `%s` (\n\t", dbesc($name)).$sql."\n) DEFAULT COLLATE utf8mb4_general_ci"; + $sql = sprintf("CREATE TABLE IF NOT EXISTS `%s` (\n\t", dbesc($name)).$sql. + "\n)" . $engine . " DEFAULT COLLATE utf8mb4_general_ci" . $comment; if ($verbose) { echo $sql.";\n"; } @@ -1051,7 +1074,7 @@ class DBStructure "fields" => [ "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"], "gid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["group" => "id"], "comment" => "groups.id of the associated group"], - "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact.id of the member assigned to the associated group"], + "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact.id of the member assigned to the associated group"], ], "indexes" => [ "PRIMARY" => ["id"], @@ -1185,7 +1208,6 @@ class DBStructure "pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "moderated" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], - "spam" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item has been favourited"], "bookmark" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item has been bookmarked"], "unseen" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => "item has not been seen"], @@ -1681,7 +1703,6 @@ class DBStructure "pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "moderated" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], - "spam" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "ignored" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "bookmark" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], @@ -1797,6 +1818,18 @@ class DBStructure "PRIMARY" => ["uid", "iid"], ] ]; + $database["worker-ipc"] = [ + "comment" => "Inter process communication between the frontend and the worker", + "fields" => [ + "key" => ["type" => "int", "not null" => "1", "primary" => "1", "comment" => ""], + "jobs" => ["type" => "boolean", "comment" => "Flag for outstanding jobs"], + ], + "indexes" => [ + "PRIMARY" => ["key"], + ], + "engine" => "MEMORY", + ]; + $database["workerqueue"] = [ "comment" => "Background tasks queue entries", "fields" => [