mirror of
https://github.com/vrana/adminer.git
synced 2025-08-13 18:14:07 +02:00
Warn about grouping data without index
This commit is contained in:
@@ -214,7 +214,7 @@ username.form['auth[driver]'].onchange();
|
|||||||
foreach ($select as $key => $val) {
|
foreach ($select as $key => $val) {
|
||||||
$val = $_GET["columns"][$key];
|
$val = $_GET["columns"][$key];
|
||||||
echo "<div>" . html_select("columns[$i][fun]", array(-1 => "") + $fun_group, $val["fun"]);
|
echo "<div>" . html_select("columns[$i][fun]", array(-1 => "") + $fun_group, $val["fun"]);
|
||||||
echo "(<select name='columns[$i][col]'><option>" . optionlist($columns, $val["col"], true) . "</select>)</div>\n";
|
echo "(<select name='columns[$i][col]' onchange='selectFieldChange(this.form);'><option>" . optionlist($columns, $val["col"], true) . "</select>)</div>\n";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
echo "<div>" . html_select("columns[$i][fun]", array(-1 => "") + $fun_group, "", "this.nextSibling.nextSibling.onchange();");
|
echo "<div>" . html_select("columns[$i][fun]", array(-1 => "") + $fun_group, "", "this.nextSibling.nextSibling.onchange();");
|
||||||
|
@@ -233,6 +233,8 @@ function selectFieldChange(form) {
|
|||||||
}
|
}
|
||||||
var ok = true;
|
var ok = true;
|
||||||
var selects = form.getElementsByTagName('select');
|
var selects = form.getElementsByTagName('select');
|
||||||
|
var group = false;
|
||||||
|
var columns = {};
|
||||||
for (var i=0; i < selects.length; i++) {
|
for (var i=0; i < selects.length; i++) {
|
||||||
var select = selects[i];
|
var select = selects[i];
|
||||||
var col = selectValue(select);
|
var col = selectValue(select);
|
||||||
@@ -246,7 +248,15 @@ function selectFieldChange(form) {
|
|||||||
ok = false;
|
ok = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! take grouping in select into account
|
if ((match = /^(columns.+)fun\]/.exec(select.name))) {
|
||||||
|
if (/^(avg|count|count distinct|group_concat|max|min|sum)$/.test(col)) {
|
||||||
|
group = true;
|
||||||
|
}
|
||||||
|
var val = selectValue(form[match[1] + 'col]']);
|
||||||
|
if (val) {
|
||||||
|
columns[col && col != 'count' ? '' : val] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (col && /^order/.test(select.name)) {
|
if (col && /^order/.test(select.name)) {
|
||||||
if (!(col in indexColumns)) {
|
if (!(col in indexColumns)) {
|
||||||
ok = false;
|
ok = false;
|
||||||
@@ -254,6 +264,13 @@ function selectFieldChange(form) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (group) {
|
||||||
|
for (var col in columns) {
|
||||||
|
if (!(col in indexColumns)) {
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return ok;
|
return ok;
|
||||||
})();
|
})();
|
||||||
setHtml('noindex', (ok ? '' : '!'));
|
setHtml('noindex', (ok ? '' : '!'));
|
||||||
|
Reference in New Issue
Block a user