mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Revert #216 until I can get tests to pass in Travis
Revert "Fix for _sort_desc=sortable_with_nulls test, refs #216" This reverts commit07fc2d113e. Revert "Fixed #216 - paginate correctly when sorting by nullable column" This reverts commit2abe539a0f.
This commit is contained in:
parent
07fc2d113e
commit
5364fa7f33
3 changed files with 14 additions and 61 deletions
|
|
@ -739,9 +739,6 @@ class TableView(RowTableShared):
|
|||
# If a sort order is applied, the first of these is the sort value
|
||||
if sort or sort_desc:
|
||||
sort_value = components[0]
|
||||
# Special case for if non-urlencoded first token was $null
|
||||
if _next.split(',')[0] == '$null':
|
||||
sort_value = None
|
||||
components = components[1:]
|
||||
|
||||
# Figure out the SQL for next-based-on-primary-key first
|
||||
|
|
@ -763,35 +760,15 @@ class TableView(RowTableShared):
|
|||
|
||||
# Now add the sort SQL, which may incorporate next_by_pk_clauses
|
||||
if sort or sort_desc:
|
||||
if sort_value is None:
|
||||
if sort_desc:
|
||||
# Just items where column is null ordered by pk
|
||||
where_clauses.append(
|
||||
'({column} is null and {next_clauses})'.format(
|
||||
column=escape_sqlite(sort_desc),
|
||||
next_clauses=' and '.join(next_by_pk_clauses),
|
||||
)
|
||||
)
|
||||
else:
|
||||
where_clauses.append(
|
||||
'({column} is not null or ({column} is null and {next_clauses}))'.format(
|
||||
column=escape_sqlite(sort),
|
||||
next_clauses=' and '.join(next_by_pk_clauses),
|
||||
)
|
||||
)
|
||||
else:
|
||||
where_clauses.append(
|
||||
'({column} {op} :p{p}{extra_desc_only} or ({column} = :p{p} and {next_clauses}))'.format(
|
||||
column=escape_sqlite(sort or sort_desc),
|
||||
op='>' if sort else '<',
|
||||
p=len(params),
|
||||
extra_desc_only='' if sort else ' or {column2} is null'.format(
|
||||
column2=escape_sqlite(sort or sort_desc),
|
||||
),
|
||||
next_clauses=' and '.join(next_by_pk_clauses),
|
||||
)
|
||||
where_clauses.append(
|
||||
'({column} {op} :p{p} or ({column} = :p{p} and {next_clauses}))'.format(
|
||||
column=escape_sqlite(sort or sort_desc),
|
||||
op='>' if sort else '<',
|
||||
p=len(params),
|
||||
next_clauses=' and '.join(next_by_pk_clauses),
|
||||
)
|
||||
params['p{}'.format(len(params))] = sort_value
|
||||
)
|
||||
params['p{}'.format(len(params))] = sort_value
|
||||
else:
|
||||
where_clauses.extend(next_by_pk_clauses)
|
||||
|
||||
|
|
@ -846,12 +823,10 @@ class TableView(RowTableShared):
|
|||
next_value = path_from_row_pks(rows[-2], pks, use_rowid)
|
||||
# If there's a sort or sort_desc, add that value as a prefix
|
||||
if (sort or sort_desc) and not is_view:
|
||||
prefix = rows[-2][sort or sort_desc]
|
||||
if prefix is None:
|
||||
prefix = '$null'
|
||||
else:
|
||||
prefix = urllib.parse.quote_plus(str(prefix))
|
||||
next_value = '{},{}'.format(prefix, next_value)
|
||||
prefix = str(rows[-2][sort or sort_desc])
|
||||
next_value = '{},{}'.format(
|
||||
urllib.parse.quote_plus(prefix), next_value
|
||||
)
|
||||
added_args = {
|
||||
'_next': next_value,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue