Skip to content

Commit 9bd1878

Browse files
committed
Support convert to sql for arithmetic, is null, like, between
Signed-off-by: Kunlin Yu <yukunlin@syriusrobotics.com>
1 parent 0effab2 commit 9bd1878

File tree

2 files changed

+66
-27
lines changed

2 files changed

+66
-27
lines changed

include/cql2cpp/sql_converter.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,45 @@ class SqlConverter {
145145
converters[SpatialPred][S_Within] = [](auto n, auto c) -> std::string {
146146
return "ST_Within(" + c.at(0) + "," + c.at(1) + ")";
147147
};
148+
converters[ArithExpr][PLUS] = [](auto n, auto c) -> std::string {
149+
return c.at(0) + " + " + c.at(1);
150+
};
151+
converters[ArithExpr][MINUS] = [](auto n, auto c) -> std::string {
152+
return c.at(0) + " - " + c.at(1);
153+
};
154+
converters[ArithExpr][MULT] = [](auto n, auto c) -> std::string {
155+
return c.at(0) + " * " + c.at(1);
156+
};
157+
converters[ArithExpr][DIV] = [](auto n, auto c) -> std::string {
158+
return c.at(0) + " / " + c.at(1);
159+
};
160+
converters[ArithExpr][DIVINT] = [](auto n, auto c) -> std::string {
161+
return c.at(0) + " DIV " + c.at(1);
162+
};
163+
converters[ArithExpr][MOD] = [](auto n, auto c) -> std::string {
164+
return c.at(0) + " % " + c.at(1);
165+
};
166+
converters[ArithExpr][POWER] = [](auto n, auto c) -> std::string {
167+
return c.at(0) + " ^ " + c.at(1);
168+
};
169+
converters[IsLikePred][Like] = [](auto n, auto c) -> std::string {
170+
return c.at(0) + " LIKE " + c.at(1);
171+
};
172+
converters[IsLikePred][NotLike] = [](auto n, auto c) -> std::string {
173+
return c.at(0) + " LIKE " + c.at(1);
174+
};
175+
converters[IsNullPred][IsNull] = [](auto n, auto c) -> std::string {
176+
return c.at(0) + " IS NULL";
177+
};
178+
converters[IsNullPred][IsNotNull] = [](auto n, auto c) -> std::string {
179+
return c.at(0) + " IS NOT NULL";
180+
};
181+
converters[IsBetweenPred][Between] = [](auto n, auto c) -> std::string {
182+
return c.at(0) + " BETWEEN " + c.at(1) + " AND " + c.at(2);
183+
};
184+
converters[IsBetweenPred][NotBetween] = [](auto n, auto c) -> std::string {
185+
return c.at(0) + " NOT BETWEEN " + c.at(1) + " AND " + c.at(2);
186+
};
148187
}
149188

150189
void Register(

test/test_sql.cc

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -139,38 +139,38 @@ class SqlTest : public testing::Test {
139139
// TEST_F(SqlTest, clause6_01) { EXPECT_TRUE(Parse(case_name_)); }
140140
TEST_F(SqlTest, clause6_02a) { EXPECT_TRUE(Parse(case_name_)); }
141141
// TEST_F(SqlTest, clause6_02b) { EXPECT_TRUE(Parse(case_name_)); }
142-
// TEST_F(SqlTest, clause6_02c) { EXPECT_TRUE(Parse(case_name_)); }
143-
// TEST_F(SqlTest, clause6_03) { EXPECT_TRUE(Parse(case_name_)); }
144-
// TEST_F(SqlTest, clause7_01) { EXPECT_TRUE(Parse(case_name_)); }
145-
// TEST_F(SqlTest, clause7_02) { EXPECT_TRUE(Parse(case_name_)); }
142+
TEST_F(SqlTest, clause6_02c) { EXPECT_TRUE(Parse(case_name_)); }
143+
TEST_F(SqlTest, clause6_03) { EXPECT_TRUE(Parse(case_name_)); }
144+
TEST_F(SqlTest, clause7_01) { EXPECT_TRUE(Parse(case_name_)); }
145+
TEST_F(SqlTest, clause7_02) { EXPECT_TRUE(Parse(case_name_)); }
146146
TEST_F(SqlTest, clause7_03a) { EXPECT_TRUE(Parse(case_name_)); }
147147
TEST_F(SqlTest, clause7_03b) { EXPECT_TRUE(Parse(case_name_)); }
148148
TEST_F(SqlTest, clause7_07) { EXPECT_TRUE(Parse(case_name_)); }
149149
TEST_F(SqlTest, clause7_10) { EXPECT_TRUE(Parse(case_name_)); }
150150
// TEST_F(SqlTest, clause7_15) { EXPECT_TRUE(Parse(case_name_)); }
151151
TEST_F(SqlTest, clause7_16) { EXPECT_TRUE(Parse(case_name_)); }
152-
// TEST_F(SqlTest, clause7_19) { EXPECT_TRUE(Parse(case_name_)); }
152+
TEST_F(SqlTest, clause7_19) { EXPECT_TRUE(Parse(case_name_)); }
153153
TEST_F(SqlTest, example01) { EXPECT_TRUE(Parse(case_name_)); }
154-
// TEST_F(SqlTest, example02) { EXPECT_TRUE(Parse(case_name_)); }
154+
TEST_F(SqlTest, example02) { EXPECT_TRUE(Parse(case_name_)); }
155155
TEST_F(SqlTest, example03) { EXPECT_TRUE(Parse(case_name_)); }
156156
TEST_F(SqlTest, example04) { EXPECT_TRUE(Parse(case_name_)); }
157157
TEST_F(SqlTest, example05a) { EXPECT_TRUE(Parse(case_name_)); }
158158
TEST_F(SqlTest, example05b) { EXPECT_TRUE(Parse(case_name_)); }
159-
// TEST_F(SqlTest, example06a) { EXPECT_TRUE(Parse(case_name_)); }
159+
TEST_F(SqlTest, example06a) { EXPECT_TRUE(Parse(case_name_)); }
160160
TEST_F(SqlTest, example06b) { EXPECT_TRUE(Parse(case_name_)); }
161-
// TEST_F(SqlTest, example07) { EXPECT_TRUE(Parse(case_name_)); }
161+
TEST_F(SqlTest, example07) { EXPECT_TRUE(Parse(case_name_)); }
162162
TEST_F(SqlTest, example08) { EXPECT_TRUE(Parse(case_name_)); }
163163
TEST_F(SqlTest, example09) { EXPECT_TRUE(Parse(case_name_)); }
164164
TEST_F(SqlTest, example10) { EXPECT_TRUE(Parse(case_name_)); }
165-
// TEST_F(SqlTest, example11) { EXPECT_TRUE(Parse(case_name_)); }
166-
// TEST_F(SqlTest, example12) { EXPECT_TRUE(Parse(case_name_)); }
167-
// TEST_F(SqlTest, example13) { EXPECT_TRUE(Parse(case_name_)); }
165+
TEST_F(SqlTest, example11) { EXPECT_TRUE(Parse(case_name_)); }
166+
TEST_F(SqlTest, example12) { EXPECT_TRUE(Parse(case_name_)); }
167+
TEST_F(SqlTest, example13) { EXPECT_TRUE(Parse(case_name_)); }
168168
TEST_F(SqlTest, example14) { EXPECT_TRUE(Parse(case_name_)); }
169169
TEST_F(SqlTest, example15) { EXPECT_TRUE(Parse(case_name_)); }
170-
// TEST_F(SqlTest, example16) { EXPECT_TRUE(Parse(case_name_)); }
170+
TEST_F(SqlTest, example16) { EXPECT_TRUE(Parse(case_name_)); }
171171
TEST_F(SqlTest, example17) { EXPECT_TRUE(Parse(case_name_)); }
172172
// TEST_F(SqlTest, example18) { EXPECT_TRUE(Parse(case_name_)); }
173-
// TEST_F(SqlTest, example19) { EXPECT_TRUE(Parse(case_name_)); }
173+
TEST_F(SqlTest, example19) { EXPECT_TRUE(Parse(case_name_)); }
174174
// TEST_F(SqlTest, example23) { EXPECT_TRUE(Parse(case_name_)); }
175175
TEST_F(SqlTest, example24) { EXPECT_TRUE(Parse(case_name_)); }
176176
// TEST_F(SqlTest, example25) { EXPECT_TRUE(Parse(case_name_)); }
@@ -181,22 +181,22 @@ TEST_F(SqlTest, example31) { EXPECT_TRUE(Parse(case_name_)); }
181181
TEST_F(SqlTest, example32) { EXPECT_TRUE(Parse(case_name_)); }
182182
TEST_F(SqlTest, example33) { EXPECT_TRUE(Parse(case_name_)); }
183183
TEST_F(SqlTest, example34) { EXPECT_TRUE(Parse(case_name_)); }
184-
// TEST_F(SqlTest, example35) { EXPECT_TRUE(Parse(case_name_)); }
184+
TEST_F(SqlTest, example35) { EXPECT_TRUE(Parse(case_name_)); }
185185
// TEST_F(SqlTest, example36) { EXPECT_TRUE(Parse(case_name_)); }
186-
// TEST_F(SqlTest, example36_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
187-
// TEST_F(SqlTest, example37) { EXPECT_TRUE(Parse(case_name_)); }
186+
TEST_F(SqlTest, example36_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
187+
TEST_F(SqlTest, example37) { EXPECT_TRUE(Parse(case_name_)); }
188188
// TEST_F(SqlTest, example38) { EXPECT_TRUE(Parse(case_name_)); }
189-
// TEST_F(SqlTest, example38_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
189+
TEST_F(SqlTest, example38_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
190190
TEST_F(SqlTest, example39) { EXPECT_TRUE(Parse(case_name_)); }
191191
// TEST_F(SqlTest, example40) { EXPECT_TRUE(Parse(case_name_)); }
192192
TEST_F(SqlTest, example40_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
193-
// TEST_F(SqlTest, example41) { EXPECT_TRUE(Parse(case_name_)); }
193+
TEST_F(SqlTest, example41) { EXPECT_TRUE(Parse(case_name_)); }
194194
// TEST_F(SqlTest, example42) { EXPECT_TRUE(Parse(case_name_)); }
195-
// TEST_F(SqlTest, example42_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
195+
TEST_F(SqlTest, example42_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
196196
// TEST_F(SqlTest, example43) { EXPECT_TRUE(Parse(case_name_)); }
197-
// TEST_F(SqlTest, example43_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
198-
// TEST_F(SqlTest, example44) { EXPECT_TRUE(Parse(case_name_)); }
199-
// TEST_F(SqlTest, example44_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
197+
TEST_F(SqlTest, example43_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
198+
TEST_F(SqlTest, example44) { EXPECT_TRUE(Parse(case_name_)); }
199+
TEST_F(SqlTest, example44_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
200200
TEST_F(SqlTest, example46) { EXPECT_TRUE(Parse(case_name_)); }
201201
TEST_F(SqlTest, example46_alt01) { EXPECT_TRUE(Parse(hyphen(case_name_))); }
202202
TEST_F(SqlTest, example47) { EXPECT_TRUE(Parse(case_name_)); }
@@ -208,12 +208,12 @@ TEST_F(SqlTest, example52) { EXPECT_TRUE(Parse(case_name_)); }
208208
// TEST_F(SqlTest, example68) { EXPECT_TRUE(Parse(case_name_)); }
209209
// TEST_F(SqlTest, example69) { EXPECT_TRUE(Parse(case_name_)); }
210210
// TEST_F(SqlTest, example71) { EXPECT_TRUE(Parse(case_name_)); }
211-
// TEST_F(SqlTest, example72) { EXPECT_TRUE(Parse(case_name_)); }
212-
// TEST_F(SqlTest, example73) { EXPECT_TRUE(Parse(case_name_)); }
213-
// TEST_F(SqlTest, example74) { EXPECT_TRUE(Parse(case_name_)); }
214-
// TEST_F(SqlTest, example75) { EXPECT_TRUE(Parse(case_name_)); }
211+
TEST_F(SqlTest, example72) { EXPECT_TRUE(Parse(case_name_)); }
212+
TEST_F(SqlTest, example73) { EXPECT_TRUE(Parse(case_name_)); }
213+
TEST_F(SqlTest, example74) { EXPECT_TRUE(Parse(case_name_)); }
214+
TEST_F(SqlTest, example75) { EXPECT_TRUE(Parse(case_name_)); }
215215
// TEST_F(SqlTest, example76) { EXPECT_TRUE(Parse(case_name_)); }
216-
// TEST_F(SqlTest, example77) { EXPECT_TRUE(Parse(case_name_)); }
216+
TEST_F(SqlTest, example77) { EXPECT_TRUE(Parse(case_name_)); }
217217
// TEST_F(SqlTest, example78) { EXPECT_TRUE(Parse(case_name_)); }
218218
// TEST_F(SqlTest, example79) { EXPECT_TRUE(Parse(case_name_)); }
219219
// TEST_F(SqlTest, example80) { EXPECT_TRUE(Parse(case_name_)); }

0 commit comments

Comments
 (0)