]> git.joonet.de Git - adminer.git/commitdiff
PostgreSQL: Allow comparing json columns (fix #1107)
authorJakub Vrana <jakub@vrana.cz>
Wed, 18 Jun 2025 07:00:34 +0000 (09:00 +0200)
committerJakub Vrana <jakub@vrana.cz>
Wed, 18 Jun 2025 07:00:34 +0000 (09:00 +0200)
CHANGELOG.md
adminer/include/functions.inc.php

index 22b67e9016d3684a91bff7833ff571297a66c963..8fd6492e9c1d1bc86f7d069e5f15d3446fbe122d 100644 (file)
@@ -8,6 +8,7 @@
 - PostgreSQL: Display index expressions
 - PostgreSQL: Add SQL operator to select
 - PostgreSQL: Hide only partitions, not all inherited tables from menu
+- PostgreSQL: Allow comparing json columns (bug #1107)
 - PostgreSQL 11-: Avoid duplicate oid in table status (bug #1089)
 - Elasticsearch: Support dropping aliases
 - Plugins: Methods processList() and killProcess()
index d4df33d0d2f40bb2028a439a914a201f491336ad..12701e287247a49715815c029d088808f26dfb23 100644 (file)
@@ -264,9 +264,10 @@ function where(array $where, array $fields = array()): string {
                $field_type = $field["type"];
                $return[] = $column
                        . (JUSH == "sql" && $field_type == "json" ? " = CAST(" . q($val) . " AS JSON)"
+                               : (JUSH == "pgsql" && preg_match('~^json~', $field_type) ? "::jsonb = " . q($val) . "::jsonb"
                                : (JUSH == "sql" && is_numeric($val) && preg_match('~\.~', $val) ? " LIKE " . q($val) // LIKE because of floats but slow with ints
                                : (JUSH == "mssql" && strpos($field_type, "datetime") === false ? " LIKE " . q(preg_replace('~[_%[]~', '[\0]', $val)) // LIKE because of text but it does not work with datetime
-                               : " = " . unconvert_field($field, q($val)))))
+                               : " = " . unconvert_field($field, q($val))))))
                ; //! enum and set
                if (JUSH == "sql" && preg_match('~char|text~', $field_type) && preg_match("~[^ -@]~", $val)) { // not just [a-z] to catch non-ASCII characters
                        $return[] = "$column = " . q($val) . " COLLATE " . charset(connection()) . "_bin";