Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Query / PlanCompiler / PlanCompilerUtil.cs / 1 / PlanCompilerUtil.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System; using md = System.Data.Metadata.Edm; using System.Data.Query.InternalTrees; namespace System.Data.Query.PlanCompiler { ////// Utility class for the methods shared among the plan compiler components /// internal static class PlanCompilerUtil { ////// Utility method that determines whether a given CaseOp subtree can be optimized. /// Called by both PreProcessor and NominalTypeEliminator. /// /// If the case statement is of the shape: /// case when X then NULL else Y, or /// case when X then Y else NULL, /// where Y is of row type, and the types of the input CaseOp, the NULL and Y are the same, /// return true /// /// /// ///internal static bool IsRowTypeCaseOpWithNullability(CaseOp op, Node n, out bool thenClauseIsNull) { thenClauseIsNull = false; //any default value will do if (!md.TypeSemantics.IsRowType(op.Type)) { return false; } if (n.Children.Count != 3) { return false; } //All three types must be equal if (!n.Child1.Op.Type.EdmEquals(op.Type) || !n.Child2.Op.Type.EdmEquals(op.Type)) { return false; } //At least one of Child1 and Child2 needs to be a null if (n.Child1.Op.OpType == OpType.Null) { thenClauseIsNull = true; return true; } if (n.Child2.Op.OpType == OpType.Null) { // thenClauseIsNull stays false return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System; using md = System.Data.Metadata.Edm; using System.Data.Query.InternalTrees; namespace System.Data.Query.PlanCompiler { ////// Utility class for the methods shared among the plan compiler components /// internal static class PlanCompilerUtil { ////// Utility method that determines whether a given CaseOp subtree can be optimized. /// Called by both PreProcessor and NominalTypeEliminator. /// /// If the case statement is of the shape: /// case when X then NULL else Y, or /// case when X then Y else NULL, /// where Y is of row type, and the types of the input CaseOp, the NULL and Y are the same, /// return true /// /// /// ///internal static bool IsRowTypeCaseOpWithNullability(CaseOp op, Node n, out bool thenClauseIsNull) { thenClauseIsNull = false; //any default value will do if (!md.TypeSemantics.IsRowType(op.Type)) { return false; } if (n.Children.Count != 3) { return false; } //All three types must be equal if (!n.Child1.Op.Type.EdmEquals(op.Type) || !n.Child2.Op.Type.EdmEquals(op.Type)) { return false; } //At least one of Child1 and Child2 needs to be a null if (n.Child1.Op.OpType == OpType.Null) { thenClauseIsNull = true; return true; } if (n.Child2.Op.OpType == OpType.Null) { // thenClauseIsNull stays false return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExpandedWrapper.cs
- ExceptionHandlers.cs
- CommonDialog.cs
- WriteableOnDemandStream.cs
- MulticastOption.cs
- StringAttributeCollection.cs
- GenerateTemporaryTargetAssembly.cs
- GridViewSortEventArgs.cs
- IndicShape.cs
- CompilationRelaxations.cs
- RepeaterItem.cs
- ForEachDesigner.xaml.cs
- HtmlShimManager.cs
- ZoneLinkButton.cs
- SqlNotificationEventArgs.cs
- DuplicateMessageDetector.cs
- EpmContentDeSerializer.cs
- WorkerRequest.cs
- ColumnClickEvent.cs
- RuntimeEnvironment.cs
- EventLogger.cs
- DependencyPropertyKey.cs
- IsolatedStorage.cs
- Exceptions.cs
- UpdateProgress.cs
- WebPartEventArgs.cs
- StylusLogic.cs
- ConnectionManagementElement.cs
- ImportCatalogPart.cs
- GridViewRow.cs
- BaseTemplateBuildProvider.cs
- Deflater.cs
- RoutedEventHandlerInfo.cs
- FormsAuthenticationConfiguration.cs
- CheckedPointers.cs
- GridItemProviderWrapper.cs
- EmbeddedMailObject.cs
- ETagAttribute.cs
- UIElementCollection.cs
- ConnectionConsumerAttribute.cs
- ImageBrush.cs
- NonParentingControl.cs
- WebBrowserHelper.cs
- CachingHintValidation.cs
- NavigationProperty.cs
- EncoderReplacementFallback.cs
- AssemblyAttributes.cs
- GifBitmapEncoder.cs
- TrackingServices.cs
- DataGridColumn.cs
- FunctionImportMapping.cs
- EdmComplexPropertyAttribute.cs
- DesignSurfaceManager.cs
- AsymmetricSignatureDeformatter.cs
- BoolExpression.cs
- InkCanvasFeedbackAdorner.cs
- DurableInstanceProvider.cs
- Accessible.cs
- BuilderInfo.cs
- EntityProviderFactory.cs
- XmlReaderSettings.cs
- EntityProviderFactory.cs
- SqlDependencyUtils.cs
- DataSourceCache.cs
- XmlILAnnotation.cs
- Documentation.cs
- BindingMAnagerBase.cs
- StorageModelBuildProvider.cs
- RecipientInfo.cs
- TaskScheduler.cs
- EntityConnection.cs
- TextDecorationCollectionConverter.cs
- OdbcTransaction.cs
- ToolStripSeparator.cs
- ArgumentValidation.cs
- ThrowHelper.cs
- ConnectionPoint.cs
- KeyValueSerializer.cs
- CodeArrayCreateExpression.cs
- InkCanvasSelectionAdorner.cs
- SimpleHandlerFactory.cs
- ImageField.cs
- TransformProviderWrapper.cs
- DesignerPerfEventProvider.cs
- DiscardableAttribute.cs
- XmlSchemaSimpleTypeUnion.cs
- DBSchemaTable.cs
- PublisherMembershipCondition.cs
- SpecialNameAttribute.cs
- FontFamily.cs
- LogStream.cs
- RewritingSimplifier.cs
- SoapDocumentServiceAttribute.cs
- StatusBarItemAutomationPeer.cs
- SmtpNetworkElement.cs
- RelatedPropertyManager.cs
- HtmlTextArea.cs
- XmlSchemaIdentityConstraint.cs
- DynamicObjectAccessor.cs
- RewritingPass.cs