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
- UTF7Encoding.cs
- SdlChannelSink.cs
- DocumentSequenceHighlightLayer.cs
- SafeCryptContextHandle.cs
- xmlsaver.cs
- LocalFileSettingsProvider.cs
- FileAccessException.cs
- PrinterUnitConvert.cs
- CounterCreationData.cs
- Rectangle.cs
- Validator.cs
- HtmlLink.cs
- FormsAuthenticationUserCollection.cs
- CopyNodeSetAction.cs
- WindowsImpersonationContext.cs
- ReadWriteSpinLock.cs
- TextFormatterContext.cs
- NameTable.cs
- Transform3D.cs
- DefaultTextStore.cs
- Polygon.cs
- CounterSet.cs
- ValidatingReaderNodeData.cs
- RepeaterItem.cs
- SmiConnection.cs
- IndicShape.cs
- CompositeActivityCodeGenerator.cs
- COMException.cs
- DataTransferEventArgs.cs
- D3DImage.cs
- TraceListener.cs
- RawKeyboardInputReport.cs
- WaitHandleCannotBeOpenedException.cs
- Scene3D.cs
- TransactionFlowElement.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- EnlistmentState.cs
- Accessible.cs
- UserControlCodeDomTreeGenerator.cs
- PageFunction.cs
- XmlIgnoreAttribute.cs
- DeferrableContentConverter.cs
- ObjectDataSource.cs
- QueryExpr.cs
- RSAPKCS1SignatureFormatter.cs
- SingleStorage.cs
- BasicHttpBindingCollectionElement.cs
- Pair.cs
- TimelineGroup.cs
- QfeChecker.cs
- CacheChildrenQuery.cs
- HashHelper.cs
- TabPage.cs
- PhysicalOps.cs
- ActionFrame.cs
- HttpInputStream.cs
- shaper.cs
- AutoResizedEvent.cs
- Config.cs
- TickBar.cs
- XmlStreamStore.cs
- XmlSerializationGeneratedCode.cs
- SqlClientPermission.cs
- SqlResolver.cs
- HttpGetProtocolReflector.cs
- MasterPage.cs
- TreeNodeCollection.cs
- ArcSegment.cs
- SmtpDigestAuthenticationModule.cs
- EditorZone.cs
- ButtonFlatAdapter.cs
- HostedHttpContext.cs
- ContextBase.cs
- CompressStream.cs
- SqlCharStream.cs
- MDIClient.cs
- ValidationHelper.cs
- ResourceDisplayNameAttribute.cs
- EntityDataSourceContextDisposingEventArgs.cs
- SimpleTableProvider.cs
- DataRecordObjectView.cs
- DataGridViewColumnCollection.cs
- RecordConverter.cs
- QueryCacheManager.cs
- ManifestResourceInfo.cs
- IsolatedStorageFileStream.cs
- HGlobalSafeHandle.cs
- BinaryObjectInfo.cs
- CanonicalizationDriver.cs
- SiteMapHierarchicalDataSourceView.cs
- IxmlLineInfo.cs
- ContentElement.cs
- BindableTemplateBuilder.cs
- EventLogPermissionEntryCollection.cs
- NumberSubstitution.cs
- WorkItem.cs
- COM2FontConverter.cs
- DirectoryGroupQuery.cs
- ContentDisposition.cs
- WorkflowOwnershipException.cs