You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by zs...@apache.org on 2009/02/25 00:09:44 UTC
svn commit: r747600 - in /hadoop/hive/trunk: CHANGES.txt
ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
ql/src/test/queries/clientpositive/mapreduce8.q
ql/src/test/results/clientpositive/mapreduce8.q.out
Author: zshao
Date: Tue Feb 24 23:09:43 2009
New Revision: 747600
URL: http://svn.apache.org/viewvc?rev=747600&view=rev
Log:
HIVE-300. DISTRIBUTE BY now supports expressions. (zshao)
Added:
hadoop/hive/trunk/ql/src/test/queries/clientpositive/mapreduce8.q
hadoop/hive/trunk/ql/src/test/results/clientpositive/mapreduce8.q.out
Modified:
hadoop/hive/trunk/CHANGES.txt
hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
Modified: hadoop/hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/CHANGES.txt?rev=747600&r1=747599&r2=747600&view=diff
==============================================================================
--- hadoop/hive/trunk/CHANGES.txt (original)
+++ hadoop/hive/trunk/CHANGES.txt Tue Feb 24 23:09:43 2009
@@ -71,6 +71,8 @@
IMPROVEMENTS
+ HIVE-300. DISTRIBUTE BY now supports expressions. (zshao)
+
HIVE-292. Replace MetadataTypedColumnsetSerde with LazySimpleSerDe. (zshao)
HIVE-294. Support MAP(a.*), REDUCE(a.*) and TRANSFORM(a.*). (zshao)
Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g?rev=747600&r1=747599&r2=747600&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g Tue Feb 24 23:09:43 2009
@@ -811,8 +811,7 @@
@after { msgs.pop(); }
:
KW_DISTRIBUTE KW_BY
- tableColumn
- ( COMMA tableColumn )* -> ^(TOK_DISTRIBUTEBY tableColumn+)
+ expression (COMMA expression)* -> ^(TOK_DISTRIBUTEBY expression+)
;
sortByClause
Added: hadoop/hive/trunk/ql/src/test/queries/clientpositive/mapreduce8.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/mapreduce8.q?rev=747600&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/mapreduce8.q (added)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/mapreduce8.q Tue Feb 24 23:09:43 2009
@@ -0,0 +1,19 @@
+CREATE TABLE dest1(k STRING, v STRING, key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE;
+
+EXPLAIN
+FROM src
+INSERT OVERWRITE TABLE dest1
+MAP src.*, src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value
+USING '/bin/cat' AS (k, v, tkey, ten, one, tvalue)
+DISTRIBUTE BY rand(3)
+SORT BY tvalue, tkey;
+
+
+FROM src
+INSERT OVERWRITE TABLE dest1
+MAP src.*, src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value
+USING '/bin/cat' AS (k, v, tkey, ten, one, tvalue)
+DISTRIBUTE BY rand(3)
+SORT BY tvalue, tkey;
+
+SELECT dest1.* FROM dest1;
Added: hadoop/hive/trunk/ql/src/test/results/clientpositive/mapreduce8.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/mapreduce8.q.out?rev=747600&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/mapreduce8.q.out (added)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/mapreduce8.q.out Tue Feb 24 23:09:43 2009
@@ -0,0 +1,576 @@
+ABSTRACT SYNTAX TREE:
+ (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_TRANSFORM (TOK_EXPLIST (TOK_ALLCOLREF src) (TOK_COLREF src key) (TOK_FUNCTION TOK_INT (/ (TOK_COLREF src key) 10)) (TOK_FUNCTION TOK_INT (% (TOK_COLREF src key) 10)) (TOK_COLREF src value)) '/bin/cat' (TOK_ALIASLIST k v tkey ten one tvalue)))) (TOK_DISTRIBUTEBY (TOK_FUNCTION rand 3)) (TOK_SORTBY (TOK_TABSORTCOLNAMEASC (TOK_COLREF tvalue)) (TOK_TABSORTCOLNAMEASC (TOK_COLREF tkey)))))
+
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Alias -> Map Operator Tree:
+ src
+ Select Operator
+ expressions:
+ expr: key
+ type: string
+ expr: value
+ type: string
+ expr: key
+ type: string
+ expr: UDFToInteger((UDFToDouble(key) / UDFToDouble(10)))
+ type: int
+ expr: UDFToInteger((UDFToDouble(key) % UDFToDouble(10)))
+ type: int
+ expr: value
+ type: string
+ Transform Operator
+ command: /bin/cat
+ output info:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+ Reduce Output Operator
+ key expressions:
+ expr: tvalue
+ type: string
+ expr: tkey
+ type: string
+ sort order: ++
+ Map-reduce partition columns:
+ expr: rand(UDFToLong(3))
+ type: double
+ tag: -1
+ value expressions:
+ expr: k
+ type: string
+ expr: v
+ type: string
+ expr: tkey
+ type: string
+ expr: ten
+ type: string
+ expr: one
+ type: string
+ expr: tvalue
+ type: string
+ Reduce Operator Tree:
+ Extract
+ File Output Operator
+ compressed: false
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ name: dest1
+
+ Stage: Stage-0
+ Move Operator
+ tables:
+ replace: true
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ name: dest1
+
+
+0 val_0 0 0 0 val_0
+0 val_0 0 0 0 val_0
+0 val_0 0 0 0 val_0
+10 val_10 10 1 0 val_10
+100 val_100 100 10 0 val_100
+100 val_100 100 10 0 val_100
+103 val_103 103 10 3 val_103
+103 val_103 103 10 3 val_103
+104 val_104 104 10 4 val_104
+104 val_104 104 10 4 val_104
+105 val_105 105 10 5 val_105
+11 val_11 11 1 1 val_11
+111 val_111 111 11 1 val_111
+113 val_113 113 11 3 val_113
+113 val_113 113 11 3 val_113
+114 val_114 114 11 4 val_114
+116 val_116 116 11 6 val_116
+118 val_118 118 11 8 val_118
+118 val_118 118 11 8 val_118
+119 val_119 119 11 9 val_119
+119 val_119 119 11 9 val_119
+119 val_119 119 11 9 val_119
+12 val_12 12 1 2 val_12
+12 val_12 12 1 2 val_12
+120 val_120 120 12 0 val_120
+120 val_120 120 12 0 val_120
+125 val_125 125 12 5 val_125
+125 val_125 125 12 5 val_125
+126 val_126 126 12 6 val_126
+128 val_128 128 12 8 val_128
+128 val_128 128 12 8 val_128
+128 val_128 128 12 8 val_128
+129 val_129 129 12 9 val_129
+129 val_129 129 12 9 val_129
+131 val_131 131 13 1 val_131
+133 val_133 133 13 3 val_133
+134 val_134 134 13 4 val_134
+134 val_134 134 13 4 val_134
+136 val_136 136 13 6 val_136
+137 val_137 137 13 7 val_137
+137 val_137 137 13 7 val_137
+138 val_138 138 13 8 val_138
+138 val_138 138 13 8 val_138
+138 val_138 138 13 8 val_138
+138 val_138 138 13 8 val_138
+143 val_143 143 14 3 val_143
+145 val_145 145 14 5 val_145
+146 val_146 146 14 6 val_146
+146 val_146 146 14 6 val_146
+149 val_149 149 14 9 val_149
+149 val_149 149 14 9 val_149
+15 val_15 15 1 5 val_15
+15 val_15 15 1 5 val_15
+150 val_150 150 15 0 val_150
+152 val_152 152 15 2 val_152
+152 val_152 152 15 2 val_152
+153 val_153 153 15 3 val_153
+155 val_155 155 15 5 val_155
+156 val_156 156 15 6 val_156
+157 val_157 157 15 7 val_157
+158 val_158 158 15 8 val_158
+160 val_160 160 16 0 val_160
+162 val_162 162 16 2 val_162
+163 val_163 163 16 3 val_163
+164 val_164 164 16 4 val_164
+164 val_164 164 16 4 val_164
+165 val_165 165 16 5 val_165
+165 val_165 165 16 5 val_165
+166 val_166 166 16 6 val_166
+167 val_167 167 16 7 val_167
+167 val_167 167 16 7 val_167
+167 val_167 167 16 7 val_167
+168 val_168 168 16 8 val_168
+169 val_169 169 16 9 val_169
+169 val_169 169 16 9 val_169
+169 val_169 169 16 9 val_169
+169 val_169 169 16 9 val_169
+17 val_17 17 1 7 val_17
+170 val_170 170 17 0 val_170
+172 val_172 172 17 2 val_172
+172 val_172 172 17 2 val_172
+174 val_174 174 17 4 val_174
+174 val_174 174 17 4 val_174
+175 val_175 175 17 5 val_175
+175 val_175 175 17 5 val_175
+176 val_176 176 17 6 val_176
+176 val_176 176 17 6 val_176
+177 val_177 177 17 7 val_177
+178 val_178 178 17 8 val_178
+179 val_179 179 17 9 val_179
+179 val_179 179 17 9 val_179
+18 val_18 18 1 8 val_18
+18 val_18 18 1 8 val_18
+180 val_180 180 18 0 val_180
+181 val_181 181 18 1 val_181
+183 val_183 183 18 3 val_183
+186 val_186 186 18 6 val_186
+187 val_187 187 18 7 val_187
+187 val_187 187 18 7 val_187
+187 val_187 187 18 7 val_187
+189 val_189 189 18 9 val_189
+19 val_19 19 1 9 val_19
+190 val_190 190 19 0 val_190
+191 val_191 191 19 1 val_191
+191 val_191 191 19 1 val_191
+192 val_192 192 19 2 val_192
+193 val_193 193 19 3 val_193
+193 val_193 193 19 3 val_193
+193 val_193 193 19 3 val_193
+194 val_194 194 19 4 val_194
+195 val_195 195 19 5 val_195
+195 val_195 195 19 5 val_195
+196 val_196 196 19 6 val_196
+197 val_197 197 19 7 val_197
+197 val_197 197 19 7 val_197
+199 val_199 199 19 9 val_199
+199 val_199 199 19 9 val_199
+199 val_199 199 19 9 val_199
+2 val_2 2 0 2 val_2
+20 val_20 20 2 0 val_20
+200 val_200 200 20 0 val_200
+200 val_200 200 20 0 val_200
+201 val_201 201 20 1 val_201
+202 val_202 202 20 2 val_202
+203 val_203 203 20 3 val_203
+203 val_203 203 20 3 val_203
+205 val_205 205 20 5 val_205
+205 val_205 205 20 5 val_205
+207 val_207 207 20 7 val_207
+207 val_207 207 20 7 val_207
+208 val_208 208 20 8 val_208
+208 val_208 208 20 8 val_208
+208 val_208 208 20 8 val_208
+209 val_209 209 20 9 val_209
+209 val_209 209 20 9 val_209
+213 val_213 213 21 3 val_213
+213 val_213 213 21 3 val_213
+214 val_214 214 21 4 val_214
+216 val_216 216 21 6 val_216
+216 val_216 216 21 6 val_216
+217 val_217 217 21 7 val_217
+217 val_217 217 21 7 val_217
+218 val_218 218 21 8 val_218
+219 val_219 219 21 9 val_219
+219 val_219 219 21 9 val_219
+221 val_221 221 22 1 val_221
+221 val_221 221 22 1 val_221
+222 val_222 222 22 2 val_222
+223 val_223 223 22 3 val_223
+223 val_223 223 22 3 val_223
+224 val_224 224 22 4 val_224
+224 val_224 224 22 4 val_224
+226 val_226 226 22 6 val_226
+228 val_228 228 22 8 val_228
+229 val_229 229 22 9 val_229
+229 val_229 229 22 9 val_229
+230 val_230 230 23 0 val_230
+230 val_230 230 23 0 val_230
+230 val_230 230 23 0 val_230
+230 val_230 230 23 0 val_230
+230 val_230 230 23 0 val_230
+233 val_233 233 23 3 val_233
+233 val_233 233 23 3 val_233
+235 val_235 235 23 5 val_235
+237 val_237 237 23 7 val_237
+237 val_237 237 23 7 val_237
+238 val_238 238 23 8 val_238
+238 val_238 238 23 8 val_238
+239 val_239 239 23 9 val_239
+239 val_239 239 23 9 val_239
+24 val_24 24 2 4 val_24
+24 val_24 24 2 4 val_24
+241 val_241 241 24 1 val_241
+242 val_242 242 24 2 val_242
+242 val_242 242 24 2 val_242
+244 val_244 244 24 4 val_244
+247 val_247 247 24 7 val_247
+248 val_248 248 24 8 val_248
+249 val_249 249 24 9 val_249
+252 val_252 252 25 2 val_252
+255 val_255 255 25 5 val_255
+255 val_255 255 25 5 val_255
+256 val_256 256 25 6 val_256
+256 val_256 256 25 6 val_256
+257 val_257 257 25 7 val_257
+258 val_258 258 25 8 val_258
+26 val_26 26 2 6 val_26
+26 val_26 26 2 6 val_26
+260 val_260 260 26 0 val_260
+262 val_262 262 26 2 val_262
+263 val_263 263 26 3 val_263
+265 val_265 265 26 5 val_265
+265 val_265 265 26 5 val_265
+266 val_266 266 26 6 val_266
+27 val_27 27 2 7 val_27
+272 val_272 272 27 2 val_272
+272 val_272 272 27 2 val_272
+273 val_273 273 27 3 val_273
+273 val_273 273 27 3 val_273
+273 val_273 273 27 3 val_273
+274 val_274 274 27 4 val_274
+275 val_275 275 27 5 val_275
+277 val_277 277 27 7 val_277
+277 val_277 277 27 7 val_277
+277 val_277 277 27 7 val_277
+277 val_277 277 27 7 val_277
+278 val_278 278 27 8 val_278
+278 val_278 278 27 8 val_278
+28 val_28 28 2 8 val_28
+280 val_280 280 28 0 val_280
+280 val_280 280 28 0 val_280
+281 val_281 281 28 1 val_281
+281 val_281 281 28 1 val_281
+282 val_282 282 28 2 val_282
+282 val_282 282 28 2 val_282
+283 val_283 283 28 3 val_283
+284 val_284 284 28 4 val_284
+285 val_285 285 28 5 val_285
+286 val_286 286 28 6 val_286
+287 val_287 287 28 7 val_287
+288 val_288 288 28 8 val_288
+288 val_288 288 28 8 val_288
+289 val_289 289 28 9 val_289
+291 val_291 291 29 1 val_291
+292 val_292 292 29 2 val_292
+296 val_296 296 29 6 val_296
+298 val_298 298 29 8 val_298
+298 val_298 298 29 8 val_298
+298 val_298 298 29 8 val_298
+30 val_30 30 3 0 val_30
+302 val_302 302 30 2 val_302
+305 val_305 305 30 5 val_305
+306 val_306 306 30 6 val_306
+307 val_307 307 30 7 val_307
+307 val_307 307 30 7 val_307
+308 val_308 308 30 8 val_308
+309 val_309 309 30 9 val_309
+309 val_309 309 30 9 val_309
+310 val_310 310 31 0 val_310
+311 val_311 311 31 1 val_311
+311 val_311 311 31 1 val_311
+311 val_311 311 31 1 val_311
+315 val_315 315 31 5 val_315
+316 val_316 316 31 6 val_316
+316 val_316 316 31 6 val_316
+316 val_316 316 31 6 val_316
+317 val_317 317 31 7 val_317
+317 val_317 317 31 7 val_317
+318 val_318 318 31 8 val_318
+318 val_318 318 31 8 val_318
+318 val_318 318 31 8 val_318
+321 val_321 321 32 1 val_321
+321 val_321 321 32 1 val_321
+322 val_322 322 32 2 val_322
+322 val_322 322 32 2 val_322
+323 val_323 323 32 3 val_323
+325 val_325 325 32 5 val_325
+325 val_325 325 32 5 val_325
+327 val_327 327 32 7 val_327
+327 val_327 327 32 7 val_327
+327 val_327 327 32 7 val_327
+33 val_33 33 3 3 val_33
+331 val_331 331 33 1 val_331
+331 val_331 331 33 1 val_331
+332 val_332 332 33 2 val_332
+333 val_333 333 33 3 val_333
+333 val_333 333 33 3 val_333
+335 val_335 335 33 5 val_335
+336 val_336 336 33 6 val_336
+338 val_338 338 33 8 val_338
+339 val_339 339 33 9 val_339
+34 val_34 34 3 4 val_34
+341 val_341 341 34 1 val_341
+342 val_342 342 34 2 val_342
+342 val_342 342 34 2 val_342
+344 val_344 344 34 4 val_344
+344 val_344 344 34 4 val_344
+345 val_345 345 34 5 val_345
+348 val_348 348 34 8 val_348
+348 val_348 348 34 8 val_348
+348 val_348 348 34 8 val_348
+348 val_348 348 34 8 val_348
+348 val_348 348 34 8 val_348
+35 val_35 35 3 5 val_35
+35 val_35 35 3 5 val_35
+35 val_35 35 3 5 val_35
+351 val_351 351 35 1 val_351
+353 val_353 353 35 3 val_353
+353 val_353 353 35 3 val_353
+356 val_356 356 35 6 val_356
+360 val_360 360 36 0 val_360
+362 val_362 362 36 2 val_362
+364 val_364 364 36 4 val_364
+365 val_365 365 36 5 val_365
+366 val_366 366 36 6 val_366
+367 val_367 367 36 7 val_367
+367 val_367 367 36 7 val_367
+368 val_368 368 36 8 val_368
+369 val_369 369 36 9 val_369
+369 val_369 369 36 9 val_369
+369 val_369 369 36 9 val_369
+37 val_37 37 3 7 val_37
+37 val_37 37 3 7 val_37
+373 val_373 373 37 3 val_373
+374 val_374 374 37 4 val_374
+375 val_375 375 37 5 val_375
+377 val_377 377 37 7 val_377
+378 val_378 378 37 8 val_378
+379 val_379 379 37 9 val_379
+382 val_382 382 38 2 val_382
+382 val_382 382 38 2 val_382
+384 val_384 384 38 4 val_384
+384 val_384 384 38 4 val_384
+384 val_384 384 38 4 val_384
+386 val_386 386 38 6 val_386
+389 val_389 389 38 9 val_389
+392 val_392 392 39 2 val_392
+393 val_393 393 39 3 val_393
+394 val_394 394 39 4 val_394
+395 val_395 395 39 5 val_395
+395 val_395 395 39 5 val_395
+396 val_396 396 39 6 val_396
+396 val_396 396 39 6 val_396
+396 val_396 396 39 6 val_396
+397 val_397 397 39 7 val_397
+397 val_397 397 39 7 val_397
+399 val_399 399 39 9 val_399
+399 val_399 399 39 9 val_399
+4 val_4 4 0 4 val_4
+400 val_400 400 40 0 val_400
+401 val_401 401 40 1 val_401
+401 val_401 401 40 1 val_401
+401 val_401 401 40 1 val_401
+401 val_401 401 40 1 val_401
+401 val_401 401 40 1 val_401
+402 val_402 402 40 2 val_402
+403 val_403 403 40 3 val_403
+403 val_403 403 40 3 val_403
+403 val_403 403 40 3 val_403
+404 val_404 404 40 4 val_404
+404 val_404 404 40 4 val_404
+406 val_406 406 40 6 val_406
+406 val_406 406 40 6 val_406
+406 val_406 406 40 6 val_406
+406 val_406 406 40 6 val_406
+407 val_407 407 40 7 val_407
+409 val_409 409 40 9 val_409
+409 val_409 409 40 9 val_409
+409 val_409 409 40 9 val_409
+41 val_41 41 4 1 val_41
+411 val_411 411 41 1 val_411
+413 val_413 413 41 3 val_413
+413 val_413 413 41 3 val_413
+414 val_414 414 41 4 val_414
+414 val_414 414 41 4 val_414
+417 val_417 417 41 7 val_417
+417 val_417 417 41 7 val_417
+417 val_417 417 41 7 val_417
+418 val_418 418 41 8 val_418
+419 val_419 419 41 9 val_419
+42 val_42 42 4 2 val_42
+42 val_42 42 4 2 val_42
+421 val_421 421 42 1 val_421
+424 val_424 424 42 4 val_424
+424 val_424 424 42 4 val_424
+427 val_427 427 42 7 val_427
+429 val_429 429 42 9 val_429
+429 val_429 429 42 9 val_429
+43 val_43 43 4 3 val_43
+430 val_430 430 43 0 val_430
+430 val_430 430 43 0 val_430
+430 val_430 430 43 0 val_430
+431 val_431 431 43 1 val_431
+431 val_431 431 43 1 val_431
+431 val_431 431 43 1 val_431
+432 val_432 432 43 2 val_432
+435 val_435 435 43 5 val_435
+436 val_436 436 43 6 val_436
+437 val_437 437 43 7 val_437
+438 val_438 438 43 8 val_438
+438 val_438 438 43 8 val_438
+438 val_438 438 43 8 val_438
+439 val_439 439 43 9 val_439
+439 val_439 439 43 9 val_439
+44 val_44 44 4 4 val_44
+443 val_443 443 44 3 val_443
+444 val_444 444 44 4 val_444
+446 val_446 446 44 6 val_446
+448 val_448 448 44 8 val_448
+449 val_449 449 44 9 val_449
+452 val_452 452 45 2 val_452
+453 val_453 453 45 3 val_453
+454 val_454 454 45 4 val_454
+454 val_454 454 45 4 val_454
+454 val_454 454 45 4 val_454
+455 val_455 455 45 5 val_455
+457 val_457 457 45 7 val_457
+458 val_458 458 45 8 val_458
+458 val_458 458 45 8 val_458
+459 val_459 459 45 9 val_459
+459 val_459 459 45 9 val_459
+460 val_460 460 46 0 val_460
+462 val_462 462 46 2 val_462
+462 val_462 462 46 2 val_462
+463 val_463 463 46 3 val_463
+463 val_463 463 46 3 val_463
+466 val_466 466 46 6 val_466
+466 val_466 466 46 6 val_466
+466 val_466 466 46 6 val_466
+467 val_467 467 46 7 val_467
+468 val_468 468 46 8 val_468
+468 val_468 468 46 8 val_468
+468 val_468 468 46 8 val_468
+468 val_468 468 46 8 val_468
+469 val_469 469 46 9 val_469
+469 val_469 469 46 9 val_469
+469 val_469 469 46 9 val_469
+469 val_469 469 46 9 val_469
+469 val_469 469 46 9 val_469
+47 val_47 47 4 7 val_47
+470 val_470 470 47 0 val_470
+472 val_472 472 47 2 val_472
+475 val_475 475 47 5 val_475
+477 val_477 477 47 7 val_477
+478 val_478 478 47 8 val_478
+478 val_478 478 47 8 val_478
+479 val_479 479 47 9 val_479
+480 val_480 480 48 0 val_480
+480 val_480 480 48 0 val_480
+480 val_480 480 48 0 val_480
+481 val_481 481 48 1 val_481
+482 val_482 482 48 2 val_482
+483 val_483 483 48 3 val_483
+484 val_484 484 48 4 val_484
+485 val_485 485 48 5 val_485
+487 val_487 487 48 7 val_487
+489 val_489 489 48 9 val_489
+489 val_489 489 48 9 val_489
+489 val_489 489 48 9 val_489
+489 val_489 489 48 9 val_489
+490 val_490 490 49 0 val_490
+491 val_491 491 49 1 val_491
+492 val_492 492 49 2 val_492
+492 val_492 492 49 2 val_492
+493 val_493 493 49 3 val_493
+494 val_494 494 49 4 val_494
+495 val_495 495 49 5 val_495
+496 val_496 496 49 6 val_496
+497 val_497 497 49 7 val_497
+498 val_498 498 49 8 val_498
+498 val_498 498 49 8 val_498
+498 val_498 498 49 8 val_498
+5 val_5 5 0 5 val_5
+5 val_5 5 0 5 val_5
+5 val_5 5 0 5 val_5
+51 val_51 51 5 1 val_51
+51 val_51 51 5 1 val_51
+53 val_53 53 5 3 val_53
+54 val_54 54 5 4 val_54
+57 val_57 57 5 7 val_57
+58 val_58 58 5 8 val_58
+58 val_58 58 5 8 val_58
+64 val_64 64 6 4 val_64
+65 val_65 65 6 5 val_65
+66 val_66 66 6 6 val_66
+67 val_67 67 6 7 val_67
+67 val_67 67 6 7 val_67
+69 val_69 69 6 9 val_69
+70 val_70 70 7 0 val_70
+70 val_70 70 7 0 val_70
+70 val_70 70 7 0 val_70
+72 val_72 72 7 2 val_72
+72 val_72 72 7 2 val_72
+74 val_74 74 7 4 val_74
+76 val_76 76 7 6 val_76
+76 val_76 76 7 6 val_76
+77 val_77 77 7 7 val_77
+78 val_78 78 7 8 val_78
+8 val_8 8 0 8 val_8
+80 val_80 80 8 0 val_80
+82 val_82 82 8 2 val_82
+83 val_83 83 8 3 val_83
+83 val_83 83 8 3 val_83
+84 val_84 84 8 4 val_84
+84 val_84 84 8 4 val_84
+85 val_85 85 8 5 val_85
+86 val_86 86 8 6 val_86
+87 val_87 87 8 7 val_87
+9 val_9 9 0 9 val_9
+90 val_90 90 9 0 val_90
+90 val_90 90 9 0 val_90
+90 val_90 90 9 0 val_90
+92 val_92 92 9 2 val_92
+95 val_95 95 9 5 val_95
+95 val_95 95 9 5 val_95
+96 val_96 96 9 6 val_96
+97 val_97 97 9 7 val_97
+97 val_97 97 9 7 val_97
+98 val_98 98 9 8 val_98
+98 val_98 98 9 8 val_98