Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ActiveRecord::StatementInvalid when sorting by the "Arguments" column #28

Open
abevoelker opened this issue Jan 6, 2015 · 6 comments
Open

Comments

@abevoelker
Copy link
Contributor

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.

@jipiboily
Copy link
Contributor

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.

@abevoelker
Copy link
Contributor Author

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.

@jipiboily
Copy link
Contributor

@smatthieu @ukd1 are you sorting by args ever?

@jipiboily
Copy link
Contributor

Hrm..
@smathieu

@smathieu
Copy link
Contributor

No. Removing the sort column for this makes the most sense I think.

@jipiboily
Copy link
Contributor

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants