vorax 0.1.0pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gitignore +7 -0
  2. data/.rspec +1 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +45 -0
  5. data/Rakefile +30 -0
  6. data/lib/vorax/base_funnel.rb +30 -0
  7. data/lib/vorax/output/html_convertor.rb +120 -0
  8. data/lib/vorax/output/html_funnel.rb +79 -0
  9. data/lib/vorax/output/pagezip_convertor.rb +20 -0
  10. data/lib/vorax/output/tablezip_convertor.rb +22 -0
  11. data/lib/vorax/output/vertical_convertor.rb +53 -0
  12. data/lib/vorax/output/zip_convertor.rb +117 -0
  13. data/lib/vorax/parser/argument.rb~ +125 -0
  14. data/lib/vorax/parser/body_split.rb +168 -0
  15. data/lib/vorax/parser/conn_string.rb +104 -0
  16. data/lib/vorax/parser/grammars/alias.rb +912 -0
  17. data/lib/vorax/parser/grammars/alias.rl +146 -0
  18. data/lib/vorax/parser/grammars/column.rb +454 -0
  19. data/lib/vorax/parser/grammars/column.rl +64 -0
  20. data/lib/vorax/parser/grammars/common.rl +98 -0
  21. data/lib/vorax/parser/grammars/package_spec.rb +1186 -0
  22. data/lib/vorax/parser/grammars/package_spec.rl +78 -0
  23. data/lib/vorax/parser/grammars/plsql_def.rb +469 -0
  24. data/lib/vorax/parser/grammars/plsql_def.rl +59 -0
  25. data/lib/vorax/parser/grammars/statement.rb +925 -0
  26. data/lib/vorax/parser/grammars/statement.rl +83 -0
  27. data/lib/vorax/parser/parser.rb +320 -0
  28. data/lib/vorax/parser/plsql_structure.rb +158 -0
  29. data/lib/vorax/parser/plsql_walker.rb +143 -0
  30. data/lib/vorax/parser/statement_inspector.rb~ +52 -0
  31. data/lib/vorax/parser/stmt_inspector.rb +78 -0
  32. data/lib/vorax/parser/target_ref.rb +110 -0
  33. data/lib/vorax/sqlplus.rb +281 -0
  34. data/lib/vorax/version.rb +7 -0
  35. data/lib/vorax/vorax_io.rb +70 -0
  36. data/lib/vorax.rb +60 -0
  37. data/spec/column_spec.rb +40 -0
  38. data/spec/conn_string_spec.rb +53 -0
  39. data/spec/package_spec_spec.rb +48 -0
  40. data/spec/pagezip_spec.rb +153 -0
  41. data/spec/parser_spec.rb +299 -0
  42. data/spec/plsql_structure_spec.rb +44 -0
  43. data/spec/spec_helper.rb +13 -0
  44. data/spec/sql/create_objects.sql +69 -0
  45. data/spec/sql/dbms_crypto.spc +339 -0
  46. data/spec/sql/dbms_crypto.~spc +339 -0
  47. data/spec/sql/dbms_stats.spc +4097 -0
  48. data/spec/sql/drop_user.sql +10 -0
  49. data/spec/sql/muci.spc +24 -0
  50. data/spec/sql/setup_user.sql +22 -0
  51. data/spec/sql/test.pkg +67 -0
  52. data/spec/sqlplus_spec.rb +52 -0
  53. data/spec/stmt_inspector_spec.rb +84 -0
  54. data/spec/tablezip_spec.rb +111 -0
  55. data/spec/vertical_spec.rb +150 -0
  56. data/vorax.gemspec +21 -0
  57. metadata +139 -0
@@ -0,0 +1,912 @@
1
+
2
+ # line 1 "lib/vorax/parser/grammars/alias.rl"
3
+
4
+ # line 81 "lib/vorax/parser/grammars/alias.rl"
5
+
6
+
7
+ module Vorax
8
+
9
+ module Parser
10
+
11
+ # An abstraction for an alias within a SQL statement.
12
+ class Alias
13
+
14
+ def initialize
15
+ @not_alias = ['ON', 'WHERE', 'FROM', 'CONNECT', 'START',
16
+ 'GROUP', 'HAVING', 'MODEL']
17
+ end
18
+
19
+ # Walks the provided statement searching for alias references.
20
+ #
21
+ # @param data the statement
22
+ def walk(data)
23
+ @refs = [];
24
+ @columns = nil;
25
+ data << "\n"
26
+ eof = data.length
27
+
28
+ # line 29 "lib/vorax/parser/grammars/alias.rb"
29
+ class << self
30
+ attr_accessor :_alias_actions
31
+ private :_alias_actions, :_alias_actions=
32
+ end
33
+ self._alias_actions = [
34
+ 0, 1, 1, 1, 2, 1, 3, 1,
35
+ 6, 1, 8, 1, 9, 1, 10, 1,
36
+ 15, 1, 16, 1, 17, 1, 18, 1,
37
+ 19, 1, 21, 1, 22, 1, 23, 1,
38
+ 24, 1, 25, 1, 26, 1, 27, 2,
39
+ 1, 19, 2, 1, 21, 2, 3, 19,
40
+ 2, 3, 21, 2, 5, 2, 2, 6,
41
+ 20, 2, 7, 0, 2, 10, 2, 2,
42
+ 10, 4, 2, 10, 11, 2, 10, 12,
43
+ 2, 10, 13, 2, 10, 14, 3, 10,
44
+ 7, 0, 3, 10, 7, 4
45
+ ]
46
+
47
+ class << self
48
+ attr_accessor :_alias_key_offsets
49
+ private :_alias_key_offsets, :_alias_key_offsets=
50
+ end
51
+ self._alias_key_offsets = [
52
+ 0, 9, 10, 11, 12, 13, 15, 17,
53
+ 19, 21, 26, 40, 41, 55, 56, 62,
54
+ 76, 77, 78, 79, 87, 88, 89, 90,
55
+ 92, 100, 101, 102, 103, 104, 105, 107,
56
+ 108, 109, 110, 111, 113, 114, 115, 116,
57
+ 117, 119, 121, 123, 125, 130, 144, 145,
58
+ 158, 159, 160, 161, 162, 163, 165, 173,
59
+ 174, 182, 183, 184, 185, 186, 187, 189,
60
+ 190, 191, 192, 193, 195, 197, 199, 201,
61
+ 203, 208, 209, 210, 211, 212, 214, 216,
62
+ 218, 223, 236, 237, 242, 249, 250, 251,
63
+ 252, 253, 255, 257, 263, 269, 282, 283,
64
+ 288, 295, 296, 297, 298, 299, 301, 303,
65
+ 309, 310, 311, 312, 313, 315, 329, 330,
66
+ 331, 332, 333, 335, 336, 337, 338, 339,
67
+ 341, 342, 343, 344, 345, 347, 361, 362,
68
+ 363, 364, 365, 367, 378, 387, 395, 401,
69
+ 418, 425, 431, 446, 462, 468, 483, 490,
70
+ 490, 499, 505, 510, 524, 539, 555, 560,
71
+ 561, 562, 563, 564, 565, 567, 572, 574
72
+ ]
73
+
74
+ class << self
75
+ attr_accessor :_alias_trans_keys
76
+ private :_alias_trans_keys, :_alias_trans_keys=
77
+ end
78
+ self._alias_trans_keys = [
79
+ 32, 45, 47, 70, 74, 102, 106, 9,
80
+ 13, 45, 10, 42, 42, 42, 47, 82,
81
+ 114, 79, 111, 77, 109, 32, 45, 47,
82
+ 9, 13, 32, 34, 40, 45, 47, 95,
83
+ 9, 13, 35, 36, 65, 90, 97, 122,
84
+ 34, 32, 34, 44, 45, 47, 95, 9,
85
+ 13, 35, 36, 65, 90, 97, 122, 34,
86
+ 32, 44, 45, 47, 9, 13, 32, 34,
87
+ 40, 45, 47, 95, 9, 13, 35, 36,
88
+ 65, 90, 97, 122, 34, 45, 10, 34,
89
+ 95, 35, 36, 65, 90, 97, 122, 34,
90
+ 42, 42, 42, 47, 34, 95, 35, 36,
91
+ 65, 90, 97, 122, 34, 45, 10, 42,
92
+ 42, 42, 47, 45, 10, 42, 42, 42,
93
+ 47, 45, 10, 42, 42, 42, 47, 79,
94
+ 111, 73, 105, 78, 110, 32, 45, 47,
95
+ 9, 13, 32, 34, 40, 45, 47, 95,
96
+ 9, 13, 35, 36, 65, 90, 97, 122,
97
+ 34, 32, 34, 45, 47, 95, 9, 13,
98
+ 35, 36, 65, 90, 97, 122, 34, 45,
99
+ 10, 42, 42, 42, 47, 34, 95, 35,
100
+ 36, 65, 90, 97, 122, 34, 34, 95,
101
+ 35, 36, 65, 90, 97, 122, 34, 45,
102
+ 10, 42, 42, 42, 47, 34, 39, 10,
103
+ 42, 42, 47, 76, 108, 69, 101, 67,
104
+ 99, 84, 116, 32, 45, 47, 9, 13,
105
+ 45, 10, 42, 42, 42, 47, 84, 116,
106
+ 72, 104, 32, 45, 47, 9, 13, 32,
107
+ 34, 45, 47, 95, 9, 13, 35, 36,
108
+ 65, 90, 97, 122, 34, 32, 45, 47,
109
+ 9, 13, 32, 45, 47, 65, 97, 9,
110
+ 13, 45, 10, 42, 42, 42, 47, 83,
111
+ 115, 32, 40, 45, 47, 9, 13, 32,
112
+ 44, 45, 47, 9, 13, 32, 34, 45,
113
+ 47, 95, 9, 13, 35, 36, 65, 90,
114
+ 97, 122, 34, 32, 45, 47, 9, 13,
115
+ 32, 45, 47, 65, 97, 9, 13, 45,
116
+ 10, 42, 42, 42, 47, 83, 115, 32,
117
+ 40, 45, 47, 9, 13, 45, 10, 42,
118
+ 42, 42, 47, 32, 45, 47, 95, 9,
119
+ 13, 35, 36, 48, 57, 65, 90, 97,
120
+ 122, 45, 10, 42, 42, 42, 47, 45,
121
+ 10, 42, 42, 42, 47, 45, 10, 42,
122
+ 42, 42, 47, 32, 45, 47, 95, 9,
123
+ 13, 35, 36, 48, 57, 65, 90, 97,
124
+ 122, 45, 10, 42, 42, 42, 47, 32,
125
+ 34, 39, 45, 47, 83, 87, 115, 119,
126
+ 9, 13, 32, 45, 47, 70, 74, 102,
127
+ 106, 9, 13, 32, 44, 45, 46, 47,
128
+ 64, 9, 13, 32, 44, 45, 47, 9,
129
+ 13, 32, 44, 45, 46, 47, 64, 95,
130
+ 9, 13, 35, 36, 48, 57, 65, 90,
131
+ 97, 122, 32, 44, 45, 47, 64, 9,
132
+ 13, 32, 44, 45, 47, 9, 13, 32,
133
+ 44, 45, 47, 95, 9, 13, 35, 36,
134
+ 48, 57, 65, 90, 97, 122, 32, 44,
135
+ 45, 47, 64, 95, 9, 13, 35, 36,
136
+ 48, 57, 65, 90, 97, 122, 32, 44,
137
+ 45, 47, 9, 13, 32, 44, 45, 47,
138
+ 95, 9, 13, 35, 36, 48, 57, 65,
139
+ 90, 97, 122, 32, 45, 46, 47, 64,
140
+ 9, 13, 95, 35, 36, 48, 57, 65,
141
+ 90, 97, 122, 32, 45, 47, 64, 9,
142
+ 13, 32, 45, 47, 9, 13, 32, 45,
143
+ 47, 95, 9, 13, 35, 36, 48, 57,
144
+ 65, 90, 97, 122, 32, 45, 47, 64,
145
+ 95, 9, 13, 35, 36, 48, 57, 65,
146
+ 90, 97, 122, 32, 45, 46, 47, 64,
147
+ 95, 9, 13, 35, 36, 48, 57, 65,
148
+ 90, 97, 122, 32, 45, 47, 9, 13,
149
+ 34, 39, 39, 45, 42, 69, 101, 32,
150
+ 45, 47, 9, 13, 73, 105, 32, 44,
151
+ 45, 47, 9, 13, 0
152
+ ]
153
+
154
+ class << self
155
+ attr_accessor :_alias_single_lengths
156
+ private :_alias_single_lengths, :_alias_single_lengths=
157
+ end
158
+ self._alias_single_lengths = [
159
+ 7, 1, 1, 1, 1, 2, 2, 2,
160
+ 2, 3, 6, 1, 6, 1, 4, 6,
161
+ 1, 1, 1, 2, 1, 1, 1, 2,
162
+ 2, 1, 1, 1, 1, 1, 2, 1,
163
+ 1, 1, 1, 2, 1, 1, 1, 1,
164
+ 2, 2, 2, 2, 3, 6, 1, 5,
165
+ 1, 1, 1, 1, 1, 2, 2, 1,
166
+ 2, 1, 1, 1, 1, 1, 2, 1,
167
+ 1, 1, 1, 2, 2, 2, 2, 2,
168
+ 3, 1, 1, 1, 1, 2, 2, 2,
169
+ 3, 5, 1, 3, 5, 1, 1, 1,
170
+ 1, 2, 2, 4, 4, 5, 1, 3,
171
+ 5, 1, 1, 1, 1, 2, 2, 4,
172
+ 1, 1, 1, 1, 2, 4, 1, 1,
173
+ 1, 1, 2, 1, 1, 1, 1, 2,
174
+ 1, 1, 1, 1, 2, 4, 1, 1,
175
+ 1, 1, 2, 9, 7, 6, 4, 7,
176
+ 5, 4, 5, 6, 4, 5, 5, 0,
177
+ 1, 4, 3, 4, 5, 6, 3, 1,
178
+ 1, 1, 1, 1, 2, 3, 2, 4
179
+ ]
180
+
181
+ class << self
182
+ attr_accessor :_alias_range_lengths
183
+ private :_alias_range_lengths, :_alias_range_lengths=
184
+ end
185
+ self._alias_range_lengths = [
186
+ 1, 0, 0, 0, 0, 0, 0, 0,
187
+ 0, 1, 4, 0, 4, 0, 1, 4,
188
+ 0, 0, 0, 3, 0, 0, 0, 0,
189
+ 3, 0, 0, 0, 0, 0, 0, 0,
190
+ 0, 0, 0, 0, 0, 0, 0, 0,
191
+ 0, 0, 0, 0, 1, 4, 0, 4,
192
+ 0, 0, 0, 0, 0, 0, 3, 0,
193
+ 3, 0, 0, 0, 0, 0, 0, 0,
194
+ 0, 0, 0, 0, 0, 0, 0, 0,
195
+ 1, 0, 0, 0, 0, 0, 0, 0,
196
+ 1, 4, 0, 1, 1, 0, 0, 0,
197
+ 0, 0, 0, 1, 1, 4, 0, 1,
198
+ 1, 0, 0, 0, 0, 0, 0, 1,
199
+ 0, 0, 0, 0, 0, 5, 0, 0,
200
+ 0, 0, 0, 0, 0, 0, 0, 0,
201
+ 0, 0, 0, 0, 0, 5, 0, 0,
202
+ 0, 0, 0, 1, 1, 1, 1, 5,
203
+ 1, 1, 5, 5, 1, 5, 1, 0,
204
+ 4, 1, 1, 5, 5, 5, 1, 0,
205
+ 0, 0, 0, 0, 0, 1, 0, 1
206
+ ]
207
+
208
+ class << self
209
+ attr_accessor :_alias_index_offsets
210
+ private :_alias_index_offsets, :_alias_index_offsets=
211
+ end
212
+ self._alias_index_offsets = [
213
+ 0, 9, 11, 13, 15, 17, 20, 23,
214
+ 26, 29, 34, 45, 47, 58, 60, 66,
215
+ 77, 79, 81, 83, 89, 91, 93, 95,
216
+ 98, 104, 106, 108, 110, 112, 114, 117,
217
+ 119, 121, 123, 125, 128, 130, 132, 134,
218
+ 136, 139, 142, 145, 148, 153, 164, 166,
219
+ 176, 178, 180, 182, 184, 186, 189, 195,
220
+ 197, 203, 205, 207, 209, 211, 213, 216,
221
+ 218, 220, 222, 224, 227, 230, 233, 236,
222
+ 239, 244, 246, 248, 250, 252, 255, 258,
223
+ 261, 266, 276, 278, 283, 290, 292, 294,
224
+ 296, 298, 301, 304, 310, 316, 326, 328,
225
+ 333, 340, 342, 344, 346, 348, 351, 354,
226
+ 360, 362, 364, 366, 368, 371, 381, 383,
227
+ 385, 387, 389, 392, 394, 396, 398, 400,
228
+ 403, 405, 407, 409, 411, 414, 424, 426,
229
+ 428, 430, 432, 435, 446, 455, 463, 469,
230
+ 482, 489, 495, 506, 518, 524, 535, 542,
231
+ 543, 549, 555, 560, 570, 581, 593, 598,
232
+ 600, 602, 604, 606, 608, 611, 616, 619
233
+ ]
234
+
235
+ class << self
236
+ attr_accessor :_alias_trans_targs
237
+ private :_alias_trans_targs, :_alias_trans_targs=
238
+ end
239
+ self._alias_trans_targs = [
240
+ 0, 1, 3, 6, 41, 6, 41, 0,
241
+ 131, 2, 131, 0, 2, 4, 131, 5,
242
+ 4, 5, 0, 4, 7, 7, 131, 8,
243
+ 8, 131, 9, 9, 131, 10, 36, 38,
244
+ 10, 131, 10, 11, 140, 36, 38, 135,
245
+ 10, 135, 135, 135, 131, 133, 11, 12,
246
+ 13, 15, 17, 21, 141, 12, 141, 141,
247
+ 141, 131, 134, 13, 14, 15, 31, 33,
248
+ 14, 131, 15, 16, 140, 26, 28, 135,
249
+ 15, 135, 135, 135, 131, 133, 16, 18,
250
+ 131, 12, 18, 20, 139, 139, 139, 139,
251
+ 131, 136, 20, 22, 131, 23, 22, 23,
252
+ 12, 22, 25, 138, 138, 138, 138, 131,
253
+ 137, 25, 27, 131, 15, 27, 29, 131,
254
+ 30, 29, 30, 15, 29, 32, 131, 14,
255
+ 32, 34, 131, 35, 34, 35, 14, 34,
256
+ 37, 131, 10, 37, 39, 131, 40, 39,
257
+ 40, 10, 39, 42, 42, 131, 43, 43,
258
+ 131, 44, 44, 131, 45, 58, 60, 45,
259
+ 131, 45, 46, 150, 58, 60, 149, 45,
260
+ 149, 149, 149, 131, 142, 46, 47, 48,
261
+ 49, 51, 144, 47, 144, 144, 144, 131,
262
+ 143, 48, 50, 131, 47, 50, 52, 131,
263
+ 53, 52, 53, 47, 52, 55, 148, 148,
264
+ 148, 148, 131, 145, 55, 57, 147, 147,
265
+ 147, 147, 131, 146, 57, 59, 131, 45,
266
+ 59, 61, 131, 62, 61, 62, 45, 61,
267
+ 131, 63, 153, 64, 132, 65, 67, 66,
268
+ 67, 132, 66, 69, 69, 131, 70, 70,
269
+ 131, 71, 71, 131, 72, 72, 131, 157,
270
+ 73, 75, 157, 131, 74, 131, 157, 74,
271
+ 76, 131, 77, 76, 77, 157, 76, 79,
272
+ 79, 131, 80, 80, 131, 81, 126, 128,
273
+ 81, 131, 81, 82, 126, 128, 125, 81,
274
+ 125, 125, 125, 131, 83, 82, 84, 85,
275
+ 87, 84, 131, 84, 85, 87, 90, 90,
276
+ 84, 131, 86, 131, 84, 86, 88, 131,
277
+ 89, 88, 89, 84, 88, 91, 91, 131,
278
+ 91, 159, 120, 122, 91, 131, 92, 93,
279
+ 115, 117, 92, 131, 93, 94, 110, 112,
280
+ 109, 93, 109, 109, 109, 131, 95, 94,
281
+ 96, 97, 99, 96, 131, 96, 97, 99,
282
+ 102, 102, 96, 131, 98, 131, 96, 98,
283
+ 100, 131, 101, 100, 101, 96, 100, 103,
284
+ 103, 131, 103, 159, 104, 106, 103, 131,
285
+ 105, 131, 103, 105, 107, 131, 108, 107,
286
+ 108, 103, 107, 96, 97, 99, 109, 96,
287
+ 109, 109, 109, 109, 131, 111, 131, 93,
288
+ 111, 113, 131, 114, 113, 114, 93, 113,
289
+ 116, 131, 92, 116, 118, 131, 119, 118,
290
+ 119, 92, 118, 121, 131, 91, 121, 123,
291
+ 131, 124, 123, 124, 91, 123, 84, 85,
292
+ 87, 125, 84, 125, 125, 125, 125, 131,
293
+ 127, 131, 81, 127, 129, 131, 130, 129,
294
+ 130, 81, 129, 132, 151, 152, 154, 155,
295
+ 156, 158, 156, 158, 132, 131, 0, 1,
296
+ 3, 6, 41, 6, 41, 0, 131, 12,
297
+ 15, 17, 19, 21, 24, 12, 131, 14,
298
+ 15, 31, 33, 14, 131, 12, 15, 17,
299
+ 19, 21, 24, 135, 12, 135, 135, 135,
300
+ 135, 131, 12, 15, 17, 21, 24, 12,
301
+ 131, 12, 15, 17, 21, 12, 131, 12,
302
+ 15, 17, 21, 138, 12, 138, 138, 138,
303
+ 138, 131, 12, 15, 17, 21, 24, 139,
304
+ 12, 139, 139, 139, 139, 131, 12, 15,
305
+ 17, 21, 12, 131, 14, 15, 31, 33,
306
+ 141, 14, 141, 141, 141, 141, 131, 47,
307
+ 49, 54, 51, 56, 47, 131, 131, 144,
308
+ 144, 144, 144, 144, 131, 47, 49, 51,
309
+ 56, 47, 131, 47, 49, 51, 47, 131,
310
+ 47, 49, 51, 147, 47, 147, 147, 147,
311
+ 147, 131, 47, 49, 51, 56, 148, 47,
312
+ 148, 148, 148, 148, 131, 47, 49, 54,
313
+ 51, 56, 149, 47, 149, 149, 149, 149,
314
+ 131, 47, 49, 51, 47, 131, 131, 63,
315
+ 153, 64, 64, 131, 65, 131, 66, 131,
316
+ 68, 68, 131, 157, 73, 75, 157, 131,
317
+ 78, 78, 131, 92, 93, 115, 117, 92,
318
+ 131, 131, 131, 131, 131, 131, 131, 131,
319
+ 131, 131, 131, 131, 131, 131, 131, 131,
320
+ 131, 131, 131, 131, 131, 131, 131, 131,
321
+ 131, 131, 131, 131, 131, 131, 131, 131,
322
+ 131, 131, 131, 131, 131, 131, 131, 131,
323
+ 131, 131, 131, 131, 131, 131, 131, 131,
324
+ 131, 131, 131, 131, 131, 131, 131, 131,
325
+ 131, 131, 131, 131, 131, 131, 131, 131,
326
+ 131, 131, 131, 131, 131, 131, 131, 131,
327
+ 131, 131, 131, 131, 131, 131, 131, 131,
328
+ 131, 131, 131, 131, 131, 131, 131, 131,
329
+ 131, 131, 131, 131, 131, 131, 131, 131,
330
+ 131, 131, 131, 131, 131, 131, 131, 131,
331
+ 131, 131, 131, 131, 131, 131, 131, 131,
332
+ 131, 131, 131, 131, 131, 131, 131, 131,
333
+ 131, 131, 131, 131, 131, 131, 131, 131,
334
+ 131, 131, 131, 131, 131, 131, 131, 131,
335
+ 131, 131, 131, 131, 131, 131, 131, 131,
336
+ 131, 131, 131, 131, 131, 131, 131, 131,
337
+ 131, 131, 131, 131, 131, 131, 131, 131,
338
+ 0
339
+ ]
340
+
341
+ class << self
342
+ attr_accessor :_alias_trans_actions
343
+ private :_alias_trans_actions, :_alias_trans_actions=
344
+ end
345
+ self._alias_trans_actions = [
346
+ 0, 0, 0, 0, 0, 0, 0, 0,
347
+ 37, 0, 37, 0, 0, 0, 37, 0,
348
+ 0, 0, 0, 0, 0, 0, 37, 0,
349
+ 0, 37, 0, 0, 37, 0, 0, 0,
350
+ 0, 37, 0, 57, 82, 0, 0, 78,
351
+ 0, 78, 78, 78, 37, 13, 0, 0,
352
+ 3, 0, 0, 0, 60, 0, 60, 60,
353
+ 60, 29, 13, 0, 0, 0, 0, 0,
354
+ 0, 29, 0, 57, 82, 0, 0, 78,
355
+ 0, 78, 78, 78, 29, 13, 0, 0,
356
+ 29, 0, 0, 0, 13, 13, 13, 13,
357
+ 29, 13, 0, 0, 29, 0, 0, 0,
358
+ 0, 0, 0, 13, 13, 13, 13, 29,
359
+ 13, 0, 0, 29, 0, 0, 0, 29,
360
+ 0, 0, 0, 0, 0, 0, 29, 0,
361
+ 0, 0, 29, 0, 0, 0, 0, 0,
362
+ 0, 37, 0, 0, 0, 37, 0, 0,
363
+ 0, 0, 0, 0, 0, 37, 0, 0,
364
+ 37, 0, 0, 37, 0, 0, 0, 0,
365
+ 37, 0, 57, 82, 0, 0, 78, 0,
366
+ 78, 78, 78, 37, 13, 0, 0, 3,
367
+ 0, 0, 3, 0, 3, 3, 3, 33,
368
+ 0, 0, 0, 33, 0, 0, 0, 33,
369
+ 0, 0, 0, 0, 0, 0, 13, 13,
370
+ 13, 13, 33, 13, 0, 0, 13, 13,
371
+ 13, 13, 33, 13, 0, 0, 37, 0,
372
+ 0, 0, 37, 0, 0, 0, 0, 0,
373
+ 15, 0, 66, 0, 69, 0, 0, 0,
374
+ 0, 69, 0, 0, 0, 35, 0, 0,
375
+ 35, 0, 0, 35, 0, 0, 35, 72,
376
+ 0, 0, 72, 35, 0, 37, 72, 0,
377
+ 0, 37, 0, 0, 0, 72, 0, 0,
378
+ 0, 35, 0, 0, 35, 0, 0, 0,
379
+ 0, 35, 0, 51, 0, 0, 51, 0,
380
+ 51, 51, 51, 35, 0, 0, 5, 5,
381
+ 5, 5, 35, 0, 0, 0, 0, 0,
382
+ 0, 35, 0, 35, 0, 0, 0, 35,
383
+ 0, 0, 0, 0, 0, 0, 0, 35,
384
+ 0, 63, 0, 0, 0, 35, 0, 0,
385
+ 0, 0, 0, 31, 0, 51, 0, 0,
386
+ 51, 0, 51, 51, 51, 31, 0, 0,
387
+ 5, 5, 5, 5, 31, 0, 0, 0,
388
+ 0, 0, 0, 31, 0, 31, 0, 0,
389
+ 0, 31, 0, 0, 0, 0, 0, 0,
390
+ 0, 31, 0, 63, 0, 0, 0, 31,
391
+ 0, 31, 0, 0, 0, 31, 0, 0,
392
+ 0, 0, 0, 5, 5, 5, 0, 5,
393
+ 0, 0, 0, 0, 31, 0, 31, 0,
394
+ 0, 0, 31, 0, 0, 0, 0, 0,
395
+ 0, 31, 0, 0, 0, 31, 0, 0,
396
+ 0, 0, 0, 0, 35, 0, 0, 0,
397
+ 35, 0, 0, 0, 0, 0, 5, 5,
398
+ 5, 0, 5, 0, 0, 0, 0, 35,
399
+ 0, 35, 0, 0, 0, 35, 0, 0,
400
+ 0, 0, 0, 75, 13, 75, 13, 13,
401
+ 75, 13, 75, 13, 75, 17, 0, 0,
402
+ 0, 0, 0, 0, 0, 0, 37, 1,
403
+ 1, 1, 0, 1, 0, 1, 39, 5,
404
+ 5, 5, 5, 5, 45, 1, 1, 1,
405
+ 0, 1, 0, 13, 1, 13, 13, 13,
406
+ 13, 39, 1, 1, 1, 1, 0, 1,
407
+ 39, 1, 1, 1, 1, 1, 39, 1,
408
+ 1, 1, 1, 13, 1, 13, 13, 13,
409
+ 13, 39, 1, 1, 1, 1, 0, 13,
410
+ 1, 13, 13, 13, 13, 39, 0, 0,
411
+ 0, 0, 0, 23, 5, 5, 5, 5,
412
+ 13, 5, 13, 13, 13, 13, 45, 1,
413
+ 1, 0, 1, 0, 1, 42, 48, 0,
414
+ 0, 0, 0, 0, 48, 1, 1, 1,
415
+ 0, 1, 42, 1, 1, 1, 1, 42,
416
+ 1, 1, 1, 13, 1, 13, 13, 13,
417
+ 13, 42, 1, 1, 1, 0, 13, 1,
418
+ 13, 13, 13, 13, 42, 1, 1, 0,
419
+ 1, 0, 13, 1, 13, 13, 13, 13,
420
+ 42, 0, 0, 0, 0, 25, 15, 0,
421
+ 66, 0, 0, 19, 0, 27, 0, 27,
422
+ 0, 0, 27, 72, 0, 0, 72, 21,
423
+ 0, 0, 27, 7, 7, 7, 7, 7,
424
+ 54, 37, 37, 37, 37, 37, 37, 37,
425
+ 37, 37, 37, 37, 37, 29, 29, 29,
426
+ 29, 29, 29, 29, 29, 29, 29, 29,
427
+ 29, 29, 29, 29, 29, 29, 29, 29,
428
+ 29, 29, 29, 29, 29, 37, 37, 37,
429
+ 37, 37, 37, 37, 37, 37, 37, 37,
430
+ 33, 33, 33, 33, 33, 33, 33, 33,
431
+ 33, 33, 33, 37, 37, 37, 37, 37,
432
+ 35, 37, 35, 35, 35, 35, 35, 35,
433
+ 35, 35, 37, 37, 37, 37, 37, 35,
434
+ 35, 35, 35, 35, 35, 35, 35, 35,
435
+ 35, 35, 35, 35, 35, 31, 31, 31,
436
+ 31, 31, 31, 31, 31, 31, 31, 31,
437
+ 31, 31, 31, 31, 31, 31, 31, 31,
438
+ 31, 31, 31, 31, 31, 31, 31, 31,
439
+ 31, 35, 35, 35, 35, 35, 35, 35,
440
+ 35, 35, 35, 35, 37, 39, 45, 39,
441
+ 39, 39, 39, 39, 23, 45, 42, 48,
442
+ 48, 42, 42, 42, 42, 42, 25, 27,
443
+ 27, 19, 27, 27, 27, 21, 27, 54,
444
+ 0
445
+ ]
446
+
447
+ class << self
448
+ attr_accessor :_alias_to_state_actions
449
+ private :_alias_to_state_actions, :_alias_to_state_actions=
450
+ end
451
+ self._alias_to_state_actions = [
452
+ 0, 0, 0, 0, 0, 0, 0, 0,
453
+ 0, 0, 0, 0, 0, 0, 0, 0,
454
+ 0, 0, 0, 0, 0, 0, 0, 0,
455
+ 0, 0, 0, 0, 0, 0, 0, 0,
456
+ 0, 0, 0, 0, 0, 0, 0, 0,
457
+ 0, 0, 0, 0, 0, 0, 0, 0,
458
+ 0, 0, 0, 0, 0, 0, 0, 0,
459
+ 0, 0, 0, 0, 0, 0, 0, 0,
460
+ 0, 0, 0, 0, 0, 0, 0, 0,
461
+ 0, 0, 0, 0, 0, 0, 0, 0,
462
+ 0, 0, 0, 0, 0, 0, 0, 0,
463
+ 0, 0, 0, 0, 0, 0, 0, 0,
464
+ 0, 0, 0, 0, 0, 0, 0, 0,
465
+ 0, 0, 0, 0, 0, 0, 0, 0,
466
+ 0, 0, 0, 0, 0, 0, 0, 0,
467
+ 0, 0, 0, 0, 0, 0, 0, 0,
468
+ 0, 0, 0, 9, 0, 0, 0, 0,
469
+ 0, 0, 0, 0, 0, 0, 0, 0,
470
+ 0, 0, 0, 0, 0, 0, 0, 0,
471
+ 0, 0, 0, 0, 0, 0, 0, 0
472
+ ]
473
+
474
+ class << self
475
+ attr_accessor :_alias_from_state_actions
476
+ private :_alias_from_state_actions, :_alias_from_state_actions=
477
+ end
478
+ self._alias_from_state_actions = [
479
+ 0, 0, 0, 0, 0, 0, 0, 0,
480
+ 0, 0, 0, 0, 0, 0, 0, 0,
481
+ 0, 0, 0, 0, 0, 0, 0, 0,
482
+ 0, 0, 0, 0, 0, 0, 0, 0,
483
+ 0, 0, 0, 0, 0, 0, 0, 0,
484
+ 0, 0, 0, 0, 0, 0, 0, 0,
485
+ 0, 0, 0, 0, 0, 0, 0, 0,
486
+ 0, 0, 0, 0, 0, 0, 0, 0,
487
+ 0, 0, 0, 0, 0, 0, 0, 0,
488
+ 0, 0, 0, 0, 0, 0, 0, 0,
489
+ 0, 0, 0, 0, 0, 0, 0, 0,
490
+ 0, 0, 0, 0, 0, 0, 0, 0,
491
+ 0, 0, 0, 0, 0, 0, 0, 0,
492
+ 0, 0, 0, 0, 0, 0, 0, 0,
493
+ 0, 0, 0, 0, 0, 0, 0, 0,
494
+ 0, 0, 0, 0, 0, 0, 0, 0,
495
+ 0, 0, 0, 11, 0, 0, 0, 0,
496
+ 0, 0, 0, 0, 0, 0, 0, 0,
497
+ 0, 0, 0, 0, 0, 0, 0, 0,
498
+ 0, 0, 0, 0, 0, 0, 0, 0
499
+ ]
500
+
501
+ class << self
502
+ attr_accessor :_alias_eof_trans
503
+ private :_alias_eof_trans, :_alias_eof_trans=
504
+ end
505
+ self._alias_eof_trans = [
506
+ 757, 757, 757, 757, 757, 757, 757, 757,
507
+ 757, 757, 757, 757, 661, 661, 661, 661,
508
+ 661, 661, 661, 661, 661, 661, 661, 661,
509
+ 661, 661, 661, 661, 661, 661, 661, 661,
510
+ 661, 661, 661, 661, 757, 757, 757, 757,
511
+ 757, 757, 757, 757, 757, 757, 757, 683,
512
+ 683, 683, 683, 683, 683, 683, 683, 683,
513
+ 683, 683, 757, 757, 757, 757, 757, 756,
514
+ 757, 756, 756, 756, 756, 756, 756, 756,
515
+ 756, 757, 757, 757, 757, 757, 756, 756,
516
+ 756, 756, 756, 756, 756, 756, 756, 756,
517
+ 756, 756, 756, 756, 745, 745, 745, 745,
518
+ 745, 745, 745, 745, 745, 745, 745, 745,
519
+ 745, 745, 745, 745, 745, 745, 745, 745,
520
+ 745, 745, 745, 745, 745, 745, 745, 745,
521
+ 756, 756, 756, 756, 756, 756, 756, 756,
522
+ 756, 756, 756, 0, 757, 764, 766, 764,
523
+ 764, 764, 764, 764, 765, 766, 774, 769,
524
+ 769, 774, 774, 774, 774, 774, 775, 783,
525
+ 783, 778, 783, 783, 783, 782, 783, 784
526
+ ]
527
+
528
+ class << self
529
+ attr_accessor :alias_start
530
+ end
531
+ self.alias_start = 131;
532
+ class << self
533
+ attr_accessor :alias_first_final
534
+ end
535
+ self.alias_first_final = 131;
536
+ class << self
537
+ attr_accessor :alias_error
538
+ end
539
+ self.alias_error = -1;
540
+
541
+ class << self
542
+ attr_accessor :alias_en_main
543
+ end
544
+ self.alias_en_main = 131;
545
+
546
+
547
+ # line 104 "lib/vorax/parser/grammars/alias.rl"
548
+
549
+ # line 550 "lib/vorax/parser/grammars/alias.rb"
550
+ begin
551
+ p ||= 0
552
+ pe ||= data.length
553
+ cs = alias_start
554
+ ts = nil
555
+ te = nil
556
+ act = 0
557
+ end
558
+
559
+ # line 105 "lib/vorax/parser/grammars/alias.rl"
560
+
561
+ # line 562 "lib/vorax/parser/grammars/alias.rb"
562
+ begin
563
+ _klen, _trans, _keys, _acts, _nacts = nil
564
+ _goto_level = 0
565
+ _resume = 10
566
+ _eof_trans = 15
567
+ _again = 20
568
+ _test_eof = 30
569
+ _out = 40
570
+ while true
571
+ _trigger_goto = false
572
+ if _goto_level <= 0
573
+ if p == pe
574
+ _goto_level = _test_eof
575
+ next
576
+ end
577
+ end
578
+ if _goto_level <= _resume
579
+ _acts = _alias_from_state_actions[cs]
580
+ _nacts = _alias_actions[_acts]
581
+ _acts += 1
582
+ while _nacts > 0
583
+ _nacts -= 1
584
+ _acts += 1
585
+ case _alias_actions[_acts - 1]
586
+ when 9 then
587
+ # line 1 "NONE"
588
+ begin
589
+ ts = p
590
+ end
591
+ # line 592 "lib/vorax/parser/grammars/alias.rb"
592
+ end # from state action switch
593
+ end
594
+ if _trigger_goto
595
+ next
596
+ end
597
+ _keys = _alias_key_offsets[cs]
598
+ _trans = _alias_index_offsets[cs]
599
+ _klen = _alias_single_lengths[cs]
600
+ _break_match = false
601
+
602
+ begin
603
+ if _klen > 0
604
+ _lower = _keys
605
+ _upper = _keys + _klen - 1
606
+
607
+ loop do
608
+ break if _upper < _lower
609
+ _mid = _lower + ( (_upper - _lower) >> 1 )
610
+
611
+ if data[p].ord < _alias_trans_keys[_mid]
612
+ _upper = _mid - 1
613
+ elsif data[p].ord > _alias_trans_keys[_mid]
614
+ _lower = _mid + 1
615
+ else
616
+ _trans += (_mid - _keys)
617
+ _break_match = true
618
+ break
619
+ end
620
+ end # loop
621
+ break if _break_match
622
+ _keys += _klen
623
+ _trans += _klen
624
+ end
625
+ _klen = _alias_range_lengths[cs]
626
+ if _klen > 0
627
+ _lower = _keys
628
+ _upper = _keys + (_klen << 1) - 2
629
+ loop do
630
+ break if _upper < _lower
631
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1)
632
+ if data[p].ord < _alias_trans_keys[_mid]
633
+ _upper = _mid - 2
634
+ elsif data[p].ord > _alias_trans_keys[_mid+1]
635
+ _lower = _mid + 2
636
+ else
637
+ _trans += ((_mid - _keys) >> 1)
638
+ _break_match = true
639
+ break
640
+ end
641
+ end # loop
642
+ break if _break_match
643
+ _trans += _klen
644
+ end
645
+ end while false
646
+ end
647
+ if _goto_level <= _eof_trans
648
+ cs = _alias_trans_targs[_trans]
649
+ if _alias_trans_actions[_trans] != 0
650
+ _acts = _alias_trans_actions[_trans]
651
+ _nacts = _alias_actions[_acts]
652
+ _acts += 1
653
+ while _nacts > 0
654
+ _nacts -= 1
655
+ _acts += 1
656
+ case _alias_actions[_acts - 1]
657
+ when 0 then
658
+ # line 5 "lib/vorax/parser/grammars/alias.rl"
659
+ begin
660
+
661
+ #puts "tableref_start: p=#{p}"
662
+ @t_start = p
663
+ end
664
+ when 1 then
665
+ # line 10 "lib/vorax/parser/grammars/alias.rl"
666
+ begin
667
+
668
+ @table_ref = data[(@t_start..p-1)]
669
+ #puts "tableref_end: @table_ref=#@table_ref"
670
+ end
671
+ when 2 then
672
+ # line 15 "lib/vorax/parser/grammars/alias.rl"
673
+ begin
674
+
675
+ #puts "alias_start: p=#{p}"
676
+ @a_start = p
677
+ @alias_value = nil
678
+ end
679
+ when 3 then
680
+ # line 21 "lib/vorax/parser/grammars/alias.rl"
681
+ begin
682
+
683
+ text = data[(@a_start..p-1)]
684
+ @alias_value = text unless @not_alias.include?(text.upcase)
685
+ #puts "alias_end: @alias_value=#@alias_value"
686
+ end
687
+ when 4 then
688
+ # line 27 "lib/vorax/parser/grammars/alias.rl"
689
+ begin
690
+
691
+ #puts "subquery_start: p=#{p}"
692
+ @subquery_text = Parser.walk_balanced_paren(data[(p..-1)]).gsub(/^\(|\)$/, '')
693
+ p += 1
694
+ @subquery_range = (p..p+@subquery_text.length-1)
695
+ p += @subquery_text.length
696
+ te = p
697
+ #puts "subquery_end: p=#{p} @subquery_text=#@subquery_text @subquery_range=#@subquery_range"
698
+ end
699
+ when 5 then
700
+ # line 37 "lib/vorax/parser/grammars/alias.rl"
701
+ begin
702
+
703
+ #puts "before_with: p=#{p}"
704
+ @alias_value = nil
705
+ @subquery_range = nil
706
+ @subquery_text = nil
707
+ end
708
+ when 6 then
709
+ # line 44 "lib/vorax/parser/grammars/alias.rl"
710
+ begin
711
+
712
+ @refs << ExprRef.new(@subquery_text, @subquery_range, @alias_value)
713
+ @alias_value = nil
714
+ @subquery_range = nil
715
+ @subquery_text = nil
716
+ #puts "after_with"
717
+ end
718
+ when 7 then
719
+ # line 52 "lib/vorax/parser/grammars/alias.rl"
720
+ begin
721
+
722
+ #puts "before_tref: p=#{p} @alias_value=#@alias_value @subquery_text=#@subquery_text @subquery_range=#@subquery_range"
723
+ add_tableref
724
+ end
725
+ when 10 then
726
+ # line 1 "NONE"
727
+ begin
728
+ te = p+1
729
+ end
730
+ when 11 then
731
+ # line 71 "lib/vorax/parser/grammars/alias.rl"
732
+ begin
733
+ act = 1; end
734
+ when 12 then
735
+ # line 73 "lib/vorax/parser/grammars/alias.rl"
736
+ begin
737
+ act = 3; end
738
+ when 13 then
739
+ # line 74 "lib/vorax/parser/grammars/alias.rl"
740
+ begin
741
+ act = 4; end
742
+ when 14 then
743
+ # line 78 "lib/vorax/parser/grammars/alias.rl"
744
+ begin
745
+ act = 8; end
746
+ when 15 then
747
+ # line 72 "lib/vorax/parser/grammars/alias.rl"
748
+ begin
749
+ te = p+1
750
+ end
751
+ when 16 then
752
+ # line 78 "lib/vorax/parser/grammars/alias.rl"
753
+ begin
754
+ te = p+1
755
+ end
756
+ when 17 then
757
+ # line 71 "lib/vorax/parser/grammars/alias.rl"
758
+ begin
759
+ te = p
760
+ p = p - 1; end
761
+ when 18 then
762
+ # line 74 "lib/vorax/parser/grammars/alias.rl"
763
+ begin
764
+ te = p
765
+ p = p - 1; begin @start_columns = te end
766
+ end
767
+ when 19 then
768
+ # line 75 "lib/vorax/parser/grammars/alias.rl"
769
+ begin
770
+ te = p
771
+ p = p - 1; begin @columns = data[(@start_columns..ts)] unless @columns end
772
+ end
773
+ when 20 then
774
+ # line 76 "lib/vorax/parser/grammars/alias.rl"
775
+ begin
776
+ te = p
777
+ p = p - 1; end
778
+ when 21 then
779
+ # line 77 "lib/vorax/parser/grammars/alias.rl"
780
+ begin
781
+ te = p
782
+ p = p - 1; end
783
+ when 22 then
784
+ # line 78 "lib/vorax/parser/grammars/alias.rl"
785
+ begin
786
+ te = p
787
+ p = p - 1; end
788
+ when 23 then
789
+ # line 75 "lib/vorax/parser/grammars/alias.rl"
790
+ begin
791
+ begin p = ((te))-1; end
792
+ begin @columns = data[(@start_columns..ts)] unless @columns end
793
+ end
794
+ when 24 then
795
+ # line 76 "lib/vorax/parser/grammars/alias.rl"
796
+ begin
797
+ begin p = ((te))-1; end
798
+ end
799
+ when 25 then
800
+ # line 77 "lib/vorax/parser/grammars/alias.rl"
801
+ begin
802
+ begin p = ((te))-1; end
803
+ end
804
+ when 26 then
805
+ # line 78 "lib/vorax/parser/grammars/alias.rl"
806
+ begin
807
+ begin p = ((te))-1; end
808
+ end
809
+ when 27 then
810
+ # line 1 "NONE"
811
+ begin
812
+ case act
813
+ when 4 then
814
+ begin begin p = ((te))-1; end
815
+ @start_columns = te end
816
+ when 8 then
817
+ begin begin p = ((te))-1; end
818
+ end
819
+ else
820
+ begin begin p = ((te))-1; end
821
+ end
822
+ end
823
+ end
824
+ # line 825 "lib/vorax/parser/grammars/alias.rb"
825
+ end # action switch
826
+ end
827
+ end
828
+ if _trigger_goto
829
+ next
830
+ end
831
+ end
832
+ if _goto_level <= _again
833
+ _acts = _alias_to_state_actions[cs]
834
+ _nacts = _alias_actions[_acts]
835
+ _acts += 1
836
+ while _nacts > 0
837
+ _nacts -= 1
838
+ _acts += 1
839
+ case _alias_actions[_acts - 1]
840
+ when 8 then
841
+ # line 1 "NONE"
842
+ begin
843
+ ts = nil; end
844
+ # line 845 "lib/vorax/parser/grammars/alias.rb"
845
+ end # to state action switch
846
+ end
847
+ if _trigger_goto
848
+ next
849
+ end
850
+ p += 1
851
+ if p != pe
852
+ _goto_level = _resume
853
+ next
854
+ end
855
+ end
856
+ if _goto_level <= _test_eof
857
+ if p == eof
858
+ if _alias_eof_trans[cs] > 0
859
+ _trans = _alias_eof_trans[cs] - 1;
860
+ _goto_level = _eof_trans
861
+ next;
862
+ end
863
+ end
864
+ end
865
+ if _goto_level <= _out
866
+ break
867
+ end
868
+ end
869
+ end
870
+
871
+ # line 106 "lib/vorax/parser/grammars/alias.rl"
872
+ data.chop!
873
+
874
+ # needed to finalize the last pending tableref
875
+ add_tableref
876
+ end
877
+
878
+ # Get all identified tableref/exprref references. This method
879
+ # should be called after walk.
880
+ #
881
+ # @return an array of references
882
+ def refs
883
+ @refs
884
+ end
885
+
886
+ # A string containing the column list, if there's any.
887
+ #
888
+ # @return a string with all defined columns
889
+ def query_fields
890
+ @columns
891
+ end
892
+
893
+ private
894
+
895
+ def add_tableref
896
+ if (not @table_ref.nil?)
897
+ @refs << TableRef.new(@table_ref, @alias_value)
898
+ elsif (not @subquery_text.nil?)
899
+ @refs << ExprRef.new(@subquery_text,
900
+ @subquery_range,
901
+ @alias_value)
902
+ end
903
+ @alias_value = nil
904
+ @table_ref = nil
905
+ end
906
+
907
+ end
908
+
909
+ end
910
+
911
+ end
912
+