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
- WindowsListViewGroupHelper.cs
- _PooledStream.cs
- SoapElementAttribute.cs
- CodeObject.cs
- XmlSignatureManifest.cs
- CodeGroup.cs
- WmlCalendarAdapter.cs
- CodeDelegateCreateExpression.cs
- AdjustableArrowCap.cs
- FileSecurity.cs
- EmptyStringExpandableObjectConverter.cs
- XmlMapping.cs
- MenuItemBindingCollection.cs
- Cursors.cs
- MemberAccessException.cs
- AsynchronousChannelMergeEnumerator.cs
- GreenMethods.cs
- XmlSchemaInclude.cs
- DataObjectSettingDataEventArgs.cs
- OutOfProcStateClientManager.cs
- PlainXmlWriter.cs
- IssuanceLicense.cs
- XmlUnspecifiedAttribute.cs
- OracleFactory.cs
- GetLastErrorDetailsRequest.cs
- _LazyAsyncResult.cs
- BamlTreeMap.cs
- DuplicateWaitObjectException.cs
- CroppedBitmap.cs
- FocusTracker.cs
- Span.cs
- NamespaceQuery.cs
- DynamicResourceExtensionConverter.cs
- SessionStateItemCollection.cs
- OperationContextScope.cs
- PageCache.cs
- DataGridTable.cs
- RewritingProcessor.cs
- ConstrainedDataObject.cs
- Types.cs
- IntegerValidatorAttribute.cs
- ConnectionProviderAttribute.cs
- Funcletizer.cs
- CommentEmitter.cs
- DefaultEventAttribute.cs
- FormsAuthenticationModule.cs
- PositiveTimeSpanValidator.cs
- TextOutput.cs
- UIPermission.cs
- Win32.cs
- TheQuery.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ScriptReferenceBase.cs
- AssemblySettingAttributes.cs
- DispatcherOperation.cs
- TemplateBindingExpressionConverter.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- Image.cs
- URLMembershipCondition.cs
- GroupItemAutomationPeer.cs
- StorageMappingItemLoader.cs
- MailDefinition.cs
- CategoryList.cs
- GroupJoinQueryOperator.cs
- EventSourceCreationData.cs
- XmlHierarchicalDataSourceView.cs
- MatrixTransform3D.cs
- DisplayToken.cs
- Thread.cs
- PrePrepareMethodAttribute.cs
- ProjectionPath.cs
- ToolBarTray.cs
- PeerNameResolver.cs
- SessionKeyExpiredException.cs
- Console.cs
- AttributeCollection.cs
- ISFClipboardData.cs
- ObjectDataProvider.cs
- NavigationPropertyEmitter.cs
- XmlSchemaComplexType.cs
- _BasicClient.cs
- SafeNativeMethods.cs
- PostBackOptions.cs
- webclient.cs
- GraphicsContext.cs
- EntityCommand.cs
- SqlInternalConnectionSmi.cs
- RuntimeConfig.cs
- LinqDataSourceValidationException.cs
- XmlLanguageConverter.cs
- CngKey.cs
- CodeCatchClauseCollection.cs
- ControlCollection.cs
- CheckedListBox.cs
- ConsoleKeyInfo.cs
- SourceExpressionException.cs
- TypeToken.cs
- CaseInsensitiveHashCodeProvider.cs
- MsmqAppDomainProtocolHandler.cs
- SponsorHelper.cs