Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- LicenseManager.cs
- Operand.cs
- TypedTableBase.cs
- GiveFeedbackEvent.cs
- InputMethodStateChangeEventArgs.cs
- FirstMatchCodeGroup.cs
- NavigationService.cs
- MappingMetadataHelper.cs
- EdmToObjectNamespaceMap.cs
- FrameworkElementAutomationPeer.cs
- BindingElementCollection.cs
- CodeRegionDirective.cs
- ReceiveActivityDesignerTheme.cs
- NavigationPropertySingletonExpression.cs
- CallbackHandler.cs
- Validator.cs
- CompilerScopeManager.cs
- ColorContextHelper.cs
- ObjRef.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- CodePageEncoding.cs
- LineVisual.cs
- ButtonAutomationPeer.cs
- RegisteredHiddenField.cs
- MSAAWinEventWrap.cs
- BitHelper.cs
- WebPartsPersonalizationAuthorization.cs
- CopyAction.cs
- CaretElement.cs
- TypeHelper.cs
- HtmlGenericControl.cs
- SqlDataSourceParameterParser.cs
- ContentDisposition.cs
- StorageMappingItemCollection.cs
- CopyNodeSetAction.cs
- Regex.cs
- PrintDialog.cs
- WindowsSolidBrush.cs
- CompositeScriptReference.cs
- BrushConverter.cs
- SettingsPropertyCollection.cs
- XmlTextEncoder.cs
- StyleSheetRefUrlEditor.cs
- OleCmdHelper.cs
- IteratorFilter.cs
- TearOffProxy.cs
- FunctionImportElement.cs
- BaseValidator.cs
- _DigestClient.cs
- ListView.cs
- AttributeCollection.cs
- AssociationTypeEmitter.cs
- OleDbInfoMessageEvent.cs
- XmlExpressionDumper.cs
- ModulesEntry.cs
- HtmlListAdapter.cs
- DataTableReader.cs
- SqlBuilder.cs
- Pool.cs
- Attributes.cs
- ClientUrlResolverWrapper.cs
- TypeBuilder.cs
- Expander.cs
- TextParagraphProperties.cs
- ConfigXmlAttribute.cs
- RadioButtonBaseAdapter.cs
- DelegatedStream.cs
- BuildManager.cs
- HyperlinkAutomationPeer.cs
- TableLayoutSettings.cs
- ReliableReplySessionChannel.cs
- PageContent.cs
- DataControlButton.cs
- CodeLinePragma.cs
- Debug.cs
- SqlEnums.cs
- FrameworkTemplate.cs
- XmlAttributeHolder.cs
- AmbientLight.cs
- ObjectRef.cs
- InputProviderSite.cs
- DayRenderEvent.cs
- SerializableAttribute.cs
- SizeAnimationClockResource.cs
- PartialCachingControl.cs
- xsdvalidator.cs
- WindowsHyperlink.cs
- EntryPointNotFoundException.cs
- TimeoutStream.cs
- CollectionBuilder.cs
- PrivilegeNotHeldException.cs
- String.cs
- WebPartAddingEventArgs.cs
- ItemList.cs
- ImageMap.cs
- SafeNativeMethods.cs
- DataGridViewAdvancedBorderStyle.cs
- RuleInfoComparer.cs
- FileDialogCustomPlaces.cs
- LinqToSqlWrapper.cs