JoinSymbol.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / SqlClient / SqlGen / JoinSymbol.cs / 1305376 / JoinSymbol.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System; 
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text; 
using System.Data.SqlClient;
using System.Data.Metadata.Edm; 
using System.Data.Common.CommandTrees; 

namespace System.Data.SqlClient.SqlGen 
{
    /// 
    /// A Join symbol is a special kind of Symbol.
    /// It has to carry additional information 
    /// 
    /// ColumnList for the list of columns in the select clause if this 
    /// symbol represents a sql select statement.  This is set by .  
    /// ExtentList is the list of extents in the select clause.
    /// FlattenedExtentList - if the Join has multiple extents flattened at the 
    /// top level, we need this information to ensure that extent aliases are renamed
    /// correctly in 
    /// NameToExtent has all the extents in ExtentList as a dictionary.
    /// This is used by  to flatten 
    /// record accesses.
    /// IsNestedJoin - is used to determine whether a JoinSymbol is an 
    /// ordinary join symbol, or one that has a corresponding SqlSelectStatement. 
    /// 
    /// 
    /// All the lists are set exactly once, and then used for lookups/enumerated.
    /// 
    internal sealed class JoinSymbol : Symbol
    { 
        private List columnList;
        internal List ColumnList 
        { 
            get
            { 
                if (null == columnList)
                {
                    columnList = new List();
                } 
                return columnList;
            } 
            set { columnList = value; } 
        }
 
        private List extentList;
        internal List ExtentList
        {
            get { return extentList; } 
        }
 
        private List flattenedExtentList; 
        internal List FlattenedExtentList
        { 
            get
            {
                if (null == flattenedExtentList)
                { 
                    flattenedExtentList = new List();
                } 
                return flattenedExtentList; 
            }
            set { flattenedExtentList = value; } 
        }

        private Dictionary nameToExtent;
        internal Dictionary NameToExtent 
        {
            get { return nameToExtent; } 
        } 

        private bool isNestedJoin; 
        internal bool IsNestedJoin
        {
            get { return isNestedJoin; }
            set { isNestedJoin = value; } 
        }
 
        public JoinSymbol(string name, TypeUsage type, List extents) 
            : base(name, type)
        { 
            extentList = new List(extents.Count);
            nameToExtent = new Dictionary(extents.Count, StringComparer.OrdinalIgnoreCase);
            foreach (Symbol symbol in extents)
            { 
                this.nameToExtent[symbol.Name] = symbol;
                this.ExtentList.Add(symbol); 
            } 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK