Another case for bug #4239

Signed-off-by: Marc Delisle <marc@infomarc.info>
This commit is contained in:
Marc Delisle 2014-01-21 05:52:25 -05:00
parent 3091d6c4ee
commit cd46fbef11
3 changed files with 8 additions and 2 deletions

View File

@ -74,6 +74,9 @@ $is_count = isset($analyzed_sql[0]['queryflags']['is_count']);
// check for a real SELECT ... FROM
$is_select = isset($analyzed_sql[0]['queryflags']['select_from']);
// the query contains a subquery
$is_subquery = isset($analyzed_sql[0]['queryflags']['is_subquery']);
// check for CALL
// Since multiple query execution is anyway handled,
// ignore the WHERE clause of the first sql statement
@ -105,7 +108,8 @@ $analyzed_sql_results = array(
"is_func" => $is_func,
"is_count" => $is_count,
"is_select" => $is_select,
"is_procedure" => $is_procedure
"is_procedure" => $is_procedure,
"is_subquery" => $is_subquery
);

View File

@ -839,7 +839,7 @@ function PMA_isAppendLimitClause($analyzed_sql_results)
if (($_SESSION['tmpval']['max_rows'] != 'all')
&& ! ($analyzed_sql_results['is_export']
|| $analyzed_sql_results['is_analyse'])
&& $select_from
&& ($select_from || $analyzed_sql_results['is_subquery'])
&& ! isset($analyzed_sql_results['analyzed_sql'][0]['queryflags']['offset'])
&& empty($analyzed_sql_results['analyzed_sql'][0]['limit_clause'])
) {

View File

@ -996,6 +996,7 @@ function PMA_SQP_analyze($arr)
* |MIN|MAX|BIT_OR|BIT_AND
* ['queryflags']['is_count'] = 1; for the presence of SELECT COUNT
* ['queryflags']['is_procedure'] = 1; for the presence of CALL
* ['queryflags']['is_subquery'] = 1; contains a subquery
*
* query clauses
* -------------
@ -1213,6 +1214,7 @@ function PMA_SQP_analyze($arr)
if ($number_of_brackets > 0) {
$in_subquery = true;
$seen_subquery = true;
$subresult['queryflags']['is_subquery'] = 1;
// this is a subquery so do not analyze inside it
continue;
}