1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:48:11 +00:00

LibSQL: Implement DESCRIBE TABLE tests

This commit is contained in:
Mahmoud Mandour 2021-09-19 21:35:16 +02:00 committed by Andreas Kling
parent f6233913ad
commit 794d79e315
2 changed files with 48 additions and 0 deletions

View file

@ -1,6 +1,7 @@
/*
* Copyright (c) 2021, Tim Flynn <trflynn89@serenityos.org>
* Copyright (c) 2021, Jan de Visser <jan@de-visser.net>
* Copyright (c) 2021, Mahmoud Mandour <ma.mandourr@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -750,3 +751,28 @@ TEST_CASE(nested_subquery_limit)
EXPECT(!parse(String::formatted("SELECT * FROM {};", subquery)).is_error());
EXPECT(parse(String::formatted("SELECT * FROM ({});", subquery)).is_error());
}
TEST_CASE(describe_table)
{
EXPECT(parse("DESCRIBE").is_error());
EXPECT(parse("DESCRIBE;").is_error());
EXPECT(parse("DESCRIBE TABLE;").is_error());
EXPECT(parse("DESCRIBE table_name;").is_error());
auto validate = [](StringView sql, StringView expected_schema, StringView expected_table) {
auto result = parse(sql);
if (result.is_error())
outln("{}: {}", sql, result.error());
EXPECT(!result.is_error());
auto statement = result.release_value();
EXPECT(is<SQL::AST::DescribeTable>(*statement));
const auto& describe_table_statement = static_cast<const SQL::AST::DescribeTable&>(*statement);
EXPECT_EQ(describe_table_statement.qualified_table_name()->schema_name(), expected_schema);
EXPECT_EQ(describe_table_statement.qualified_table_name()->table_name(), expected_table);
};
validate("DESCRIBE TABLE TableName;", {}, "TABLENAME");
validate("DESCRIBE TABLE SchemaName.TableName;", "SCHEMANAME", "TABLENAME");
}