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)); }
//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)); }
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); }
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)); }
internal override ISqlParameterizer CreateSqlParameterizer(ITypeSystemProvider typeProvider, SqlNodeAnnotations annotations) { return(new OracleParameterizer(typeProvider, annotations)); }
// 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; }
internal SqlNode AddConversions(SqlNode node, SqlNodeAnnotations annotations) { visitor.Annotations = annotations; return(visitor.Visit(node)); }