mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
Revert "Fix logical error in evaluate constant expression"
This reverts commit 2958c5f0f1
.
This commit is contained in:
parent
2958c5f0f1
commit
4930683aa8
@ -44,9 +44,6 @@ static std::pair<Field, std::shared_ptr<const IDataType>> getFieldAndDataTypeFro
|
||||
|
||||
std::pair<Field, std::shared_ptr<const IDataType>> evaluateConstantExpression(const ASTPtr & node, const ContextPtr & context)
|
||||
{
|
||||
if (!node->hasColumnName())
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Expression '{}' is not a constant expression", node->formatForErrorMessage());
|
||||
|
||||
if (ASTLiteral * literal = node->as<ASTLiteral>())
|
||||
return getFieldAndDataTypeFromLiteral(literal);
|
||||
|
||||
|
@ -15,7 +15,6 @@ public:
|
||||
String getID(char) const override { return "Asterisk"; }
|
||||
ASTPtr clone() const override;
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
ASTPtr expression;
|
||||
ASTPtr transformers;
|
||||
|
@ -23,8 +23,6 @@ public:
|
||||
ASTPtr clone() const override;
|
||||
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
void setPattern(String pattern);
|
||||
const String & getPattern() const;
|
||||
const std::shared_ptr<re2::RE2> & getMatcher() const;
|
||||
@ -48,7 +46,6 @@ public:
|
||||
String getID(char) const override { return "ColumnsListMatcher"; }
|
||||
ASTPtr clone() const override;
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
ASTPtr expression;
|
||||
ASTPtr column_list;
|
||||
@ -65,8 +62,6 @@ public:
|
||||
ASTPtr clone() const override;
|
||||
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
const std::shared_ptr<re2::RE2> & getMatcher() const;
|
||||
void setPattern(String pattern, bool set_matcher = true);
|
||||
void setMatcher(std::shared_ptr<re2::RE2> matcher);
|
||||
@ -89,7 +84,6 @@ public:
|
||||
String getID(char) const override { return "QualifiedColumnsListMatcher"; }
|
||||
ASTPtr clone() const override;
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
ASTPtr qualifier;
|
||||
ASTPtr column_list;
|
||||
|
@ -48,8 +48,6 @@ public:
|
||||
}
|
||||
void transform(ASTs & nodes) const override;
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
void updateTreeHashImpl(SipHash & hash_state) const override;
|
||||
|
||||
// Case 1 APPLY (quantile(0.9))
|
||||
@ -82,7 +80,6 @@ public:
|
||||
const std::shared_ptr<re2::RE2> & getMatcher() const;
|
||||
bool isColumnMatching(const String & column_name) const;
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
void updateTreeHashImpl(SipHash & hash_state) const override;
|
||||
|
||||
protected:
|
||||
@ -106,8 +103,6 @@ public:
|
||||
}
|
||||
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
void updateTreeHashImpl(SipHash & hash_state) const override;
|
||||
|
||||
String name;
|
||||
@ -126,8 +121,6 @@ public:
|
||||
}
|
||||
void transform(ASTs & nodes) const override;
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
void updateTreeHashImpl(SipHash & hash_state) const override;
|
||||
|
||||
protected:
|
||||
|
@ -468,27 +468,6 @@ namespace
|
||||
};
|
||||
}
|
||||
|
||||
bool ASTFunction::hasColumnName() const
|
||||
{
|
||||
if (parameters)
|
||||
{
|
||||
for (const auto & child : parameters->children)
|
||||
{
|
||||
if (!child->hasColumnName())
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (arguments)
|
||||
{
|
||||
for (const auto & child : arguments->children)
|
||||
{
|
||||
if (!child->hasColumnName())
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ASTFunction::appendColumnNameImpl(WriteBuffer & ostr) const
|
||||
{
|
||||
|
@ -79,8 +79,6 @@ public:
|
||||
protected:
|
||||
void formatImplWithoutAlias(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const override;
|
||||
void appendColumnNameImpl(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override;
|
||||
|
||||
private:
|
||||
void finishFormatWithWindow(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const;
|
||||
};
|
||||
|
@ -58,7 +58,6 @@ protected:
|
||||
|
||||
void formatImplWithoutAlias(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const override;
|
||||
void appendColumnNameImpl(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
private:
|
||||
using ASTWithAlias::children; /// ASTIdentifier is child free
|
||||
|
@ -47,7 +47,6 @@ protected:
|
||||
void formatImplWithoutAlias(const FormatSettings & settings, FormatState &, FormatStateStacked) const override;
|
||||
|
||||
void appendColumnNameImpl(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
private:
|
||||
/// Legacy version of 'appendColumnNameImpl'. It differs only with tuple literals.
|
||||
|
@ -31,7 +31,6 @@ public:
|
||||
return clone;
|
||||
}
|
||||
void appendColumnName(WriteBuffer & ostr) const override;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
ASTPtr qualifier;
|
||||
ASTPtr transformers;
|
||||
|
@ -21,8 +21,6 @@ public:
|
||||
using IAST::IAST;
|
||||
|
||||
void appendColumnName(WriteBuffer & ostr) const final;
|
||||
bool hasColumnName() const override { return true; }
|
||||
|
||||
void appendColumnNameWithoutAlias(WriteBuffer & ostr) const final;
|
||||
String getAliasOrColumnName() const override { return alias.empty() ? getColumnName() : alias; }
|
||||
String tryGetAlias() const override { return alias; }
|
||||
|
@ -56,9 +56,6 @@ public:
|
||||
throw Exception(ErrorCodes::LOGICAL_ERROR, "Trying to get name of not a column: {}", getID());
|
||||
}
|
||||
|
||||
/* This method should be overridden with appendColumnName */
|
||||
virtual bool hasColumnName() const { return false; }
|
||||
|
||||
/** Get the alias, if any, or the canonical name of the column, if it is not. */
|
||||
virtual String getAliasOrColumnName() const { return getColumnName(); }
|
||||
|
||||
|
@ -1,2 +0,0 @@
|
||||
SELECT count() FROM mysql(mysql('127.0.0.1:9004', currentDatabase(), 'foo', 'default', '', SETTINGS connection_pool_size = 1), '127.0.0.1:9004', currentDatabase(), 'foo', '', ''); -- { serverError BAD_ARGUMENTS }
|
||||
|
Loading…
Reference in New Issue
Block a user