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); } }
internal virtual string Visit(DryadInputNode node, CodeMemberMethod vertexMethod, string[] readerNames, string[] writerNames) { return node.AddVertexCode(vertexMethod, readerNames, writerNames); }