public static IQueryPlanNode DeserializeQueryPlan(this ISystemContext context, Type nodeType, BinaryReader reader) { var serializers = context.ResolveAllServices <IQueryPlanNodeSerializer>(); foreach (var serializer in serializers) { if (serializer.CanSerialize(nodeType)) { return((IQueryPlanNode)serializer.Deserialize(reader)); } } throw new InvalidOperationException(string.Format("Could not find any serializer for node type '{0}'.", nodeType)); }
public static IRoutine ResolveRoutine(this ISystemContext context, Invoke invoke, IQuery queryContext) { var resolvers = context.ResolveAllServices <IRoutineResolver>(); foreach (var resolver in resolvers) { var routine = resolver.ResolveRoutine(invoke, queryContext); if (routine != null) { return(routine); } } return(null); }
public static SqlType ResolveType(this ISystemContext context, string typeName, params DataTypeMeta[] meta) { var resolvers = context.ResolveAllServices <ITypeResolver>(); var resolveContext = new TypeResolveContext(SqlTypeCode.Type, typeName, meta); foreach (var typeResolver in resolvers) { var type = typeResolver.ResolveType(resolveContext); if (type != null) { return(type); } } return(null); }
public static void SerializeQueryPlan(this ISystemContext context, IQueryPlanNode node, BinaryWriter writer) { var nodeType = node.GetType(); var serializers = context.ResolveAllServices <IQueryPlanNodeSerializer>(); foreach (var serializer in serializers) { if (serializer.CanSerialize(nodeType)) { serializer.Serialize(node, writer); return; } } throw new InvalidOperationException(string.Format("Could not find any serializer for node type '{0}'.", nodeType)); }
public static IIndexFactory ResolveIndexFactory(this ISystemContext context, string indexType) { return(context.ResolveAllServices <IIndexFactory>().FirstOrDefault(x => x.HandlesIndexType(indexType))); }