planBasicTest.cpp 4.6 KB
Newer Older
X
Xiaoyu Wang 已提交
1 2 3
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
X
Xiaoyu Wang 已提交
4
 * This program is free software: you can use, redistribute, AND/or modify
X
Xiaoyu Wang 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 * 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 "planTestUtil.h"
#include "planner.h"

using namespace std;

21
class PlanBasicTest : public PlannerTestBase {};
X
Xiaoyu Wang 已提交
22

X
Xiaoyu Wang 已提交
23
TEST_F(PlanBasicTest, selectClause) {
X
Xiaoyu Wang 已提交
24 25
  useDb("root", "test");

X
Xiaoyu Wang 已提交
26
  run("SELECT * FROM t1");
27 28 29 30

  run("SELECT MAX(c1) c2, c2 FROM t1");

  run("SELECT MAX(c1) c2, c2 FROM st1");
X
Xiaoyu Wang 已提交
31
}
32

X
Xiaoyu Wang 已提交
33
TEST_F(PlanBasicTest, whereClause) {
34 35
  useDb("root", "test");

X
Xiaoyu Wang 已提交
36 37 38
  run("SELECT * FROM t1 WHERE c1 > 10");

  run("SELECT * FROM t1 WHERE ts > TIMESTAMP '2022-04-01 00:00:00' and ts < TIMESTAMP '2022-04-30 23:59:59'");
39 40

  run("SELECT ts, c1 FROM t1 WHERE ts > NOW AND ts IS NULL AND (c1 > 0 OR c3 < 20)");
41 42
}

X
Xiaoyu Wang 已提交
43 44 45
TEST_F(PlanBasicTest, func) {
  useDb("root", "test");

X
Xiaoyu Wang 已提交
46
  run("SELECT DIFF(c1) FROM t1");
X
Xiaoyu Wang 已提交
47 48

  run("SELECT PERCENTILE(c1, 60) FROM t1");
49 50

  run("SELECT TOP(c1, 60) FROM t1");
51 52

  run("SELECT TOP(c1, 60) FROM st1");
X
Xiaoyu Wang 已提交
53
}
54 55 56 57 58 59 60 61

TEST_F(PlanBasicTest, uniqueFunc) {
  useDb("root", "test");

  run("SELECT UNIQUE(c1) FROM t1");

  run("SELECT UNIQUE(c2 + 10) FROM t1 WHERE c1 > 10");

62 63
  run("SELECT UNIQUE(c2 + 10), c2 FROM t1 WHERE c1 > 10");

64
  run("SELECT UNIQUE(c2 + 10), ts, c2 FROM t1 WHERE c1 > 10");
65 66

  run("SELECT UNIQUE(c1) a FROM t1 ORDER BY a");
67 68 69 70

  run("SELECT ts, UNIQUE(c1) FROM st1 PARTITION BY TBNAME");

  run("SELECT TBNAME, UNIQUE(c1) FROM st1 PARTITION BY TBNAME");
71 72 73 74 75 76 77 78
}

TEST_F(PlanBasicTest, tailFunc) {
  useDb("root", "test");

  run("SELECT TAIL(c1, 10) FROM t1");

  run("SELECT TAIL(c2 + 10, 10, 80) FROM t1 WHERE c1 > 10");
79 80 81 82 83 84 85 86

  run("SELECT TAIL(c2 + 10, 10, 80) FROM t1 WHERE c1 > 10 PARTITION BY c1");

  run("SELECT TAIL(c2 + 10, 10, 80) FROM t1 WHERE c1 > 10 ORDER BY 1");

  run("SELECT TAIL(c2 + 10, 10, 80) FROM t1 WHERE c1 > 10 LIMIT 5");

  run("SELECT TAIL(c2 + 10, 10, 80) FROM t1 WHERE c1 > 10 PARTITION BY c1 LIMIT 5");
87 88

  run("SELECT TAIL(c1, 2, 1) FROM st1s1 UNION ALL SELECT c1 FROM st1s2");
89 90

  run("SELECT TAIL(c1, 1) FROM st2 WHERE jtag->'tag1' > 10");
91
}
X
Xiaoyu Wang 已提交
92 93 94 95 96 97

TEST_F(PlanBasicTest, interpFunc) {
  useDb("root", "test");

  run("SELECT INTERP(c1) FROM t1 RANGE('2017-7-14 18:00:00', '2017-7-14 19:00:00') EVERY(5s) FILL(LINEAR)");
}
X
Xiaoyu Wang 已提交
98 99

TEST_F(PlanBasicTest, lastRowFunc) {
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
  useDb("root", "cache_db");

  run("SELECT LAST_ROW(c1) FROM t1");

  run("SELECT LAST_ROW(*) FROM t1");

  run("SELECT LAST_ROW(c1, c2) FROM t1");

  run("SELECT LAST_ROW(c1), c2 FROM t1");

  run("SELECT LAST_ROW(c1) FROM st1");

  run("SELECT LAST_ROW(c1) FROM st1 PARTITION BY TBNAME");

  run("SELECT LAST_ROW(c1), SUM(c3) FROM t1");
}

TEST_F(PlanBasicTest, lastRowFuncWithoutCache) {
X
Xiaoyu Wang 已提交
118 119 120 121 122 123 124 125
  useDb("root", "test");

  run("SELECT LAST_ROW(c1) FROM t1");

  run("SELECT LAST_ROW(*) FROM t1");

  run("SELECT LAST_ROW(c1, c2) FROM t1");

126 127
  run("SELECT LAST_ROW(c1), c2 FROM t1");

X
Xiaoyu Wang 已提交
128
  run("SELECT LAST_ROW(c1) FROM st1");
129

X
Xiaoyu Wang 已提交
130 131
  run("SELECT LAST_ROW(c1) FROM st1 PARTITION BY TBNAME");

132
  run("SELECT LAST_ROW(c1), SUM(c3) FROM t1");
X
Xiaoyu Wang 已提交
133
}
134

135 136 137 138 139 140
TEST_F(PlanBasicTest, timeLineFunc) {
  useDb("root", "test");

  run("SELECT CSUM(c1) FROM t1");

  run("SELECT CSUM(c1) FROM st1");
141 142 143 144

  run("SELECT TWA(c1) FROM t1");

  run("SELECT TWA(c1) FROM st1");
145 146
}

147 148 149 150 151 152 153 154
TEST_F(PlanBasicTest, multiResFunc) {
  useDb("root", "test");

  run("SELECT LAST(*) FROM t1");

  run("SELECT LAST(c1 + 10, c2) FROM st1");
}

155 156 157 158 159 160 161 162 163 164
TEST_F(PlanBasicTest, sampleFunc) {
  useDb("root", "test");

  run("SELECT SAMPLE(c1, 10) FROM t1");

  run("SELECT SAMPLE(c1, 10) FROM st1");

  run("SELECT SAMPLE(c1, 10) FROM st1 PARTITION BY TBNAME");
}

165 166 167 168
TEST_F(PlanBasicTest, pseudoColumn) {
  useDb("root", "test");

  run("SELECT _QSTART, _QEND, _QDURATION FROM t1");
169 170 171 172 173

  run("SELECT _QSTART, _QEND, _QDURATION FROM t1 WHERE ts BETWEEN '2017-7-14 18:00:00' AND '2017-7-14 19:00:00'");

  run("SELECT _QSTART, _QEND, _QDURATION, _WSTART, _WEND, _WDURATION, COUNT(*) FROM t1 "
      "WHERE ts BETWEEN '2017-7-14 18:00:00' AND '2017-7-14 19:00:00' INTERVAL(10S)");
174 175
}

176 177 178 179 180 181 182 183 184 185
TEST_F(PlanBasicTest, indefiniteRowsFunc) {
  useDb("root", "test");

  run("SELECT DIFF(c1) FROM t1");

  run("SELECT DIFF(c1), c2 FROM t1");

  run("SELECT DIFF(c1), DIFF(c3), ts FROM t1");
}

186 187 188 189 190
TEST_F(PlanBasicTest, withoutFrom) {
  useDb("root", "test");

  run("SELECT 1");
}