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
- SourceSwitch.cs
- dtdvalidator.cs
- NamespaceImport.cs
- DbSourceParameterCollection.cs
- ControllableStoryboardAction.cs
- MaskedTextBoxDesigner.cs
- ChannelAcceptor.cs
- StringKeyFrameCollection.cs
- HebrewNumber.cs
- HMACSHA384.cs
- CacheMemory.cs
- BufferAllocator.cs
- UnlockCardRequest.cs
- As.cs
- OdbcRowUpdatingEvent.cs
- InputLanguageManager.cs
- OverflowException.cs
- StrokeNodeData.cs
- WindowsUpDown.cs
- InternalBufferManager.cs
- UpdateExpressionVisitor.cs
- FileDialog_Vista.cs
- Model3DCollection.cs
- NameValuePermission.cs
- ValidationErrorCollection.cs
- DataRelation.cs
- EventlogProvider.cs
- Crypto.cs
- ActiveDocumentEvent.cs
- StubHelpers.cs
- ObjectKeyFrameCollection.cs
- ContentPosition.cs
- BufferModesCollection.cs
- ResponseStream.cs
- ContentDisposition.cs
- SuppressMessageAttribute.cs
- _OSSOCK.cs
- TypefaceCollection.cs
- VarRemapper.cs
- AuthenticationService.cs
- PageContentCollection.cs
- BaseDataList.cs
- DesignTimeParseData.cs
- Debugger.cs
- BaseCollection.cs
- MarshalByRefObject.cs
- QueryableFilterUserControl.cs
- CreationContext.cs
- BrowserDefinition.cs
- SettingsPropertyIsReadOnlyException.cs
- XpsFont.cs
- TiffBitmapEncoder.cs
- ActivityExecutorOperation.cs
- AccessedThroughPropertyAttribute.cs
- FormattedTextSymbols.cs
- ListViewItem.cs
- SerializationFieldInfo.cs
- AutomationIdentifier.cs
- AppearanceEditorPart.cs
- XmlAttributeCollection.cs
- Transactions.cs
- ListSourceHelper.cs
- CompilerLocalReference.cs
- ContainerUIElement3D.cs
- SystemEvents.cs
- DataRow.cs
- ResourceContainer.cs
- WebBrowserNavigatingEventHandler.cs
- PermissionToken.cs
- Empty.cs
- SatelliteContractVersionAttribute.cs
- MetaModel.cs
- StylusPlugInCollection.cs
- SessionPageStatePersister.cs
- MessageQueueCriteria.cs
- XmlDictionaryWriter.cs
- ToolBarTray.cs
- BitmapCodecInfoInternal.cs
- ExceptionHelpers.cs
- LineBreakRecord.cs
- ServerValidateEventArgs.cs
- ProbeMatches11.cs
- DoubleAnimationUsingPath.cs
- WebPartMovingEventArgs.cs
- MatrixUtil.cs
- Wrapper.cs
- LineMetrics.cs
- DataServiceResponse.cs
- altserialization.cs
- XmlILAnnotation.cs
- CollectionBuilder.cs
- HitTestParameters.cs
- ArrayEditor.cs
- BitmapMetadataEnumerator.cs
- LogRestartAreaEnumerator.cs
- DataGridViewLinkColumn.cs
- GridItemCollection.cs
- AspCompat.cs
- WebPartsSection.cs
- NotFiniteNumberException.cs