7 local _parse_sql_actions = { [0] =
8 0, 1, 0, 1, 1, 2, 0, 2, 2, 0, 9, 2, 0, 10, 2, 0, 11, 2, 0, 13,
9 2, 1, 2, 2, 1, 6, 3, 0, 3, 4, 3, 0, 3, 5, 3, 0, 3, 7, 3, 0,
10 3, 8, 3, 0, 3, 12, 4, 0, 2, 3, 7, 4, 0, 3, 8, 11
13 local _parse_sql_trans_keys = { [0] =
14 0, 0, 45, 45, 10, 10, 42, 42, 10, 42, 10, 47, 82, 82,
15 69, 69, 65, 65, 84, 84, 69, 69, 32, 32, 68, 84, 65,
16 65, 84, 84, 65, 65, 66, 66, 65, 65, 83, 83, 69, 69,
17 9, 47, 9, 96, 45, 45, 10, 10, 42, 42, 10, 42, 10, 47,
18 10, 96, 10, 96, 9, 47, 9, 59, 45, 45, 10, 10, 42,
19 42, 10, 42, 10, 47, 65, 65, 66, 66, 76, 76, 69, 69,
20 32, 32, 73, 96, 70, 70, 32, 32, 78, 78, 79, 79, 84, 84,
21 32, 32, 69, 69, 88, 88, 73, 73, 83, 83, 84, 84, 83,
22 83, 32, 32, 96, 96, 10, 96, 10, 96, 32, 32, 40, 40,
23 10, 10, 32, 41, 32, 32, 75, 96, 69, 69, 89, 89, 32, 32,
24 96, 96, 10, 96, 10, 96, 10, 10, 82, 82, 73, 73, 77,
25 77, 65, 65, 82, 82, 89, 89, 32, 32, 75, 75, 69, 69,
26 89, 89, 32, 32, 78, 78, 73, 73, 81, 81, 85, 85, 69, 69,
27 32, 32, 75, 75, 10, 96, 10, 96, 10, 10, 10, 59, 10,
28 59, 82, 82, 79, 79, 80, 80, 32, 32, 84, 84, 65, 65,
29 66, 66, 76, 76, 69, 69, 32, 32, 73, 73, 70, 70, 32, 32,
30 69, 69, 88, 88, 73, 73, 83, 83, 84, 84, 83, 83, 32,
31 32, 96, 96, 10, 96, 10, 96, 59, 59, 78, 78, 83, 83,
32 69, 69, 82, 82, 84, 84, 32, 32, 73, 73, 78, 78, 84, 84,
33 79, 79, 32, 32, 96, 96, 10, 96, 10, 96, 32, 32, 40,
34 86, 10, 41, 32, 32, 86, 86, 65, 65, 76, 76, 85, 85,
35 69, 69, 83, 83, 32, 32, 40, 40, 39, 78, 10, 92, 10, 92,
36 41, 44, 44, 59, 32, 78, 48, 57, 41, 57, 48, 57, 41,
37 57, 85, 85, 76, 76, 76, 76, 34, 116, 79, 79, 67, 67,
38 75, 75, 32, 32, 84, 84, 65, 65, 66, 66, 76, 76, 69, 69,
39 83, 83, 32, 32, 96, 96, 10, 96, 10, 96, 32, 32, 87,
40 87, 82, 82, 73, 73, 84, 84, 69, 69, 69, 69, 84, 84,
41 32, 32, 10, 59, 10, 59, 78, 83, 76, 76, 79, 79, 67, 67,
42 75, 75, 32, 32, 84, 84, 65, 65, 66, 66, 76, 76, 69,
43 69, 83, 83, 69, 69, 9, 85, 0
46 local _parse_sql_key_spans = { [0] =
47 0, 1, 1, 1, 33, 38, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1,
48 39, 88, 1, 1, 1, 33, 38, 87, 87, 39, 51, 1, 1, 1, 33, 38, 1, 1, 1, 1,
49 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 1, 1,
50 1, 10, 1, 22, 1, 1, 1, 1, 87, 87, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
51 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 1, 50, 50, 1, 1, 1, 1, 1, 1,
52 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 1, 1, 1,
53 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 1, 47, 32, 1, 1, 1, 1, 1,
54 1, 1, 1, 1, 40, 83, 83, 4, 16, 47, 10, 17, 10, 17, 1, 1, 1, 83, 1, 1,
55 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 1, 1, 1, 1, 1, 1, 1, 1,
56 1, 50, 50, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 77
59 local _parse_sql_index_offsets = { [0] =
60 0, 0, 2, 4, 6, 40, 79, 81, 83, 85, 87, 89, 91, 109, 111, 113, 115, 117, 119, 121,
61 123, 163, 252, 254, 256, 258, 292, 331, 419, 507, 547, 599, 601, 603, 605, 639, 678, 680, 682, 684,
62 686, 688, 713, 715, 717, 719, 721, 723, 725, 727, 729, 731, 733, 735, 737, 739, 741, 829, 917, 919,
63 921, 923, 934, 936, 959, 961, 963, 965, 967, 1055, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157, 1159, 1161,
64 1163, 1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1269, 1357, 1359, 1410, 1461, 1463, 1465, 1467, 1469, 1471,
65 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 1491, 1493, 1495, 1497, 1499, 1501, 1503, 1591, 1679, 1681, 1683,
66 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699, 1701, 1703, 1705, 1793, 1881, 1883, 1931, 1964, 1966, 1968, 1970, 1972,
67 1974, 1976, 1978, 1980, 1982, 2023, 2107, 2191, 2196, 2213, 2261, 2272, 2290, 2301, 2319, 2321, 2323, 2325, 2409, 2411,
68 2413, 2415, 2417, 2419, 2421, 2423, 2425, 2427, 2429, 2431, 2433, 2521, 2609, 2611, 2613, 2615, 2617, 2619, 2621, 2623,
69 2625, 2627, 2678, 2729, 2736, 2738, 2740, 2742, 2744, 2746, 2748, 2750, 2752, 2754, 2756, 2758, 2760
72 local _parse_sql_indicies = { [0] =
73 0, 1, 2, 0, 3, 1, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
74 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3,
75 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
76 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 6, 3, 7,
77 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1,
78 1, 1, 1, 1, 1, 1, 1, 14, 1, 15, 1, 16, 1, 17, 1, 18, 1, 19, 1, 20,
79 1, 21, 1, 22, 23, 22, 22, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
80 1, 1, 1, 1, 1, 1, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24,
81 1, 25, 1, 22, 23, 22, 22, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
82 1, 1, 1, 1, 1, 1, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24,
83 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
84 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
85 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 1, 27, 1, 23, 27, 28, 1, 29, 28,
86 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
87 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 28, 29, 28, 28, 28, 28, 28, 28, 28,
88 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
89 28, 28, 28, 28, 30, 28, 28, 28, 28, 22, 28, 32, 31, 31, 31, 31, 31, 31, 31, 31,
90 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
91 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
92 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
93 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 31, 32,
94 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
95 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
96 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
97 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
98 31, 31, 31, 31, 31, 33, 31, 34, 35, 34, 34, 34, 1, 1, 1, 1, 1, 1, 1, 1,
99 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1,
100 1, 1, 1, 36, 1, 37, 1, 34, 35, 34, 34, 34, 1, 1, 1, 1, 1, 1, 1, 1,
101 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1,
102 1, 1, 1, 36, 1, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 38,
103 1, 35, 38, 39, 1, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
104 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 39, 40,
105 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
106 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 39, 39, 39, 39, 34, 39, 42, 1,
107 43, 1, 44, 1, 45, 1, 46, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
108 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 49, 1, 50, 1, 51, 1, 52,
109 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 1, 48,
110 1, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
111 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
112 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
113 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
114 62, 62, 62, 62, 62, 62, 62, 1, 62, 65, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
115 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
116 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
117 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
118 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 66, 64, 67, 1, 68,
119 1, 69, 1, 70, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 72, 1, 73, 1, 1, 1,
120 1, 74, 1, 1, 1, 1, 75, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 77,
121 1, 78, 1, 79, 1, 80, 1, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
122 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
123 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
124 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
125 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 1, 81, 82, 81, 81, 81, 81,
126 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
127 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
128 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
129 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
130 81, 83, 81, 69, 83, 84, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 91,
131 1, 92, 1, 93, 1, 83, 1, 94, 1, 95, 1, 96, 1, 97, 1, 98, 1, 99, 1, 73,
132 1, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
133 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
134 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
135 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
136 100, 100, 100, 100, 100, 100, 100, 1, 100, 103, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
137 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
138 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
139 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
140 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 104, 102, 105, 83, 106,
141 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
142 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
143 71, 71, 71, 71, 71, 71, 71, 71, 107, 71, 108, 71, 71, 71, 71, 71, 71, 71, 71, 71,
144 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
145 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 107,
146 71, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 118,
147 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 1, 128,
148 1, 129, 1, 131, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
149 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
150 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
151 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
152 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 130, 131, 130, 130, 130, 130, 130, 130, 130, 130,
153 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
154 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
155 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
156 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 132, 130, 6,
157 1, 133, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, 1, 139, 1, 140, 1, 141, 1, 142,
158 1, 143, 1, 144, 1, 146, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
159 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
160 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
161 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
162 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 1, 145, 148, 147, 147, 147, 147, 147, 147,
163 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
164 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
165 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
166 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 149,
167 147, 150, 1, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
168 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
169 1, 1, 1, 1, 1, 1, 1, 1, 1, 152, 1, 153, 151, 151, 151, 151, 151, 151, 151, 151,
170 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
171 151, 151, 154, 151, 155, 1, 152, 1, 156, 1, 157, 1, 158, 1, 159, 1, 160, 1, 161, 1,
172 162, 1, 163, 1, 1, 1, 1, 1, 164, 1, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165,
173 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
174 1, 166, 1, 168, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
175 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 169, 167, 167, 167, 167, 167, 167, 167,
176 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
177 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
178 167, 167, 167, 167, 167, 170, 167, 172, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
179 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 173, 171, 171, 171,
180 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
181 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
182 171, 171, 171, 171, 171, 171, 171, 171, 171, 174, 171, 175, 1, 1, 176, 1, 161, 1, 1, 1,
183 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 178, 1, 1, 1, 1, 1, 1,
184 163, 1, 1, 1, 1, 1, 164, 1, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1,
185 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 166,
186 1, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 1, 180, 1, 1, 181, 1, 182, 1, 179,
187 179, 179, 179, 179, 179, 179, 179, 179, 179, 1, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
188 1, 180, 1, 1, 181, 1, 1, 1, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 1, 184,
189 1, 185, 1, 186, 1, 171, 1, 1, 171, 1, 171, 1, 1, 1, 1, 1, 1, 1, 1, 171,
190 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
191 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
192 1, 171, 1, 171, 1, 1, 171, 1, 1, 171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
193 1, 171, 1, 1, 1, 171, 1, 171, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192,
194 1, 193, 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 200, 199, 199, 199, 199, 199, 199,
195 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
196 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
197 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
198 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 1,
199 199, 200, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
200 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
201 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
202 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
203 199, 199, 199, 199, 199, 199, 199, 201, 199, 202, 1, 203, 1, 204, 1, 205, 1, 206, 1, 132,
204 1, 207, 1, 208, 1, 209, 1, 210, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
205 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
206 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 211, 209, 2, 209,
207 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
208 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209 209, 209, 209, 209, 209, 209, 209, 211, 209, 212, 1, 1, 1, 1, 213, 1, 214, 1, 215, 1,
210 216, 1, 217, 1, 218, 1, 219, 1, 220, 1, 221, 1, 222, 1, 223, 1, 132, 1, 127, 1,
211 6, 2, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
212 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 224, 1, 225, 1,
213 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 226, 227,
214 1, 1, 1, 1, 228, 1, 1, 229, 1, 1, 1, 1, 1, 1, 230, 1, 231, 1, 0
217 local _parse_sql_trans_targs = { [0] =
218 2, 0, 196, 4, 4, 5, 196, 7, 8, 9, 10, 11, 12, 13, 36, 14, 15, 16, 17, 18,
219 19, 20, 21, 21, 22, 24, 27, 23, 25, 25, 26, 28, 28, 29, 30, 30, 31, 33, 32, 34,
220 34, 35, 37, 38, 39, 40, 41, 42, 56, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
221 54, 55, 57, 57, 57, 57, 58, 59, 60, 61, 62, 92, 63, 64, 71, 82, 89, 65, 66, 67,
222 68, 69, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88,
223 90, 90, 90, 90, 91, 70, 92, 93, 196, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
224 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 116, 117, 119, 120, 121, 122, 123, 124, 125,
225 126, 127, 128, 129, 130, 131, 131, 131, 131, 132, 133, 134, 137, 134, 135, 136, 138, 139, 140, 141,
226 142, 143, 144, 145, 150, 151, 154, 146, 146, 147, 157, 146, 146, 147, 157, 148, 149, 196, 144, 151,
227 148, 149, 152, 153, 155, 156, 147, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
228 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 181, 182, 184, 195, 185, 186, 187, 188, 189, 190,
229 191, 192, 193, 194, 1, 3, 6, 94, 118, 158, 178, 183
232 local _parse_sql_trans_actions = { [0] =
233 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
234 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1,
235 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
236 1, 1, 5, 20, 1, 3, 30, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
237 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
238 5, 20, 1, 3, 26, 3, 3, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
239 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
240 1, 1, 1, 1, 1, 5, 20, 1, 3, 42, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1,
241 1, 1, 11, 1, 5, 5, 1, 5, 20, 46, 5, 1, 3, 34, 1, 14, 1, 17, 1, 1,
242 51, 38, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
243 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
244 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
247 local parse_sql_start = 196;
248 local parse_sql_first_final = 196;
249 local parse_sql_error = 0;
251 local parse_sql_en_main = 196;
256 local _sql_unescapes = setmetatable({
268 },{ __index = function(t, s) assert(false, "Unknown escape sequences: "..s); end });
270 function parse_sql(data, h)
272 local pe = #data + 1;
275 local pos_char, pos_line = 1, 1;
278 local table_name, columns, value_lists, value_list, value_count;
281 cs = parse_sql_start;
285 local testEof = false;
293 local _goto_level = 0;
295 local _eof_trans = 15;
297 local _test_eof = 30;
300 while true do -- goto loop
301 local _continue = false;
303 local _trigger_goto = false;
304 if _goto_level <= 0 then
308 _goto_level = _test_eof;
309 _continue = true; break;
316 _continue = true; break;
318 end -- _goto_level <= 0
320 if _goto_level <= _resume then
321 _keys = cs * 2; -- LOCATE_TRANS
322 _inds = _parse_sql_index_offsets[cs];
323 _slen = _parse_sql_key_spans[cs];
326 _parse_sql_trans_keys[_keys] <= data:byte(p) and
327 data:byte(p) <= _parse_sql_trans_keys[_keys + 1] then
328 _trans = _parse_sql_indicies[ _inds + data:byte(p) - _parse_sql_trans_keys[_keys] ];
329 else _trans =_parse_sql_indicies[ _inds + _slen ]; end
331 cs = _parse_sql_trans_targs[_trans];
333 if _parse_sql_trans_actions[_trans] ~= 0 then
334 _acts = _parse_sql_trans_actions[_trans];
335 _nacts = _parse_sql_actions[_acts];
341 _tempval = _parse_sql_actions[_acts - 1];
343 -- start action switch
344 if _tempval == 0 then --4 FROM_STATE_ACTION_SWITCH
345 -- line 34 "sql.rl" -- end of line directive
346 pos_char = pos_char + 1; -- ACTION
347 elseif _tempval == 1 then --4 FROM_STATE_ACTION_SWITCH
348 -- line 35 "sql.rl" -- end of line directive
349 pos_line = pos_line + 1; pos_char = 1; -- ACTION
350 elseif _tempval == 2 then --4 FROM_STATE_ACTION_SWITCH
351 -- line 38 "sql.rl" -- end of line directive
353 elseif _tempval == 3 then --4 FROM_STATE_ACTION_SWITCH
354 -- line 39 "sql.rl" -- end of line directive
355 token = data:sub(mark, p-1); -- ACTION
356 elseif _tempval == 4 then --4 FROM_STATE_ACTION_SWITCH
357 -- line 52 "sql.rl" -- end of line directive
358 table.insert(columns, token); columns[#columns] = token; -- ACTION
359 elseif _tempval == 5 then --4 FROM_STATE_ACTION_SWITCH
360 -- line 58 "sql.rl" -- end of line directive
361 table_name,columns = token,{}; -- ACTION
362 elseif _tempval == 6 then --4 FROM_STATE_ACTION_SWITCH
363 -- line 59 "sql.rl" -- end of line directive
364 h.create(table_name, columns); -- ACTION
365 elseif _tempval == 7 then --4 FROM_STATE_ACTION_SWITCH
366 -- line 65 "sql.rl" -- end of line directive
368 value_count = value_count + 1; value_list[value_count] = token:gsub("\\.", _sql_unescapes);
370 elseif _tempval == 8 then --4 FROM_STATE_ACTION_SWITCH
371 -- line 68 "sql.rl" -- end of line directive
372 value_count = value_count + 1; value_list[value_count] = tonumber(token); -- ACTION
373 elseif _tempval == 9 then --4 FROM_STATE_ACTION_SWITCH
374 -- line 69 "sql.rl" -- end of line directive
375 value_count = value_count + 1; -- ACTION
376 elseif _tempval == 10 then --4 FROM_STATE_ACTION_SWITCH
377 -- line 71 "sql.rl" -- end of line directive
378 value_list,value_count = {},0; -- ACTION
379 elseif _tempval == 11 then --4 FROM_STATE_ACTION_SWITCH
380 -- line 71 "sql.rl" -- end of line directive
381 table.insert(value_lists, value_list); -- ACTION
382 elseif _tempval == 12 then --4 FROM_STATE_ACTION_SWITCH
383 -- line 74 "sql.rl" -- end of line directive
384 table_name,value_lists = token,{}; -- ACTION
385 elseif _tempval == 13 then --4 FROM_STATE_ACTION_SWITCH
386 -- line 75 "sql.rl" -- end of line directive
387 h.insert(table_name, value_lists); -- ACTION
389 -- line 355 "sql.lua" -- end of line directive
394 if _trigger_goto then _continue = true; break; end
397 if _goto_level <= _again then
400 _continue = true; break;
404 _goto_level = _resume;
405 _continue = true; break;
407 end -- _goto_level <= _again
409 if _goto_level <= _test_eof then
410 end -- _goto_level <= _test_eof
412 if _goto_level <= _out then break; end
415 if not _continue then break; end
416 end -- endif _goto_level <= out
418 -- end of execute block
421 if cs < parse_sql_first_final then
422 print("parse_sql: there was an error, line "..pos_line.." column "..pos_char);
424 print("Success. EOF at line "..pos_line.." column "..pos_char)
431 package.path = [[C:\Documents and Settings\Waqas\Desktop\mercurial\prosody-hg\?.lua;]]..package.path;
433 -- ugly workaround for getting datamanager to work outside of prosody :(
435 prosody.platform = "unknown";
436 if os.getenv("WINDIR") then
437 prosody.platform = "windows";
438 elseif package.config:sub(1,1) == "/" then
439 prosody.platform = "_posix";
441 package.loaded["util.logger"] = {init = function() return function() end; end}
443 local dm = require "util.datamanager";
444 dm.set_data_path("data");
446 local datetime = require "util.datetime";
448 local st = require "util.stanza";
449 local parse_xml = require "util.xml".parse;
451 function store_password(username, host, password)
452 -- create or update account for username@host
453 local ret, err = dm.store(username, host, "accounts", {password = password});
454 print("["..(err or "success").."] stored account: "..username.."@"..host.." = "..password);
457 function store_vcard(username, host, stanza)
458 -- create or update vCard for username@host
459 local ret, err = dm.store(username, host, "vcard", st.preserialize(stanza));
460 print("["..(err or "success").."] stored vCard: "..username.."@"..host);
463 function store_roster(username, host, roster_items)
464 -- fetch current roster-table for username@host if he already has one
465 local roster = dm.load(username, host, "roster") or {};
466 -- merge imported roster-items with loaded roster
467 for item_tag in roster_items:childtags() do
468 -- jid for this roster-item
469 local item_jid = item_tag.attr.jid
470 -- validate item stanzas
471 if (item_tag.name == "item") and (item_jid ~= "") then
472 -- prepare roster item
473 -- TODO: is the subscription attribute optional?
474 local item = {subscription = item_tag.attr.subscription, groups = {}};
475 -- optional: give roster item a real name
476 if item_tag.attr.name then
477 item.name = item_tag.attr.name;
479 -- optional: iterate over group stanzas inside item stanza
480 for group_tag in item_tag:childtags() do
481 local group_name = group_tag:get_text();
482 if (group_tag.name == "group") and (group_name ~= "") then
483 item.groups[group_name] = true;
485 print("[error] invalid group stanza: "..group_tag:pretty_print());
488 -- store item in roster
489 roster[item_jid] = item;
490 print("[success] roster entry: " ..username.."@"..host.." - "..item_jid);
492 print("[error] invalid roster stanza: " ..item_tag:pretty_print());
496 -- store merged roster-table
497 local ret, err = dm.store(username, host, "roster", roster);
498 print("["..(err or "success").."] stored roster: " ..username.."@"..host);
501 function store_subscription_request(username, host, presence_stanza)
502 local from_bare = presence_stanza.attr.from;
504 -- fetch current roster-table for username@host if he already has one
505 local roster = dm.load(username, host, "roster") or {};
507 local item = roster[from_bare];
508 if item and (item.subscription == "from" or item.subscription == "both") then
509 return; -- already subscribed, do nothing
512 -- add to table of pending subscriptions
513 if not roster.pending then roster.pending = {}; end
514 roster.pending[from_bare] = true;
516 -- store updated roster-table
517 local ret, err = dm.store(username, host, "roster", roster);
518 print("["..(err or "success").."] stored subscription request: " ..username.."@"..host.." - "..from_bare);
521 local os_date = os.date;
522 local os_time = os.time;
523 local os_difftime = os.difftime;
524 function datetime_parse(s)
526 local year, month, day, hour, min, sec, tzd;
527 year, month, day, hour, min, sec, tzd = s:match("^(%d%d%d%d)%-?(%d%d)%-?(%d%d)T(%d%d):(%d%d):(%d%d)%.?%d*([Z+%-]?.*)$");
529 local time_offset = os_difftime(os_time(os_date("*t")), os_time(os_date("!*t"))); -- to deal with local timezone
530 local tzd_offset = 0;
531 if tzd ~= "" and tzd ~= "Z" then
532 local sign, h, m = tzd:match("([+%-])(%d%d):?(%d*)");
533 if not sign then return; end
534 if #m ~= 2 then m = "0"; end
535 h, m = tonumber(h), tonumber(m);
536 tzd_offset = h * 60 * 60 + m * 60;
537 if sign == "-" then tzd_offset = -tzd_offset; end
539 sec = (sec + time_offset) - tzd_offset;
540 return os_time({year=year, month=month, day=day, hour=hour, min=min, sec=sec, isdst=false});
545 function store_offline_messages(username, host, stanza)
546 -- TODO: maybe use list_load(), append and list_store() instead
547 -- of constantly reopening the file with list_append()?
548 --for ch in offline_messages:childtags() do
549 --print("message :"..ch:pretty_print());
550 stanza.attr.node = nil;
552 local stamp = stanza:get_child("x", "jabber:x:delay");
553 if not stamp or not stamp.attr.stamp then print(2) return; end
555 for i=1,#stanza do if stanza[i] == stamp then table.remove(stanza, i); break; end end
556 for i=1,#stanza.tags do if stanza.tags[i] == stamp then table.remove(stanza.tags, i); break; end end
558 local parsed_stamp = datetime_parse(stamp.attr.stamp);
559 if not parsed_stamp then print(1, stamp.attr.stamp) return; end
561 stanza.attr.stamp, stanza.attr.stamp_legacy = datetime.datetime(parsed_stamp), datetime.legacy(parsed_stamp);
562 local ret, err = dm.list_append(username, host, "offline", st.preserialize(stanza));
563 print("["..(err or "success").."] stored offline message: " ..username.."@"..host.." - "..stanza.attr.from);
569 local help = "/? -? ? /h -h /help -help --help";
570 if not arg or help:find(arg, 1, true) then
571 print([[XEP-227 importer for Prosody
573 Usage: jabberd14sql2prosody.lua filename.sql
577 local f = io.open(arg);
578 local s = f:read("*a");
581 local table_count = 0;
582 local insert_count = 0;
586 create = function(table_name, columns)
587 --[[print(table_name);]]
588 table_count = table_count + 1;
590 insert = function(table_name, value_lists)
591 --[[print(table_name, #value_lists);]]
592 insert_count = insert_count + 1;
593 row_count = row_count + #value_lists;
595 for _,value_list in ipairs(value_lists) do
596 if table_name == "users" then
597 local user, realm, password = unpack(value_list);
598 store_password(user, realm, password);
599 elseif table_name == "roster" then
600 local user, realm, xml = unpack(value_list);
601 local stanza,err = parse_xml(xml);
603 store_roster(user, realm, stanza);
605 print("[error] roster: XML parsing failed for "..user.."@"..realm..": "..err);
607 elseif table_name == "vcard" then
608 local user, realm, name, email, nickname, birthday, photo, xml = unpack(value_list);
610 local stanza,err = parse_xml(xml);
612 store_vcard(user, realm, stanza);
614 print("[error] vcard: XML parsing failed for "..user.."@"..realm..": "..err);
617 --print("[warn] vcard: NULL vCard for "..user.."@"..realm..": "..err);
619 elseif table_name == "storedsubscriptionrequests" then
620 local user, realm, fromjid, xml = unpack(value_list);
621 local stanza,err = parse_xml(xml);
623 store_subscription_request(user, realm, stanza);
625 print("[error] storedsubscriptionrequests: XML parsing failed for "..user.."@"..realm..": "..err);
627 elseif table_name == "messages" then
628 --local user, realm, node, correspondent, type, storetime, delivertime, subject, body, xml = unpack(value_list);
629 local user, realm, type, xml = value_list[1], value_list[2], value_list[5], value_list[10];
630 if type == "offline" and xml ~= "" then
631 local stanza,err = parse_xml(xml);
633 store_offline_messages(user, realm, stanza);
635 print("[error] offline messages: XML parsing failed for "..user.."@"..realm..": "..err);
636 print(unpack(value_list));
644 print("table_count", table_count);
645 print("insert_count", insert_count);
646 print("row_count", row_count);