Postgresql: Insert trigger function fails on partial insert statement
Try this form:

 EXECUTE 'insert into ' || child || ' values ($1.*)' USING NEW;


It requires at least PostgreSQL 8.4, but previous versions ought to be retired nowadays. 

An even more modern and cleaner version (quote the table's name if necessary):

 EXECUTE format('insert into %I values ($1.*)', child) USING NEW;