From 76a8dbfb98562deac52d9f603de4047be701ef77 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Tue, 27 Jan 2026 10:30:06 +0000 Subject: [PATCH] Support multiline generated values in alter table --- CHANGELOG.md | 1 + adminer/include/editing.inc.php | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d9ae62e..29183015 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## Adminer dev - Pretty print JSON in edit +- Support multiline generated values in alter table - PostgreSQL: Offer foreign keys in create table - PostgreSQL: Add missing parentheses to CHECK export - PostgreSQL: Allow creating NOT DEFERRABLE foreign keys diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index ddcf7f58..1ffa9829 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -250,15 +250,18 @@ function process_field(array $field, array $type_field): array { * @param Field $field */ function default_value(array $field): string { - $default = $field["default"]; + if ($field["default"] === null) { + return ""; + } + $default = str_replace("\r", "", $field["default"]); $generated = $field["generated"]; - return ($default === null ? "" : (in_array($generated, driver()->generated) + return (in_array($generated, driver()->generated) ? (JUSH == "mssql" ? " AS ($default)" . ($generated == "VIRTUAL" ? "" : " $generated") . "" : " GENERATED ALWAYS AS ($default) $generated") : " DEFAULT " . (!preg_match('~^GENERATED ~i', $default) && (preg_match('~char|binary|text|json|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default)) ? (JUSH == "sql" && preg_match('~text|json~', $field["type"]) ? "(" . q($default) . ")" : q($default)) // MySQL requires () around default value of text column : str_ireplace("current_timestamp()", "CURRENT_TIMESTAMP", (JUSH == "sqlite" ? "($default)" : $default)) ) - )); + ); } /** Get type class to use in CSS @@ -329,7 +332,9 @@ function edit_fields(array $fields, array $collations, $type = "TABLE", array $f ? html_select("fields[$i][generated]", array_merge(array("", "DEFAULT"), driver()->generated), $field["generated"]) . " " : checkbox("fields[$i][generated]", 1, $field["generated"], "", "", "", "label-default") ); - echo ""; + $attrs = " name='fields[$i][default]' aria-labelledby='label-default'"; + $value = h($field["default"]); + echo (preg_match('~\n~', $field["default"]) ? "\n$value" : ""); // \n to preserve the leading newline echo (support("comment") ? "" : ""); } echo "";