Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ProcessHostMapPath.cs
- FormsAuthenticationTicket.cs
- FileLevelControlBuilderAttribute.cs
- BitmapCodecInfo.cs
- KeyInstance.cs
- StaticContext.cs
- NetCodeGroup.cs
- BindingExpressionUncommonField.cs
- OleDragDropHandler.cs
- TreeNodeBinding.cs
- Random.cs
- SyndicationElementExtension.cs
- SafeNativeMethods.cs
- DesignerSerializationManager.cs
- SmtpException.cs
- IsolatedStorageSecurityState.cs
- ComplexTypeEmitter.cs
- SqlFileStream.cs
- Window.cs
- HtmlInputButton.cs
- TextReader.cs
- WebPartEditVerb.cs
- QuestionEventArgs.cs
- EventMap.cs
- _OverlappedAsyncResult.cs
- ResponseBodyWriter.cs
- DebugHandleTracker.cs
- ClientScriptManager.cs
- SQLCharsStorage.cs
- NamespaceDisplay.xaml.cs
- SmiEventSink_DeferedProcessing.cs
- GroupedContextMenuStrip.cs
- SpStreamWrapper.cs
- FloaterParaClient.cs
- SignedInfo.cs
- BinaryUtilClasses.cs
- KeyValuePair.cs
- SqlProfileProvider.cs
- DashStyle.cs
- StrongName.cs
- ImageKeyConverter.cs
- CompressionTransform.cs
- FullTextBreakpoint.cs
- FontUnitConverter.cs
- SecuritySessionFilter.cs
- StreamGeometry.cs
- ServiceProviders.cs
- SelectorAutomationPeer.cs
- MembershipUser.cs
- IgnoreSectionHandler.cs
- MSAAWinEventWrap.cs
- UInt64Storage.cs
- WinEventHandler.cs
- DataColumnMapping.cs
- MatrixConverter.cs
- DSASignatureDeformatter.cs
- EntityTemplateFactory.cs
- Span.cs
- AutomationElement.cs
- WebBrowserBase.cs
- RequestCacheValidator.cs
- MobileListItem.cs
- KeyInterop.cs
- ClientRolePrincipal.cs
- XmlBinaryReader.cs
- _SSPISessionCache.cs
- TextElementCollection.cs
- FilterFactory.cs
- DetailsViewRowCollection.cs
- StateManagedCollection.cs
- DataGridViewBindingCompleteEventArgs.cs
- EllipticalNodeOperations.cs
- FixedDocumentPaginator.cs
- SingleSelectRootGridEntry.cs
- CodeSnippetCompileUnit.cs
- SimpleBitVector32.cs
- CompositeFontInfo.cs
- safesecurityhelperavalon.cs
- XmlTextReaderImpl.cs
- HtmlButton.cs
- Configuration.cs
- BaseCAMarshaler.cs
- Clipboard.cs
- HttpCookiesSection.cs
- ElasticEase.cs
- StorageAssociationTypeMapping.cs
- XmlDictionaryReaderQuotas.cs
- GroupStyle.cs
- ServiceOperationHelpers.cs
- IdentityValidationException.cs
- InputBinding.cs
- RawMouseInputReport.cs
- SafeFileMappingHandle.cs
- COM2EnumConverter.cs
- ResizingMessageFilter.cs
- ScriptReferenceEventArgs.cs
- DataServiceRequestException.cs
- _NegotiateClient.cs
- PropertyTabAttribute.cs
- Bits.cs