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
- AggregateException.cs
- HttpServerVarsCollection.cs
- AccessViolationException.cs
- basecomparevalidator.cs
- QilSortKey.cs
- AmbientProperties.cs
- XmlWriterSettings.cs
- CodeObject.cs
- XmlDocumentFragment.cs
- PeerNameRecord.cs
- ProfilePropertyNameValidator.cs
- TextBlockAutomationPeer.cs
- KnownBoxes.cs
- ReachFixedDocumentSerializerAsync.cs
- OraclePermission.cs
- TagPrefixAttribute.cs
- BindableTemplateBuilder.cs
- ComboBox.cs
- PointCollectionValueSerializer.cs
- CommonProperties.cs
- SlipBehavior.cs
- OperatingSystem.cs
- PrimarySelectionGlyph.cs
- ConnectionStringSettingsCollection.cs
- ModifiableIteratorCollection.cs
- XmlSchemaSet.cs
- Calendar.cs
- GPRECT.cs
- CallSite.cs
- ClientBuildManager.cs
- EntityDataSourceUtil.cs
- AttributeQuery.cs
- RijndaelManagedTransform.cs
- UnsafeNativeMethods.cs
- WindowsGraphics.cs
- ApplicationSettingsBase.cs
- Registry.cs
- AssemblyBuilderData.cs
- UnsafeNativeMethods.cs
- PolyQuadraticBezierSegment.cs
- ByteConverter.cs
- NullReferenceException.cs
- CatalogPartChrome.cs
- Soap12FormatExtensions.cs
- ListDataHelper.cs
- CmsInterop.cs
- AsynchronousChannel.cs
- XmlSyndicationContent.cs
- StateWorkerRequest.cs
- ObfuscationAttribute.cs
- ErasingStroke.cs
- PeerEndPoint.cs
- PictureBox.cs
- Endpoint.cs
- SystemIPGlobalStatistics.cs
- BinaryWriter.cs
- HandleRef.cs
- BitmapEffectvisualstate.cs
- HtmlImage.cs
- ReadOnlyCollectionBase.cs
- HitTestParameters3D.cs
- SqlPersonalizationProvider.cs
- Query.cs
- HyperLinkField.cs
- KeyToListMap.cs
- CommentEmitter.cs
- fixedPageContentExtractor.cs
- IteratorFilter.cs
- ContractInferenceHelper.cs
- CalendarDay.cs
- RedirectionProxy.cs
- TableLayoutRowStyleCollection.cs
- EllipticalNodeOperations.cs
- RadioButtonList.cs
- XmlRootAttribute.cs
- Resources.Designer.cs
- ObjectHandle.cs
- SafeViewOfFileHandle.cs
- StylusDevice.cs
- SemaphoreSecurity.cs
- _DigestClient.cs
- CannotUnloadAppDomainException.cs
- OdbcFactory.cs
- SecurityElement.cs
- Util.cs
- ColorTranslator.cs
- ZipIOModeEnforcingStream.cs
- rsa.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- XsltException.cs
- DataList.cs
- CacheRequest.cs
- GraphicsContext.cs
- XmlSchemaExternal.cs
- DataGridCommandEventArgs.cs
- HuffmanTree.cs
- FixedStringLookup.cs
- TextProperties.cs
- FlowDocumentReader.cs
- DataGridViewCellStyle.cs