1 28 29 package com.caucho.db.sql; 30 31 import com.caucho.db.table.TableIterator; 32 import com.caucho.log.Log; 33 34 import java.io.IOException ; 35 import java.sql.SQLException ; 36 import java.util.logging.Logger ; 37 38 class RowIterateExpr extends Expr { 39 private static final Logger log = Log.open(RowIterateExpr.class); 40 41 44 boolean init(QueryContext context, TableIterator rowIter) 45 throws SQLException , IOException 46 { 47 rowIter.init(context); 48 49 return nextBlock(context, rowIter); 50 } 51 52 55 boolean initRow(QueryContext context, TableIterator rowIter) 56 throws SQLException , IOException 57 { 58 rowIter.initRow(); 59 60 return rowIter.nextRow(); 61 } 62 63 66 boolean nextRow(QueryContext context, TableIterator rowIter) 67 throws IOException , SQLException 68 { 69 return rowIter.nextRow(); 70 } 71 72 75 boolean allowChildRowShift(QueryContext context, TableIterator rowIter) 76 { 77 return true; 78 } 79 80 83 boolean nextBlock(QueryContext context, TableIterator rowIter) 84 throws IOException , SQLException 85 { 86 context.unlock(); 87 88 while (rowIter.nextBlock()) { 89 context.lock(); 90 91 rowIter.initRow(); 92 93 if (rowIter.nextRow()) 94 return true; 95 96 context.unlock(); 97 } 98 99 return false; 100 } 101 } 102 | Popular Tags |