OmniSciDB  c1a53651b2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sqldefs.h File Reference

Common Enum definitions for SQL processing. More...

#include <sstream>
#include <string>
#include "Logger/Logger.h"
+ Include dependency graph for sqldefs.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define IS_COMPARISON(X)
 
#define IS_LOGIC(X)   ((X) == kAND || (X) == kOR)
 
#define IS_ARITHMETIC(X)   ((X) == kMINUS || (X) == kPLUS || (X) == kMULTIPLY || (X) == kDIVIDE || (X) == kMODULO)
 
#define COMMUTE_COMPARISON(X)   ((X) == kLT ? kGT : (X) == kLE ? kGE : (X) == kGT ? kLT : (X) == kGE ? kLE : (X))
 
#define IS_UNARY(X)
 
#define IS_EQUIVALENCE(X)   ((X) == kEQ || (X) == kBW_EQ || (X) == kOVERLAPS)
 

Enumerations

enum  SQLOps {
  kEQ = 0, kBW_EQ, kNE, kLT,
  kGT, kLE, kGE, kAND,
  kOR, kNOT, kMINUS, kPLUS,
  kMULTIPLY, kDIVIDE, kMODULO, kUMINUS,
  kISNULL, kISNOTNULL, kEXISTS, kCAST,
  kARRAY_AT, kUNNEST, kFUNCTION, kIN,
  kOVERLAPS, kENCODE_TEXT, kINVALID_OP
}
 
enum  SQLQualifier { kONE, kANY, kALL }
 
enum  SQLAgg {
  kAVG, kMIN, kMAX, kSUM,
  kCOUNT, kAPPROX_COUNT_DISTINCT, kAPPROX_QUANTILE, kSAMPLE,
  kSINGLE_VALUE, kMODE, kCOUNT_IF, kSUM_IF,
  kINVALID_AGG
}
 
enum  SqlStringOpKind {
  SqlStringOpKind::LOWER = 1, SqlStringOpKind::UPPER, SqlStringOpKind::INITCAP, SqlStringOpKind::REVERSE,
  SqlStringOpKind::REPEAT, SqlStringOpKind::CONCAT, SqlStringOpKind::RCONCAT, SqlStringOpKind::LPAD,
  SqlStringOpKind::RPAD, SqlStringOpKind::TRIM, SqlStringOpKind::LTRIM, SqlStringOpKind::RTRIM,
  SqlStringOpKind::SUBSTRING, SqlStringOpKind::OVERLAY, SqlStringOpKind::REPLACE, SqlStringOpKind::SPLIT_PART,
  SqlStringOpKind::REGEXP_REPLACE, SqlStringOpKind::REGEXP_SUBSTR, SqlStringOpKind::JSON_VALUE, SqlStringOpKind::BASE64_ENCODE,
  SqlStringOpKind::BASE64_DECODE, SqlStringOpKind::TRY_STRING_CAST, SqlStringOpKind::POSITION, SqlStringOpKind::INVALID
}
 
enum  SqlWindowFunctionKind {
  SqlWindowFunctionKind::MIN = 1, SqlWindowFunctionKind::MAX, SqlWindowFunctionKind::AVG, SqlWindowFunctionKind::SUM,
  SqlWindowFunctionKind::COUNT, SqlWindowFunctionKind::ROW_NUMBER, SqlWindowFunctionKind::RANK, SqlWindowFunctionKind::DENSE_RANK,
  SqlWindowFunctionKind::PERCENT_RANK, SqlWindowFunctionKind::CUME_DIST, SqlWindowFunctionKind::NTILE, SqlWindowFunctionKind::LAG,
  SqlWindowFunctionKind::LAG_IN_FRAME, SqlWindowFunctionKind::LEAD, SqlWindowFunctionKind::LEAD_IN_FRAME, SqlWindowFunctionKind::FIRST_VALUE,
  SqlWindowFunctionKind::LAST_VALUE, SqlWindowFunctionKind::NTH_VALUE, SqlWindowFunctionKind::NTH_VALUE_IN_FRAME, SqlWindowFunctionKind::COUNT_IF,
  SqlWindowFunctionKind::SUM_IF, SqlWindowFunctionKind::SUM_INTERNAL, SqlWindowFunctionKind::INVALID
}
 
enum  SqlWindowFrameBoundType {
  SqlWindowFrameBoundType::UNBOUNDED_PRECEDING = 1, SqlWindowFrameBoundType::EXPR_PRECEDING, SqlWindowFrameBoundType::CURRENT_ROW, SqlWindowFrameBoundType::EXPR_FOLLOWING,
  SqlWindowFrameBoundType::UNBOUNDED_FOLLOWING, SqlWindowFrameBoundType::UNKNOWN
}
 
enum  SQLStmtType {
  kSELECT, kUPDATE, kINSERT, kDELETE,
  kCREATE_TABLE
}
 
enum  StorageOption { kDISK = 0, kGPU = 1, kCPU = 2 }
 
enum  ViewRefreshOption { kMANUAL = 0, kAUTO = 1, kIMMEDIATE = 2 }
 
enum  JoinType {
  JoinType::INNER, JoinType::LEFT, JoinType::SEMI, JoinType::ANTI,
  JoinType::WINDOW_FUNCTION, JoinType::WINDOW_FUNCTION_FRAMING, JoinType::INVALID
}
 

Functions

std::string toString (const JoinType &join_type)
 
std::string toString (const SQLQualifier &qualifier)
 
std::string toString (const SQLAgg &kind)
 
SQLAgg get_non_conditional_agg_type (SQLAgg const agg_type)
 
std::string toString (const SQLOps &op)
 
std::ostream & operator<< (std::ostream &os, const SqlStringOpKind kind)
 
SqlStringOpKind name_to_string_op_kind (const std::string &func_name)
 
bool string_op_returns_string (const SqlStringOpKind kind)
 
std::string toString (const SqlWindowFunctionKind &kind)
 
std::string toString (const SqlWindowFrameBoundType &kind)
 

Detailed Description

Common Enum definitions for SQL processing.

Definition in file sqldefs.h.

Macro Definition Documentation

#define COMMUTE_COMPARISON (   X)    ((X) == kLT ? kGT : (X) == kLE ? kGE : (X) == kGT ? kLT : (X) == kGE ? kLE : (X))

Definition at line 64 of file sqldefs.h.

Referenced by Analyzer::BinOper::normalize_simple_predicate().

#define IS_ARITHMETIC (   X)    ((X) == kMINUS || (X) == kPLUS || (X) == kMULTIPLY || (X) == kDIVIDE || (X) == kMODULO)
#define IS_UNARY (   X)
Value:

Definition at line 66 of file sqldefs.h.

Enumeration Type Documentation

enum JoinType
strong
Enumerator
INNER 
LEFT 
SEMI 
ANTI 
WINDOW_FUNCTION 
WINDOW_FUNCTION_FRAMING 
INVALID 

Definition at line 165 of file sqldefs.h.

enum SQLAgg
Enumerator
kAVG 
kMIN 
kMAX 
kSUM 
kCOUNT 
kAPPROX_COUNT_DISTINCT 
kAPPROX_QUANTILE 
kSAMPLE 
kSINGLE_VALUE 
kMODE 
kCOUNT_IF 
kSUM_IF 
kINVALID_AGG 

Definition at line 73 of file sqldefs.h.

73  {
74  kAVG,
75  kMIN,
76  kMAX,
77  kSUM,
78  kCOUNT,
81  kSAMPLE,
83  kMODE,
84  kCOUNT_IF,
85  kSUM_IF,
87 };
Definition: sqldefs.h:75
Definition: sqldefs.h:77
Definition: sqldefs.h:78
Definition: sqldefs.h:76
Definition: sqldefs.h:74
Definition: sqldefs.h:83
enum SQLOps
Enumerator
kEQ 
kBW_EQ 
kNE 
kLT 
kGT 
kLE 
kGE 
kAND 
kOR 
kNOT 
kMINUS 
kPLUS 
kMULTIPLY 
kDIVIDE 
kMODULO 
kUMINUS 
kISNULL 
kISNOTNULL 
kEXISTS 
kCAST 
kARRAY_AT 
kUNNEST 
kFUNCTION 
kIN 
kOVERLAPS 
kENCODE_TEXT 
kINVALID_OP 

Definition at line 28 of file sqldefs.h.

28  {
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,
56 };
Definition: sqldefs.h:34
Definition: sqldefs.h:35
Definition: sqldefs.h:37
Definition: sqldefs.h:48
Definition: sqldefs.h:29
Definition: sqldefs.h:40
Definition: sqldefs.h:36
Definition: sqldefs.h:33
Definition: sqldefs.h:39
Definition: sqldefs.h:31
Definition: sqldefs.h:52
Definition: sqldefs.h:30
Definition: sqldefs.h:32
Definition: sqldefs.h:38
Enumerator
kONE 
kANY 
kALL 

Definition at line 71 of file sqldefs.h.

71 { kONE, kANY, kALL };
Definition: sqldefs.h:71
Definition: sqldefs.h:71
Definition: sqldefs.h:71
Enumerator
kSELECT 
kUPDATE 
kINSERT 
kDELETE 
kCREATE_TABLE 

Definition at line 159 of file sqldefs.h.

enum SqlStringOpKind
strong
Enumerator
LOWER 
UPPER 
INITCAP 
REVERSE 
REPEAT 
CONCAT 
RCONCAT 
LPAD 
RPAD 
TRIM 
LTRIM 
RTRIM 
SUBSTRING 
OVERLAY 
REPLACE 
SPLIT_PART 
REGEXP_REPLACE 
REGEXP_SUBSTR 
JSON_VALUE 
BASE64_ENCODE 
BASE64_DECODE 
TRY_STRING_CAST 
POSITION 
INVALID 

Definition at line 89 of file sqldefs.h.

enum SqlWindowFunctionKind
strong
Enumerator
MIN 
MAX 
AVG 
SUM 
COUNT 
ROW_NUMBER 
RANK 
DENSE_RANK 
PERCENT_RANK 
CUME_DIST 
NTILE 
LAG 
LAG_IN_FRAME 
LEAD 
LEAD_IN_FRAME 
FIRST_VALUE 
LAST_VALUE 
NTH_VALUE 
NTH_VALUE_IN_FRAME 
COUNT_IF 
SUM_IF 
SUM_INTERNAL 
INVALID 

Definition at line 120 of file sqldefs.h.

Enumerator
kDISK 
kGPU 
kCPU 

Definition at line 161 of file sqldefs.h.

161 { kDISK = 0, kGPU = 1, kCPU = 2 };
Definition: sqldefs.h:161
Definition: sqldefs.h:161
Definition: sqldefs.h:161
Enumerator
kMANUAL 
kAUTO 
kIMMEDIATE 

Definition at line 163 of file sqldefs.h.

163 { kMANUAL = 0, kAUTO = 1, kIMMEDIATE = 2 };
Definition: sqldefs.h:163

Function Documentation

SQLAgg get_non_conditional_agg_type ( SQLAgg const  agg_type)
inline

Definition at line 247 of file sqldefs.h.

References kCOUNT, kCOUNT_IF, kSUM, and kSUM_IF.

Referenced by anonymous_namespace{ResultSetReductionJIT.cpp}::emit_aggregate_one_nullable_value().

247  {
248  switch (agg_type) {
249  case kCOUNT_IF:
250  return kCOUNT;
251  case kSUM_IF:
252  return kSUM;
253  default:
254  return agg_type;
255  }
256 }
Definition: sqldefs.h:77
Definition: sqldefs.h:78

+ Here is the caller graph for this function:

SqlStringOpKind name_to_string_op_kind ( const std::string &  func_name)
inline

Definition at line 375 of file sqldefs.h.

References BASE64_DECODE, BASE64_ENCODE, CONCAT, logger::FATAL, INITCAP, INVALID, JSON_VALUE, LOG, LOWER, LPAD, LTRIM, OVERLAY, POSITION, REGEXP_REPLACE, REGEXP_SUBSTR, REPEAT, REPLACE, REVERSE, RPAD, RTRIM, SPLIT_PART, SUBSTRING, TRIM, TRY_STRING_CAST, and UPPER.

Referenced by RelAlgTranslator::translateStringOper().

375  {
376  if (func_name == "LOWER") {
377  return SqlStringOpKind::LOWER;
378  }
379  if (func_name == "UPPER") {
380  return SqlStringOpKind::UPPER;
381  }
382  if (func_name == "INITCAP") {
384  }
385  if (func_name == "REVERSE") {
387  }
388  if (func_name == "REPEAT") {
390  }
391  if (func_name == "||") {
393  }
394  if (func_name == "LPAD") {
395  return SqlStringOpKind::LPAD;
396  }
397  if (func_name == "RPAD") {
398  return SqlStringOpKind::RPAD;
399  }
400  if (func_name == "TRIM") {
401  return SqlStringOpKind::TRIM;
402  }
403  if (func_name == "LTRIM") {
404  return SqlStringOpKind::LTRIM;
405  }
406  if (func_name == "RTRIM") {
407  return SqlStringOpKind::RTRIM;
408  }
409  if (func_name == "SUBSTRING") {
411  }
412  if (func_name == "OVERLAY") {
414  }
415  if (func_name == "REPLACE") {
417  }
418  if (func_name == "SPLIT_PART") {
420  }
421  if (func_name == "REGEXP_REPLACE") {
423  }
424  if (func_name == "REGEXP_SUBSTR") {
426  }
427  if (func_name == "REGEXP_MATCH") {
429  }
430  if (func_name == "JSON_VALUE") {
432  }
433  if (func_name == "BASE64_ENCODE") {
435  }
436  if (func_name == "BASE64_DECODE") {
438  }
439  if (func_name == "TRY_CAST") {
441  }
442  if (func_name == "POSITION") {
444  }
445  LOG(FATAL) << "Invalid string function " << func_name << ".";
447 }
#define LOG(tag)
Definition: Logger.h:285

+ Here is the caller graph for this function:

std::ostream& operator<< ( std::ostream &  os,
const SqlStringOpKind  kind 
)
inline

Definition at line 319 of file sqldefs.h.

References BASE64_DECODE, BASE64_ENCODE, CONCAT, logger::FATAL, INITCAP, INVALID, JSON_VALUE, LOG, LOWER, LPAD, LTRIM, OVERLAY, POSITION, RCONCAT, REGEXP_REPLACE, REGEXP_SUBSTR, REPEAT, REPLACE, REVERSE, RPAD, RTRIM, SPLIT_PART, SUBSTRING, TRIM, TRY_STRING_CAST, and UPPER.

319  {
320  switch (kind) {
322  return os << "LOWER";
324  return os << "UPPER";
326  return os << "INITCAP";
328  return os << "REVERSE";
330  return os << "REPEAT";
332  return os << "CONCAT";
334  return os << "RCONCAT";
336  return os << "LPAD";
338  return os << "RPAD";
340  return os << "TRIM";
342  return os << "LTRIM";
344  return os << "RTRIM";
346  return os << "SUBSTRING";
348  return os << "OVERLAY";
350  return os << "REPLACE";
352  return os << "SPLIT_PART";
354  return os << "REGEXP_REPLACE";
356  return os << "REGEXP_SUBSTR";
358  return os << "JSON_VALUE";
360  return os << "BASE64_ENCODE";
362  return os << "BASE64_DECODE";
364  return os << "TRY_STRING_CAST";
366  return os << "POSITION";
368  return os << "INVALID";
369  }
370  LOG(FATAL) << "Invalid string operation";
371  // Make compiler happy
372  return os << "INVALID";
373 }
#define LOG(tag)
Definition: Logger.h:285
bool string_op_returns_string ( const SqlStringOpKind  kind)
inline

Definition at line 449 of file sqldefs.h.

References POSITION, and TRY_STRING_CAST.

Referenced by anonymous_namespace{RelAlgExecutor.cpp}::TextEncodingCastCountVisitor::visitStringOper().

449  {
450  switch (kind) {
453  return false;
454  default:
455  return true;
456  }
457 }

+ Here is the caller graph for this function:

std::string toString ( const JoinType join_type)
inline

Definition at line 181 of file sqldefs.h.

References ANTI, INNER, LEFT, SEMI, WINDOW_FUNCTION, and WINDOW_FUNCTION_FRAMING.

181  {
182  switch (join_type) {
183  case JoinType::INNER:
184  return "INNER";
185  case JoinType::LEFT:
186  return "LEFT";
187  case JoinType::SEMI:
188  return "SEMI";
189  case JoinType::ANTI:
190  return "ANTI";
192  return "WINDOW_FUNCTION";
194  return "WINDOW_FUNCTION_FRAMING";
195  default:
196  return "INVALID";
197  }
198 }
std::string toString ( const SQLQualifier qualifier)
inline

Definition at line 200 of file sqldefs.h.

References logger::FATAL, kALL, kANY, kONE, and LOG.

200  {
201  switch (qualifier) {
202  case kONE:
203  return "ONE";
204  case kANY:
205  return "ANY";
206  case kALL:
207  return "ALL";
208  }
209  LOG(FATAL) << "Invalid SQLQualifier: " << qualifier;
210  return "";
211 }
Definition: sqldefs.h:71
#define LOG(tag)
Definition: Logger.h:285
Definition: sqldefs.h:71
Definition: sqldefs.h:71
std::string toString ( const SQLAgg kind)
inline

Definition at line 213 of file sqldefs.h.

References kAPPROX_COUNT_DISTINCT, kAPPROX_QUANTILE, kAVG, kCOUNT, kCOUNT_IF, kINVALID_AGG, kMAX, kMIN, kMODE, kSAMPLE, kSINGLE_VALUE, kSUM, kSUM_IF, and UNREACHABLE.

213  {
214  switch (kind) {
215  case kAVG:
216  return "AVG";
217  case kMIN:
218  return "MIN";
219  case kMAX:
220  return "MAX";
221  case kSUM:
222  return "SUM";
223  case kCOUNT:
224  return "COUNT";
226  return "APPROX_COUNT_DISTINCT";
227  case kAPPROX_QUANTILE:
228  return "APPROX_PERCENTILE";
229  case kSAMPLE:
230  return "SAMPLE";
231  case kSINGLE_VALUE:
232  return "SINGLE_VALUE";
233  case kMODE:
234  return "MODE";
235  case kCOUNT_IF:
236  return "COUNT_IF";
237  case kSUM_IF:
238  return "SUM_IF";
239  case kINVALID_AGG:
240  return "INVALID";
241  default:
242  UNREACHABLE() << "Invalid aggregate kind: " << kind;
243  return {};
244  }
245 }
#define UNREACHABLE()
Definition: Logger.h:337
Definition: sqldefs.h:75
Definition: sqldefs.h:77
Definition: sqldefs.h:78
Definition: sqldefs.h:76
Definition: sqldefs.h:74
Definition: sqldefs.h:83
std::string toString ( const SQLOps op)
inline

Definition at line 258 of file sqldefs.h.

References logger::FATAL, kAND, kARRAY_AT, kBW_EQ, kCAST, kDIVIDE, kENCODE_TEXT, kEQ, kEXISTS, kFUNCTION, kGE, kGT, kIN, kINVALID_OP, kISNOTNULL, kISNULL, kLE, kLT, kMINUS, kMODULO, kMULTIPLY, kNE, kNOT, kOR, kOVERLAPS, kPLUS, kUMINUS, kUNNEST, and LOG.

258  {
259  switch (op) {
260  case kEQ:
261  return "EQ";
262  case kBW_EQ:
263  return "BW_EQ";
264  case kNE:
265  return "NE";
266  case kLT:
267  return "LT";
268  case kGT:
269  return "GT";
270  case kLE:
271  return "LE";
272  case kGE:
273  return "GE";
274  case kAND:
275  return "AND";
276  case kOR:
277  return "OR";
278  case kNOT:
279  return "NOT";
280  case kMINUS:
281  return "MINUS";
282  case kPLUS:
283  return "PLUS";
284  case kMULTIPLY:
285  return "MULTIPLY";
286  case kDIVIDE:
287  return "DIVIDE";
288  case kMODULO:
289  return "MODULO";
290  case kUMINUS:
291  return "UMINUS";
292  case kISNULL:
293  return "ISNULL";
294  case kISNOTNULL:
295  return "ISNOTNULL";
296  case kEXISTS:
297  return "EXISTS";
298  case kCAST:
299  return "CAST";
300  case kARRAY_AT:
301  return "ARRAY_AT";
302  case kUNNEST:
303  return "UNNEST";
304  case kFUNCTION:
305  return "FUNCTION";
306  case kIN:
307  return "IN";
308  case kOVERLAPS:
309  return "OVERLAPS";
310  case kENCODE_TEXT:
311  return "ENCODE_TEXT";
312  case kINVALID_OP:
313  return "INVALID_OP";
314  }
315  LOG(FATAL) << "Invalid operation kind: " << op;
316  return "";
317 }
#define LOG(tag)
Definition: Logger.h:285
Definition: sqldefs.h:34
Definition: sqldefs.h:35
Definition: sqldefs.h:37
Definition: sqldefs.h:48
Definition: sqldefs.h:29
Definition: sqldefs.h:40
Definition: sqldefs.h:36
Definition: sqldefs.h:33
Definition: sqldefs.h:39
Definition: sqldefs.h:31
Definition: sqldefs.h:52
Definition: sqldefs.h:30
Definition: sqldefs.h:32
Definition: sqldefs.h:38
std::string toString ( const SqlWindowFunctionKind kind)
inline

Definition at line 459 of file sqldefs.h.

References AVG, COUNT, COUNT_IF, CUME_DIST, DENSE_RANK, logger::FATAL, FIRST_VALUE, INVALID, LAG, LAG_IN_FRAME, LAST_VALUE, LEAD, LEAD_IN_FRAME, LOG, MAX, MIN, NTH_VALUE, NTH_VALUE_IN_FRAME, NTILE, PERCENT_RANK, RANK, ROW_NUMBER, SUM, SUM_IF, and SUM_INTERNAL.

459  {
460  switch (kind) {
462  return "ROW_NUMBER";
464  return "RANK";
466  return "DENSE_RANK";
468  return "PERCENT_RANK";
470  return "CUME_DIST";
472  return "NTILE";
474  return "LAG";
476  return "LEAD";
478  return "FIRST_VALUE";
480  return "LAST_VALUE";
482  return "NTH_VALUE";
484  return "NTH_VALUE_IN_FRAME";
486  return "AVG";
488  return "MIN";
490  return "MAX";
492  return "SUM";
494  return "COUNT";
496  return "SUM_INTERNAL";
498  return "LEAD_IN_FRAME";
500  return "LAG_IN_FRAME";
502  return "COUNT_IF";
504  return "SUM_IF";
506  return "INVALID";
507  }
508  LOG(FATAL) << "Invalid window function kind.";
509  return "";
510 }
#define LOG(tag)
Definition: Logger.h:285
std::string toString ( const SqlWindowFrameBoundType kind)
inline

Definition at line 512 of file sqldefs.h.

References CURRENT_ROW, EXPR_FOLLOWING, EXPR_PRECEDING, logger::FATAL, LOG, UNBOUNDED_FOLLOWING, UNBOUNDED_PRECEDING, and UNKNOWN.

512  {
513  switch (kind) {
515  return "UNBOUNDED_PRECEDING";
517  return "EXPR_PRECEDING";
519  return "CURRENT_ROW";
521  return "EXPR_FOLLOWING";
523  return "UNBOUNDED_FOLLOWING";
525  return "UNKNOWN";
526  }
527  LOG(FATAL) << "Invalid window function bound type.";
528  return "";
529 }
#define LOG(tag)
Definition: Logger.h:285