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