]> git.joonet.de Git - adminer.git/commitdiff
MySQL: Allow setting default values of json column
authorJakub Vrana <jakub@vrana.cz>
Wed, 12 Mar 2025 13:25:19 +0000 (14:25 +0100)
committerJakub Vrana <jakub@vrana.cz>
Wed, 12 Mar 2025 13:25:19 +0000 (14:25 +0100)
adminer/drivers/mysql.inc.php
adminer/include/editing.inc.php
adminer/select.inc.php
changes.txt

index 0ff3cae53aa6d3ea0ecd42e9a130048f041c98f2..e395e4def8b8e868ec2677c0bbb4810542cbcda4 100644 (file)
@@ -603,7 +603,7 @@ if (!defined('Adminer\DRIVER')) {
                        preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~', $type, $match_type);
                        $default = $row["COLUMN_DEFAULT"];
                        if ($default != "") {
-                               $is_text = preg_match('~text~', $match_type[1]);
+                               $is_text = preg_match('~text|json~', $match_type[1]);
                                if (!$maria && $is_text) {
                                        // default value a'b of text column is stored as _utf8mb4\'a\\\'b\' in MySQL
                                        $default = preg_replace("~^(_\w+)?('.*')$~", '\2', stripslashes($default));
index 351868ae0b943880d690fa2e349be43194898431..b1a9993a5bedc8ee53977b485df42ea9fe6e1071 100644 (file)
@@ -314,7 +314,7 @@ function default_value($field) {
        return ($default === null ? "" : (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|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default))
-                       ? (JUSH == "sql" && preg_match('~text~', $field["type"]) ? "(" . q($default) . ")" : q($default)) // MySQL requires () around default value of text column
+                       ? (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))
                )
        ));
index 8631c6551a088a01fc5b209d0ba9fd57bf84b400..32688b24a0b33a8e00000b81eaeb86984ed8daf6 100644 (file)
@@ -452,7 +452,7 @@ if (!$columns && support("table")) {
                                                $id = h("val[$unique_idf][" . bracket_escape($key) . "]");
                                                $value = $_POST["val"][$unique_idf][bracket_escape($key)];
                                                $editable = !is_array($row[$key]) && is_utf8($val) && $rows[$n][$key] == $row[$key] && !$functions[$key] && !$field["generated"];
-                                               $text = preg_match('~text|lob~', $field["type"]);
+                                               $text = preg_match('~text|json|lob~', $field["type"]);
                                                echo "<td id='$id'";
                                                if (($_GET["modify"] && $editable) || $value !== null) {
                                                        $h_value = h($value !== null ? $value : $row[$key]);
index 24c461a26bea13d285f28482fe8de4a0a15b8605..08b1e73020da1e114015bd45c5257b32c11c6049 100644 (file)
@@ -1,5 +1,6 @@
 Adminer dev:
 MySQL: Display default values of binary columns
+MySQL: Allow setting default values of json column
 MariaDB: Don't display NULL as default value (regression from 5.0.0)
 PostgreSQL PDO: Escape bytea values (bug #218)
 MS SQL: Fix editing rows with datetime column in primary key