forked from alpacahq/marketstore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
datatypes.go
245 lines (208 loc) · 3.21 KB
/
datatypes.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
package SQLParser
import "github.com/alpacahq/marketstore/utils/io"
//go:generate ./buildVisitorCode.sh visitorcodegenerated.go
//go:generate stringer -type=StatementTypeEnum
//go:generate stringer -type=PrimaryExpressionEnum
type Relation interface {
Materialize() (cs *io.ColumnSeries, err error)
}
type QueryTree struct {
Relation
MSTree
}
/*
Utility Functions
*/
type SortOrderEnum uint8
const (
_ SortOrderEnum = iota
ASCENDING
DESCENDING
)
type NullOrderEnum uint8
const (
_ NullOrderEnum = iota
FIRST
LAST
)
type SetOperatorEnum uint8
const (
_ SetOperatorEnum = iota
INTERSECT
UNION
EXCEPT
)
type SortItem struct {
Order SortOrderEnum
NullOrder NullOrderEnum
}
type BaseTypeEnum uint8
const (
_ BaseTypeEnum = iota
TIME_WITH_TIME_ZONE
TIMESTAMP_WITH_TIME_ZONE
DOUBLE_PRECISION
)
type IntervalEnum uint8
const (
_ IntervalEnum = iota
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
)
type ComparisonQuantifierEnum uint8
const (
_ ComparisonQuantifierEnum = iota
ALL
SOME
ANY
)
func StringToComparisonQuantifierEnum(opstr string) ComparisonQuantifierEnum {
switch opstr {
case "ALL":
return ALL
case "SOME":
return SOME
case "ANY":
return ANY
default:
return 0
}
}
func (cq ComparisonQuantifierEnum) String() string {
switch cq {
case ALL:
return "ALL"
case SOME:
return "SOME"
case ANY:
return "ANY"
default:
return "NONE"
}
}
type SampleTypeEnum uint8
const (
_ SampleTypeEnum = iota
BERNOULLI
SYSTEM
POISSONIZED
)
type JoinTypeEnum uint8
const (
_ JoinTypeEnum = iota
INNER
LEFT_OUTER
RIGHT_OUTER
FULL_OUTER
)
type StatementTypeEnum uint8
const (
_ StatementTypeEnum = iota
QUERY_STMT
CREATE_TABLE_STMT
CREATE_TABLE_AS_SELECT_STMT
DROP_TABLE_STMT
INSERT_INTO_STMT
DELETE_STMT
RENAME_TABLE_STMT
RENAME_COLUMN_STMT
ADD_COLUMN_STMT
CREATE_VIEW_STMT
DROP_VIEW_STMT
CALL_STMT
GRANT_STMT
REVOKE_STMT
EXPLAIN_STMT
SHOW_CREATE_TABLE_STMT
SHOW_CREATE_VIEW_STMT
SHOW_TABLES_STMT
SHOW_SCHEMAS_STMT
SHOW_CATALOGS_STMT
SHOW_COLUMNS_STMT
SHOW_FUNCTIONS_STMT
SHOW_SESSION_STMT
SET_SESSION_STMT
RESET_SESSION_STMT
START_TRANSACTION_STMT
COMMIT_STMT
ROLLBACK_STMT
SHOW_PARTITIONS_STMT
PREPARE_STMT
DEALLOCATE_STMT
EXECUTE_STMT
DESCRIBE_INPUT_STMT
DESCRIBE_OUTPUT_STMT
)
type BinaryOperatorEnum uint8
const (
_ BinaryOperatorEnum = iota
AND_OP
OR_OP
)
type ArithmeticOperatorEnum uint8
const (
_ ArithmeticOperatorEnum = iota
MINUS
PLUS
MULTIPLY
DIVIDE
PERCENT
)
type PrimaryExpressionEnum uint8
const (
_ PrimaryExpressionEnum = iota
NULL_LITERAL
PARAMETER
STRING_LITERAL
BINARY_LITERAL
DECIMAL_LITERAL
INTEGER_LITERAL
BOOLEAN_LITERAL
TYPE_CONSTRUCTOR
INTERVAL_LITERAL
POSITION
ROW_CONSTRUCTOR
FUNCTION_CALL
LAMBDA
SUBQUERY_EXPRESSION
EXISTS
SIMPLE_CASE
SEARCHED_CASE
CAST
ARRAY_CONSTRUCTOR
SUBSCRIPT
COLUMN_REFERENCE
DEREFERENCE
SPECIAL_DATE_TIME_FUNCTION
SUBSTRING
NORMALIZE
EXTRACT
PARENTHESIZED_EXPRESSION
)
type NormalFormEnum uint8
const (
_ NormalFormEnum = iota
NFD
NFC
NFKD
NFKC
)
type FunctionNameEnum uint8
const (
_ FunctionNameEnum = iota
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
LOCALTIME
LOCALTIMESTAMP
)
type SetQuantifierEnum uint8
const (
_ SetQuantifierEnum = iota
DISTINCT_SET
ALL_SET
)