ClickHouse/dbms/include/DB/Interpreters/InterpreterCreateQuery.h

63 lines
2.4 KiB
C
Raw Normal View History

2011-08-18 20:33:20 +00:00
#pragma once
#include <DB/Storages/IStorage.h>
#include <DB/Interpreters/Context.h>
2015-06-18 02:11:05 +00:00
#include <DB/Interpreters/IInterpreter.h>
#include <DB/Storages/ColumnDefault.h>
2011-08-18 20:33:20 +00:00
namespace DB
{
2011-11-05 23:31:19 +00:00
/** Позволяет создать новую таблицу, или создать объект уже существующей таблицы, или создать БД, или создать объект уже существующей БД
2011-08-18 20:33:20 +00:00
*/
2015-06-18 02:11:05 +00:00
class InterpreterCreateQuery : public IInterpreter
2011-08-18 20:33:20 +00:00
{
public:
2012-03-05 00:09:41 +00:00
InterpreterCreateQuery(ASTPtr query_ptr_, Context & context_);
2011-11-05 23:31:19 +00:00
/** В случае таблицы: добавляет созданную таблицу в контекст, а также возвращает её.
* В случае БД: добавляет созданную БД в контекст и возвращает NULL.
* assume_metadata_exists - не проверять наличие файла с метаданными и не создавать его
* (для случая выполнения запроса из существующего файла с метаданными).
2011-11-05 23:31:19 +00:00
*/
2015-06-18 02:11:05 +00:00
BlockIO execute() override
{
executeImpl(false);
return {};
}
/** assume_metadata_exists - не проверять наличие файла с метаданными и не создавать его
* (для случая выполнения запроса из существующего файла с метаданными).
*/
void executeLoadExisting()
{
executeImpl(true);
}
2014-07-10 11:13:45 +00:00
/// Список столбцов с типами в AST.
2014-07-10 11:13:45 +00:00
static ASTPtr formatColumns(const NamesAndTypesList & columns);
static ASTPtr formatColumns(
NamesAndTypesList columns,
const NamesAndTypesList & materialized_columns,
const NamesAndTypesList & alias_columns,
const ColumnDefaults & column_defaults);
2011-11-01 15:16:04 +00:00
private:
2015-06-18 02:11:05 +00:00
void executeImpl(bool assume_metadata_exists);
/// AST в список столбцов с типами. Столбцы типа Nested развернуты в список настоящих столбцов.
using ColumnsAndDefaults = std::pair<NamesAndTypesList, ColumnDefaults>;
ColumnsAndDefaults parseColumns(ASTPtr expression_list);
/// removes columns from the columns list and return them in a separate list
static NamesAndTypesList removeAndReturnColumns(ColumnsAndDefaults & columns_and_defaults, ColumnDefaultType type);
2011-11-01 15:16:04 +00:00
ASTPtr query_ptr;
Context context;
2011-08-18 20:33:20 +00:00
};
}