JoinSymbol.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / SqlClient / SqlGen / JoinSymbol.cs / 2 / JoinSymbol.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//--------------------------------------------------------------------- 
 
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.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//--------------------------------------------------------------------- 
 
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