public void testOrderBy() { var expected = "select count(*) from ( select * from emp ) t_"; var transformer = new StandardCountGettingTransformer(); var parser = new DomaSqlParser("select * from emp order by emp.id"); var node = transformer.Transform(parser.Parse()); var parameters = new List <ParameterEmulator>(); var builder = new DomaSqlBuilder(node, parameters, _config); var result = builder.Build(); result.ParsedSql.Is(expected); }
//[Obsolete("will remove",true)] //internal ISqlNode TransformSelectSqlNode(ISqlNode node, SelectOptions options) //{ // /* // * Q:これは何をやっているの?? // * A:ページング用のSqlNodeの構築 // * Q:え?Countっぽいのもしてるけど?? // * A:それはMySQL用の特殊処理です // * Q:だからどういうことだってばよ // * A:よろしい // * 説明しようMySQLでは下記のクエリでページングと件数の取得ができる // * 1) SELECT SQL_CALC_FOUND_ROWS * FROM employees LIMIT 5, 10; // * 2) SELECT FOUND_ROWS(); // * 簡単に言えば1のSQL_CALC_FOUND_ROWSを付加するための特殊処理ととらえればよい // * // * 正直わかりにくいのでMysqlPagingTransformerでSQL_CALC_FOUND_ROWSを付加したらよいのでは。。。 // */ // var transformed = node; // if (options.CallCount) // { // transformed = ToCountCalculatingSqlNode(node); // } // if (options.Skip >= 0 || options.Take >= 0) // { // transformed = ToPagingSqlNode(transformed, options.Skip, options.Take); // } // return transformed; //} //[Obsolete("will remove", true)] //protected virtual ISqlNode ToCountCalculatingSqlNode(ISqlNode node) //{ // return node; //} internal virtual ISqlNode ToCountGettingSqlNode(ISqlNode node) { var transformer = new StandardCountGettingTransformer(); return(transformer.Transform(node)); }