Esempio n. 1
0
 public FilterContext(DataFilter owner, Resultset source, Object filterPredicate, QueryContext queryContext, Object[] parameters)
     : base(owner, source, queryContext, parameters)
 {
     _source = source;
     _compiledBody = new FunctionLink();
     List<ColumnBinding> bindings = new List<ColumnBinding>();
     ExpressionTransformer transformer = new ExpressionTransformer(bindings);
     foreach (RowType.TypeInfo ti in source.RowType.Fields)
         foreach (RowType.TypeInfo nested_ti in ti.NestedType.Fields)
             if (!nested_ti.IsHidden)
             {
                 ColumnBinding b = new ColumnBinding();
                 b.typecode = Type.GetTypeCode(nested_ti.DataType);
                 b.rnum = ti.Ordinal;
                 b.TableName = ti.Name;
                 b.Name = nested_ti.Name;
                 b.fieldType = nested_ti;
                 b.natural = nested_ti.IsNatural;
                 b.container = nested_ti.IsContainer;
                 b.caseSensitive = nested_ti.IsCaseSensitive;
                 b.data = new SymbolLink(nested_ti.DataType);
                 bindings.Add(b);
                 if (nested_ti.IsContainer)
                     transformer.NeedTransform = true;
             }
     LispExecutive.Enter(_resolver = new DataResolver(new Binder(bindings)));
     if (transformer.NeedTransform)
         _filterPredicate = transformer.Process(filterPredicate);
     else
         _filterPredicate = filterPredicate;
 }
Esempio n. 2
0
 public SelectorContext(DataSelector owner, bool distinct, Column[] columns, DataResolver resolver,
     Resultset source, QueryContext queryContext, object[] parameters, FunctionLink[] compiledBody)
     : base(owner, source, queryContext, parameters)
 {
     _columns = columns;
     _source = source;
     _resolver = resolver;
     _topRows = owner.TopRows;
     _compiledBody = compiledBody;
     RowNum = 1;
     if (distinct)
         _distinctSet = new HashSet<Row>(new RowEqualityComparer());
     LispExecutive.Enter(resolver);
 }