queue_classic_admin
queue_classic_admin copied to clipboard
ActiveRecord::StatementInvalid when sorting by the "Arguments" column
Visit http://localhost:3000/queue_classic_admin/queue_classic_jobs?dir=asc&sort=args to reproduce.
PG::UndefinedFunction: ERROR: could not identify an ordering operator for type json
LINE 1: ...assic_jobs".* FROM "queue_classic_jobs" ORDER BY args desc ...
^
HINT: Use an explicit ordering operator or modify the query.
: SELECT "queue_classic_jobs".* FROM "queue_classic_jobs" ORDER BY args desc NULLS LAST LIMIT 50 OFFSET 0
Rendered /home/abe/.gem/ruby/2.1.5/gems/queue_classic_admin-0.2.0/app/views/queue_classic_admin/shared/_job_list.html.erb (13.1ms)
Rendered /home/abe/.gem/ruby/2.1.5/gems/queue_classic_admin-0.2.0/app/views/queue_classic_admin/queue_classic_jobs/index.html.erb within layouts/queue_classic_admin/application (14.5ms)
Completed 500 Internal Server Error in 20ms
Full stacktrace: https://gist.github.com/abevoelker/b00d55553222057bc0bd
This is with Postgres 9.3.5.
Ah, right...not sure what is the solution to that.
Some history for you. args used to be a text column (in Rails's language) but is now json for newly created projects. It works fine in text though, which is still the case for "older" applications.
Thoughts? Maybe we could detect the column type, and based on that have different behavior? Maybe there is a way to cast that into string then do the sort of it?
I personally never faced that, but it would make sense to fix it somehow while keeping it as-is for people with and args column of type text.
Ah, gotcha. Might be simplest to just take the sort off of that column completely, since the actual data can be completely arbitrary based on whatever the end user is passing to their job classes, right? In newer Postgreses you can slice and dice the JSON structure but that doesn't do you any good if you can't predict the structure ahead of time. Up to you folks though.
@smatthieu @ukd1 are you sorting by args ever?
Hrm.. @smathieu
No. Removing the sort column for this makes the most sense I think.
:+1: