Exemple #1
0
        public new IExecuteResult Execute(Expression query)
        {
            InitializeProviderMode();

            var annotations = new SqlNodeAnnotations();
            var queries     = BuildQuery(query, annotations);
            var queryInfo   = queries[queries.Length - 1];

            //queryInfo.CommandText = new MySqlFormatter().Format(queryInfo.Query);

            IObjectReaderFactory readerFactory = null;

            ICompiledSubQuery[] subQueries = null;
            if (queryInfo.ResultShape == ResultShape.Singleton)
            {
                subQueries    = CompileSubQueries(queryInfo.Query);
                readerFactory = GetReaderFactory(queryInfo.Query, queryInfo.ResultType);
            }
            else if (queryInfo.ResultShape == ResultShape.Sequence)
            {
                subQueries    = CompileSubQueries(queryInfo.Query);
                readerFactory = GetReaderFactory(queryInfo.Query, TypeSystem.GetElementType(queryInfo.ResultType));
            }

            return(ExecuteAll(query, queries, readerFactory, null, subQueries));
        }
Exemple #2
0
        //private new void Initialize(IDataServices dataServices, IDbConnection connection)
        //{
        //    services = dataServices;
        //    conManager = new SqlConnectionManager(this, (DbConnection)connection, 100);
        //    var type = typeof(ALinq.Oracle.DataReader);
        //    readerCompiler = new ObjectReaderCompiler(type, services);
        //    InitializeProviderMode();
        //}

        internal override ICompiledSubQuery CompileSubQuery(SqlNode query, Type elementType, ReadOnlyCollection <SqlParameter> parameters)
        {
            query = SqlDuplicator.Copy(query);
            var annotations = new SqlNodeAnnotations();
            var queries     = BuildQuery(ResultShape.Sequence, TypeSystem.GetSequenceType(elementType), query, parameters, annotations);
            var queryInfo   = queries[0];

            //Set CommandText
            queryInfo.CommandText = new OracleFormatter(this).Format(queryInfo.Query);
            ICompiledSubQuery[]  subQueries    = CompileSubQueries(queryInfo.Query);
            IObjectReaderFactory readerFactory = GetReaderFactory(queryInfo.Query, elementType);

            CheckSqlCompatibility(queries, annotations);

            return(new CompiledSubQuery(queryInfo, readerFactory, parameters, subQueries));
        }
Exemple #3
0
        internal override QueryInfo[] BuildQuery(Expression query, SqlNodeAnnotations annotations)
        {
            CheckDispose();
            query = Funcletizer.Funcletize(query);
            var converter = new MySqlQueryConverter(services, typeProvider, translator, sqlFactory)
            {
                ConverterStrategy = ConverterStrategy.CanOutputFromInsert | ConverterStrategy.CanUseJoinOn |
                                    ConverterStrategy.CanUseOuterApply | ConverterStrategy.SkipWithRowNumber
            };
            SqlNode node       = converter.ConvertOuter(query);
            var     queryInfos = BuildQuery(GetResultShape(query), GetResultType(query), node, null, annotations);
            var     formatter  = new MySqlFormatter(this);

            for (int i = 0; i < queryInfos.Length; i++)
            {
                var queryInfo = queryInfos[i];
                queryInfo.CommandText = formatter.Format(queryInfo.Query);
            }
            return(queryInfos);
        }
Exemple #4
0
        internal override ICompiledSubQuery CompileSubQuery(SqlNode query, Type elementType, ReadOnlyCollection <SqlParameter> parameters)
        {
            query = SqlDuplicator.Copy(query);
            var annotations = new SqlNodeAnnotations();

            QueryInfo[] queries   = BuildQuery(ResultShape.Sequence, TypeSystem.GetSequenceType(elementType), query, parameters, annotations);
            QueryInfo   queryInfo = queries[0];

            ICompiledSubQuery[] subQueries = this.CompileSubQueries(queryInfo.Query);
            var formatter = new MySqlFormatter(this);

            for (int i = 0; i < subQueries.Length; i++)
            {
                var subQuery = (CompiledSubQuery)subQueries[i];
                subQuery.QueryInfo.CommandText = formatter.Format(subQuery.QueryInfo.Query);
            }
            IObjectReaderFactory readerFactory = this.GetReaderFactory(queryInfo.Query, elementType);

            CheckSqlCompatibility(queries, annotations);
            return(new CompiledSubQuery(queryInfo, readerFactory, parameters, subQueries, connectionString, this));
        }
Exemple #5
0
 internal override ISqlParameterizer CreateSqlParameterizer(ITypeSystemProvider typeProvider, SqlNodeAnnotations annotations)
 {
     return(new OracleParameterizer(typeProvider, annotations));
 }
Exemple #6
0
 // Methods
 internal EfzParameterizer(ITypeSystemProvider typeProvider, SqlNodeAnnotations annotations)
 {
     this.typeProvider = typeProvider;
     this.annotations  = annotations;
 }
 internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, NodeFactory sql)
 {
     return(new Visitor(annotations, sql).Visit(node));
 }
 internal Visitor(SqlNodeAnnotations annotations, NodeFactory sql)
 {
     this.annotations = annotations;
     this.sql         = sql;
 }
 internal SqlParameterizer(TypeSystemProvider typeProvider, SqlNodeAnnotations annotations)
 {
     this._typeProvider = typeProvider;
     this._annotations  = annotations;
 }
Exemple #10
0
 internal SqlNode AddConversions(SqlNode node, SqlNodeAnnotations annotations)
 {
     visitor.Annotations = annotations;
     return(visitor.Visit(node));
 }