Parse() публичный статический Метод

public static Parse ( IContext context, SqlQuery query ) : IEnumerable
context IContext
query SqlQuery
Результат IEnumerable
Пример #1
0
        public void ParseWithColumnAndTableConstraints()
        {
            const string sql = "CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR NOT NULL, CONSTRAINT uk_test UNIQUE(name))";

            IEnumerable <SqlStatement> statements = null;

            Assert.DoesNotThrow(() => statements = SqlStatement.Parse(sql));
            Assert.IsNotNull(statements);

            var list = statements.ToList();

            Assert.AreEqual(3, list.Count);
        }
Пример #2
0
        public void ExecuteSimpleCreateView()
        {
            const string sql = "CREATE VIEW text_view1 AS SELECT * FROM test_table WHERE a = 1";

            IEnumerable <SqlStatement> statements = null;

            Assert.DoesNotThrow(() => statements = SqlStatement.Parse(sql));
            Assert.IsNotNull(statements);

            var list = statements.ToList();

            Assert.AreEqual(1, list.Count);

            var statement = list[0];

            Assert.IsNotNull(statement);
            Assert.IsInstanceOf <CreateViewStatement>(statement);

            ITable result = null;

            Assert.DoesNotThrow(() => result = statement.Execute(Query));
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.RowCount);
        }
Пример #3
0
        public static ITable[] Execute(this IRequest request, SqlQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            var sqlSouce = query.Text;

            // TODO: find it from the cache...

            var statements = SqlStatement.Parse(sqlSouce);

            // TODO: set it in cache ...

            var preparer = new QueryPreparer(query);

            bool statementSeen = false;

            var results = new List <ITable>();

            foreach (var statement in statements)
            {
                // TODO: query.RegisterQuery(statement);

                // TODO: Invoke diagnostics for the preparation...

                var prepared = statement.Prepare(preparer, request);

                ITable result;

                try {
                    var exeContext = new ExecutionContext(request);
                    prepared.Execute(exeContext);
                    if (exeContext.HasResult)
                    {
                        result = exeContext.Result;
                    }
                    else
                    {
                        result = FunctionTable.ResultTable(request, 0);
                    }
                } catch (StatementException ex) {
                    request.OnError(ex);
                    throw;
                } catch (Exception ex) {
                    var sex = new StatementException("An unhanded error occurred while executing the statement.", ex);
                    request.OnError(sex);
                    throw sex;
                } finally {
                    statementSeen = true;
                }

                results.Add(result);
            }

            if (!statementSeen)
            {
                throw new SqlParseException("The input query was not parsed in any statements that could be executed.");
            }

            return(results.ToArray());
        }