diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java index c4f04cb..c735be1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java @@ -129,7 +129,7 @@ public boolean fetch(List res) throws IOException, CommandNeedRetryException { rowsRet = work.getLimit() >= 0 ? Math.min(work.getLimit() - totalRows, maxRows) : maxRows; } try { - if (rowsRet <= 0) { + if (rowsRet <= 0 || work.getLimit() == totalRows) { fetch.clearFetchContext(); return false; } diff --git ql/src/test/queries/clientpositive/global_limit.q ql/src/test/queries/clientpositive/global_limit.q index c8a08af..988105c 100644 --- ql/src/test/queries/clientpositive/global_limit.q +++ ql/src/test/queries/clientpositive/global_limit.q @@ -62,6 +62,9 @@ alter table gl_src_part1 add partition (p='13'); select key from gl_src_part1 where p='13' ORDER BY key ASC limit 10; select key from gl_src_part1 where p='12' ORDER BY key ASC limit 1000; +set hive.fetch.task.conversion=none; +select * from gl_src1 limit 1; + drop table gl_src1; drop table gl_src2; drop table gl_src_part1; diff --git ql/src/test/results/clientpositive/global_limit.q.out ql/src/test/results/clientpositive/global_limit.q.out index a4923a3..7da20d5 100644 --- ql/src/test/results/clientpositive/global_limit.q.out +++ ql/src/test/results/clientpositive/global_limit.q.out @@ -1633,6 +1633,15 @@ POSTHOOK: Input: default@gl_src_part1@p=12 495 495 495 +PREHOOK: query: select * from gl_src1 limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@gl_src1 +#### A masked pattern was here #### +POSTHOOK: query: select * from gl_src1 limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@gl_src1 +#### A masked pattern was here #### +165 val_165 PREHOOK: query: drop table gl_src1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@gl_src1