PostgreSQL, Oracle: Set schema for EXPLAIN queries in SQL command (bug #706)

This commit is contained in:
Jakub Vrana 2019-11-11 12:10:46 +01:00
parent 0678ce1222
commit a4e997fe60
6 changed files with 19 additions and 6 deletions

View file

@ -986,9 +986,10 @@ if (!defined("DRIVER")) {
/** Set current schema /** Set current schema
* @param string * @param string
* @param Min_DB
* @return bool * @return bool
*/ */
function set_schema($schema) { function set_schema($schema, $connection2 = null) {
return true; return true;
} }

View file

@ -367,9 +367,12 @@ AND c_src.TABLE_NAME = " . q($table);
return $connection->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual"); return $connection->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");
} }
function set_schema($scheme) { function set_schema($scheme, $connection2 = null) {
global $connection; global $connection;
return $connection->query("ALTER SESSION SET CURRENT_SCHEMA = " . idf_escape($scheme)); if (!$connection2) {
$connection2 = $connection;
}
return $connection2->query("ALTER SESSION SET CURRENT_SCHEMA = " . idf_escape($scheme));
} }
function show_variables() { function show_variables() {

View file

@ -689,9 +689,12 @@ AND typelem = 0"
return $connection->result("SELECT current_schema()"); return $connection->result("SELECT current_schema()");
} }
function set_schema($schema) { function set_schema($schema, $connection2 = null) {
global $connection, $types, $structured_types; global $connection, $types, $structured_types;
$return = $connection->query("SET search_path TO " . idf_escape($schema)); if (!$connection2) {
$connection2 = $connection;
}
$return = $connection2->query("SET search_path TO " . idf_escape($schema));
foreach (types() as $type) { //! get types from current_schemas('t') foreach (types() as $type) { //! get types from current_schemas('t')
if (!isset($types[$type])) { if (!isset($types[$type])) {
$types[$type] = 0; $types[$type] = 0;

View file

@ -1,2 +1,2 @@
<?php <?php
$VERSION = "4.7.4"; $VERSION = "4.7.5-dev";

View file

@ -53,6 +53,9 @@ if (!$error && $_POST) {
$connection2 = connect(); // connection for exploring indexes and EXPLAIN (to not replace FOUND_ROWS()) //! PDO - silent error $connection2 = connect(); // connection for exploring indexes and EXPLAIN (to not replace FOUND_ROWS()) //! PDO - silent error
if (is_object($connection2) && DB != "") { if (is_object($connection2) && DB != "") {
$connection2->select_db(DB); $connection2->select_db(DB);
if ($_GET["ns"] != "") {
set_schema($_GET["ns"], $connection2);
}
} }
$commands = 0; $commands = 0;
$errors = array(); $errors = array();

View file

@ -1,3 +1,6 @@
Adminer 4.7.5-dev:
PostgreSQL, Oracle: Set schema for EXPLAIN queries in SQL command (bug #706)
Adminer 4.7.4 (released 2019-10-22): Adminer 4.7.4 (released 2019-10-22):
Fix XSS if Adminer is accessible at URL /data: Fix XSS if Adminer is accessible at URL /data: