parInitialDTest.cpp 3.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
 * This program is free software: you can use, redistribute, and/or modify
 * it under the terms of the GNU Affero General Public License, version 3
 * or later ("AGPL"), as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

#include "parTestUtil.h"

using namespace std;

namespace ParserTest {

X
Xiaoyu Wang 已提交
22
class ParserInitialDTest : public ParserDdlTest {};
23

X
Xiaoyu Wang 已提交
24
// DELETE FROM table_name [WHERE condition]
X
Xiaoyu Wang 已提交
25 26 27 28 29 30
TEST_F(ParserInitialDTest, delete) {
  useDb("root", "test");

  run("DELETE FROM t1");

  run("DELETE FROM t1 WHERE ts > now - 2d and ts < now - 1d");
X
Xiaoyu Wang 已提交
31 32 33 34

  run("DELETE FROM st1");

  run("DELETE FROM st1 WHERE ts > now - 2d and ts < now - 1d AND tag1 = 10");
X
Xiaoyu Wang 已提交
35 36 37 38 39 40 41 42
}

TEST_F(ParserInitialDTest, deleteSemanticCheck) {
  useDb("root", "test");

  run("DELETE FROM t1 WHERE c1 > 10", TSDB_CODE_PAR_INVALID_DELETE_WHERE, PARSER_STAGE_TRANSLATE);
}

X
Xiaoyu Wang 已提交
43 44 45 46 47 48 49 50 51
// DESC table_name
TEST_F(ParserInitialDTest, describe) {
  useDb("root", "test");

  run("DESC t1");

  run("DESCRIBE st1");
}

52
// todo describe
X
Xiaoyu Wang 已提交
53
// todo DROP account
54 55 56 57

TEST_F(ParserInitialDTest, dropBnode) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
58 59 60
  run("DROP BNODE ON DNODE 1");
}

61
// DROP CONSUMER GROUP [ IF EXISTS ] cgroup_name ON topic_name
X
Xiaoyu Wang 已提交
62
TEST_F(ParserInitialDTest, dropConsumerGroup) {
X
Xiaoyu Wang 已提交
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
  useDb("root", "test");

  SMDropCgroupReq expect = {0};

  auto setDropCgroupReqFunc = [&](const char* pTopicName, const char* pCGroupName, int8_t igNotExists = 0) {
    memset(&expect, 0, sizeof(SMDropCgroupReq));
    snprintf(expect.topic, sizeof(expect.topic), "0.%s", pTopicName);
    strcpy(expect.cgroup, pCGroupName);
    expect.igNotExists = igNotExists;
  };

  setCheckDdlFunc([&](const SQuery* pQuery, ParserStage stage) {
    ASSERT_EQ(nodeType(pQuery->pRoot), QUERY_NODE_DROP_CGROUP_STMT);
    SMDropCgroupReq req = {0};
    ASSERT_TRUE(TSDB_CODE_SUCCESS == tDeserializeSMDropCgroupReq(pQuery->pCmdMsg->pMsg, pQuery->pCmdMsg->msgLen, &req));

    ASSERT_EQ(std::string(req.topic), std::string(expect.topic));
    ASSERT_EQ(std::string(req.cgroup), std::string(expect.cgroup));
    ASSERT_EQ(req.igNotExists, expect.igNotExists);
  });

  setDropCgroupReqFunc("tp1", "cg1");
85
  run("DROP CONSUMER GROUP cg1 ON tp1");
X
Xiaoyu Wang 已提交
86 87

  setDropCgroupReqFunc("tp1", "cg1", 1);
88
  run("DROP CONSUMER GROUP IF EXISTS cg1 ON tp1");
89 90
}

X
Xiaoyu Wang 已提交
91 92 93
// todo DROP database
// todo DROP dnode
// todo DROP function
94 95 96 97

TEST_F(ParserInitialDTest, dropIndex) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
98
  run("DROP index index1 on t1");
99 100 101 102 103
}

TEST_F(ParserInitialDTest, dropMnode) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
104
  run("DROP mnode on dnode 1");
105 106 107 108 109
}

TEST_F(ParserInitialDTest, dropQnode) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
110
  run("DROP qnode on dnode 1");
111 112 113 114 115
}

TEST_F(ParserInitialDTest, dropSnode) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
116
  run("DROP snode on dnode 1");
117 118
}

X
Xiaoyu Wang 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131
TEST_F(ParserInitialDTest, dropSTable) {
  useDb("root", "test");

  run("DROP STABLE st1");
}

// todo DROP stream

TEST_F(ParserInitialDTest, dropTable) {
  useDb("root", "test");

  run("DROP TABLE t1");
}
132 133 134 135

TEST_F(ParserInitialDTest, dropTopic) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
136
  run("DROP topic tp1");
137

X
Xiaoyu Wang 已提交
138
  run("DROP topic if exists tp1");
139 140 141
}

TEST_F(ParserInitialDTest, dropUser) {
142
  login("root");
143 144
  useDb("root", "test");

X
Xiaoyu Wang 已提交
145
  run("DROP user wxy");
146 147 148
}

}  // namespace ParserTest