From: Peter Rabbitson Date: Sat, 25 Feb 2012 14:36:43 +0000 (+0100) Subject: Simplify RowNumber Over limit dialect implementation X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=071dea12c36e2fa44bcefe9ebb83a371a829f81f;p=dbsrgits%2FDBIx-Class-Historic.git Simplify RowNumber Over limit dialect implementation --- diff --git a/lib/DBIx/Class/SQLMaker/LimitDialects.pm b/lib/DBIx/Class/SQLMaker/LimitDialects.pm index 6bb7b92..5d9afa1 100644 --- a/lib/DBIx/Class/SQLMaker/LimitDialects.pm +++ b/lib/DBIx/Class/SQLMaker/LimitDialects.pm @@ -114,8 +114,6 @@ sub _RowNumberOver { $extra_col, $extra_order_sel->{$extra_col}, ); - - $mid_sel .= ', ' . $extra_order_sel->{$extra_col}; } } diff --git a/t/sqlmaker/limit_dialects/rno.t b/t/sqlmaker/limit_dialects/rno.t index 457cf7d..58c38b5 100644 --- a/t/sqlmaker/limit_dialects/rno.t +++ b/t/sqlmaker/limit_dialects/rno.t @@ -98,20 +98,28 @@ my $rs_selectas_rel = $schema->resultset('BooksInLibrary')->search ({}, { ], join => 'owner', rows => 1, + order_by => 'me.id', }); +# SELECT [owner_name], [owner_books] FROM ( +# SELECT [owner_name], [owner_books], [ORDER__BY__1], ROW_NUMBER() OVER( ORDER BY [ORDER__BY__1] ) AS [rno__row__index] FROM ( +# SELECT [owner].[name] AS [owner_name], (SELECT COUNT( * ) FROM [owners] [owner] WHERE ( ( [count].[id] = [owner].[id] AND [count].[name] = ? ) )) AS [owner_books], [me].[id] AS [ORDER__BY__1] FROM [books] [me] JOIN [owners] [owner] ON [owner].[id] = [me].[owner] WHERE ( [source] = ? ) +# ) [me] +# ) [me] WHERE [rno__row__index] >= ? AND [rno__row__index] <= ? + is_same_sql_bind( $rs_selectas_rel->as_query, '( SELECT [owner_name], [owner_books] FROM ( - SELECT [owner_name], [owner_books], ROW_NUMBER() OVER( ) AS [rno__row__index] + SELECT [owner_name], [owner_books], ROW_NUMBER() OVER( ORDER BY [ORDER__BY__1] ) AS [rno__row__index] FROM ( SELECT [owner].[name] AS [owner_name], ( SELECT COUNT( * ) FROM [owners] [owner] - WHERE [count].[id] = [owner].[id] and [count].[name] = ? ) AS [owner_books] - FROM [books] [me] - JOIN [owners] [owner] ON [owner].[id] = [me].[owner] + WHERE [count].[id] = [owner].[id] and [count].[name] = ? ) AS [owner_books], + [me].[id] AS [ORDER__BY__1] + FROM [books] [me] + JOIN [owners] [owner] ON [owner].[id] = [me].[owner] WHERE ( [source] = ? ) ) [me] ) [me]