void ASTAlterQuery::formatQueryImpl(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const { frame.need_parens = false; std::string indent_str = settings.one_line ? "" : std::string(4u * frame.indent, ' '); settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "ALTER TABLE " << (settings.hilite ? hilite_none : ""); if (!table.empty()) { if (!database.empty()) { settings.ostr << indent_str << backQuoteIfNeed(database); settings.ostr << "."; } settings.ostr << indent_str << backQuoteIfNeed(table); } formatOnCluster(settings); settings.ostr << settings.nl_or_ws; FormatStateStacked frame_nested = frame; frame_nested.need_parens = false; ++frame_nested.indent; static_cast<IAST *>(command_list)->formatImpl(settings, state, frame_nested); }
void ASTDropQuery::formatQueryImpl(const FormatSettings & settings, FormatState &, FormatStateStacked) const { settings.ostr << (settings.hilite ? hilite_keyword : ""); if (kind == ASTDropQuery::Kind::Drop) settings.ostr << "DROP "; else if (kind == ASTDropQuery::Kind::Detach) settings.ostr << "DETACH "; else if (kind == ASTDropQuery::Kind::Truncate) settings.ostr << "TRUNCATE "; else throw Exception("Not supported kind of drop query.", ErrorCodes::SYNTAX_ERROR); settings.ostr << ((table.empty() && !database.empty()) ? "DATABASE " : "TABLE "); if (if_exists) settings.ostr << "IF EXISTS "; settings.ostr << (settings.hilite ? hilite_none : ""); if (table.empty() && !database.empty()) settings.ostr << backQuoteIfNeed(database); else settings.ostr << (!database.empty() ? backQuoteIfNeed(database) + "." : "") << backQuoteIfNeed(table); formatOnCluster(settings); }
void ASTAlterQuery::formatQueryImpl(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const { frame.need_parens = false; std::string indent_str = settings.one_line ? "" : std::string(4u * frame.indent, ' '); settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "ALTER TABLE " << (settings.hilite ? hilite_none : ""); if (!table.empty()) { if (!database.empty()) { settings.ostr << indent_str << backQuoteIfNeed(database); settings.ostr << "."; } settings.ostr << indent_str << backQuoteIfNeed(table); } formatOnCluster(settings); settings.ostr << settings.nl_or_ws; for (size_t i = 0; i < parameters.size(); ++i) { const ASTAlterQuery::Parameters & p = parameters[i]; if (p.type == ASTAlterQuery::ADD_COLUMN) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "ADD COLUMN " << (settings.hilite ? hilite_none : ""); p.col_decl->formatImpl(settings, state, frame); /// AFTER if (p.column) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << " AFTER " << (settings.hilite ? hilite_none : ""); p.column->formatImpl(settings, state, frame); } } else if (p.type == ASTAlterQuery::DROP_COLUMN) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << (p.clear_column ? "CLEAR " : "DROP ") << "COLUMN " << (settings.hilite ? hilite_none : ""); p.column->formatImpl(settings, state, frame); if (p.partition) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str<< " IN PARTITION " << (settings.hilite ? hilite_none : ""); p.partition->formatImpl(settings, state, frame); } } else if (p.type == ASTAlterQuery::MODIFY_COLUMN) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "MODIFY COLUMN " << (settings.hilite ? hilite_none : ""); p.col_decl->formatImpl(settings, state, frame); } else if (p.type == ASTAlterQuery::MODIFY_PRIMARY_KEY) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "MODIFY PRIMARY KEY " << (settings.hilite ? hilite_none : ""); settings.ostr << "("; p.primary_key->formatImpl(settings, state, frame); settings.ostr << ")"; } else if (p.type == ASTAlterQuery::DROP_PARTITION) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << (p.detach ? "DETACH" : "DROP") << " PARTITION " << (settings.hilite ? hilite_none : ""); p.partition->formatImpl(settings, state, frame); } else if (p.type == ASTAlterQuery::ATTACH_PARTITION) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "ATTACH " << (p.part ? "PART " : "PARTITION ") << (settings.hilite ? hilite_none : ""); p.partition->formatImpl(settings, state, frame); } else if (p.type == ASTAlterQuery::FETCH_PARTITION) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "FETCH " << "PARTITION " << (settings.hilite ? hilite_none : ""); p.partition->formatImpl(settings, state, frame); settings.ostr << (settings.hilite ? hilite_keyword : "") << " FROM " << (settings.hilite ? hilite_none : "") << std::quoted(p.from, '\''); } else if (p.type == ASTAlterQuery::FREEZE_PARTITION) { settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << "FREEZE PARTITION " << (settings.hilite ? hilite_none : ""); p.partition->formatImpl(settings, state, frame); if (!p.with_name.empty()) { settings.ostr << " " << (settings.hilite ? hilite_keyword : "") << "WITH NAME" << (settings.hilite ? hilite_none : "") << " " << std::quoted(p.with_name, '\''); } } else throw Exception("Unexpected type of ALTER", ErrorCodes::UNEXPECTED_AST_STRUCTURE); std::string comma = (i < (parameters.size() -1) ) ? "," : ""; settings.ostr << (settings.hilite ? hilite_keyword : "") << indent_str << comma << (settings.hilite ? hilite_none : ""); settings.ostr << settings.nl_or_ws; } }