]> git.joonet.de Git - adminer.git/commitdiff
PostgreSQL: Fix editing record that contains a field with GENERATED ALWAYS default...
authorPeter Knut <peter@pematon.com>
Tue, 1 Oct 2024 22:29:24 +0000 (00:29 +0200)
committerJakub Vrana <jakub@vrana.cz>
Wed, 19 Feb 2025 10:16:39 +0000 (11:16 +0100)
Fields with GENERATED ALWAYS default values are also disabled.

Thanks to PurpleTape (https://github.com/adminerevo/adminerevo/issues/201).

adminer/include/functions.inc.php

index 4d8db98b722477e500c442831b2d8074c53d2510..d66ced5ddd3deb656d19efa7c7fb4cf23acf6f57 100644 (file)
@@ -948,13 +948,14 @@ function input($field, $value, $function) {
                $function = null;
        }
        $functions = (isset($_GET["select"]) || $reset ? array("orig" => lang('original')) : array()) + $adminer->editFunctions($field);
-       $attrs = " name='fields[$name]'";
+       $disabled = stripos($field["default"], "GENERATED ALWAYS AS ") === 0 ? " disabled=''" : "";
+       $attrs = " name='fields[$name]'$disabled";
        if ($field["type"] == "enum") {
                echo h($functions[""]) . "<td>" . $adminer->editInput($_GET["edit"], $field, $attrs, $value);
        } else {
                $has_function = (in_array($function, $functions) || isset($functions[$function]));
                echo (count($functions) > 1
-                       ? "<select name='function[$name]'>" . optionlist($functions, $function === null || $has_function ? $function : "") . "</select>"
+                       ? "<select name='function[$name]'$disabled>" . optionlist($functions, $function === null || $has_function ? $function : "") . "</select>"
                                . on_help("getTarget(event).value.replace(/^SQL\$/, '')", 1)
                                . script("qsl('select').onchange = functionChange;", "")
                        : h(reset($functions))
@@ -1019,6 +1020,11 @@ function input($field, $value, $function) {
 */
 function process_input($field) {
        global $adminer, $driver;
+
+       if (stripos($field["default"], "GENERATED ALWAYS AS ") === 0) {
+               return null;
+       }
+
        $idf = bracket_escape($field["field"]);
        $function = $_POST["function"][$idf];
        $value = $_POST["fields"][$idf];