> Which is properly written as the following, using lateral, which also avoids > the problem you describe: > > INSERT INTO tbl > SELECT func_call.* > FROM ft > JOIN LATERAL convert_func(ft.rawdata) AS func_call ON true;
I didn't fully realize this syntax until you point out. Just try it out in our case and this works well. I think My problem is mostly resolved without the need of this patch. Thanks! It's still good to do something about the normal (func(v)).* syntax if it's still considered legal. I will give a try to expanding it more cleverly and see if we can avoid the duplicate evaluation issue. Peifeng Qiu