2 * Copyright (c) 2017-present Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
27 template<typename L, typename R>
28 struct And : public Base {
32 And(L l, R r) : l(l), r(r) {}
33 operator std::string() const
39 template<typename L, typename R>
40 struct Or : public Base {
44 Or(L l, R r) : l(l), r(r) {}
45 operator std::string() const
51 template<typename L, typename R>
52 struct Binary : public Base {
56 Binary(L l, R r) : l(l), r(r)
58 using FieldType = typename L::FieldType;
59 type::assert_compare(FieldType(), r);
64 struct Binary<L, const char*> : public Base {
68 Binary(L l, const char* r) : l(l), r(r)
70 using FieldType = typename L::FieldType;
71 type::assert_compare(FieldType(), std::string());
75 enum class Join : int {
83 inline std::string to_string(Join type)
86 case Join::CROSS: return "CROSS";
87 case Join::LEFT_OUTER: return "LEFT OUTER";
88 case Join::RIGHT_OUTER: return "RIGHT OUTER";
89 case Join::FULL_OUTER: return "FULL OUTER";
96 } // namespace condition