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
- RawMouseInputReport.cs
- FieldAccessException.cs
- TextElementAutomationPeer.cs
- PolygonHotSpot.cs
- DesignerVerb.cs
- BatchServiceHost.cs
- AssemblyAssociatedContentFileAttribute.cs
- PointUtil.cs
- GacUtil.cs
- SqlDependencyUtils.cs
- SchemaManager.cs
- InstrumentationTracker.cs
- ProcessStartInfo.cs
- DataGridViewIntLinkedList.cs
- UniqueConstraint.cs
- FormatSettings.cs
- ResourceWriter.cs
- SecurityPolicySection.cs
- MarshalByRefObject.cs
- ScrollItemProviderWrapper.cs
- LocationSectionRecord.cs
- ButtonFlatAdapter.cs
- glyphs.cs
- MessageSmuggler.cs
- _PooledStream.cs
- InvalidWMPVersionException.cs
- GeneralTransformGroup.cs
- WebPartZoneDesigner.cs
- QuaternionAnimationUsingKeyFrames.cs
- SmtpMail.cs
- RsaKeyIdentifierClause.cs
- DiscreteKeyFrames.cs
- TextLine.cs
- IndexedString.cs
- WebExceptionStatus.cs
- DataGridViewSelectedRowCollection.cs
- UInt32Storage.cs
- DurableInstanceProvider.cs
- HttpDebugHandler.cs
- SHA256Cng.cs
- KeyProperty.cs
- Exceptions.cs
- ClientConfigPaths.cs
- ConfigurationProperty.cs
- SHA384.cs
- UInt16Storage.cs
- ObjectQuery_EntitySqlExtensions.cs
- DockPatternIdentifiers.cs
- CollectionViewGroupInternal.cs
- InputReferenceExpression.cs
- XmlMtomReader.cs
- Point3DConverter.cs
- dataprotectionpermissionattribute.cs
- VectorCollectionConverter.cs
- TraceSource.cs
- FlagsAttribute.cs
- XamlVector3DCollectionSerializer.cs
- CodeCastExpression.cs
- SqlExpressionNullability.cs
- XmlBinaryWriter.cs
- FrameworkPropertyMetadata.cs
- StorageFunctionMapping.cs
- HttpStreamMessage.cs
- ClockController.cs
- ScrollViewerAutomationPeer.cs
- CompositeFontParser.cs
- indexingfiltermarshaler.cs
- infer.cs
- ObjectSet.cs
- SaveFileDialog.cs
- FunctionUpdateCommand.cs
- Light.cs
- WebPartDisplayModeCancelEventArgs.cs
- IPPacketInformation.cs
- StyleXamlParser.cs
- Group.cs
- EndOfStreamException.cs
- EditorPartDesigner.cs
- DataListItemCollection.cs
- ExtensionDataObject.cs
- FullTextState.cs
- Base64Encoder.cs
- ControlEvent.cs
- InputLanguageEventArgs.cs
- XmlMessageFormatter.cs
- FontSizeConverter.cs
- CompilerTypeWithParams.cs
- DebugView.cs
- TableAdapterManagerMethodGenerator.cs
- InheritanceAttribute.cs
- XmlName.cs
- SafeCryptContextHandle.cs
- WmlPageAdapter.cs
- SqlDuplicator.cs
- NativeMethods.cs
- SerializationAttributes.cs
- PrivilegeNotHeldException.cs
- CommandCollectionEditor.cs
- TwoPhaseCommit.cs
- IListConverters.cs