OmniSciDB
085a039ca4
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
sqldefs.h
Go to the documentation of this file.
1
/*
2
* Copyright 2017 MapD Technologies, Inc.
3
*
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
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
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.
15
*/
16
24
#ifndef SQLDEFS_H
25
#define SQLDEFS_H
26
27
// must not change the order without keeping the array in OperExpr::to_string
28
// in sync.
29
enum
SQLOps
{
30
kEQ
= 0,
31
kBW_EQ
,
32
kNE
,
33
kLT
,
34
kGT
,
35
kLE
,
36
kGE
,
37
kAND
,
38
kOR
,
39
kNOT
,
40
kMINUS
,
41
kPLUS
,
42
kMULTIPLY
,
43
kDIVIDE
,
44
kMODULO
,
45
kUMINUS
,
46
kISNULL
,
47
kISNOTNULL
,
48
kEXISTS
,
49
kCAST
,
50
kARRAY_AT
,
51
kUNNEST
,
52
kFUNCTION
,
53
kIN
,
54
kOVERLAPS
,
55
kENCODE_TEXT
56
};
57
58
#define IS_COMPARISON(X) \
59
((X) == kEQ || (X) == kBW_EQ || (X) == kOVERLAPS || (X) == kNE || (X) == kLT || \
60
(X) == kGT || (X) == kLE || (X) == kGE)
61
#define IS_LOGIC(X) ((X) == kAND || (X) == kOR)
62
#define IS_ARITHMETIC(X) \
63
((X) == kMINUS || (X) == kPLUS || (X) == kMULTIPLY || (X) == kDIVIDE || (X) == kMODULO)
64
#define COMMUTE_COMPARISON(X) \
65
((X) == kLT ? kGT : (X) == kLE ? kGE : (X) == kGT ? kLT : (X) == kGE ? kLE : (X))
66
#define IS_UNARY(X) \
67
((X) == kNOT || (X) == kUMINUS || (X) == kISNULL || (X) == kEXISTS || (X) == kCAST || \
68
(X) == kENCODE_TEXT)
69
#define IS_EQUIVALENCE(X) ((X) == kEQ || (X) == kBW_EQ || (X) == kOVERLAPS)
70
71
enum
SQLQualifier
{
kONE
,
kANY
,
kALL
};
72
73
enum
SQLAgg
{
74
kAVG
,
75
kMIN
,
76
kMAX
,
77
kSUM
,
78
kCOUNT
,
79
kAPPROX_COUNT_DISTINCT
,
80
kAPPROX_QUANTILE
,
81
kSAMPLE
,
82
kSINGLE_VALUE
83
};
84
85
enum class
SqlStringOpKind
{
86
/* Unary */
87
LOWER
= 1,
88
UPPER
,
89
INITCAP
,
90
REVERSE
,
91
/* Binary */
92
REPEAT
,
93
CONCAT
,
94
RCONCAT
,
95
/* Ternary */
96
LPAD
,
97
RPAD
,
98
TRIM
,
99
LTRIM
,
100
RTRIM
,
101
SUBSTRING
,
102
OVERLAY
,
103
REPLACE
,
104
SPLIT_PART
,
105
/* 6 args */
106
REGEXP_REPLACE
,
107
REGEXP_SUBSTR
,
108
INVALID
109
};
110
111
enum class
SqlWindowFunctionKind
{
112
ROW_NUMBER
,
113
RANK
,
114
DENSE_RANK
,
115
PERCENT_RANK
,
116
CUME_DIST
,
117
NTILE
,
118
LAG
,
119
LEAD
,
120
FIRST_VALUE
,
121
LAST_VALUE
,
122
AVG
,
123
MIN
,
124
MAX
,
125
SUM
,
126
COUNT
,
127
SUM_INTERNAL
// For deserialization from Calcite only. Gets rewritten to a regular SUM.
128
};
129
130
enum
SQLStmtType
{
kSELECT
,
kUPDATE
,
kINSERT
,
kDELETE
,
kCREATE_TABLE
};
131
132
enum
StorageOption
{
kDISK
= 0,
kGPU
= 1,
kCPU
= 2 };
133
134
enum
ViewRefreshOption
{
kMANUAL
= 0,
kAUTO
= 1,
kIMMEDIATE
= 2 };
135
136
enum class
JoinType
{
INNER
,
LEFT
,
SEMI
,
ANTI
,
INVALID
};
137
138
#if !(defined(__CUDACC__) || defined(NO_BOOST))
139
140
#include <string>
141
#include "
Logger/Logger.h
"
142
143
inline
std::string
toString
(
const
JoinType
& join_type) {
144
switch
(join_type) {
145
case
JoinType::INNER
:
146
return
"INNER"
;
147
case
JoinType::LEFT
:
148
return
"LEFT"
;
149
case
JoinType::SEMI
:
150
return
"SEMI"
;
151
case
JoinType::ANTI
:
152
return
"ANTI"
;
153
default
:
154
return
"INVALID"
;
155
}
156
}
157
158
inline
std::string
toString
(
const
SQLQualifier
& qualifier) {
159
switch
(qualifier) {
160
case
kONE
:
161
return
"ONE"
;
162
case
kANY
:
163
return
"ANY"
;
164
case
kALL
:
165
return
"ALL"
;
166
}
167
LOG
(
FATAL
) <<
"Invalid SQLQualifier: "
<< qualifier;
168
return
""
;
169
}
170
171
inline
std::string
toString
(
const
SQLAgg
& kind) {
172
switch
(kind) {
173
case
kAVG
:
174
return
"AVG"
;
175
case
kMIN
:
176
return
"MIN"
;
177
case
kMAX
:
178
return
"MAX"
;
179
case
kSUM
:
180
return
"SUM"
;
181
case
kCOUNT
:
182
return
"COUNT"
;
183
case
kAPPROX_COUNT_DISTINCT
:
184
return
"APPROX_COUNT_DISTINCT"
;
185
case
kAPPROX_QUANTILE
:
186
return
"APPROX_PERCENTILE"
;
187
case
kSAMPLE
:
188
return
"SAMPLE"
;
189
case
kSINGLE_VALUE
:
190
return
"SINGLE_VALUE"
;
191
}
192
LOG
(
FATAL
) <<
"Invalid aggregate kind: "
<< kind;
193
return
""
;
194
}
195
196
inline
std::string
toString
(
const
SQLOps
& op) {
197
switch
(op) {
198
case
kEQ
:
199
return
"EQ"
;
200
case
kBW_EQ
:
201
return
"BW_EQ"
;
202
case
kNE
:
203
return
"NE"
;
204
case
kLT
:
205
return
"LT"
;
206
case
kGT
:
207
return
"GT"
;
208
case
kLE
:
209
return
"LE"
;
210
case
kGE
:
211
return
"GE"
;
212
case
kAND
:
213
return
"AND"
;
214
case
kOR
:
215
return
"OR"
;
216
case
kNOT
:
217
return
"NOT"
;
218
case
kMINUS
:
219
return
"MINUS"
;
220
case
kPLUS
:
221
return
"PLUS"
;
222
case
kMULTIPLY
:
223
return
"MULTIPLY"
;
224
case
kDIVIDE
:
225
return
"DIVIDE"
;
226
case
kMODULO
:
227
return
"MODULO"
;
228
case
kUMINUS
:
229
return
"UMINUS"
;
230
case
kISNULL
:
231
return
"ISNULL"
;
232
case
kISNOTNULL
:
233
return
"ISNOTNULL"
;
234
case
kEXISTS
:
235
return
"EXISTS"
;
236
case
kCAST
:
237
return
"CAST"
;
238
case
kARRAY_AT
:
239
return
"ARRAY_AT"
;
240
case
kUNNEST
:
241
return
"UNNEST"
;
242
case
kFUNCTION
:
243
return
"FUNCTION"
;
244
case
kIN
:
245
return
"IN"
;
246
case
kOVERLAPS
:
247
return
"OVERLAPS"
;
248
case
kENCODE_TEXT
:
249
return
"ENCODE_TEXT"
;
250
}
251
LOG
(
FATAL
) <<
"Invalid operation kind: "
<< op;
252
return
""
;
253
}
254
255
inline
SqlStringOpKind
name_to_string_op_kind
(
const
std::string& func_name) {
256
if
(func_name ==
"LOWER"
) {
257
return
SqlStringOpKind::LOWER
;
258
}
259
if
(func_name ==
"UPPER"
) {
260
return
SqlStringOpKind::UPPER
;
261
}
262
if
(func_name ==
"INITCAP"
) {
263
return
SqlStringOpKind::INITCAP
;
264
}
265
if
(func_name ==
"REVERSE"
) {
266
return
SqlStringOpKind::REVERSE
;
267
}
268
if
(func_name ==
"REPEAT"
) {
269
return
SqlStringOpKind::REPEAT
;
270
}
271
if
(func_name ==
"||"
) {
272
return
SqlStringOpKind::CONCAT
;
273
}
274
if
(func_name ==
"LPAD"
) {
275
return
SqlStringOpKind::LPAD
;
276
}
277
if
(func_name ==
"RPAD"
) {
278
return
SqlStringOpKind::RPAD
;
279
}
280
if
(func_name ==
"TRIM"
) {
281
return
SqlStringOpKind::TRIM
;
282
}
283
if
(func_name ==
"LTRIM"
) {
284
return
SqlStringOpKind::LTRIM
;
285
}
286
if
(func_name ==
"RTRIM"
) {
287
return
SqlStringOpKind::RTRIM
;
288
}
289
if
(func_name ==
"SUBSTRING"
) {
290
return
SqlStringOpKind::SUBSTRING
;
291
}
292
if
(func_name ==
"OVERLAY"
) {
293
return
SqlStringOpKind::OVERLAY
;
294
}
295
if
(func_name ==
"REPLACE"
) {
296
return
SqlStringOpKind::REPLACE
;
297
}
298
if
(func_name ==
"SPLIT_PART"
) {
299
return
SqlStringOpKind::SPLIT_PART
;
300
}
301
if
(func_name ==
"REGEXP_REPLACE"
) {
302
return
SqlStringOpKind::REGEXP_REPLACE
;
303
}
304
if
(func_name ==
"REGEXP_SUBSTR"
) {
305
return
SqlStringOpKind::REGEXP_SUBSTR
;
306
}
307
if
(func_name ==
"REGEXP_MATCH"
) {
308
return
SqlStringOpKind::REGEXP_SUBSTR
;
309
}
310
LOG
(
FATAL
) <<
"Invalid string function "
<< func_name <<
"."
;
311
return
SqlStringOpKind::INVALID
;
312
}
313
314
inline
std::string
toString
(
const
SqlStringOpKind
& kind) {
315
switch
(kind) {
316
case
SqlStringOpKind::LOWER
:
317
return
"LOWER"
;
318
case
SqlStringOpKind::UPPER
:
319
return
"UPPER"
;
320
case
SqlStringOpKind::INITCAP
:
321
return
"INITCAP"
;
322
case
SqlStringOpKind::REVERSE
:
323
return
"REVERSE"
;
324
case
SqlStringOpKind::REPEAT
:
325
return
"REPEAT"
;
326
case
SqlStringOpKind::CONCAT
:
327
case
SqlStringOpKind::RCONCAT
:
328
return
"||"
;
329
case
SqlStringOpKind::LPAD
:
330
return
"LPAD"
;
331
case
SqlStringOpKind::RPAD
:
332
return
"RPAD"
;
333
case
SqlStringOpKind::TRIM
:
334
return
"TRIM"
;
335
case
SqlStringOpKind::LTRIM
:
336
return
"LTRIM"
;
337
case
SqlStringOpKind::RTRIM
:
338
return
"RTRIM"
;
339
case
SqlStringOpKind::SUBSTRING
:
340
return
"SUBSTRING"
;
341
case
SqlStringOpKind::OVERLAY
:
342
return
"OVERLAY"
;
343
case
SqlStringOpKind::REPLACE
:
344
return
"REPLACE"
;
345
case
SqlStringOpKind::SPLIT_PART
:
346
return
"SPLIT_PART"
;
347
case
SqlStringOpKind::REGEXP_REPLACE
:
348
return
"REGEXP_REPLACE"
;
349
case
SqlStringOpKind::REGEXP_SUBSTR
:
350
return
"REGEXP_SUBSTR"
;
351
default
:
352
LOG
(
FATAL
) <<
"Invalid string operation"
;
353
}
354
return
""
;
355
}
356
357
inline
std::string
toString
(
const
SqlWindowFunctionKind
& kind) {
358
switch
(kind) {
359
case
SqlWindowFunctionKind::ROW_NUMBER
:
360
return
"ROW_NUMBER"
;
361
case
SqlWindowFunctionKind::RANK
:
362
return
"RANK"
;
363
case
SqlWindowFunctionKind::DENSE_RANK
:
364
return
"DENSE_RANK"
;
365
case
SqlWindowFunctionKind::PERCENT_RANK
:
366
return
"PERCENT_RANK"
;
367
case
SqlWindowFunctionKind::CUME_DIST
:
368
return
"CUME_DIST"
;
369
case
SqlWindowFunctionKind::NTILE
:
370
return
"NTILE"
;
371
case
SqlWindowFunctionKind::LAG
:
372
return
"LAG"
;
373
case
SqlWindowFunctionKind::LEAD
:
374
return
"LEAD"
;
375
case
SqlWindowFunctionKind::FIRST_VALUE
:
376
return
"FIRST_VALUE"
;
377
case
SqlWindowFunctionKind::LAST_VALUE
:
378
return
"LAST_VALUE"
;
379
case
SqlWindowFunctionKind::AVG
:
380
return
"AVG"
;
381
case
SqlWindowFunctionKind::MIN
:
382
return
"MIN"
;
383
case
SqlWindowFunctionKind::MAX
:
384
return
"MAX"
;
385
case
SqlWindowFunctionKind::SUM
:
386
return
"SUM"
;
387
case
SqlWindowFunctionKind::COUNT
:
388
return
"COUNT"
;
389
case
SqlWindowFunctionKind::SUM_INTERNAL
:
390
return
"SUM_INTERNAL"
;
391
}
392
LOG
(
FATAL
) <<
"Invalid window function kind."
;
393
return
""
;
394
}
395
396
#endif // #if !(defined(__CUDACC__) || defined(NO_BOOST))
397
398
#endif // SQLDEFS_H
SqlWindowFunctionKind::LAST_VALUE
kALL
Definition:
sqldefs.h:71
SqlWindowFunctionKind::DENSE_RANK
SQLAgg
SQLAgg
Definition:
sqldefs.h:73
ViewRefreshOption
ViewRefreshOption
Definition:
sqldefs.h:134
JoinType::ANTI
kUPDATE
Definition:
sqldefs.h:130
name_to_string_op_kind
SqlStringOpKind name_to_string_op_kind(const std::string &func_name)
Definition:
sqldefs.h:255
kCPU
Definition:
sqldefs.h:132
JoinType
JoinType
Definition:
sqldefs.h:136
SqlStringOpKind::SUBSTRING
kEXISTS
Definition:
sqldefs.h:48
kAPPROX_QUANTILE
Definition:
sqldefs.h:80
kSINGLE_VALUE
Definition:
sqldefs.h:82
SqlStringOpKind::REVERSE
SqlWindowFunctionKind::ROW_NUMBER
SQLQualifier
SQLQualifier
Definition:
sqldefs.h:71
SqlStringOpKind::INITCAP
LOG
#define LOG(tag)
Definition:
Logger.h:217
kDIVIDE
Definition:
sqldefs.h:43
JoinType::LEFT
SqlStringOpKind::REPLACE
kSELECT
Definition:
sqldefs.h:130
SQLOps
SQLOps
Definition:
sqldefs.h:29
SqlWindowFunctionKind::RANK
kLE
Definition:
sqldefs.h:35
SqlWindowFunctionKind::AVG
kGE
Definition:
sqldefs.h:36
kOR
Definition:
sqldefs.h:38
logger::FATAL
Definition:
Logger.h:109
kDELETE
Definition:
sqldefs.h:130
kFUNCTION
Definition:
sqldefs.h:52
kOVERLAPS
Definition:
sqldefs.h:54
SqlStringOpKind
SqlStringOpKind
Definition:
sqldefs.h:85
kCAST
Definition:
sqldefs.h:49
kEQ
Definition:
sqldefs.h:30
kPLUS
Definition:
sqldefs.h:41
JoinType::INNER
kISNOTNULL
Definition:
sqldefs.h:47
SqlWindowFunctionKind::MIN
SqlWindowFunctionKind::SUM_INTERNAL
kMIN
Definition:
sqldefs.h:75
kENCODE_TEXT
Definition:
sqldefs.h:55
kMANUAL
Definition:
sqldefs.h:134
SqlStringOpKind::LTRIM
SqlWindowFunctionKind::PERCENT_RANK
kIMMEDIATE
Definition:
sqldefs.h:134
SqlWindowFunctionKind::SUM
SqlStringOpKind::REPEAT
Logger.h
SqlStringOpKind::RCONCAT
SqlWindowFunctionKind::LEAD
SqlWindowFunctionKind::CUME_DIST
kAND
Definition:
sqldefs.h:37
kSUM
Definition:
sqldefs.h:77
kANY
Definition:
sqldefs.h:71
SqlWindowFunctionKind::FIRST_VALUE
SqlStringOpKind::INVALID
SqlWindowFunctionKind::COUNT
toString
std::string toString(const Executor::ExtModuleKinds &kind)
Definition:
Execute.h:1453
StorageOption
StorageOption
Definition:
sqldefs.h:132
SqlStringOpKind::LPAD
SqlStringOpKind::LOWER
SQLStmtType
SQLStmtType
Definition:
sqldefs.h:130
SqlStringOpKind::REGEXP_REPLACE
kGT
Definition:
sqldefs.h:34
SqlStringOpKind::SPLIT_PART
kCREATE_TABLE
Definition:
sqldefs.h:130
SqlStringOpKind::RPAD
kMINUS
Definition:
sqldefs.h:40
SqlStringOpKind::OVERLAY
kONE
Definition:
sqldefs.h:71
kUMINUS
Definition:
sqldefs.h:45
kARRAY_AT
Definition:
sqldefs.h:50
kDISK
Definition:
sqldefs.h:132
kNE
Definition:
sqldefs.h:32
kCOUNT
Definition:
sqldefs.h:78
kSAMPLE
Definition:
sqldefs.h:81
kUNNEST
Definition:
sqldefs.h:51
kMULTIPLY
Definition:
sqldefs.h:42
SqlWindowFunctionKind::MAX
SqlWindowFunctionKind::NTILE
JoinType::SEMI
kAUTO
Definition:
sqldefs.h:134
SqlWindowFunctionKind
SqlWindowFunctionKind
Definition:
sqldefs.h:111
kIN
Definition:
sqldefs.h:53
kISNULL
Definition:
sqldefs.h:46
kBW_EQ
Definition:
sqldefs.h:31
SqlStringOpKind::UPPER
SqlStringOpKind::REGEXP_SUBSTR
kLT
Definition:
sqldefs.h:33
JoinType::INVALID
SqlWindowFunctionKind::LAG
kMAX
Definition:
sqldefs.h:76
SqlStringOpKind::CONCAT
kAPPROX_COUNT_DISTINCT
Definition:
sqldefs.h:79
kAVG
Definition:
sqldefs.h:74
kMODULO
Definition:
sqldefs.h:44
kNOT
Definition:
sqldefs.h:39
SqlStringOpKind::RTRIM
SqlStringOpKind::TRIM
kGPU
Definition:
sqldefs.h:132
kINSERT
Definition:
sqldefs.h:130
Shared
sqldefs.h
Generated on Sat Apr 16 2022 06:28:55 for OmniSciDB by
1.8.5