Index: ql/src/java/org/apache/hadoop/hive/ql/parse/ErrorMsg.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/ErrorMsg.java (revision 1198626) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ErrorMsg.java (working copy) @@ -129,6 +129,7 @@ UDTF_NO_DISTRIBUTE_BY("DISTRUBTE BY is not supported with a UDTF in the SELECT clause"), UDTF_INVALID_LOCATION("UDTF's are not supported outside the SELECT clause, nor nested " + "in expressions"), + UDAF_INVALID_LOCATION("UDAF's are not supported outside the SELECT clause "), UDTF_LATERAL_VIEW("UDTF's cannot be in a select expression when there is a lateral view"), UDTF_ALIAS_MISMATCH("The number of aliases supplied in the AS clause does not match the " + "number of columns output by the UDTF"), Index: ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java (revision 1198626) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java (working copy) @@ -665,6 +665,11 @@ if (fi.getGenericUDTF() != null) { throw new SemanticException(ErrorMsg.UDTF_INVALID_LOCATION.getMsg()); } + + if (fi.getGenericUDAFResolver() != null) { + throw new SemanticException(ErrorMsg.UDAF_INVALID_LOCATION.getMsg()); + } + if (!ctx.getAllowStatefulFunctions() && (fi.getGenericUDF() != null)) { if (FunctionRegistry.isStateful(fi.getGenericUDF())) { throw new SemanticException( Index: ql/src/test/queries/clientnegative/orderby_function.q =================================================================== --- ql/src/test/queries/clientnegative/orderby_function.q (revision 0) +++ ql/src/test/queries/clientnegative/orderby_function.q (revision 0) @@ -0,0 +1 @@ +select count(1) from src where count(1) > 0; \ No newline at end of file Index: ql/src/test/queries/clientnegative/orderby_function1.q =================================================================== --- ql/src/test/queries/clientnegative/orderby_function1.q (revision 0) +++ ql/src/test/queries/clientnegative/orderby_function1.q (revision 0) @@ -0,0 +1 @@ +select count(1) from src group by count(1); \ No newline at end of file Index: ql/src/test/queries/clientnegative/orderby_function2.q =================================================================== --- ql/src/test/queries/clientnegative/orderby_function2.q (revision 0) +++ ql/src/test/queries/clientnegative/orderby_function2.q (revision 0) @@ -0,0 +1 @@ +select key,min(key) from src group by key order by min(key); \ No newline at end of file Index: ql/src/test/queries/clientnegative/sortby_function.q =================================================================== --- ql/src/test/queries/clientnegative/sortby_function.q (revision 0) +++ ql/src/test/queries/clientnegative/sortby_function.q (revision 0) @@ -0,0 +1 @@ +select key,min(key) from src group by key sort by min(key); \ No newline at end of file Index: ql/src/test/queries/clientpositive/orderby_function.q =================================================================== --- ql/src/test/queries/clientpositive/orderby_function.q (revision 0) +++ ql/src/test/queries/clientpositive/orderby_function.q (revision 0) @@ -0,0 +1,3 @@ +select key,min(key) from src group by key having min(key) > 100; + +select key,min(key) as mininum from src group by key order by mininum; \ No newline at end of file Index: ql/src/test/results/clientnegative/orderby_function.q.out =================================================================== --- ql/src/test/results/clientnegative/orderby_function.q.out (revision 0) +++ ql/src/test/results/clientnegative/orderby_function.q.out (revision 0) @@ -0,0 +1 @@ +FAILED: Error in semantic analysis: UDAF's are not supported outside the SELECT clause Index: ql/src/test/results/clientnegative/orderby_function1.q.out =================================================================== --- ql/src/test/results/clientnegative/orderby_function1.q.out (revision 0) +++ ql/src/test/results/clientnegative/orderby_function1.q.out (revision 0) @@ -0,0 +1 @@ +FAILED: Error in semantic analysis: UDAF's are not supported outside the SELECT clause Index: ql/src/test/results/clientnegative/orderby_function2.q.out =================================================================== --- ql/src/test/results/clientnegative/orderby_function2.q.out (revision 0) +++ ql/src/test/results/clientnegative/orderby_function2.q.out (revision 0) @@ -0,0 +1 @@ +FAILED: Error in semantic analysis: UDAF's are not supported outside the SELECT clause Index: ql/src/test/results/clientnegative/sortby_function.q.out =================================================================== --- ql/src/test/results/clientnegative/sortby_function.q.out (revision 0) +++ ql/src/test/results/clientnegative/sortby_function.q.out (revision 0) @@ -0,0 +1 @@ +FAILED: Error in semantic analysis: UDAF's are not supported outside the SELECT clause Index: ql/src/test/results/clientpositive/orderby_function.q.out =================================================================== --- ql/src/test/results/clientpositive/orderby_function.q.out (revision 0) +++ ql/src/test/results/clientpositive/orderby_function.q.out (revision 0) @@ -0,0 +1,576 @@ +PREHOOK: query: select key,min(key) from src group by key having min(key) > 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: file:/tmp/root/hive_2011-11-08_04-04-34_761_773042234059743922/-mr-10000 +POSTHOOK: query: select key,min(key) from src group by key having min(key) > 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: file:/tmp/root/hive_2011-11-08_04-04-34_761_773042234059743922/-mr-10000 +103 103 +104 104 +105 105 +111 111 +113 113 +114 114 +116 116 +118 118 +119 119 +120 120 +125 125 +126 126 +128 128 +129 129 +131 131 +133 133 +134 134 +136 136 +137 137 +138 138 +143 143 +145 145 +146 146 +149 149 +150 150 +152 152 +153 153 +155 155 +156 156 +157 157 +158 158 +160 160 +162 162 +163 163 +164 164 +165 165 +166 166 +167 167 +168 168 +169 169 +170 170 +172 172 +174 174 +175 175 +176 176 +177 177 +178 178 +179 179 +180 180 +181 181 +183 183 +186 186 +187 187 +189 189 +190 190 +191 191 +192 192 +193 193 +194 194 +195 195 +196 196 +197 197 +199 199 +200 200 +201 201 +202 202 +203 203 +205 205 +207 207 +208 208 +209 209 +213 213 +214 214 +216 216 +217 217 +218 218 +219 219 +221 221 +222 222 +223 223 +224 224 +226 226 +228 228 +229 229 +230 230 +233 233 +235 235 +237 237 +238 238 +239 239 +241 241 +242 242 +244 244 +247 247 +248 248 +249 249 +252 252 +255 255 +256 256 +257 257 +258 258 +260 260 +262 262 +263 263 +265 265 +266 266 +272 272 +273 273 +274 274 +275 275 +277 277 +278 278 +280 280 +281 281 +282 282 +283 283 +284 284 +285 285 +286 286 +287 287 +288 288 +289 289 +291 291 +292 292 +296 296 +298 298 +302 302 +305 305 +306 306 +307 307 +308 308 +309 309 +310 310 +311 311 +315 315 +316 316 +317 317 +318 318 +321 321 +322 322 +323 323 +325 325 +327 327 +331 331 +332 332 +333 333 +335 335 +336 336 +338 338 +339 339 +341 341 +342 342 +344 344 +345 345 +348 348 +351 351 +353 353 +356 356 +360 360 +362 362 +364 364 +365 365 +366 366 +367 367 +368 368 +369 369 +373 373 +374 374 +375 375 +377 377 +378 378 +379 379 +382 382 +384 384 +386 386 +389 389 +392 392 +393 393 +394 394 +395 395 +396 396 +397 397 +399 399 +400 400 +401 401 +402 402 +403 403 +404 404 +406 406 +407 407 +409 409 +411 411 +413 413 +414 414 +417 417 +418 418 +419 419 +421 421 +424 424 +427 427 +429 429 +430 430 +431 431 +432 432 +435 435 +436 436 +437 437 +438 438 +439 439 +443 443 +444 444 +446 446 +448 448 +449 449 +452 452 +453 453 +454 454 +455 455 +457 457 +458 458 +459 459 +460 460 +462 462 +463 463 +466 466 +467 467 +468 468 +469 469 +470 470 +472 472 +475 475 +477 477 +478 478 +479 479 +480 480 +481 481 +482 482 +483 483 +484 484 +485 485 +487 487 +489 489 +490 490 +491 491 +492 492 +493 493 +494 494 +495 495 +496 496 +497 497 +498 498 +PREHOOK: query: select key,min(key) as mininum from src group by key order by mininum +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: file:/tmp/root/hive_2011-11-08_04-04-41_713_4861344374400934145/-mr-10000 +POSTHOOK: query: select key,min(key) as mininum from src group by key order by mininum +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: file:/tmp/root/hive_2011-11-08_04-04-41_713_4861344374400934145/-mr-10000 +0 0 +10 10 +100 100 +103 103 +104 104 +105 105 +11 11 +111 111 +113 113 +114 114 +116 116 +118 118 +119 119 +12 12 +120 120 +125 125 +126 126 +128 128 +129 129 +131 131 +133 133 +134 134 +136 136 +137 137 +138 138 +143 143 +145 145 +146 146 +149 149 +15 15 +150 150 +152 152 +153 153 +155 155 +156 156 +157 157 +158 158 +160 160 +162 162 +163 163 +164 164 +165 165 +166 166 +167 167 +168 168 +169 169 +17 17 +170 170 +172 172 +174 174 +175 175 +176 176 +177 177 +178 178 +179 179 +18 18 +180 180 +181 181 +183 183 +186 186 +187 187 +189 189 +19 19 +190 190 +191 191 +192 192 +193 193 +194 194 +195 195 +196 196 +197 197 +199 199 +2 2 +20 20 +200 200 +201 201 +202 202 +203 203 +205 205 +207 207 +208 208 +209 209 +213 213 +214 214 +216 216 +217 217 +218 218 +219 219 +221 221 +222 222 +223 223 +224 224 +226 226 +228 228 +229 229 +230 230 +233 233 +235 235 +237 237 +238 238 +239 239 +24 24 +241 241 +242 242 +244 244 +247 247 +248 248 +249 249 +252 252 +255 255 +256 256 +257 257 +258 258 +26 26 +260 260 +262 262 +263 263 +265 265 +266 266 +27 27 +272 272 +273 273 +274 274 +275 275 +277 277 +278 278 +28 28 +280 280 +281 281 +282 282 +283 283 +284 284 +285 285 +286 286 +287 287 +288 288 +289 289 +291 291 +292 292 +296 296 +298 298 +30 30 +302 302 +305 305 +306 306 +307 307 +308 308 +309 309 +310 310 +311 311 +315 315 +316 316 +317 317 +318 318 +321 321 +322 322 +323 323 +325 325 +327 327 +33 33 +331 331 +332 332 +333 333 +335 335 +336 336 +338 338 +339 339 +34 34 +341 341 +342 342 +344 344 +345 345 +348 348 +35 35 +351 351 +353 353 +356 356 +360 360 +362 362 +364 364 +365 365 +366 366 +367 367 +368 368 +369 369 +37 37 +373 373 +374 374 +375 375 +377 377 +378 378 +379 379 +382 382 +384 384 +386 386 +389 389 +392 392 +393 393 +394 394 +395 395 +396 396 +397 397 +399 399 +4 4 +400 400 +401 401 +402 402 +403 403 +404 404 +406 406 +407 407 +409 409 +41 41 +411 411 +413 413 +414 414 +417 417 +418 418 +419 419 +42 42 +421 421 +424 424 +427 427 +429 429 +43 43 +430 430 +431 431 +432 432 +435 435 +436 436 +437 437 +438 438 +439 439 +44 44 +443 443 +444 444 +446 446 +448 448 +449 449 +452 452 +453 453 +454 454 +455 455 +457 457 +458 458 +459 459 +460 460 +462 462 +463 463 +466 466 +467 467 +468 468 +469 469 +47 47 +470 470 +472 472 +475 475 +477 477 +478 478 +479 479 +480 480 +481 481 +482 482 +483 483 +484 484 +485 485 +487 487 +489 489 +490 490 +491 491 +492 492 +493 493 +494 494 +495 495 +496 496 +497 497 +498 498 +5 5 +51 51 +53 53 +54 54 +57 57 +58 58 +64 64 +65 65 +66 66 +67 67 +69 69 +70 70 +72 72 +74 74 +76 76 +77 77 +78 78 +8 8 +80 80 +82 82 +83 83 +84 84 +85 85 +86 86 +87 87 +9 9 +90 90 +92 92 +95 95 +96 96 +97 97 +98 98