PostgreSQL: Cast to string when searching using LIKE (bug #325)
This commit is contained in:
parent
197abdcb70
commit
d7f9b6b5de
|
@ -277,7 +277,7 @@ if (!defined("DRIVER")) {
|
||||||
return queries($prefix . implode(",\n", $values) . $suffix);
|
return queries($prefix . implode(",\n", $values) . $suffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertSearch($idf, $field) {
|
function convertSearch($idf, $val, $field) {
|
||||||
return (preg_match('~char|text|enum|set~', $field["type"]) && !preg_match("~^utf8~", $field["collation"])
|
return (preg_match('~char|text|enum|set~', $field["type"]) && !preg_match("~^utf8~", $field["collation"])
|
||||||
? "CONVERT($idf USING " . charset($this->_conn) . ")"
|
? "CONVERT($idf USING " . charset($this->_conn) . ")"
|
||||||
: $idf
|
: $idf
|
||||||
|
|
|
@ -181,6 +181,13 @@ if (isset($_GET["pgsql"])) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function convertSearch($idf, $val, $field) {
|
||||||
|
return (preg_match('~char|text' . (is_numeric($val["val"]) && !preg_match('~LIKE~', $val["op"]) ? '|' . number_type() : '') . '~', $field["type"])
|
||||||
|
? $idf
|
||||||
|
: "CAST($idf AS text)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function warnings() {
|
function warnings() {
|
||||||
return $this->_conn->warnings();
|
return $this->_conn->warnings();
|
||||||
}
|
}
|
||||||
|
|
|
@ -534,7 +534,7 @@ class Adminer {
|
||||||
$cond .= " " . $this->processInput($fields[$val["col"]], $val["val"]);
|
$cond .= " " . $this->processInput($fields[$val["col"]], $val["val"]);
|
||||||
}
|
}
|
||||||
if ($val["col"] != "") {
|
if ($val["col"] != "") {
|
||||||
$return[] = $prefix . $driver->convertSearch(idf_escape($val["col"]), $fields[$val["col"]]) . $cond;
|
$return[] = $prefix . $driver->convertSearch(idf_escape($val["col"]), $val, $fields[$val["col"]]) . $cond;
|
||||||
} else {
|
} else {
|
||||||
// find anywhere
|
// find anywhere
|
||||||
$cols = array();
|
$cols = array();
|
||||||
|
@ -542,7 +542,7 @@ class Adminer {
|
||||||
if ((is_numeric($val["val"]) || !preg_match('~' . number_type() . '|bit~', $field["type"]))
|
if ((is_numeric($val["val"]) || !preg_match('~' . number_type() . '|bit~', $field["type"]))
|
||||||
&& (!preg_match("~[\x80-\xFF]~", $val["val"]) || preg_match('~char|text|enum|set~', $field["type"]))
|
&& (!preg_match("~[\x80-\xFF]~", $val["val"]) || preg_match('~char|text|enum|set~', $field["type"]))
|
||||||
) {
|
) {
|
||||||
$cols[] = $prefix . $driver->convertSearch(idf_escape($name), $field) . $cond;
|
$cols[] = $prefix . $driver->convertSearch(idf_escape($name), $val, $field) . $cond;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$return[] = ($cols ? "(" . implode(" OR ", $cols) . ")" : "1 = 0");
|
$return[] = ($cols ? "(" . implode(" OR ", $cols) . ")" : "1 = 0");
|
||||||
|
|
|
@ -114,11 +114,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Convert column to be searchable
|
/** Convert column to be searchable
|
||||||
* @param string escaped name
|
* @param string escaped column name
|
||||||
|
* @param array array("op" => , "val" => )
|
||||||
* @param array
|
* @param array
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function convertSearch($idf, $field) {
|
function convertSearch($idf, $val, $field) {
|
||||||
return $idf;
|
return $idf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
Adminer 4.6.1-dev:
|
Adminer 4.6.1-dev:
|
||||||
MySQL: Support non-utf8 charset in search in column
|
MySQL: Support non-utf8 charset in search in column
|
||||||
MySQL: Support geometry in MySQL 8 (bug #574)
|
MySQL: Support geometry in MySQL 8 (bug #574)
|
||||||
|
PostgreSQL: Cast to string when searching using LIKE (bug #325)
|
||||||
PostgreSQL: Don't treat interval type as number (bug #474)
|
PostgreSQL: Don't treat interval type as number (bug #474)
|
||||||
PostgreSQL: Fix condition for selecting no rows
|
PostgreSQL: Fix condition for selecting no rows
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue