Skip to content

Instantly share code, notes, and snippets.

@oriolgual
Created January 30, 2012 12:05
Show Gist options
  • Save oriolgual/1704071 to your computer and use it in GitHub Desktop.
Save oriolgual/1704071 to your computer and use it in GitHub Desktop.
Bug with Rails 3.2.1 and PG
Oriols-Mac-Pro:test_3_2_1 $ bundle exec rails console
Loading development environment (Rails 3.2.1)
~> Console extensions: wirble hirb ap rails2 rails3 pm interactive_editor blueprints
1.9.3-p0 :001 > Subject.first.student_ids
SCHEMA (0.3ms) SHOW client_min_messages
SCHEMA (0.1ms) SET client_min_messages TO 'panic'
SCHEMA (0.1ms) SET standard_conforming_strings = on
SCHEMA (0.0ms) SET client_min_messages TO 'notice'
SCHEMA (0.3ms) SET time zone 'UTC'
SCHEMA (0.1ms) SHOW TIME ZONE
SCHEMA (3.2ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"subjects"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum
SCHEMA (0.1ms) SHOW search_path
SCHEMA (1.1ms) SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind in ('v','r') AND c.relname = $1 AND n.nspname = ANY (current_schemas(false))
SCHEMA (2.3ms) SELECT DISTINCT(attr.attname) FROM pg_attribute attr INNER JOIN pg_depend dep ON attr.attrelid = dep.refobjid AND attr.attnum = dep.refobjsubid INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = cons.conkey[1] WHERE cons.contype = 'p' AND dep.refobjid = $1::regclass
Subject Load (0.3ms) SELECT "subjects".* FROM "subjects" LIMIT 1
Subject Load (0.3ms) SELECT "subjects".* FROM "subjects" LIMIT 1
SCHEMA (0.3ms) SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind in ('v','r') AND c.relname = $1 AND n.nspname = ANY (current_schemas(false))
SCHEMA (0.9ms) SELECT DISTINCT(attr.attname) FROM pg_attribute attr INNER JOIN pg_depend dep ON attr.attrelid = dep.refobjid AND attr.attnum = dep.refobjsubid INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = cons.conkey[1] WHERE cons.contype = 'p' AND dep.refobjid = $1::regclass
SCHEMA (0.5ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"students"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum
(0.5ms) SELECT DISTINCT "students".id FROM "students" WHERE "students"."subject_id" = 1 ORDER BY name
(0.5ms) SELECT DISTINCT "students".id FROM "students" WHERE "students"."subject_id" = 1 ORDER BY name
PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ... "students" WHERE "students"."subject_id" = 1 ORDER BY name
^
: SELECT DISTINCT "students".id FROM "students" WHERE "students"."subject_id" = 1 ORDER BY name
ActiveRecord::StatementInvalid: PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ... "students" WHERE "students"."subject_id" = 1 ORDER BY name
^
: SELECT DISTINCT "students".id FROM "students" WHERE "students"."subject_id" = 1 ORDER BY name
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1106:in `async_exec'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1106:in `exec_no_cache'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:650:in `block in exec_query'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activesupport-3.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `exec_query'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1201:in `select'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:16:in `select_all'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/query_cache.rb:63:in `select_all'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/relation/calculations.rb:181:in `pluck'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/associations/collection_association.rb:63:in `ids_reader'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/activerecord-3.2.1/lib/active_record/associations/builder/collection_association.rb:62:in `block in define_readers'
from (irb):1
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/railties-3.2.1/lib/rails/commands/console.rb:47:in `start'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/railties-3.2.1/lib/rails/commands/console.rb:8:in `start'
from /Users/oriol/.rvm/gems/ruby-1.9.3-p0@bootime/gems/railties-3.2.1/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'1.9.3-p0 :002 >
class Student < ActiveRecord::Base
belongs_to :subject
default_scope order('name')
end
class Subject < ActiveRecord::Base
has_many :students
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment