Это происходит в функции rewriteTargetListIU
в src/backend/rewrite/rewriteHandler.c
.Комментарий говорит сам за себя:
/*
* rewriteTargetListIU - rewrite INSERT/UPDATE targetlist into standard form
*
* This has the following responsibilities:
*
* 1. For an INSERT, add tlist entries to compute default values for any
* attributes that have defaults and are not assigned to in the given tlist.
* (We do not insert anything for default-less attributes, however. The
* planner will later insert NULLs for them, but there's no reason to slow
* down rewriter processing with extra tlist nodes.) Also, for both INSERT
* and UPDATE, replace explicit DEFAULT specifications with column default
* expressions.
Так что это происходит во время перезаписи запроса , который является шагом между синтаксическим анализом строки SQL и ее оптимизацией.