Re: Show expression of virtual columns in error messages
| От | Matheus Alcantara |
|---|---|
| Тема | Re: Show expression of virtual columns in error messages |
| Дата | |
| Msg-id | DG796MZZAE5S.224STEF6SZTBZ@gmail.com обсуждение исходный текст |
| Ответ на | Re: Show expression of virtual columns in error messages (Yugo Nagata <nagata@sraoss.co.jp>) |
| Ответы |
Re: Show expression of virtual columns in error messages
|
| Список | pgsql-hackers |
On Wed Feb 4, 2026 at 11:45 PM -03, Yugo Nagata wrote: >> Another possibility would be to get the actual values of "a" for example >> and show it on the error message, e.g: >> >> ERROR: new row for relation "t" violates check constraint "t_c_check" >> DETAIL: Failing row contains (5, 10, 5 * 2). > > That would indeed be more useful. One way to achieve this might be to > modify deparse_context and get_variable() so that a Var is displayed as its > actual value. > I'm not sure if I understand how modifying deparse_context_for() could help on this. What I did was to use the expression_tree_mutator API to mutate the virtual column expression to replace any Var reference with the value into the TupleTableSlot. Please see the attached v2 version. > Another possibility would be to include column names in the DETAIL message, > for example: > > ERROR: new row for relation "t" violates check constraint "t_c_check" > DETAIL: Failing row contains (a, b, c)=(5, 10, a * 2). > > Although this would change the existing message format, including column > names could generally provide users with more information about the error. > I think that this could make the error output too verbose when there is a lot of columns involved on the statement. -- Matheus Alcantara EDB: https://www.enterprisedb.com
Вложения
В списке pgsql-hackers по дате отправления: