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
- ImpersonateTokenRef.cs
- XsdDataContractExporter.cs
- DataServiceBehavior.cs
- XamlSerializerUtil.cs
- Random.cs
- BridgeDataRecord.cs
- TransactionInformation.cs
- CodePrimitiveExpression.cs
- HWStack.cs
- DataStreams.cs
- PlatformNotSupportedException.cs
- DataGridColumnCollection.cs
- ObjectCloneHelper.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- PerfService.cs
- RecognizerStateChangedEventArgs.cs
- DrawingBrush.cs
- DSACryptoServiceProvider.cs
- StsCommunicationException.cs
- SelectingProviderEventArgs.cs
- ISAPIRuntime.cs
- Composition.cs
- FontClient.cs
- WebPartTransformerCollection.cs
- PointLight.cs
- SafeFileHandle.cs
- TreeIterators.cs
- ServiceDesigner.cs
- CallbackException.cs
- ValueExpressions.cs
- PassportIdentity.cs
- InfiniteTimeSpanConverter.cs
- _SingleItemRequestCache.cs
- SimpleHandlerBuildProvider.cs
- Cursor.cs
- RegexGroup.cs
- DataGridItemEventArgs.cs
- DesignerActionMethodItem.cs
- LayoutTable.cs
- DesignObjectWrapper.cs
- AuthenticationServiceManager.cs
- InputMethod.cs
- Int32EqualityComparer.cs
- WebPart.cs
- CorrelationTokenTypeConvertor.cs
- XmlSchemaType.cs
- WebAdminConfigurationHelper.cs
- NamespaceEmitter.cs
- ProfileBuildProvider.cs
- ConfigurationException.cs
- TextStore.cs
- ResourcePart.cs
- StandardToolWindows.cs
- ExpressionVisitor.cs
- Reference.cs
- MultiplexingDispatchMessageFormatter.cs
- TriState.cs
- QueryInterceptorAttribute.cs
- ElapsedEventArgs.cs
- SqlGatherProducedAliases.cs
- InputBinding.cs
- CorrelationManager.cs
- SamlAttributeStatement.cs
- WindowsIPAddress.cs
- NamespaceMapping.cs
- SequentialOutput.cs
- MemberInitExpression.cs
- ListMarkerSourceInfo.cs
- InvalidProgramException.cs
- DbSourceCommand.cs
- LockedHandleGlyph.cs
- VerificationException.cs
- XPathPatternParser.cs
- DataGridViewCellCollection.cs
- DataSourceCacheDurationConverter.cs
- CorrelationActionMessageFilter.cs
- TextEditorSpelling.cs
- ArrayList.cs
- ConfigurationLockCollection.cs
- SurrogateDataContract.cs
- AccessViolationException.cs
- ReadOnlyDictionary.cs
- InstanceCollisionException.cs
- DBCSCodePageEncoding.cs
- tibetanshape.cs
- ManagedFilter.cs
- StorageMappingItemCollection.cs
- ThreadTrace.cs
- CatchBlock.cs
- BuildProvidersCompiler.cs
- PeerTransportElement.cs
- WorkflowRuntimeServiceElementCollection.cs
- CharacterBufferReference.cs
- ControlParameter.cs
- XmlResolver.cs
- NullableDecimalSumAggregationOperator.cs
- ToolBarPanel.cs
- TextServicesCompartmentContext.cs
- CustomErrorsSectionWrapper.cs
- UnsafeNativeMethods.cs