mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
no skip lambda function
This commit is contained in:
parent
0f147e393f
commit
b5035e8924
@ -58,9 +58,6 @@ void ExpressionInfoMatcher::visit(const ASTIdentifier & identifier, const ASTPtr
|
||||
|
||||
bool ExpressionInfoMatcher::needChildVisit(const ASTPtr & node, const ASTPtr &)
|
||||
{
|
||||
if (const auto & function = node->as<ASTFunction>(); function && function->name == "lambda")
|
||||
return false;
|
||||
|
||||
return !node->as<ASTSubquery>();
|
||||
}
|
||||
|
||||
|
@ -68,9 +68,8 @@ void PredicateRewriteVisitorData::visitOtherInternalSelect(ASTSelectQuery & sele
|
||||
|
||||
static void cleanAliasAndCollectIdentifiers(ASTPtr & predicate, std::vector<ASTIdentifier *> & identifiers)
|
||||
{
|
||||
/// skip WHERE x in (SELECT ...) AND arrayMap(x -> x, [column_a])
|
||||
const auto & function = predicate->as<ASTFunction>();
|
||||
if (!predicate->as<ASTSubquery>() && !(function && function->name == "lambda"))
|
||||
/// Skip WHERE x in (SELECT ...)
|
||||
if (!predicate->as<ASTSubquery>())
|
||||
{
|
||||
for (auto & children : predicate->children)
|
||||
cleanAliasAndCollectIdentifiers(children, identifiers);
|
||||
@ -102,6 +101,8 @@ bool PredicateRewriteVisitorData::rewriteSubquery(ASTSelectQuery & subquery, con
|
||||
const auto & column_name = identifiers[index]->shortName();
|
||||
const auto & outer_column_iterator = std::find(outer_columns.begin(), outer_columns.end(), column_name);
|
||||
|
||||
/// For lambda functions, we can't always find them in the list of columns
|
||||
/// For example: SELECT * FROM system.one WHERE arrayMap(x -> x, [dummy]) = [0]
|
||||
if (outer_column_iterator != outer_columns.end())
|
||||
identifiers[index]->setShortName(inner_columns[outer_column_iterator - outer_columns.begin()]);
|
||||
}
|
||||
|
@ -26,3 +26,5 @@ SELECT \n ts AS `--a.ts`, \n id AS `--a.id`, \n id_b AS `--a.id_b`, \n
|
||||
4 5
|
||||
SELECT dummy\nFROM \n(\n SELECT dummy\n FROM system.one\n WHERE arrayMap(x -> (x + 1), [dummy]) = [1]\n)\nWHERE arrayMap(x -> (x + 1), [dummy]) = [1]
|
||||
0
|
||||
SELECT \n id, \n value, \n value_1\nFROM \n(\n SELECT \n 1 AS id, \n 2 AS value\n)\nALL INNER JOIN \n(\n SELECT \n 1 AS id, \n 3 AS value_1\n) USING (id)\nWHERE arrayMap(x -> ((x + value) + value_1), [1]) = [6]
|
||||
1 2 3
|
||||
|
@ -74,3 +74,5 @@ DROP TABLE IF EXISTS test;
|
||||
ANALYZE SELECT * FROM (SELECT * FROM system.one) WHERE arrayMap(x -> x + 1, [dummy]) = [1];
|
||||
SELECT * FROM (SELECT * FROM system.one) WHERE arrayMap(x -> x + 1, [dummy]) = [1];
|
||||
|
||||
ANALYZE SELECT * FROM (SELECT 1 AS id, 2 AS value) INNER JOIN (SELECT 1 AS id, 3 AS value_1) USING id WHERE arrayMap(x -> x + value + value_1, [1]) = [6];
|
||||
SELECT * FROM (SELECT 1 AS id, 2 AS value) INNER JOIN (SELECT 1 AS id, 3 AS value_1) USING id WHERE arrayMap(x -> x + value + value_1, [1]) = [6];
|
||||
|
Loading…
Reference in New Issue
Block a user