title: Postresql: Composite types and select into
body: <p>Can somebody explain this? (evrything is in the example below!). I use postgresql 9.4.
  WARNING! In the code below I drop the "object type" composite type and the "example_data" temporary table , be sure you don't have these in your database... Just in case, I commented the drop commands, uncomment them if needed... </p>
  
  <pre><code>--drop type if exists object_type;
  --drop table if exists example_data;
  
  create type object_type as (
         id text
         ,value text);
  
  create temporary table example_data as (
         select
              'id1'::text as id,
              'example value'::text as value);
  
  do $$
  declare
      my_object object_type;
  begin
  
      -- The fiolowing doesn't work, we can't use INTO with the whole object
      -- Some how, it tries to put the whole object into the first attribute:
      select (id,value)::object_type
      into my_object
      from example_data;
  
      raise warning 'ID: %, VALUE: %', my_object.id, my_object.value;
  
      -- What a shame! It would have been so much more convenient than the following:    
      -- to feed the object we need to repeat each one of the attribute in the INTO section:
      select id, value
      into  my_object.id, my_object.value
      from example_data;
  
      raise warning 'ID: %, VALUE: %', my_object.id, my_object.value;
  
  /*
  In that example it is not so bad, but when you have very large object, it is very ugly to repeat each one
  of the attribute, for example:
  select  (att1, att2, att3, att4, att5, att6, att7, att8, att9, att10)::object_type2 into my_object2
  
  and, (very heavy):
  select  att1, att2, att3, att4, att5, att6, att7, att8, att9, att10
  into my_object2.att1, my_object2.att2, my_object2.att3, my_object2.att4, my_object2.att5, my_object2.att6,
       my_object2.att7, my_object2.att8, my_object2.att9, my_object2.att10
  
  */
  
  end $$;
  
  --drop type if exists object_type;
  --drop table if exists example_data;
  </code></pre>