# File lib/flexirecord.rb, line 650
650:       def autodetect_columns
651:         columns = []
652:         primary_columns = []
653:         db_query('SELECT ' <<
654:             '"pg_attribute"."attname", ' <<
655:             '"pg_constraint"."conkey" @> ARRAY["pg_attribute"."attnum"] AS "primary" ' <<
656:             'FROM "pg_attribute" ' <<
657:             'JOIN "pg_class" ON "pg_attribute"."attrelid" = "pg_class"."oid" ' <<
658:             'JOIN "pg_namespace" ON "pg_class"."relnamespace" = "pg_namespace"."oid" ' <<
659:             'LEFT JOIN "pg_constraint" ON "pg_class"."oid" = "pg_constraint"."conrelid" ' <<
660:             'WHERE "pg_attribute"."attnum" > 0 ' <<
661:             'AND "pg_class"."relname" = $ ' <<
662:             'AND "pg_namespace"."nspname" = $ ' <<
663:             'AND "pg_constraint"."contype" = $ ' <<
664:             'ORDER BY "attnum"',
665:             table_name!, schema_name!, 'p').each do |attribute_record|
666:             attribute_record.attname.freeze
667:           columns << attribute_record.attname
668:           primary_columns << attribute_record.attname if attribute_record.primary
669:         end
670:         @primary_columns = primary_columns.freeze
671:         @columns = columns.freeze
672:         nil
673:       end