ClickHouse/dbms/include/DB/Parsers/ASTIdentifier.h

51 lines
1.1 KiB
C
Raw Normal View History

2011-08-28 02:22:23 +00:00
#pragma once
2010-06-24 19:12:10 +00:00
2011-08-09 19:19:00 +00:00
#include <DB/DataTypes/IDataType.h>
2010-06-24 19:12:10 +00:00
#include <DB/Parsers/IAST.h>
namespace DB
{
/** Идентификатор (столбца или алиас, или именованый элемент кортежа)
*/
class ASTIdentifier : public IAST
{
public:
2011-08-28 02:22:23 +00:00
enum Kind
{
Column,
Database,
Table,
2011-10-30 05:19:41 +00:00
Format,
ArrayJoin,
2011-08-28 02:22:23 +00:00
};
2010-06-24 19:12:10 +00:00
/// имя
String name;
2011-11-06 04:21:09 +00:00
/// алиас, если есть
String alias;
2011-08-28 02:22:23 +00:00
/// чего идентифицирует этот идентификатор
Kind kind;
2010-06-25 16:36:13 +00:00
ASTIdentifier() {}
2011-08-28 02:22:23 +00:00
ASTIdentifier(StringRange range_, const String & name_, Kind kind_ = Column) : IAST(range_), name(name_), kind(kind_) {}
2011-09-25 03:37:09 +00:00
2012-12-27 16:23:12 +00:00
String getColumnName() const { return name; }
2011-11-06 04:21:09 +00:00
2012-12-27 16:23:12 +00:00
String getAlias() const { return alias.empty() ? getColumnName() : alias; }
2010-06-24 19:12:10 +00:00
2011-08-09 19:19:00 +00:00
/** Получить текст, который идентифицирует этот элемент. */
2012-12-27 16:23:12 +00:00
String getID() const { return "Identifier_" + name; }
2011-12-12 06:15:34 +00:00
ASTPtr clone() const { return new ASTIdentifier(*this); }
void collectIdentifierNames(IdentifierNameSet & set) const
{
set.insert(name);
}
2010-06-24 19:12:10 +00:00
};
}