Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package adminer for openSUSE:Factory checked 
in at 2021-05-20 19:25:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/adminer (Old)
 and      /work/SRC/openSUSE:Factory/.adminer.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "adminer"

Thu May 20 19:25:46 2021 rev:28 rq:894657 version:4.8.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/adminer/adminer.changes  2021-02-15 
23:19:49.527711713 +0100
+++ /work/SRC/openSUSE:Factory/.adminer.new.2988/adminer.changes        
2021-05-20 19:26:17.781638333 +0200
@@ -1,0 +2,15 @@
+Thu May 20 12:36:30 UTC 2021 - Ferdinand Thiessen <[email protected]>
+
+- Update to version 4.8.1
+  * Fix XSS in doc_link
+  * MySQL: Allow moving views to other DB and renaming DB with views
+  * MariaDB: Do not treat sequences as views
+  * PostgreSQL: Support UPDATE OF triggers
+  * PostgreSQL: Support triggers with more events (OR)
+  * PostgreSQL: Fix parsing of foreign keys with non-ASCII column names
+  * PostgreSQL < 10 PDO: Avoid displaying GENERATED ALWAYS BY IDENTITY 
everywhere
+  * SQLite: Fix displayed types
+  * Avoid PHP warnings with PDO drivers
+  * Fix PHP 8 warnings
+
+-------------------------------------------------------------------

Old:
----
  adminer-4.8.0.tar.xz

New:
----
  adminer-4.8.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ adminer.spec ++++++
--- /var/tmp/diff_new_pack.PlBjdV/_old  2021-05-20 19:26:18.261636365 +0200
+++ /var/tmp/diff_new_pack.PlBjdV/_new  2021-05-20 19:26:18.265636348 +0200
@@ -22,7 +22,7 @@
 %bcond_with mongodb
 %bcond_with mssql
 Name:           adminer
-Version:        4.8.0
+Version:        4.8.1
 Release:        0
 Summary:        Database management in a single PHP file
 License:        GPL-2.0-only OR Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.PlBjdV/_old  2021-05-20 19:26:18.293636233 +0200
+++ /var/tmp/diff_new_pack.PlBjdV/_new  2021-05-20 19:26:18.293636233 +0200
@@ -2,7 +2,7 @@
   <service name="tar_scm" mode="disabled">
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
-    <param name="revision">refs/tags/v4.8.0</param>
+    <param name="revision">refs/tags/v4.8.1</param>
     <param name="url">https://github.com/vrana/adminer.git</param>
     <param name="scm">git</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.PlBjdV/_old  2021-05-20 19:26:18.309636168 +0200
+++ /var/tmp/diff_new_pack.PlBjdV/_new  2021-05-20 19:26:18.309636168 +0200
@@ -1,6 +1,6 @@
 <servicedata>
   <service name="tar_scm">
     <param name="url">https://github.com/vrana/adminer.git</param>
-    <param 
name="changesrevision">b83c61fca3f491073cd5f5888a2acbf6f044366b</param>
+    <param 
name="changesrevision">1f173e18bdf0be29182e0d67989df56eadea4754</param>
   </service>
-</servicedata>
+</servicedata>
\ No newline at end of file

++++++ adminer-4.8.0.tar.xz -> adminer-4.8.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/.github/workflows/codeql-analysis.yml 
new/adminer-4.8.1/.github/workflows/codeql-analysis.yml
--- old/adminer-4.8.0/.github/workflows/codeql-analysis.yml     1970-01-01 
01:00:00.000000000 +0100
+++ new/adminer-4.8.1/.github/workflows/codeql-analysis.yml     2021-05-14 
07:39:59.000000000 +0200
@@ -0,0 +1,67 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    # The branches below must be a subset of the branches above
+    branches: [ master ]
+  schedule:
+    - cron: '20 16 * * 0'
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        language: [ 'javascript' ]
+        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 
'python' ]
+        # Learn more:
+        # 
https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v2
+
+    # Initializes the CodeQL tools for scanning.
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v1
+      with:
+        languages: ${{ matrix.language }}
+        # If you wish to specify custom queries, you can do so here or in a 
config file.
+        # By default, queries listed here will override any specified in a 
config file.
+        # Prefix the list here with "+" to use these queries and those in the 
config file.
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
+    # If this step fails, then you should remove it and run the build manually 
(see below)
+    - name: Autobuild
+      uses: github/codeql-action/autobuild@v1
+
+    # ?????? Command-line programs to run using the OS shell.
+    # ???? https://git.io/JvXDl
+
+    # ?????? If the Autobuild fails above, remove it and uncomment the 
following three lines
+    #    and modify them (or add more) to build your code if your project
+    #    uses a compiled language
+
+    #- run: |
+    #   make bootstrap
+    #   make release
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/SECURITY.md 
new/adminer-4.8.1/SECURITY.md
--- old/adminer-4.8.0/SECURITY.md       1970-01-01 01:00:00.000000000 +0100
+++ new/adminer-4.8.1/SECURITY.md       2021-05-14 07:39:59.000000000 +0200
@@ -0,0 +1,11 @@
+# Security Policy
+
+## Supported Versions
+
+I support only the last published version and the last development version 
(last commit).
+
+## Reporting a Vulnerability
+
+To report a vulnerability, create a private bug at 
https://sourceforge.net/p/adminer/bugs-and-features/new/?private=1.
+
+I handle security issues with top priority. If you don't hear from me in a 
week then please ping the bug. Once I accept the bug, the fix should be 
available and new version released within days. I will mark the bug as public 
after releasing a new version or declining the bug.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/db.inc.php 
new/adminer-4.8.1/adminer/db.inc.php
--- old/adminer-4.8.0/adminer/db.inc.php        2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/adminer/db.inc.php        2021-05-14 07:39:59.000000000 
+0200
@@ -83,7 +83,7 @@
 
                        $tables = 0;
                        foreach ($tables_list as $name => $type) {
-                               $view = ($type !== null && 
!preg_match('~table~i', $type));
+                               $view = ($type !== null && 
!preg_match('~table|sequence~i', $type));
                                $id = h("Table-" . $name);
                                echo '<tr' . odd() . '><td>' . checkbox(($view 
? "views[]" : "tables[]"), $name, in_array($name, $tables_views, true), "", "", 
"", $id);
                                echo '<th>' . (support("table") || 
support("indexes") ? "<a href='" . h(ME) . "table=" . urlencode($name) . "' 
title='" . lang('Show structure') . "' id='$id'>" . h($name) . '</a>' : 
h($name));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/drivers/mysql.inc.php 
new/adminer-4.8.1/adminer/drivers/mysql.inc.php
--- old/adminer-4.8.0/adminer/drivers/mysql.inc.php     2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/drivers/mysql.inc.php     2021-05-14 
07:39:59.000000000 +0200
@@ -266,7 +266,7 @@
                        }
 
                        function query($query, $unbuffered = false) {
-                               $this->pdo->setAttribute(1000, !$unbuffered); 
// 1000 - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
+                               
$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, !$unbuffered);
                                return parent::query($query, $unbuffered);
                        }
                }
@@ -678,17 +678,17 @@
        function rename_database($name, $collation) {
                $return = false;
                if (create_database($name, $collation)) {
-                       //! move triggers
-                       $rename = array();
+                       $tables = array();
+                       $views = array();
                        foreach (tables_list() as $table => $type) {
-                               $rename[] = table($table) . " TO " . 
idf_escape($name) . "." . table($table);
-                       }
-                       $return = (!$rename || queries("RENAME TABLE " . 
implode(", ", $rename)));
-                       if ($return) {
-                               queries("DROP DATABASE " . idf_escape(DB));
+                               if ($type == 'VIEW') {
+                                       $views[] = $table;
+                               } else {
+                                       $tables[] = $table;
+                               }
                        }
-                       restart_session();
-                       set_session("dbs", null);
+                       $return = (!$tables && !$views) || move_tables($tables, 
$views, $name);
+                       drop_databases($return ? array(DB) : array());
                }
                return $return;
        }
@@ -797,12 +797,27 @@
        * @return bool
        */
        function move_tables($tables, $views, $target) {
+               global $connection;
                $rename = array();
-               foreach (array_merge($tables, $views) as $table) { // views 
will report SQL error
+               foreach ($tables as $table) {
                        $rename[] = table($table) . " TO " . 
idf_escape($target) . "." . table($table);
                }
-               return queries("RENAME TABLE " . implode(", ", $rename));
+               if (!$rename || queries("RENAME TABLE " . implode(", ", 
$rename))) {
+                       $definitions = array();
+                       foreach ($views as $table) {
+                               $definitions[table($table)] = view($table);
+                       }
+                       $connection->select_db($target);
+                       $db = idf_escape(DB);
+                       foreach ($definitions as $name => $view) {
+                               if (!queries("CREATE VIEW $name AS " . 
str_replace(" $db.", " ", $view["select"])) || !queries("DROP VIEW $db.$name")) 
{
+                                       return false;
+                               }
+                       }
+                       return true;
+               }
                //! move triggers
+               return false;
        }
 
        /** Copy tables to other schema
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/drivers/oracle.inc.php 
new/adminer-4.8.1/adminer/drivers/oracle.inc.php
--- old/adminer-4.8.0/adminer/drivers/oracle.inc.php    2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/drivers/oracle.inc.php    2021-05-14 
07:39:59.000000000 +0200
@@ -308,16 +308,19 @@
        function indexes($table, $connection2 = null) {
                $return = array();
                $owner = where_owner(" AND ", "aic.table_owner");
-               foreach (get_rows("SELECT aic.*, ac.constraint_type
+               foreach (get_rows("SELECT aic.*, ac.constraint_type, 
atc.data_default
 FROM all_ind_columns aic
 LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND 
aic.table_name = ac.table_name AND aic.index_owner = ac.owner
+LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND 
aic.table_name = atc.table_name AND aic.index_owner = atc.owner
 WHERE aic.table_name = " . q($table) . "$owner
 ORDER BY ac.constraint_type, aic.column_position", $connection2) as $row) {
                        $index_name = $row["INDEX_NAME"];
+                       $column_name = $row["DATA_DEFAULT"];
+                       $column_name = ($column_name ? trim($column_name, '"') 
: $row["COLUMN_NAME"]); // trim - possibly wrapped in quotes but never contains 
quotes inside
                        $return[$index_name]["type"] = ($row["CONSTRAINT_TYPE"] 
== "P" ? "PRIMARY" : ($row["CONSTRAINT_TYPE"] == "U" ? "UNIQUE" : "INDEX"));
-                       $return[$index_name]["columns"][] = $row["COLUMN_NAME"];
+                       $return[$index_name]["columns"][] = $column_name;
                        $return[$index_name]["lengths"][] = 
($row["CHAR_LENGTH"] && $row["CHAR_LENGTH"] != $row["COLUMN_LENGTH"] ? 
$row["CHAR_LENGTH"] : null);
-                       $return[$index_name]["descs"][] = ($row["DESCEND"] ? 
'1' : null);
+                       $return[$index_name]["descs"][] = ($row["DESCEND"] && 
$row["DESCEND"] == "DESC" ? '1' : null);
                }
                return $return;
        }
@@ -384,26 +387,23 @@
        }
 
        function alter_indexes($table, $alter) {
-               $create = array();
                $drop = array();
                $queries = array();
                foreach ($alter as $val) {
-                       $val[2] = preg_replace('~ DESC$~', '', $val[2]);
                        if ($val[0] != "INDEX") {
                                //! descending UNIQUE indexes results in syntax 
error
-                               $create[] = ($val[2] == "DROP"
+                               $val[2] = preg_replace('~ DESC$~', '', $val[2]);
+                               $create = ($val[2] == "DROP"
                                        ? "\nDROP CONSTRAINT " . 
idf_escape($val[1])
                                        : "\nADD" . ($val[1] != "" ? " 
CONSTRAINT " . idf_escape($val[1]) : "") . " $val[0] " . ($val[0] == "PRIMARY" 
? "KEY " : "") . "(" . implode(", ", $val[2]) . ")"
                                );
+                               array_unshift($queries, "ALTER TABLE " . 
table($table) . $create);
                        } elseif ($val[2] == "DROP") {
                                $drop[] = idf_escape($val[1]);
                        } else {
                                $queries[] = "CREATE INDEX " . 
idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . 
table($table) . " (" . implode(", ", $val[2]) . ")";
                        }
                }
-               if ($create) {
-                       array_unshift($queries, "ALTER TABLE " . table($table) 
. implode(",", $create));
-               }
                if ($drop) {
                        array_unshift($queries, "DROP INDEX " . implode(", ", 
$drop));
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/drivers/pgsql.inc.php 
new/adminer-4.8.1/adminer/drivers/pgsql.inc.php
--- old/adminer-4.8.0/adminer/drivers/pgsql.inc.php     2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/drivers/pgsql.inc.php     2021-05-14 
07:39:59.000000000 +0200
@@ -304,7 +304,7 @@
 
        function tables_list() {
                $query = "SELECT table_name, table_type FROM 
information_schema.tables WHERE table_schema = current_schema()";
-               if (support('materializedview')) {
+               if (support('materializedview')) { // ' - 
support("materializedview") could be removed by compile.php
                        $query .= "
 UNION ALL
 SELECT matviewname, 'MATERIALIZED VIEW'
@@ -348,9 +348,7 @@
                        'timestamp with time zone' => 'timestamptz',
                );
 
-               $identity_column = min_version(10) ? 'a.attidentity' : '0';
-
-               foreach (get_rows("SELECT a.attname AS field, 
format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, 
d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS 
comment, $identity_column AS identity
+               foreach (get_rows("SELECT a.attname AS field, 
format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, 
d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS 
comment" . (min_version(10) ? ", a.attidentity" : "") . "
 FROM pg_class c
 JOIN pg_namespace n ON c.relnamespace = n.oid
 JOIN pg_attribute a ON c.oid = a.attrelid
@@ -373,14 +371,14 @@
                                $row["type"] = $type;
                                $row["full_type"] = $row["type"] . $length . 
$addon . $array;
                        }
-                       if (in_array($row['identity'], array('a', 'd'))) {
-                               $row['default'] = 'GENERATED ' . 
($row['identity'] == 'd' ? 'BY DEFAULT' : 'ALWAYS') . ' AS IDENTITY';
+                       if (in_array($row['attidentity'], array('a', 'd'))) {
+                               $row['default'] = 'GENERATED ' . 
($row['attidentity'] == 'd' ? 'BY DEFAULT' : 'ALWAYS') . ' AS IDENTITY';
                        }
                        $row["null"] = !$row["attnotnull"];
-                       $row["auto_increment"] = $row['identity'] || 
preg_match('~^nextval\(~i', $row["default"]);
+                       $row["auto_increment"] = $row['attidentity'] || 
preg_match('~^nextval\(~i', $row["default"]);
                        $row["privileges"] = array("insert" => 1, "select" => 
1, "update" => 1);
                        if (preg_match('~(.+)::[^,)]+(.*)~', $row["default"], 
$match)) {
-                               $row["default"] = ($match[1] == "NULL" ? null : 
(($match[1][0] == "'" ? idf_unescape($match[1]) : $match[1]) . $match[2]));
+                               $row["default"] = ($match[1] == "NULL" ? null : 
idf_unescape($match[1]) . $match[2]);
                        }
                        $return[$row["field"]] = $row;
                }
@@ -420,12 +418,12 @@
 AND contype = 'f'::char
 ORDER BY conkey, conname") as $row) {
                        if (preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES 
(.+)\((.+)\)(.*)$~iA', $row['definition'], $match)) {
-                               $row['source'] = array_map('trim', explode(',', 
$match[1]));
+                               $row['source'] = array_map('idf_unescape', 
array_map('trim', explode(',', $match[1])));
                                if 
(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~', $match[2], 
$match2)) {
-                                       $row['ns'] = str_replace('""', '"', 
preg_replace('~^"(.+)"$~', '\1', $match2[2]));
-                                       $row['table'] = str_replace('""', '"', 
preg_replace('~^"(.+)"$~', '\1', $match2[4]));
+                                       $row['ns'] = idf_unescape($match2[2]);
+                                       $row['table'] = 
idf_unescape($match2[4]);
                                }
-                               $row['target'] = array_map('trim', explode(',', 
$match[3]));
+                               $row['target'] = array_map('idf_unescape', 
array_map('trim', explode(',', $match[3])));
                                $row['on_delete'] = (preg_match("~ON DELETE 
($on_actions)~", $match[4], $match2) ? $match2[1] : 'NO ACTION');
                                $row['on_update'] = (preg_match("~ON UPDATE 
($on_actions)~", $match[4], $match2) ? $match2[1] : 'NO ACTION');
                                $return[$row['conname']] = $row;
@@ -610,21 +608,34 @@
                return true;
        }
 
-       function trigger($name, $table = null) {
+       function trigger($name, $table) {
                if ($name == "") {
                        return array("Statement" => "EXECUTE PROCEDURE ()");
                }
-               if ($table === null) {
-                       $table = $_GET['trigger'];
+               $columns = array();
+               $where = "WHERE trigger_schema = current_schema() AND 
event_object_table = " . q($table) . " AND trigger_name = " . q($name);
+               foreach (get_rows("SELECT * FROM 
information_schema.triggered_update_columns $where") as $row) {
+                       $columns[] = $row["event_object_column"];
                }
-               $rows = get_rows('SELECT t.trigger_name AS "Trigger", 
t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') 
FROM information_schema.triggers WHERE event_object_table = 
t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", 
t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS 
"Type", t.action_statement AS "Statement" FROM information_schema.triggers t 
WHERE t.event_object_table = ' . q($table) . ' AND t.trigger_name = ' . 
q($name));
-               return reset($rows);
+               $return = array();
+               foreach (get_rows('SELECT trigger_name AS "Trigger", 
action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || 
action_orientation AS "Type", action_statement AS "Statement" FROM 
information_schema.triggers ' . "$where ORDER BY event_manipulation DESC") as 
$row) {
+                       if ($columns && $row["Event"] == "UPDATE") {
+                               $row["Event"] .= " OF";
+                       }
+                       $row["Of"] = implode(", ", $columns);
+                       if ($return) {
+                               $row["Event"] .= " OR $return[Event]";
+                       }
+                       $return = $row;
+               }
+               return $return;
        }
 
        function triggers($table) {
                $return = array();
                foreach (get_rows("SELECT * FROM information_schema.triggers 
WHERE trigger_schema = current_schema() AND event_object_table = " . q($table)) 
as $row) {
-                       $return[$row["trigger_name"]] = 
array($row["action_timing"], $row["event_manipulation"]);
+                       $trigger = trigger($row["trigger_name"], $table);
+                       $return[$trigger["Trigger"]] = 
array($trigger["Timing"], $trigger["Event"]);
                }
                return $return;
        }
@@ -632,7 +643,7 @@
        function trigger_options() {
                return array(
                        "Timing" => array("BEFORE", "AFTER"),
-                       "Event" => array("INSERT", "UPDATE", "DELETE"),
+                       "Event" => array("INSERT", "UPDATE", "UPDATE OF", 
"DELETE", "INSERT OR UPDATE", "INSERT OR UPDATE OF", "DELETE OR INSERT", 
"DELETE OR UPDATE", "DELETE OR UPDATE OF", "DELETE OR INSERT OR UPDATE", 
"DELETE OR INSERT OR UPDATE OF"),
                        "Type" => array("FOR EACH ROW", "FOR EACH STATEMENT"),
                );
        }
@@ -833,7 +844,7 @@
                $return = "";
                foreach (triggers($table) as $trg_id => $trg) {
                        $trigger = trigger($trg_id, $status['Name']);
-                       $return .= "\nCREATE TRIGGER " . 
idf_escape($trigger['Trigger']) . " $trigger[Timing] $trigger[Events] ON " . 
idf_escape($status["nspname"]) . "." . idf_escape($status['Name']) . " 
$trigger[Type] $trigger[Statement];;\n";
+                       $return .= "\nCREATE TRIGGER " . 
idf_escape($trigger['Trigger']) . " $trigger[Timing] $trigger[Event] ON " . 
idf_escape($status["nspname"]) . "." . idf_escape($status['Name']) . " 
$trigger[Type] $trigger[Statement];;\n";
                }
                return $return;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/drivers/sqlite.inc.php 
new/adminer-4.8.1/adminer/drivers/sqlite.inc.php
--- old/adminer-4.8.0/adminer/drivers/sqlite.inc.php    2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/drivers/sqlite.inc.php    2021-05-14 
07:39:59.000000000 +0200
@@ -140,7 +140,7 @@
                                        }
                                        $return = array();
                                        foreach ($row as $key => $val) {
-                                               $return[($key[0] == '"' ? 
idf_unescape($key) : $key)] = $val;
+                                               $return[idf_unescape($key)] = 
$val;
                                        }
                                        return $return;
                                }
@@ -676,7 +676,7 @@
                return array(
                        "Timing" => strtoupper($match[1]),
                        "Event" => strtoupper($match[2]) . ($of ? " OF" : ""),
-                       "Of" => ($of[0] == '`' || $of[0] == '"' ? 
idf_unescape($of) : $of),
+                       "Of" => idf_unescape($of),
                        "Trigger" => $name,
                        "Statement" => $match[4],
                );
@@ -785,10 +785,11 @@
        }
 
        function driver_config() {
+               $types = array("integer" => 0, "real" => 0, "numeric" => 0, 
"text" => 0, "blob" => 0);
                return array(
                        'possible_drivers' => array((isset($_GET["sqlite"]) ? 
"SQLite3" : "SQLite"), "PDO_SQLite"),
                        'jush' => "sqlite",
-                       'types' => array("integer" => 0, "real" => 0, "numeric" 
=> 0, "text" => 0, "blob" => 0),
+                       'types' => $types,
                        'structured_types' => array_keys($types),
                        'unsigned' => array(),
                        'operators' => array("=", "<", ">", "<=", ">=", "!=", 
"LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL", 
"SQL"), // REGEXP can be user defined function
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/adminer.inc.php 
new/adminer-4.8.1/adminer/include/adminer.inc.php
--- old/adminer-4.8.0/adminer/include/adminer.inc.php   2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/adminer.inc.php   2021-05-14 
07:39:59.000000000 +0200
@@ -956,6 +956,7 @@
                                echo "<ul id='logins'>\n$output</ul>\n" . 
script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");
                        }
                } else {
+                       $tables = array();
                        if ($_GET["ns"] !== "" && !$missing && DB != "") {
                                $connection->select_db(DB);
                                $tables = table_status('', true);
@@ -1024,8 +1025,8 @@
                        : "<input name='db' value='" . h(DB) . "' 
autocapitalize='off'>\n"
                );
                echo "<input type='submit' value='" . lang('Use') . "'" . 
($databases ? " class='hidden'" : "") . ">\n";
-               if ($missing != "db" && DB != "" && $connection->select_db(DB)) 
{
-                       if (support("scheme")) {
+               if (support("scheme")) {
+                       if ($missing != "db" && DB != "" && 
$connection->select_db(DB)) {
                                echo "<br>" . lang('Schema') . ": <select 
name='ns'>" . optionlist(array("" => "") + $adminer->schemas(), $_GET["ns"]) . 
"</select>$db_events";
                                if ($_GET["ns"] != "") {
                                        set_schema($_GET["ns"]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/auth.inc.php 
new/adminer-4.8.1/adminer/include/auth.inc.php
--- old/adminer-4.8.0/adminer/include/auth.inc.php      2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/auth.inc.php      2021-05-14 
07:39:59.000000000 +0200
@@ -41,7 +41,7 @@
 function check_invalid_login() {
        global $adminer;
        $invalids = unserialize(@file_get_contents(get_temp_dir() . 
"/adminer.invalid")); // @ - may not exist
-       $invalid = $invalids[$adminer->bruteForceKey()];
+       $invalid = ($invalids ? $invalids[$adminer->bruteForceKey()] : array());
        $next_attempt = ($invalid[1] > 29 ? $invalid[0] - time() : 0); // allow 
30 invalid attempts
        if ($next_attempt > 0) { //! do the same with permanent login
                auth_error(lang('Too many unsuccessful logins, try again in %d 
minute(s).', ceil($next_attempt / 60)));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/bootstrap.inc.php 
new/adminer-4.8.1/adminer/include/bootstrap.inc.php
--- old/adminer-4.8.0/adminer/include/bootstrap.inc.php 2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/bootstrap.inc.php 2021-05-14 
07:39:59.000000000 +0200
@@ -4,7 +4,7 @@
 }
 
 error_reporting(6135); // errors and warnings
-set_error_handler('adminer_errors', 2); // 2 - E_WARNING
+set_error_handler('adminer_errors', E_WARNING);
 
 include "../adminer/include/coverage.inc.php";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/connect.inc.php 
new/adminer-4.8.1/adminer/include/connect.inc.php
--- old/adminer-4.8.0/adminer/include/connect.inc.php   2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/connect.inc.php   2021-05-14 
07:39:59.000000000 +0200
@@ -89,14 +89,16 @@
        exit;
 }
 
-if (support("scheme") && DB != "" && $_GET["ns"] !== "") {
-       if (!isset($_GET["ns"])) {
-               redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . 
get_schema());
-       }
-       if (!set_schema($_GET["ns"])) {
-               header("HTTP/1.1 404 Not Found");
-               page_header(lang('Schema') . ": " . h($_GET["ns"]), 
lang('Invalid schema.'), true);
-               page_footer("ns");
-               exit;
+if (support("scheme")) {
+       if (DB != "" && $_GET["ns"] !== "") {
+               if (!isset($_GET["ns"])) {
+                       redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . 
get_schema());
+               }
+               if (!set_schema($_GET["ns"])) {
+                       header("HTTP/1.1 404 Not Found");
+                       page_header(lang('Schema') . ": " . h($_GET["ns"]), 
lang('Invalid schema.'), true);
+                       page_footer("ns");
+                       exit;
+               }
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/editing.inc.php 
new/adminer-4.8.1/adminer/include/editing.inc.php
--- old/adminer-4.8.0/adminer/include/editing.inc.php   2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/editing.inc.php   2021-05-14 
07:39:59.000000000 +0200
@@ -430,7 +430,7 @@
 */
 function create_trigger($on, $row) {
        global $jush;
-       $timing_event = " $row[Timing] $row[Event]" . ($row["Event"] == "UPDATE 
OF" ? " " . idf_escape($row["Of"]) : "");
+       $timing_event = " $row[Timing] $row[Event]" . (preg_match('~ OF~', 
$row["Event"]) ? " $row[Of]" : ""); // SQL injection
        return "CREATE TRIGGER "
                . idf_escape($row["Trigger"])
                . ($jush == "mssql" ? $on . $timing_event : $timing_event . $on)
@@ -542,7 +542,7 @@
                $urls['sql'] = "https://mariadb.com/kb/en/library/";;
                $paths['sql'] = (isset($paths['mariadb']) ? $paths['mariadb'] : 
str_replace(".html", "/", $paths['sql']));
        }
-       return ($paths[$jush] ? "<a href='$urls[$jush]$paths[$jush]'" . 
target_blank() . ">$text</a>" : "");
+       return ($paths[$jush] ? "<a href='" . h($urls[$jush] . $paths[$jush]) . 
"'" . target_blank() . ">$text</a>" : "");
 }
 
 /** Wrap gzencode() for usage in ob_start()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/functions.inc.php 
new/adminer-4.8.1/adminer/include/functions.inc.php
--- old/adminer-4.8.0/adminer/include/functions.inc.php 2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/functions.inc.php 2021-05-14 
07:39:59.000000000 +0200
@@ -29,6 +29,9 @@
 * @return string
 */
 function idf_unescape($idf) {
+       if (!preg_match('~^[`\'"]~', $idf)) {
+               return $idf;
+       }
        $last = substr($idf, -1);
        return str_replace($last . $last, $last, substr($idf, 1, -1));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/pdo.inc.php 
new/adminer-4.8.1/adminer/include/pdo.inc.php
--- old/adminer-4.8.0/adminer/include/pdo.inc.php       2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/pdo.inc.php       2021-05-14 
07:39:59.000000000 +0200
@@ -13,14 +13,14 @@
                }
                
                function dsn($dsn, $username, $password, $options = array()) {
+                       $options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_SILENT;
+                       $options[PDO::ATTR_STATEMENT_CLASS] = 
array('Min_PDOStatement');
                        try {
                                $this->pdo = new PDO($dsn, $username, 
$password, $options);
                        } catch (Exception $ex) {
                                auth_error(h($ex->getMessage()));
                        }
-                       $this->pdo->setAttribute(3, 1); // 3 - 
PDO::ATTR_ERRMODE, 1 - PDO::ERRMODE_WARNING
-                       $this->pdo->setAttribute(13, 
array('Min_PDOStatement')); // 13 - PDO::ATTR_STATEMENT_CLASS
-                       $this->server_info = @$this->pdo->getAttribute(4); // 4 
- PDO::ATTR_SERVER_VERSION
+                       $this->server_info = 
@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);
                }
                
                /*abstract function select_db($database);*/
@@ -84,11 +84,11 @@
                var $_offset = 0, $num_rows;
                
                function fetch_assoc() {
-                       return $this->fetch(2); // PDO::FETCH_ASSOC
+                       return $this->fetch(PDO::FETCH_ASSOC);
                }
                
                function fetch_row() {
-                       return $this->fetch(3); // PDO::FETCH_NUM
+                       return $this->fetch(PDO::FETCH_NUM);
                }
                
                function fetch_field() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/include/version.inc.php 
new/adminer-4.8.1/adminer/include/version.inc.php
--- old/adminer-4.8.0/adminer/include/version.inc.php   2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/include/version.inc.php   2021-05-14 
07:39:59.000000000 +0200
@@ -1,2 +1,2 @@
 <?php
-$VERSION = "4.8.0";
+$VERSION = "4.8.1";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/lang/ca.inc.php 
new/adminer-4.8.1/adminer/lang/ca.inc.php
--- old/adminer-4.8.0/adminer/lang/ca.inc.php   2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/adminer/lang/ca.inc.php   2021-05-14 07:39:59.000000000 
+0200
@@ -2,7 +2,7 @@
 $translations = array(
        'Login' => 'Inicia la sessi??',
        'Logout successful.' => 'Desconnexi?? correcta.',
-       'Invalid credentials.' => 'Credencials inv??lids.',
+       'Invalid credentials.' => 'Credencials inv??lides.',
        'Server' => 'Servidor',
        'Username' => 'Nom d\'usuari',
        'Password' => 'Contrasenya',
@@ -35,7 +35,7 @@
        'Use' => 'Utilitza',
        'No tables.' => 'No hi ha cap taula.',
        'select' => 'registres',
-       'Item has been deleted.' => 'S\'ha suprmit l\'element.',
+       'Item has been deleted.' => 'S\'ha suprimit l\'element.',
        'Item has been updated.' => 'S\'ha actualitzat l\'element.',
        'Item%s has been inserted.' => 'S\'ha insertat l\'element%s.',
        'Edit' => 'Edita',
@@ -44,9 +44,9 @@
        'Delete' => 'Suprimeix',
        'Database' => 'Base de dades',
        'Routines' => 'Rutines',
-       'Indexes have been altered.' => 'S\'han modificat els ??ndexs.',
+       'Indexes have been altered.' => 'S\'han modificat els ??ndex.',
        'Indexes' => '??ndexs',
-       'Alter indexes' => 'Modifica els ??ndexs',
+       'Alter indexes' => 'Modifica els ??ndex',
        'Add next' => 'Afegeix el seg??ent',
        'Language' => 'Idioma',
        'Select' => 'Selecciona',
@@ -74,11 +74,11 @@
        'No commands to execute.' => 'Cap comanda per executar.',
        'Unable to upload a file.' => 'Impossible adjuntar el fitxer.',
        'File upload' => 'Adjunta un fitxer',
-       'File uploads are disabled.' => 'L\'ddjunci?? de fitxers est?? 
desactivada.',
+       'File uploads are disabled.' => 'La pujada de fitxers est?? 
desactivada.',
        'Routine has been called, %d row(s) affected.' => array('S\'ha cridat 
la rutina, %d registre modificat.', 'S\'ha cridat la rutina, %d registres 
modificats.'),
        'Call' => 'Crida',
        'No extension' => 'Cap extensi??',
-       'None of the supported PHP extensions (%s) are available.' => 'No hi ha 
cap de les extensions PHP soporatades (%s) disponible.',
+       'None of the supported PHP extensions (%s) are available.' => 'No hi ha 
cap de les extensions PHP suportades (%s) disponible.',
        'Session support must be enabled.' => 'Cal que estigui perm??s l\'us de 
sessions.',
        'Session expired, please login again.' => 'La sessi?? ha expirat, torna 
a iniciar-ne una.',
        'Text length' => 'Longitud del text',
@@ -86,7 +86,7 @@
        'Foreign key has been altered.' => 'S\'ha modificat la clau forana.',
        'Foreign key has been created.' => 'S\'ha creat la clau forana.',
        'Foreign key' => 'Clau forana',
-       'Target table' => 'Taula de dest??',
+       'Target table' => 'Taula de destinaci??',
        'Change' => 'Canvi',
        'Source' => 'Font',
        'Target' => 'Dest??',
@@ -139,7 +139,7 @@
        'Grant' => 'Grant',
        'Revoke' => 'Revoke',
        'Too big POST data. Reduce the data or increase the %s configuration 
directive.' => 'Les dades POST s??n massa grans. Redueix les dades o incrementa 
la directiva de configuraci?? %s.',
-       'Logged as: %s' => 'Connectat com: %s',
+       'Logged as: %s' => 'Connectat com a: %s',
        'Move up' => 'Mou a dalt',
        'Move down' => 'Mou a baix',
        'Functions' => 'Funcions',
@@ -204,7 +204,7 @@
        '[yyyy]-mm-dd' => 'dd/mm/[aaaa]',
        'History' => 'Hist??ria',
        'Variables' => 'Variables',
-       'Source and target columns must have the same data type, there must be 
an index on the target columns and referenced data must exist.' => 'Les 
columnes origen i dest?? han de ser del mateix tipus, la columna dest?? ha 
d\'estar indexada i les dades referenciades han d\'existir.',
+       'Source and target columns must have the same data type, there must be 
an index on the target columns and referenced data must exist.' => 'Les 
columnes d\'origen i de destinaci?? han de ser del mateix tipus, la columna de 
destinaci?? ha d\'estar indexada i les dades referenciades han d\'existir.',
        'E-mail' => 'Correu electr??nic',
        'From' => 'De',
        'Subject' => 'Assumpte',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/lang/el.inc.php 
new/adminer-4.8.1/adminer/lang/el.inc.php
--- old/adminer-4.8.0/adminer/lang/el.inc.php   2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/adminer/lang/el.inc.php   2021-05-14 07:39:59.000000000 
+0200
@@ -11,12 +11,12 @@
        'Logged as: %s' => '?????????????????????? ???? %s',
        'Logout successful.' => '???????????????????????????? ???? 
????????????????.',
        'Invalid credentials.' => '?????????????????? 
????????????????????????????.',
-       'Too many unsuccessful logins, try again in %d minute(s).' => 
array('?????????????????????????? ?????????????????????? ?????????????????????? 
????????????????, ?????????????????? ???????? ???? %s ??????????.', 
'?????????????????????????? ?????????????????????? ?????????????????????? 
????????????????, ?????????????????? ???????? ???? %s ??????????.'),
-       'Master password expired. <a 
href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make 
it permanent.' => '???????????? ?? ???????????? ??????????????. <a 
href="https://www.adminer.org/en/extension/"%s>??????????????????????????</a> 
???? ???????????? %s ?????? ???? ?????? ???????????? ????????????.',
+       'Too many unsuccessful logins, try again in %d minute(s).' => 
array('???????????????????????????? ?????????????????????? 
?????????????????????? ????????????????, ?????????????????? ???????? ???? %s 
??????????.', '???????????????????????????? ?????????????????????? 
?????????????????????? ????????????????, ?????????????????? ???????? ???? %s 
??????????.'),
+       'Master password expired. <a 
href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make 
it permanent.' => '?????????? ?? ???????????? ??????????????. <a 
href="https://www.adminer.org/en/extension/"%s>??????????????????????????</a> 
???? ???????????? %s ?????? ???? ?????? ???????????? ????????????.',
        'Language' => '????????????',
        'Invalid CSRF token. Send the form again.' => '?????????? 
?????????????? CSRF. ?????????????? ???? ?????????? ????????.',
        'If you did not send this request from Adminer then close this page.' 
=> '???? ???? ???????????????? ???????? ???? ???????????? ?????? ???? Adminer, 
???????? ?????????????? ???????? ???? ????????????.',
-       'No extension' => '?????????? ????????????????????',
+       'No extension' => '?????????? ????????????????',
        'None of the supported PHP extensions (%s) are available.' => 
'?????????? ?????? ?????? ?????????????????????????????? ???????????????????? 
PHP (%s) ?????? ?????????? ??????????????????.',
        'Session support must be enabled.' => '???????????? ???? ?????????? 
???????????????????????????? ?? ???????????????????? ??????????????????.',
        'Session expired, please login again.' => '?? ???????????????? 
??????????, ???????????????? ???????????????????? ????????.',
@@ -26,7 +26,7 @@
        // text direction - 'ltr' or 'rtl'
        'ltr' => 'ltr',
        
-       'Privileges' => '????????????????',
+       'Privileges' => '????????????????????',
        'Create user' => '???????????????????? ????????????',
        'User has been dropped.' => '?? ?????????????? ????????????????????.',
        'User has been altered.' => '?? ?????????????? 
??????????????????????????.',
@@ -38,7 +38,7 @@
        'Revoke' => '????????????????',
        
        'Process list' => '?????????? ????????????????????',
-       '%d process(es) have been killed.' => array('?????????????????????????? 
%d ??????????????????.', '?????????????????????????? %d ????????????????????.'),
+       '%d process(es) have been killed.' => array('???????????????????????? 
%d ??????????????????.', '?????????????????????????? %d ????????????????????.'),
        'Kill' => '??????????????????????',
        
        'Variables' => '????????????????????',
@@ -46,8 +46,8 @@
        
        'SQL command' => '???????????? SQL',
        '%d query(s) executed OK.' => array('???? ?????????????? %d 
?????????????????????? ????.', '???? ?????????????????? %d 
???????????????????????? ????.'),
-       'Query executed OK, %d row(s) affected.' => array('???? ?????????????? 
?????????????????????? ????, ???????????????????????? %d ??????????.', '???? 
?????????????? ?????????????????????? ????, ?????????????????????????? %d 
????????????.'),
-       'No commands to execute.' => '?????? ?????????????? ???????????? ???? 
????????????????????.',
+       'Query executed OK, %d row(s) affected.' => array('???? ?????????????? 
?????????????????????? ????, ?????????????????????? %d ??????????.', '???? 
?????????????? ?????????????????????? ????, ???????????????????????? %d 
????????????.'),
+       'No commands to execute.' => '?????? ???????????????? ?????????????? 
???? ??????????????????????.',
        'Error in query' => '???????????? ?????? ??????????????',
        'Execute' => '????????????????',
        'Stop on error' => '?????????????? ???????? ?????????????? 
????????????',
@@ -58,16 +58,16 @@
        'Clear' => '????????????????????',
        'Edit all' => '?????????????????????? ????????',
        
-       'File upload' => '???????????????? ??????????????',
+       'File upload' => '?????????????????????? ??????????????',
        'From server' => '?????? ????????????????????',
        'Webserver file %s' => '???????????? %s ?????? ???????????????????? 
web',
        'Run file' => '???????????????? ??????????????',
        'File does not exist.' => '???? ???????????? ?????? ??????????????.',
-       'File uploads are disabled.' => '???????? 
?????????????????????????????? ???? ???????????????? ??????????????.',
-       'Unable to upload a file.' => '?????? ?????????? ?????????????? ???? 
???????????? ???? ????????????.',
-       'Maximum allowed file size is %sB.' => '???? ?????????????? 
???????????????????????? ?????????????? ???????????? ?????? ???????????????? 
?????????? %sB.',
+       'File uploads are disabled.' => '???????? 
?????????????????????????????? ?? ?????????????????????? ??????????????.',
+       'Unable to upload a file.' => '???????????????? 
???????????????????????? ??????????????.',
+       'Maximum allowed file size is %sB.' => '???? ?????????????? 
???????????????????????? ?????????????? ?????????????? ?????????? %sB.',
        'Too big POST data. Reduce the data or increase the %s configuration 
directive.' => '?????????? ???????????????? POST. ?????????????? ???? 
?????????????????????? ?? ?????????????? ?????? ?????????????? ?????????????? 
%s.',
-       'You can upload a big SQL file via FTP and import it from server.' => 
'???????????????? ???? ?????????????????? ?????? ???????????? ???????????? SQL 
???????? FTP ?????? ???? ???? ???????????????? ?????? ???? 
????????????????????.',
+       'You can upload a big SQL file via FTP and import it from server.' => 
'???????????????? ???? ?????????????????????????? ?????? ???????????? 
???????????? SQL ???????? FTP ?????? ???? ???? ???????????????? ?????? ???? 
????????????????????.',
        'You are offline.' => '?????????????????? ?????????? ????????????????.',
        
        'Export' => '??????????????',
@@ -82,7 +82,7 @@
        'database' => '??. ??????????????????',
        'Use' => '??????????',
        'Select database' => '???????????????? ??.??.',
-       'Invalid database.' => '?????????? ??.??.',
+       'Invalid database.' => '???????????????????? ??.??.',
        'Database has been dropped.' => '?? ??.??. ????????????????????.',
        'Databases have been dropped.' => '???? ??.??. ??????????????????????.',
        'Database has been created.' => '?? ??.??. ??????????????????????????.',
@@ -111,7 +111,7 @@
        'Check' => '??????????????',
        'Repair' => '??????????????????????',
        'Truncate' => '????????????????',
-       'Tables have been truncated.' => '???? ?????????????? 
????????????????????????.',
+       'Tables have been truncated.' => '???? ?????????????? 
??????????????????????.',
        'Move to other database' => '???????????????? ???? ???????? ??.??.',
        'Move' => '????????????????',
        'Tables have been moved.' => '???? ?????????????? 
????????????????????????.',
@@ -119,11 +119,11 @@
        'Tables have been copied.' => '???? ?????????????? 
????????????????????????.',
        
        'Routines' => '????????????????',
-       'Routine has been called, %d row(s) affected.' => array('?? 
?????????????? ??????????????????????, ???????????????????????? %d 
??????????.', '?? ?????????????? ??????????????????????, 
?????????????????????????? %d ????????????.'),
+       'Routine has been called, %d row(s) affected.' => array('?? 
?????????????? ??????????????????????, ?????????????????????? %d ??????????.', 
'?? ?????????????? ??????????????????????, ???????????????????????? %d 
????????????.'),
        'Call' => '????????????????',
        'Parameter name' => '?????????? ????????????????????',
        'Create procedure' => '???????????????????? ??????????????????????',
-       'Create function' => '???????????????????? ??????????????????????',
+       'Create function' => '???????????????????? ????????????????????',
        'Routine has been dropped.' => '?? ?????????????? 
????????????????????.',
        'Routine has been altered.' => '?? ?????????????? 
??????????????????????????.',
        'Routine has been created.' => '?? ?????????????? 
??????????????????????????.',
@@ -151,7 +151,7 @@
        'Alter table' => '?????????????????????? ????????????',
        'Create table' => '???????????????????? ????????????',
        'Table has been dropped.' => '?? ?????????????? ????????????????????.',
-       'Tables have been dropped.' => '???? ?????????????? 
??????????????????????.',
+       'Tables have been dropped.' => '???? ?????????????? 
??????????????????????.',
        'Tables have been optimized.' => '???? ?????????????? 
??????????????????????????????????.',
        'Table has been altered.' => '?? ?????????????? 
??????????????????????????.',
        'Table has been created.' => '?? ?????????????? 
??????????????????????????.',
@@ -210,7 +210,7 @@
        'Add foreign key' => '???????????????? ?????????????????????? 
????????????????',
        'ON DELETE' => '???????? ???? ????????????????',
        'ON UPDATE' => '???????? ?????? ????????????',
-       'Source and target columns must have the same data type, there must be 
an index on the target columns and referenced data must exist.' => '???? 
???????????? ?????? ???????? ?????? ???? ?????????? ???????????? ???? 
?????????? ?????? ???????? ????????, ???????????? ???? ?????????????? 
?????????????? ?????? ?????????? ?????????? ?????? ???? ???????????????? 
???????????????????? ????????????????.',
+       'Source and target columns must have the same data type, there must be 
an index on the target columns and referenced data must exist.' => '???? 
???????????? ???????? ???????? ?????? ???? ?????????? ???????????? ???? 
?????????? ?????? ???????? ????????, ???????????? ???? ?????????????? 
?????????????? ?????? ?????????? ?????????? ?????? ???? ???????????????? 
???????????????????? ????????????????.',
        
        'Triggers' => '??????????????????',
        'Add trigger' => '???????????????? ????????????????????',
@@ -262,7 +262,7 @@
        'Item%s has been inserted.' => '?? ??????????????%s ??????????????.',
        'Item has been deleted.' => '?? ?????????????? ????????????????????.',
        'Item has been updated.' => '?? ?????????????? ??????????????????????.',
-       '%d item(s) have been affected.' => array('???????????????????????? %d 
??????????????.', '?????????????????????????? %d ????????????????.'),
+       '%d item(s) have been affected.' => array('?????????????????????? %d 
??????????????.', '???????????????????????? %d ????????????????.'),
        'New item' => '?????? ??????????????',
        'original' => '??????????????????',
        // label for value '' in enum data type
@@ -274,7 +274,7 @@
        'Save and continue edit' => '???????????????????? ?????? 
???????????????? ????????????????????????',
        'Save and insert next' => '???????????????????? ?????? ???????????????? 
????????????????',
        'Selected' => '????????????????????',
-       'Clone' => '??????????????????????',
+       'Clone' => '??????????????????????',
        'Delete' => '????????????????',
        'You have no privileges to update this table.' => '?????? ?????????? 
???????????????? ???? ?????????????????????????? ???????? ?????? ????????????.',
        
@@ -283,7 +283,7 @@
        'Subject' => '????????',
        'Attachments' => '??????????????????',
        'Send' => '????????????????',
-       '%d e-mail(s) have been sent.' => array('%d e-mail 
????????????????????.', '%d e-mail ????????????????????????.'),
+       '%d e-mail(s) have been sent.' => array('%d e-mail ????????????????.', 
'%d e-mail ??????????????????????.'),
        
        // data type descriptions
        'Numbers' => '??????????????',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/processlist.inc.php 
new/adminer-4.8.1/adminer/processlist.inc.php
--- old/adminer-4.8.0/adminer/processlist.inc.php       2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/adminer/processlist.inc.php       2021-05-14 
07:39:59.000000000 +0200
@@ -1,12 +1,14 @@
 <?php
-if (support("kill") && $_POST && !$error) {
-       $killed = 0;
-       foreach ((array) $_POST["kill"] as $val) {
-               if (kill_process($val)) {
-                       $killed++;
+if (support("kill")) {
+       if ($_POST && !$error) {
+               $killed = 0;
+               foreach ((array) $_POST["kill"] as $val) {
+                       if (kill_process($val)) {
+                               $killed++;
+                       }
                }
+               queries_redirect(ME . "processlist=", lang('%d process(es) have 
been killed.', $killed), $killed || !$_POST["kill"]);
        }
-       queries_redirect(ME . "processlist=", lang('%d process(es) have been 
killed.', $killed), $killed || !$_POST["kill"]);
 }
 
 page_header(lang('Process list'), $error);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/static/editing.js 
new/adminer-4.8.1/adminer/static/editing.js
--- old/adminer-4.8.0/adminer/static/editing.js 2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/adminer/static/editing.js 2021-05-14 07:39:59.000000000 
+0200
@@ -658,7 +658,7 @@
        if (tableRe.test(form['Trigger'].value)) {
                form['Trigger'].value = table + '_' + 
(selectValue(form['Timing']).charAt(0) + formEvent.charAt(0)).toLowerCase();
        }
-       alterClass(form['Of'], 'hidden', formEvent != 'UPDATE OF');
+       alterClass(form['Of'], 'hidden', !/ OF/.test(formEvent));
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/adminer/trigger.inc.php 
new/adminer-4.8.1/adminer/trigger.inc.php
--- old/adminer-4.8.0/adminer/trigger.inc.php   2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/adminer/trigger.inc.php   2021-05-14 07:39:59.000000000 
+0200
@@ -2,7 +2,7 @@
 $TABLE = $_GET["trigger"];
 $name = $_GET["name"];
 $trigger_options = trigger_options();
-$row = (array) trigger($name) + array("Trigger" => $TABLE . "_bi");
+$row = (array) trigger($name, $TABLE) + array("Trigger" => $TABLE . "_bi");
 
 if ($_POST) {
        if (!$error && in_array($_POST["Timing"], $trigger_options["Timing"]) 
&& in_array($_POST["Event"], $trigger_options["Event"]) && 
in_array($_POST["Type"], $trigger_options["Type"])) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/changes.txt 
new/adminer-4.8.1/changes.txt
--- old/adminer-4.8.0/changes.txt       2021-02-10 17:21:55.000000000 +0100
+++ new/adminer-4.8.1/changes.txt       2021-05-14 07:39:59.000000000 +0200
@@ -1,3 +1,15 @@
+Adminer 4.8.1 (released 2021-05-14):
+Internet Explorer or PDO in Adminer 4.7.8-4.8.0: Fix XSS in doc_link (bug #797)
+Fix more PHP 8 warnings (bug #781)
+Avoid PHP warnings with PDO drivers (bug #786, regression from 4.7.8)
+MySQL: Allow moving views to other DB and renaming DB with views (bug #783)
+MariaDB: Do not treat sequences as views (PR #416)
+PostgreSQL: Support UPDATE OF triggers (bug #789)
+PostgreSQL: Support triggers with more events (OR)
+PostgreSQL: Fix parsing of foreign keys with non-ASCII column names
+PostgreSQL < 10 PDO: Avoid displaying GENERATED ALWAYS BY IDENTITY everywhere 
(bug #785, regression from 4.7.9)
+SQLite: Fix displayed types (bug #784, regression from 4.8.0)
+
 Adminer 4.8.0 (released 2021-02-10):
 Support function default values in insert (bug #713)
 Allow SQL pseudo-function in insert
@@ -798,7 +810,7 @@
 
 phpMinAdmin 1.10.1 (released 2009-05-07):
 Highlight odd and hover rows
-Partition editing comfort (bug #2783446)
+Partition editing comfort (bug #12)
 Allow full length in limited int
 
 phpMinAdmin 1.10.0 (released 2009-04-28):
@@ -885,7 +897,7 @@
 Privileges
 New design
 Dutch translation
-Use NULL for auto_increment (bug #1768966)
+Use NULL for auto_increment (bug #1)
 Fix dropping procedure parameters
 
 phpMinAdmin 1.3.2 (released 2007-08-06):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/compile.php 
new/adminer-4.8.1/compile.php
--- old/adminer-4.8.0/compile.php       2021-02-10 17:21:55.000000000 +0100
+++ new/adminer-4.8.1/compile.php       2021-05-14 07:39:59.000000000 +0200
@@ -5,7 +5,7 @@
 }
 
 error_reporting(6135); // errors and warnings
-set_error_handler('adminer_errors', 2); // 2 - E_WARNING
+set_error_handler('adminer_errors', E_WARNING);
 include dirname(__FILE__) . "/adminer/include/version.inc.php";
 include dirname(__FILE__) . "/externals/JsShrink/jsShrink.php";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/designs/dracula/adminer.css 
new/adminer-4.8.1/designs/dracula/adminer.css
--- old/adminer-4.8.0/designs/dracula/adminer.css       2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/designs/dracula/adminer.css       2021-05-14 
07:39:59.000000000 +0200
@@ -393,7 +393,7 @@
    float: none;
  }
  
- #tables a[title] {
+ #tables .structure, #tables .view {
    float: none;
    display: block;
  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/designs/galkaev/adminer.css 
new/adminer-4.8.1/designs/galkaev/adminer.css
--- old/adminer-4.8.0/designs/galkaev/adminer.css       2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/designs/galkaev/adminer.css       2021-05-14 
07:39:59.000000000 +0200
@@ -752,7 +752,7 @@
        font-size: 13px;
 }
 
-#tables a[title] {
+#tables .structure, #tables .view {
        float: none;
        display: block;
        color: inherit;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/designs/mancave/adminer.css 
new/adminer-4.8.1/designs/mancave/adminer.css
--- old/adminer-4.8.0/designs/mancave/adminer.css       2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/designs/mancave/adminer.css       2021-05-14 
07:39:59.000000000 +0200
@@ -819,7 +819,7 @@
        font-size: 13px;
 }
 
-#tables a[title] {
+#tables .structure, #tables .view {
        float: none;
        display: block;
        color: #F1E5B3;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/designs/pepa-linha/adminer.css 
new/adminer-4.8.1/designs/pepa-linha/adminer.css
--- old/adminer-4.8.0/designs/pepa-linha/adminer.css    2021-02-10 
17:21:55.000000000 +0100
+++ new/adminer-4.8.1/designs/pepa-linha/adminer.css    2021-05-14 
07:39:59.000000000 +0200
@@ -1,7 +1,6 @@
 /*
  * Theme by Pepa Linha [http://webdream.cz]
  * JUSH color syntax inspired by NetBeans
- * @version 0.2 (February 2014)
  */
 
 html,
@@ -360,7 +359,7 @@
        float: none;
 }
 
-#tables a[title] {
+#tables .structure, #tables .view {
        float: none;
        display: block;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/plugins/drivers/README 
new/adminer-4.8.1/plugins/drivers/README
--- old/adminer-4.8.0/plugins/drivers/README    2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/plugins/drivers/README    1970-01-01 01:00:00.000000000 
+0100
@@ -1,11 +0,0 @@
-Enable drivers in this directory like this:
-
-<?php
-function adminer_object() {
-       include "./plugins/drivers/simpledb.php"; // the driver is enabled just 
by including
-       return new Adminer; // or return AdminerPlugin if you want to use other 
plugins
-}
-
-// include original Adminer
-include "./adminer.php";
-?>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/plugins/drivers/readme.txt 
new/adminer-4.8.1/plugins/drivers/readme.txt
--- old/adminer-4.8.0/plugins/drivers/readme.txt        1970-01-01 
01:00:00.000000000 +0100
+++ new/adminer-4.8.1/plugins/drivers/readme.txt        2021-05-14 
07:39:59.000000000 +0200
@@ -0,0 +1,11 @@
+Enable drivers in this directory like this:
+
+<?php
+function adminer_object() {
+       include "./plugins/drivers/simpledb.php"; // the driver is enabled just 
by including
+       return new Adminer; // or return AdminerPlugin if you want to use other 
plugins
+}
+
+// include original Adminer
+include "./adminer.php";
+?>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/plugins/login-otp.php 
new/adminer-4.8.1/plugins/login-otp.php
--- old/adminer-4.8.0/plugins/login-otp.php     2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/plugins/login-otp.php     2021-05-14 07:39:59.000000000 
+0200
@@ -1,8 +1,7 @@
 <?php
 
 /** Require One-Time Password at login
-* You can generate the secret and install it into Google Authenticator e.g. 
with https://github.com/sonata-project/GoogleAuthenticator or 
https://php.vrana.cz/jednorazove-heslo.php
-* @link https://www.adminer.org/plugins/#use
+* @link https://www.adminer.org/plugins/otp/
 * @author Jakub Vrana, https://www.vrana.cz/
 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 
2.0
 * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public 
License, version 2 (one or other)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/plugins/plugin.php 
new/adminer-4.8.1/plugins/plugin.php
--- old/adminer-4.8.0/plugins/plugin.php        2021-02-10 17:21:55.000000000 
+0100
+++ new/adminer-4.8.1/plugins/plugin.php        2021-05-14 07:39:59.000000000 
+0200
@@ -84,6 +84,8 @@
        }
 
        function editRowPrint($table, $fields, $row, $update) {
+               $args = func_get_args();
+               return $this->_appendPlugin(__FUNCTION__, $args);
        }
 
        function editFunctions($field) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/readme.txt new/adminer-4.8.1/readme.txt
--- old/adminer-4.8.0/readme.txt        2021-02-10 17:21:55.000000000 +0100
+++ new/adminer-4.8.1/readme.txt        2021-05-14 07:39:59.000000000 +0200
@@ -2,7 +2,7 @@
 Adminer Editor - Data manipulation for end-users
 
 https://www.adminer.org/
-Supports: MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, 
Elasticsearch, MongoDB, Firebird
+Supports: MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, 
MongoDB, SimpleDB (plugin), Firebird (plugin), ClickHouse (plugin)
 Requirements: PHP 5+
 Apache License 2.0 or GPL 2
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/adminer-4.8.0/todo.txt new/adminer-4.8.1/todo.txt
--- old/adminer-4.8.0/todo.txt  2021-02-10 17:21:55.000000000 +0100
+++ new/adminer-4.8.1/todo.txt  2021-05-14 07:39:59.000000000 +0200
@@ -2,7 +2,7 @@
 Create view and routine options
 Variables editation
 Blob download and image display in edit form (important for Editor with hidden 
fields in select and SQL command)
-Add title to Logout, edit (in select) and select (in menu) for style "hever"
+Add title to Logout and edit (in select) for style "hever"
 Export by GET parameters
 Draggable columns in alter table (thanks to Michal Manak)
 <option class> for system databases and schemas - information_schema and 
driver-specific (thanks to Vaclav Novotny)

Reply via email to