1 34 package smallsql.database; 35 36 37 38 41 class ExpressionInSelect extends ExpressionArithmetic { 42 43 final private CommandSelect cmdSel; 44 final private Index index = new Index(true); 45 final private SSConnection con; 46 47 48 ExpressionInSelect(SSConnection con, Expression left, CommandSelect cmdSel, int operation) { 49 super(left, (Expressions)null, operation); 50 this.cmdSel = cmdSel; 51 this.con = con; 52 } 53 54 55 private void loadInList() throws Exception { 56 if(cmdSel.compile(con)){ 57 cmdSel.join.execute(); 58 if(cmdSel.columnExpressions.size() != 1) 59 throw Utils.createSQLException("Count of columns in subquery must be 1 and not "+cmdSel.columnExpressions.size()); 60 index.clear(); 61 while(cmdSel.next()){ 62 try{ 63 index.addValues(0, cmdSel.columnExpressions ); 64 }catch(Exception e){ 65 } 67 } 68 } 69 } 70 71 boolean isInList() throws Exception { 72 loadInList(); 73 return index.findRows( getParams(), null ) != null; 74 } 75 } 76 | Popular Tags |