vorax 0.1.0pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+