Skip to content
Snippets Groups Projects
Commit 8d1d2720 authored by yaphet's avatar yaphet Committed by laura-ding
Browse files

Support desc keyword (#423)

* support desc keyword

* support desc keyword

* fix dutor comment

* fix test case
parent 8b14f10d
No related branches found
No related tags found
No related merge requests found
......@@ -79,6 +79,16 @@ TEST_F(SchemaTest, metaCommunication) {
auto code = client->execute(query, resp);
ASSERT_EQ(cpp2::ErrorCode::SUCCEEDED, code);
}
{
cpp2::ExecutionResponse resp;
std::string query = "DESC SPACE default_space";
auto code = client->execute(query, resp);
ASSERT_EQ(cpp2::ErrorCode::SUCCEEDED, code);
std::vector<std::tuple<int, std::string, int, int>> expected{
{1, "default_space", 9, 1},
};
ASSERT_TRUE(verifyResult(resp, expected));
}
{
cpp2::ExecutionResponse resp;
std::string query = "CREATE TAG person(name string, email_addr string, "
......@@ -102,6 +112,20 @@ TEST_F(SchemaTest, metaCommunication) {
};
ASSERT_TRUE(verifyResult(resp, expected));
}
{
cpp2::ExecutionResponse resp;
std::string query = "DESC TAG person";
auto code = client->execute(query, resp);
ASSERT_EQ(cpp2::ErrorCode::SUCCEEDED, code);
std::vector<uniform_tuple_t<std::string, 2>> expected{
{"name", "string"},
{"email_addr", "string"},
{"age", "int"},
{"gender", "string"},
{"row_timestamp", "timestamp"},
};
ASSERT_TRUE(verifyResult(resp, expected));
}
{
cpp2::ExecutionResponse resp;
std::string query = "CREATE TAG account(id int, balance double)";
......@@ -116,16 +140,6 @@ TEST_F(SchemaTest, metaCommunication) {
ASSERT_NE(cpp2::ErrorCode::SUCCEEDED, code);
}
sleep(FLAGS_load_data_interval_secs + 1);
{
cpp2::ExecutionResponse resp;
std::string query = "DESCRIBE TAG account";
client->execute(query, resp);
std::vector<uniform_tuple_t<std::string, 2>> expected{
{"id", "int"},
{"balance", "double"},
};
ASSERT_TRUE(verifyResult(resp, expected));
}
{
cpp2::ExecutionResponse resp;
std::string query = "ALTER TAG account "
......@@ -178,6 +192,16 @@ TEST_F(SchemaTest, metaCommunication) {
};
EXPECT_TRUE(verifyResult(resp, expected));
}
{
cpp2::ExecutionResponse resp;
std::string query = "DESC EDGE buy";
client->execute(query, resp);
std::vector<uniform_tuple_t<std::string, 2>> expected{
{"id", "int"},
{"time", "string"},
};
EXPECT_TRUE(verifyResult(resp, expected));
}
{
cpp2::ExecutionResponse resp;
std::string query = "CREATE EDGE education(id int, time timestamp, school string)";
......
......@@ -82,7 +82,7 @@ class GraphScanner;
%token KW_MATCH KW_INSERT KW_VALUES KW_YIELD KW_RETURN KW_CREATE KW_VERTEX KW_TTL
%token KW_EDGE KW_EDGES KW_UPDATE KW_STEPS KW_OVER KW_UPTO KW_REVERSELY KW_SPACE KW_DELETE KW_FIND
%token KW_INT KW_BIGINT KW_DOUBLE KW_STRING KW_BOOL KW_TAG KW_TAGS KW_UNION KW_INTERSECT KW_MINUS
%token KW_NO KW_OVERWRITE KW_IN KW_DESCRIBE KW_SHOW KW_HOSTS KW_TIMESTAMP KW_ADD
%token KW_NO KW_OVERWRITE KW_IN KW_DESCRIBE KW_DESC KW_SHOW KW_HOSTS KW_TIMESTAMP KW_ADD
%token KW_PARTITION_NUM KW_REPLICA_FACTOR KW_DROP KW_REMOVE KW_SPACES
%token KW_IF KW_NOT KW_EXISTS KW_WITH KW_FIRSTNAME KW_LASTNAME KW_EMAIL KW_PHONE KW_USER KW_USERS
%token KW_PASSWORD KW_CHANGE KW_ROLE KW_GOD KW_ADMIN KW_GUEST KW_GRANT KW_REVOKE KW_ON
......@@ -596,12 +596,18 @@ describe_tag_sentence
: KW_DESCRIBE KW_TAG name_label {
$$ = new DescribeTagSentence($3);
}
| KW_DESC KW_TAG name_label {
$$ = new DescribeTagSentence($3);
}
;
describe_edge_sentence
: KW_DESCRIBE KW_EDGE name_label {
$$ = new DescribeEdgeSentence($3);
}
| KW_DESC KW_EDGE name_label {
$$ = new DescribeEdgeSentence($3);
}
;
drop_tag_sentence
......@@ -938,7 +944,10 @@ create_space_sentence
;
describe_space_sentence
: KW_DESCRIBE KW_SPACE LABEL {
: KW_DESCRIBE KW_SPACE name_label {
$$ = new DescribeSpaceSentence($3);
}
| KW_DESC KW_SPACE name_label {
$$ = new DescribeSpaceSentence($3);
}
;
......
......@@ -35,6 +35,7 @@ YIELD ([Yy][Ii][Ee][Ll][Dd])
RETURN ([Rr][Ee][Tt][Uu][Rr][Nn])
CREATE ([Cc][Rr][Ee][Aa][Tt][Ee])
DESCRIBE ([Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee])
DESC ([Dd][Ee][Ss][Cc])
VERTEX ([Vv][Ee][Rr][Tt][Ee][Xx])
EDGE ([Ee][Dd][Gg][Ee])
EDGES ([Ee][Dd][Gg][Ee][Ss])
......@@ -120,6 +121,7 @@ IP_OCTET ([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
{YIELD} { return TokenType::KW_YIELD; }
{RETURN} { return TokenType::KW_RETURN; }
{DESCRIBE} { return TokenType::KW_DESCRIBE; }
{DESC} { return TokenType::KW_DESC; }
{VERTEX} { return TokenType::KW_VERTEX; }
{EDGE} { return TokenType::KW_EDGE; }
{EDGES} { return TokenType::KW_EDGES; }
......
......@@ -124,6 +124,21 @@ TEST(Parser, AlterTag) {
}
}
TEST(Parser, DescribeTag) {
{
GQLParser parser;
std::string query = "DESCRIBE TAG person";
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
{
GQLParser parser;
std::string query = "DESC TAG person";
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
}
TEST(Parser, CreateEdge) {
{
GQLParser parser;
......@@ -145,6 +160,21 @@ TEST(Parser, AlterEdge) {
}
}
TEST(Parser, DescribeEdge) {
{
GQLParser parser;
std::string query = "DESCRIBE EDGE e1";
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
{
GQLParser parser;
std::string query = "DESC EDGE e1";
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
}
TEST(Parser, Set) {
{
GQLParser parser;
......@@ -429,6 +459,18 @@ TEST(Parser, AdminOperation) {
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
{
GQLParser parser;
std::string query = "DESCRIBE SPACE default_space";
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
{
GQLParser parser;
std::string query = "DESC SPACE default_space";
auto result = parser.parse(query);
ASSERT_TRUE(result.ok()) << result.status();
}
{
GQLParser parser;
std::string query = "drop space default_space";
......
......@@ -238,6 +238,12 @@ TEST(Scanner, Basic) {
CHECK_SEMANTIC_TYPE("DROP", TokenType::KW_DROP),
CHECK_SEMANTIC_TYPE("drop", TokenType::KW_DROP),
CHECK_SEMANTIC_TYPE("Drop", TokenType::KW_DROP),
CHECK_SEMANTIC_TYPE("DESC", TokenType::KW_DESC),
CHECK_SEMANTIC_TYPE("desc", TokenType::KW_DESC),
CHECK_SEMANTIC_TYPE("Desc", TokenType::KW_DESC),
CHECK_SEMANTIC_TYPE("DESCRIBE", TokenType::KW_DESCRIBE),
CHECK_SEMANTIC_TYPE("describe", TokenType::KW_DESCRIBE),
CHECK_SEMANTIC_TYPE("Describe", TokenType::KW_DESCRIBE),
CHECK_SEMANTIC_TYPE("REMOVE", TokenType::KW_REMOVE),
CHECK_SEMANTIC_TYPE("remove", TokenType::KW_REMOVE),
CHECK_SEMANTIC_TYPE("Remove", TokenType::KW_REMOVE),
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment