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
- CacheDependency.cs
- CodeGotoStatement.cs
- CharUnicodeInfo.cs
- PrintDocument.cs
- StaticSiteMapProvider.cs
- PropertyPushdownHelper.cs
- SecurityContext.cs
- EnumerableRowCollectionExtensions.cs
- TextRangeSerialization.cs
- ISO2022Encoding.cs
- Endpoint.cs
- HMACRIPEMD160.cs
- _ScatterGatherBuffers.cs
- TraceXPathNavigator.cs
- PtsHelper.cs
- ControlCachePolicy.cs
- ObjectResult.cs
- MenuCommand.cs
- ProcessModelInfo.cs
- HtmlInputHidden.cs
- SpecialNameAttribute.cs
- RemotingHelper.cs
- SafeFileMappingHandle.cs
- BitmapPalettes.cs
- MissingManifestResourceException.cs
- Label.cs
- PerformanceCounterManager.cs
- CounterCreationDataConverter.cs
- PropertyMappingExceptionEventArgs.cs
- SchemaImporterExtension.cs
- FactoryRecord.cs
- ThemeDirectoryCompiler.cs
- ImportContext.cs
- JpegBitmapDecoder.cs
- BCryptNative.cs
- StringUtil.cs
- WorkerRequest.cs
- FileSystemWatcher.cs
- DataViewSetting.cs
- DocumentPaginator.cs
- EntityReference.cs
- InheritanceAttribute.cs
- SQLInt64.cs
- CodeObjectCreateExpression.cs
- TableRowCollection.cs
- TdsParameterSetter.cs
- ValidatorUtils.cs
- ModelPerspective.cs
- XmlQuerySequence.cs
- MessageQueuePermission.cs
- ColumnPropertiesGroup.cs
- MetadataWorkspace.cs
- RelatedImageListAttribute.cs
- TemplateLookupAction.cs
- Panel.cs
- EncryptedPackageFilter.cs
- InkCanvasAutomationPeer.cs
- OrderedDictionary.cs
- Debug.cs
- DataIdProcessor.cs
- Grant.cs
- ContextDataSourceView.cs
- GradientSpreadMethodValidation.cs
- Accessors.cs
- HandlerFactoryCache.cs
- CustomErrorsSectionWrapper.cs
- CategoryAttribute.cs
- EmbeddedMailObject.cs
- PersistencePipeline.cs
- AuthenticationException.cs
- PolyBezierSegment.cs
- ConnectionsZone.cs
- CreateUserWizard.cs
- HeaderCollection.cs
- CollectionViewProxy.cs
- TreeView.cs
- SoapIncludeAttribute.cs
- SafeFileMapViewHandle.cs
- ClassHandlersStore.cs
- BufferCache.cs
- HitTestResult.cs
- DataContractSerializerMessageContractImporter.cs
- HeaderLabel.cs
- DecoderBestFitFallback.cs
- MethodRental.cs
- XmlSerializationReader.cs
- RegisteredScript.cs
- PersonalizationProviderHelper.cs
- EntitySqlException.cs
- ButtonStandardAdapter.cs
- RenderDataDrawingContext.cs
- FrameDimension.cs
- UInt16Storage.cs
- TextProperties.cs
- StoryFragments.cs
- AnnotationHelper.cs
- JapaneseLunisolarCalendar.cs
- TogglePattern.cs
- SqlCrossApplyToCrossJoin.cs
- XmlArrayItemAttributes.cs