Example #1
0
        internal DryadQueryNode Visit(QueryNodeInfo nodeInfo)
        {
            Expression expression = nodeInfo.queryExpression;
            if (expression.NodeType == ExpressionType.Call)
            {
                MethodCallExpression mcExpr = (MethodCallExpression)expression;
                if (mcExpr.Method.IsStatic && TypeSystem.IsQueryOperatorCall(mcExpr))
                {
                    return this.VisitQueryOperatorCall(nodeInfo);
                }

                throw DryadLinqException.Create(HpcLinqErrorCode.OperatorNotSupported,
                                              String.Format(SR.OperatorNotSupported, mcExpr.Method.Name),
                                              expression);
            }
            else if (expression.NodeType == ExpressionType.Constant)
            {
                DryadInputNode inputNode = new DryadInputNode(this, (ConstantExpression)expression);
                if (!this.m_inputUriMap.ContainsKey(inputNode.Table.DataSourceUri.ToLower()))
                {
                    this.m_inputUriMap.Add(inputNode.Table.DataSourceUri.ToLower(), inputNode);
                }
                return inputNode;
            }
            else
            {
                string errMsg = "Can't handle expression of type " + expression.NodeType;
                throw DryadLinqException.Create(HpcLinqErrorCode.UnsupportedExpressionsType,
                                              String.Format(SR.UnsupportedExpressionsType,expression.NodeType),
                                              expression);
            }
        }
Example #2
0
 internal virtual string Visit(DryadInputNode node,
                               CodeMemberMethod vertexMethod,
                               string[] readerNames,
                               string[] writerNames)
 {
     return node.AddVertexCode(vertexMethod, readerNames, writerNames);
 }