Beispiel #1
0
        private void method_1(ExpParse expParse_0)
        {
            Filters fs = expParse_0.getFilters(this);

            if (DataSet.DEBUG)
            {
                bool     flag = fs.includeAllFilter();
                CellExt1 cS   = expParse_0.CS;
                if ((cS != null) && (cS.Current != null))
                {
                    if (cS.Current.Source == cS.Current)
                    {
                        if (flag)
                        {
                            Logger.info(cS.Current.SourceId.ToString().ToString() + "过滤完全使用索引");
                        }
                        else
                        {
                            Logger.info(cS.Current.SourceId.ToString().ToString() + "过滤时使用索引中遍历");
                        }
                    }
                }
                else if (flag)
                {
                    Logger.info("过滤完全使用索引");
                }
                else
                {
                    Logger.info("过滤使用索引中遍历");
                }
            }
            this.arrayList_0 = this.dataSet_0.Index.getRows(this.btree_0, fs);
            this.arrayList_0.TrimToSize();
        }
Beispiel #2
0
        public Group filter(ExpParse exp)
        {
            if (exp == null)
            {
                return(this);
            }
            if (exp.ConstantExpression)
            {
                object obj2 = exp.calculate();
                if ((obj2 is bool) && (bool)(obj2))
                {
                    return(this);
                }
            }
            Group group = (Group)base.MemberwiseClone();

            group.bool_0 = false;
            if (exp.getFilters(group) == null)
            {
                group.method_0(exp);
            }
            else
            {
                group.method_1(exp);
            }
            group.btree_0 = null;
            return(group);
        }
Beispiel #3
0
        public Row select1(ExpParse filterExp)
        {
            if (filterExp == null)
            {
                if (this.arrayList_0.Count != 0)
                {
                    return((Row)this.arrayList_0[0]);
                }
                return(this.dataSet_0.NullRow);
            }
            Filters fs = filterExp.getFilters(this);

            if (fs != null)
            {
                if (DataSet.DEBUG)
                {
                    CellExt1 cS = filterExp.CS;
                    if ((cS == null) || (cS.Current == null))
                    {
                        Logger.info("单选完全使用索引");
                    }
                    else if (cS.Current.Source == cS.Current)
                    {
                        Logger.info(cS.Current.SourceId.ToString().ToString() + "单选完全使用索引");
                    }
                }
                Row row2 = this.dataSet_0.Index.getRow(this.btree_0, fs);
                if (row2 != null)
                {
                    return(row2);
                }
            }
            else
            {
                for (int i = 0; i < this.arrayList_0.Count; i++)
                {
                    Row row3 = (Row)this.arrayList_0[i];
                    if (row3.test(filterExp))
                    {
                        return(row3);
                    }
                }
            }
            return(this.dataSet_0.NullRow);
        }