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
- RuntimeIdentifierPropertyAttribute.cs
- MetadataCache.cs
- ControlType.cs
- TdsEnums.cs
- AssociationTypeEmitter.cs
- WebPartManagerInternals.cs
- XmlIterators.cs
- XmlWrappingWriter.cs
- GCHandleCookieTable.cs
- DragDeltaEventArgs.cs
- DataGridViewLayoutData.cs
- AttachmentService.cs
- ActivityWithResultWrapper.cs
- CategoryEditor.cs
- TemplateParser.cs
- InternalPermissions.cs
- ChannelPoolSettingsElement.cs
- AuthenticationManager.cs
- ImageList.cs
- Rule.cs
- ProcessModelSection.cs
- DriveNotFoundException.cs
- DateTimeParse.cs
- MenuEventArgs.cs
- WebServicesDescriptionAttribute.cs
- ChangePassword.cs
- Path.cs
- MissingManifestResourceException.cs
- CollectionViewGroupInternal.cs
- CompositeDuplexBindingElementImporter.cs
- AppDomainProtocolHandler.cs
- HideDisabledControlAdapter.cs
- HMACRIPEMD160.cs
- IgnorePropertiesAttribute.cs
- PipelineDeploymentState.cs
- RawStylusActions.cs
- FrameworkTextComposition.cs
- SettingsPropertyIsReadOnlyException.cs
- HealthMonitoringSectionHelper.cs
- GPPOINTF.cs
- ButtonChrome.cs
- TextParagraph.cs
- SynchronizedMessageSource.cs
- FamilyTypeface.cs
- AssociatedControlConverter.cs
- GridViewSelectEventArgs.cs
- CryptoStream.cs
- DependencyStoreSurrogate.cs
- NumericUpDownAcceleration.cs
- DependencyPropertyChangedEventArgs.cs
- CFStream.cs
- Ppl.cs
- FtpWebRequest.cs
- ReferenceConverter.cs
- GridErrorDlg.cs
- ServiceHostFactory.cs
- MenuEventArgs.cs
- LiteralText.cs
- DigitShape.cs
- ProtocolsConfiguration.cs
- SmiContextFactory.cs
- xamlnodes.cs
- ListViewInsertEventArgs.cs
- TreeBuilderBamlTranslator.cs
- CapacityStreamGeometryContext.cs
- HyperlinkAutomationPeer.cs
- EditorAttribute.cs
- BinaryFormatterWriter.cs
- WebFormsRootDesigner.cs
- PersonalizationEntry.cs
- Canvas.cs
- ItemList.cs
- SettingsPropertyCollection.cs
- FullTextState.cs
- Binding.cs
- PropertyPathConverter.cs
- X509RawDataKeyIdentifierClause.cs
- DataAdapter.cs
- CalendarDayButton.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- RankException.cs
- DataServiceRequestException.cs
- LockedHandleGlyph.cs
- SecureConversationServiceElement.cs
- TextPointer.cs
- CheckBoxFlatAdapter.cs
- AutoResizedEvent.cs
- ProfileProvider.cs
- AnnotationHighlightLayer.cs
- AndMessageFilterTable.cs
- ContextInformation.cs
- DbDataAdapter.cs
- CfgRule.cs
- DoubleLinkListEnumerator.cs
- File.cs
- SamlAuthorizationDecisionStatement.cs
- pingexception.cs
- GroupPartitionExpr.cs
- SiteMapNode.cs
- _IPv6Address.cs