⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psql.java

📁 High performance DB query
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }    label_4:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case AND:        ;        break;      default:        jj_la1[16] = jj_gen;        break label_4;      }      jj_consume_token(AND);      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case 30:        lpredSet = doLogicalSubClause();                                if (lpredSet instanceof DisjunctiveSet) {                                        predSet.add(lpredSet);                                } else predSet.addAll(lpredSet);        break;      case COUNT:      case SUM:      case MIN:      case MAX:      case AVG:      case STAR:      case WORD:        p2 = doPredicate();                                if (predSet instanceof ConjunctiveSet) {                                        predSet.add(p2);                                }                                else {                                        ConjunctiveSet cs = new ConjunctiveSet();                                        if (predSet instanceof DisjunctiveSet) cs.add(predSet);                                        else cs.addAll(predSet);                                        cs.add(p2);                                        predSet = cs;                                }        break;      default:        jj_la1[17] = jj_gen;        jj_consume_token(-1);        throw new ParseException();      }    }            {if (true) return predSet;}    throw new Error("Missing return statement in function");  }  final public Set doLogicalDisjunction() throws ParseException {        Set lhs=null, rhs=null;    lhs = doLogicalConjunction();    label_5:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case OR:        ;        break;      default:        jj_la1[18] = jj_gen;        break label_5;      }      jj_consume_token(OR);      rhs = doLogicalConjunction();    }                if (rhs == null) {                        {if (true) return lhs;}                }                else {                        if (lhs instanceof DisjunctiveSet || lhs instanceof ConjunctiveSet) {                                // HACK: Ensure that rhs holds a Set type, unless both lhs and rhs are predicates.                                Set tmp = rhs;                                rhs = lhs;                                lhs = tmp;                        }                        if (rhs instanceof DisjunctiveSet) {                                if (lhs instanceof ConjunctiveSet) {                                        ConjunctiveSet pushedConjunction = new ConjunctiveSet();                                        for (Iterator iter = lhs.iterator(); iter.hasNext(); ) {                                                Object element = iter.next();                                                if (element instanceof Predicate) {                                                        DisjunctiveSet ds = new DisjunctiveSet();                                                        ds.addAll(rhs);                                                        ds.add(element);                                                        pushedConjunction.add(ds);                                                }                                                else if (element instanceof DisjunctiveSet) {                                                        ((DisjunctiveSet)element).addAll(rhs);                                                        pushedConjunction.add(element);                                                }                                        }                                        {if (true) return pushedConjunction;}                                }                                else if (lhs instanceof DisjunctiveSet) {                                        lhs.addAll(rhs);                                        {if (true) return lhs;}                                }                                else {                                        rhs.addAll(lhs);                                        {if (true) return rhs;}                                }                        }                        else if (rhs instanceof ConjunctiveSet) {                                ConjunctiveSet pushedConjunction = new ConjunctiveSet();                                if (!(lhs instanceof ConjunctiveSet)) {                                        for (Iterator iter = rhs.iterator(); iter.hasNext(); ) {                                                Object element = iter.next();                                                if (element instanceof Predicate) {                                                        DisjunctiveSet ds = new DisjunctiveSet();                                                        ds.add(element);                                                        ds.addAll(lhs);                                                        pushedConjunction.add(ds);                                                }                                                else if (element instanceof DisjunctiveSet) {                                                        ((DisjunctiveSet)element).addAll(lhs);                                                        pushedConjunction.add(element);                                                }                                                else {                                                        {if (true) throw new ParseException("doLogicalDisjunction: Bad left hand side element.");}                                                }                                        }                                }                                else {                                        for (Iterator riter = rhs.iterator(); riter.hasNext(); ) {                                                Object relement = riter.next();                                                assert(!(relement instanceof ConjunctiveSet));                                                for (Iterator liter = lhs.iterator(); liter.hasNext(); ) {                                                        Object    lelement = liter.next();                                                        DisjunctiveSet ds = new DisjunctiveSet();                                                        assert(!(lelement instanceof ConjunctiveSet));                                                        if (relement instanceof DisjunctiveSet) ds.addAll((Set)relement);                                                        else ds.add(relement);                                                        if (lelement instanceof DisjunctiveSet) ds.addAll((Set)lelement);                                                        else ds.add(lelement);                                                        pushedConjunction.add(ds);                                                }                                        }                                }                                {if (true) return pushedConjunction;}                        }                        else {                                // Case: Both lhs and rhs are singleton predicates, create disjunction.                                DisjunctiveSet disjunction = new DisjunctiveSet();                                disjunction.addAll(lhs);                                disjunction.addAll(rhs);                                {if (true) return disjunction;}                        }                }    throw new Error("Missing return statement in function");  }  final public Predicate doPredicate() throws ParseException {    Token text, op;    Object LHS;    Object RHS;    byte opInt;    String cast = null;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case STAR:    case WORD:      LHS = doField();      break;    case COUNT:    case SUM:    case MIN:    case MAX:    case AVG:      LHS = doAgg();      break;    default:      jj_la1[19] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }    op = jj_consume_token(COMPAREOP);    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case STAR:    case WORD:      RHS = doField();      break;    case COUNT:    case SUM:    case MIN:    case MAX:    case AVG:      RHS = doAgg();      break;    case NUMBER:      text = jj_consume_token(NUMBER);      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case CAST:        jj_consume_token(CAST);        cast = doJavaClass();        break;      default:        jj_la1[20] = jj_gen;        ;      }                        if (cast == null) { //use a default cast of Integer or Double                                if (text.image.indexOf(".") == -1) {                                        cast = "java.lang.Integer";                                } else {                                        cast = "java.lang.Double";                                }                        }                        try {                                Class parameterTypes[] = new Class[] { String.class };                                Constructor valueConstructor = Class.forName(cast).getConstructor(parameterTypes);                                Object parameterValues[] = new Object[] { text.image };                                RHS = valueConstructor.newInstance(parameterValues);                        } catch (Exception e) {                                {if (true) throw new ParseException("Unable to cast " + text.image + " to " + cast);}                        }      break;    case QUOTEDWORD:      text = jj_consume_token(QUOTEDWORD);                        RHS=text.image.substring(1, text.image.length() - 1);      break;    default:      jj_la1[21] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }        if (op.image.equals("=")) {            opInt = Predicate.EQUAL;        } else if (op.image.equals("!=") || op.image.equals("<>")) {            opInt = Predicate.NOTEQUAL;        } else if (op.image.equals(">=")) {            opInt = Predicate.GREATERTHANEQUAL;        } else if (op.image.equals(">")) {            opInt = Predicate.GREATERTHAN;        } else if (op.image.equals("<=")) {            opInt = Predicate.LESSTHANEQUAL;        } else if (op.image.equals("<")) {            opInt = Predicate.LESSTHAN;        } else {            {if (true) throw new ParseException("Illegal predicate operation: " + op.image);}        }        {if (true) return new Predicate(LHS, opInt, RHS);}    throw new Error("Missing return statement in function");  }  final public String doJavaClass() throws ParseException {    String result;    Token text;    text = jj_consume_token(WORD);                  result = text.image;    label_6:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case 28:        ;        break;      default:        jj_la1[22] = jj_gen;        break label_6;      }      jj_consume_token(28);      text = jj_consume_token(WORD);                       result += "." + text.image;    }      {if (true) return result;}    throw new Error("Missing return statement in function");  }  public PSQLTokenManager token_source;  SimpleCharStream jj_input_stream;  public Token token, jj_nt;  private int jj_ntk;  private int jj_gen;  final private int[] jj_la1 = new int[23];  static private int[] jj_la1_0;  static {      jj_la1_0();   }   private static void jj_la1_0() {      jj_la1_0 = new int[] {0x8,0x40,0x10,0x8000000,0x8000000,0x8000000,0x10000000,0x1200000,0x300000,0x300000,0x3e000,0x1000,0x80,0x33f000,0x40280000,0x4033e000,0x100,0x4033e000,0x200,0x33e000,0x40000,0xf3e000,0x10000000,};   }  public PSQL(java.io.InputStream stream) {    jj_input_stream = new SimpleCharStream(stream, 1, 1);    token_source = new PSQLTokenManager(jj_input_stream);    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 23; i++) jj_la1[i] = -1;  }  public void ReInit(java.io.InputStream stream) {    jj_input_stream.ReInit(stream, 1, 1);    token_source.ReInit(jj_input_stream);    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 23; i++) jj_la1[i] = -1;  }  public PSQL(java.io.Reader stream) {    jj_input_stream = new SimpleCharStream(stream, 1, 1);    token_source = new PSQLTokenManager(jj_input_stream);    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 23; i++) jj_la1[i] = -1;  }  public void ReInit(java.io.Reader stream) {    jj_input_stream.ReInit(stream, 1, 1);    token_source.ReInit(jj_input_stream);    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 23; i++) jj_la1[i] = -1;  }  public PSQL(PSQLTokenManager tm) {    token_source = tm;    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 23; i++) jj_la1[i] = -1;  }  public void ReInit(PSQLTokenManager tm) {    token_source = tm;    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 23; i++) jj_la1[i] = -1;  }  final private Token jj_consume_token(int kind) throws ParseException {    Token oldToken;    if ((oldToken = token).next != null) token = token.next;    else token = token.next = token_source.getNextToken();    jj_ntk = -1;    if (token.kind == kind) {      jj_gen++;      return token;    }    token = oldToken;    jj_kind = kind;    throw generateParseException();  }  final public Token getNextToken() {    if (token.next != null) token = token.next;    else token = token.next = token_source.getNextToken();    jj_ntk = -1;    jj_gen++;    return token;  }  final public Token getToken(int index) {    Token t = token;    for (int i = 0; i < index; i++) {      if (t.next != null) t = t.next;      else t = t.next = token_source.getNextToken();    }    return t;  }  final private int jj_ntk() {    if ((jj_nt=token.next) == null)      return (jj_ntk = (token.next=token_source.getNextToken()).kind);    else      return (jj_ntk = jj_nt.kind);  }  private java.util.Vector jj_expentries = new java.util.Vector();  private int[] jj_expentry;  private int jj_kind = -1;  public ParseException generateParseException() {    jj_expentries.removeAllElements();    boolean[] la1tokens = new boolean[32];    for (int i = 0; i < 32; i++) {      la1tokens[i] = false;    }    if (jj_kind >= 0) {      la1tokens[jj_kind] = true;      jj_kind = -1;    }    for (int i = 0; i < 23; i++) {      if (jj_la1[i] == jj_gen) {        for (int j = 0; j < 32; j++) {          if ((jj_la1_0[i] & (1<<j)) != 0) {            la1tokens[j] = true;          }        }      }    }    for (int i = 0; i < 32; i++) {      if (la1tokens[i]) {        jj_expentry = new int[1];        jj_expentry[0] = i;        jj_expentries.addElement(jj_expentry);      }    }    int[][] exptokseq = new int[jj_expentries.size()][];    for (int i = 0; i < jj_expentries.size(); i++) {      exptokseq[i] = (int[])jj_expentries.elementAt(i);    }    return new ParseException(token, exptokseq, tokenImage);  }  final public void enable_tracing() {  }  final public void disable_tracing() {  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -