/* * Copyright (c) 2021, Mahmoud Mandour * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include namespace SQL::AST { ResultOr DescribeTable::execute(ExecutionContext& context) const { auto const& schema_name = m_qualified_table_name->schema_name(); auto const& table_name = m_qualified_table_name->table_name(); auto table_def = TRY(context.database->get_table(schema_name, table_name)); auto describe_table_def = MUST(context.database->get_table("master"sv, "internal_describe_table"sv)); auto descriptor = describe_table_def->to_tuple_descriptor(); ResultSet result { SQLCommand::Describe }; TRY(result.try_ensure_capacity(table_def->columns().size())); for (auto& column : table_def->columns()) { Tuple tuple(descriptor); tuple[0] = column.name(); tuple[1] = SQLType_name(column.type()); result.insert_row(tuple, Tuple {}); } return result; } }