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
- UrlMappingsModule.cs
- WebColorConverter.cs
- sqlstateclientmanager.cs
- EventSinkActivity.cs
- SelectorAutomationPeer.cs
- MouseEventArgs.cs
- FileAuthorizationModule.cs
- FileSecurity.cs
- XslException.cs
- BaseCAMarshaler.cs
- LogArchiveSnapshot.cs
- DataControlFieldHeaderCell.cs
- RegisteredDisposeScript.cs
- Queue.cs
- EventHandlerService.cs
- MetadataException.cs
- GuidelineSet.cs
- ParameterBuilder.cs
- Floater.cs
- ColorMatrix.cs
- SystemWebSectionGroup.cs
- OracleDataReader.cs
- TypeInfo.cs
- MiniMapControl.xaml.cs
- GeometryGroup.cs
- StreamingContext.cs
- Win32Exception.cs
- DataRecordInternal.cs
- XsdBuilder.cs
- StrokeCollection2.cs
- SynchronizedChannelCollection.cs
- __ConsoleStream.cs
- TextEditorTables.cs
- VectorConverter.cs
- ToolboxItemFilterAttribute.cs
- ClientUtils.cs
- XmlSchemaComplexContent.cs
- SourceExpressionException.cs
- OrderPreservingPipeliningSpoolingTask.cs
- NopReturnReader.cs
- DiscoveryClient.cs
- HotSpot.cs
- ContainerControl.cs
- ContractListAdapter.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- AssociationTypeEmitter.cs
- UserInitiatedRoutedEventPermission.cs
- CompressionTransform.cs
- Base64Stream.cs
- NavigationExpr.cs
- SoapFaultCodes.cs
- RouteItem.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- Missing.cs
- FileUtil.cs
- MonthChangedEventArgs.cs
- ToolStripDropDownItem.cs
- Decimal.cs
- ServerValidateEventArgs.cs
- _PooledStream.cs
- AutoResetEvent.cs
- CategoryEditor.cs
- Opcode.cs
- ProcessHost.cs
- TransformationRules.cs
- ScaleTransform.cs
- ContentAlignmentEditor.cs
- AmbientProperties.cs
- JpegBitmapDecoder.cs
- ReplacementText.cs
- Int32AnimationUsingKeyFrames.cs
- Cursors.cs
- XPathNodeHelper.cs
- WizardStepBase.cs
- XamlFigureLengthSerializer.cs
- HtmlSelect.cs
- DesignTimeTemplateParser.cs
- RootBuilder.cs
- _ConnectionGroup.cs
- TextModifierScope.cs
- FullTextBreakpoint.cs
- Property.cs
- ImportCatalogPart.cs
- SafeFindHandle.cs
- FreeFormDesigner.cs
- WmpBitmapEncoder.cs
- DataGridTextBox.cs
- LowerCaseStringConverter.cs
- ValueSerializer.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DocumentViewerConstants.cs
- EventLogger.cs
- DataListCommandEventArgs.cs
- MenuItemBindingCollection.cs
- LayoutManager.cs
- TextHidden.cs
- HttpApplication.cs
- Int32Collection.cs
- CssTextWriter.cs
- UnionCodeGroup.cs