Merge pull request #20278 from predictor2718/fix/19225-wrong-row-count-alias
Fix #19225 - Fix wrong row count when column alias shadows existing column name
This commit is contained in:
commit
837e7466dd
@ -781,8 +781,17 @@ class Sql
|
||||
// Removes LIMIT clause that might have been added
|
||||
$statement->limit = null;
|
||||
|
||||
if ($changeExpression) {
|
||||
$statement->expr[0] = new Expression();
|
||||
// Replace SELECT expressions with 1 to avoid
|
||||
// "Duplicate column name" errors when aliases shadow
|
||||
// existing column names (e.g. SELECT id, name AS id).
|
||||
// Only safe when there's no GROUP BY, DISTINCT, or UNION
|
||||
// since those depend on the actual expressions.
|
||||
if (
|
||||
$analyzedSqlResults['is_group'] === false
|
||||
&& $analyzedSqlResults['distinct'] === false
|
||||
&& $analyzedSqlResults['union'] === false
|
||||
) {
|
||||
$statement->expr = [new Expression()];
|
||||
$statement->expr[0]->expr = '1';
|
||||
}
|
||||
|
||||
|
||||
@ -513,7 +513,8 @@ class SqlTest extends AbstractTestCase
|
||||
],
|
||||
20,
|
||||
42,
|
||||
|
||||
false,
|
||||
'SELECT COUNT(*) FROM (SELECT 1 FROM company_users WHERE subquery_case = 0 ) as cnt',
|
||||
],
|
||||
[
|
||||
'SELECT ( as c2 FROM company_users WHERE working_count = 0',// Invalid query
|
||||
@ -546,6 +547,14 @@ class SqlTest extends AbstractTestCase
|
||||
false,
|
||||
'SELECT COUNT(*) FROM (SELECT 1 FROM t1 WHERE id <> 0 ) as cnt',
|
||||
],
|
||||
'duplicate column alias should not break count' => [
|
||||
'SELECT id, name AS id FROM company_users WHERE working_count = 0',
|
||||
['max_rows' => 10, 'pos' => 0],
|
||||
25,
|
||||
384,
|
||||
false,
|
||||
'SELECT COUNT(*) FROM (SELECT 1 FROM company_users WHERE working_count = 0 ) as cnt',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user