Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlCrossApplyToCrossJoin.cs / 1305376 / SqlCrossApplyToCrossJoin.cs
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; namespace System.Data.Linq.SqlClient { using System.Data.Linq; ////// Turn CROSS APPLY into CROSS JOIN when the right side /// of the apply doesn't reference anything on the left side. /// /// Any query which has a CROSS APPLY which cannot be converted to /// a CROSS JOIN is annotated so that we can give a meaningful /// error message later for SQL2K. /// internal class SqlCrossApplyToCrossJoin { internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations) { Reducer r = new Reducer(); r.Annotations = annotations; return r.Visit(node); } class Reducer : SqlVisitor { internal SqlNodeAnnotations Annotations; internal override SqlSource VisitJoin(SqlJoin join) { if (join.JoinType == SqlJoinType.CrossApply) { // Look down the left side to see what table aliases are produced. HashSetp = SqlGatherProducedAliases.Gather(join.Left); // Look down the right side to see what table aliases are consumed. HashSet c = SqlGatherConsumedAliases.Gather(join.Right); // Look at each consumed alias and see if they are mentioned in produced. if (p.Overlaps(c)) { Annotations.Add(join, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(join.SourceExpression), SqlProvider.ProviderMode.Sql2000)); // Can't reduce because this consumed alias is produced on the left. return base.VisitJoin(join); } // Can turn this into a CROSS JOIN join.JoinType = SqlJoinType.Cross; return VisitJoin(join); } return base.VisitJoin(join); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProfilePropertySettingsCollection.cs
- HeaderCollection.cs
- Connection.cs
- BaseConfigurationRecord.cs
- KeyValuePairs.cs
- CookieParameter.cs
- BitmapEffectDrawingContextState.cs
- DashStyle.cs
- invalidudtexception.cs
- shaperfactoryquerycachekey.cs
- MarkupProperty.cs
- SqlDataSourceSummaryPanel.cs
- BrowserDefinition.cs
- MetricEntry.cs
- MethodCallExpression.cs
- UnknownWrapper.cs
- ListViewSortEventArgs.cs
- NameValuePair.cs
- MergeLocalizationDirectives.cs
- WindowsSpinner.cs
- Roles.cs
- FileDialog_Vista.cs
- IsolatedStorage.cs
- GeometryGroup.cs
- XmlChoiceIdentifierAttribute.cs
- AppDomainUnloadedException.cs
- ComplexType.cs
- CodeTypeMemberCollection.cs
- XPathSingletonIterator.cs
- WebPartZoneCollection.cs
- TextPatternIdentifiers.cs
- MergeFailedEvent.cs
- RuleSet.cs
- ClientConfigPaths.cs
- Win32Native.cs
- CodeBlockBuilder.cs
- ErrorHandler.cs
- SystemFonts.cs
- Exceptions.cs
- SubtreeProcessor.cs
- CodeCompiler.cs
- PassportIdentity.cs
- DllNotFoundException.cs
- HandlerMappingMemo.cs
- WebServiceEnumData.cs
- LineProperties.cs
- WindowsSolidBrush.cs
- XpsStructure.cs
- TextEditorDragDrop.cs
- WebPartTransformer.cs
- StylusPointDescription.cs
- CustomLineCap.cs
- UpdateDelegates.Generated.cs
- CodeMethodReturnStatement.cs
- ThicknessAnimationBase.cs
- VirtualDirectoryMappingCollection.cs
- FragmentQueryKB.cs
- PathFigure.cs
- ProcessInputEventArgs.cs
- RadioButtonAutomationPeer.cs
- SqlCacheDependencyDatabase.cs
- CompModSwitches.cs
- LayoutUtils.cs
- TdsParameterSetter.cs
- GPRECTF.cs
- NativeActivityAbortContext.cs
- Maps.cs
- XslUrlEditor.cs
- ReturnType.cs
- CreateUserWizardStep.cs
- TargetFrameworkUtil.cs
- InternalControlCollection.cs
- EntitySetBase.cs
- CodeAssignStatement.cs
- SrgsDocument.cs
- Ipv6Element.cs
- TextBoxAutomationPeer.cs
- DefaultSection.cs
- ValidationPropertyAttribute.cs
- CustomAttributeFormatException.cs
- FillRuleValidation.cs
- WindowsScroll.cs
- UpdateTranslator.cs
- WebServiceData.cs
- ProcessHostMapPath.cs
- StreamAsIStream.cs
- MemberJoinTreeNode.cs
- KeyboardDevice.cs
- MsmqIntegrationInputMessage.cs
- XmlSchemas.cs
- MethodBody.cs
- XmlLinkedNode.cs
- SplitterCancelEvent.cs
- EventRouteFactory.cs
- QuinticEase.cs
- _ChunkParse.cs
- FontStyle.cs
- TextProviderWrapper.cs
- DocumentApplicationJournalEntry.cs
- storepermission.cs